【问题标题】:VBA delete rows after tableVBA删除表后的行
【发布时间】:2016-06-23 16:04:24
【问题描述】:

我在 excel 2010 中有一个电子表格,其中包含一个宏,可以根据另一个表(表 2)的大小调整表(表 1)的大小,因为它们应该始终具有相同的行数。表 2 中的行数每月都在变化。只要表 2 添加行,此宏就可以正常工作。如果表 2 减去行,那么我会在表 1 下得到不需要的公式/数据。我正在使用的宏:

Sub Table 1()
    Sheet3.Unprotect Password:="password"
        ThisWorkbook.Sheets("Sheet3").ListObjects("Table 1").Resize [range]
        Sheet3.Protect Password:="password"
    End Sub

有没有办法编写宏来删除这些无关数据(当前表之后的所有数据/公式)?我知道手动删除它们很简单,但我希望保护包含表一的选项卡,并且只允许宏(也将受到保护)运行,以避免随机的人弄乱这个工作表。任何建议表示赞赏。

谢谢! 格雷厄姆

【问题讨论】:

  • 这和MySql有什么关系?
  • 表 1 是否只有公式?如果表1中有数据,它是如何进入的?
  • 我猜与mysql无关,需要5个标签和系统建议。表一只是公式。

标签: mysql vba excel macros


【解决方案1】:

在调整大小之前计算行数,然后在调整大小之后计算行数。然后,如果您的表变小,请删除差异行。在我的示例中,我的表名为 Table1,因此您需要进行一些编辑。试试下面的。

Sub test()

Dim rowsBefore As Integer
Dim rowsAfter As Integer
Dim rowsExtra As Integer

'get num of rows before resize
rowsBefore = Range("Table1").Rows.Count

'resize table
ThisWorkbook.Sheets("Sheet3").ListObjects("Table 1").Resize [range]

'get num of rows after resize
rowsAfter = Range("Table1").Rows.Count

'get num of rows removed / added
rowsExtra = rowsBefore - rowsAfter

'remove data if positive / removed rows
If rowsExtra > 0 Then
    Range("Table1[testColumn]")(rowsAfter + 1).Select
    Range(ActiveCell.Address, ActiveCell.Offset(1 + rowsExtra).Address).EntireRow.Delete
End If

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-02
    • 2020-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多