我在excel 2010中有一个电子表格,其中的宏根据另一个表(表2)的大小调整表(表1)的大小,因为它们应始终具有相同的行数。表2中的行数在montly基础上发生变化。只要表2添加行,此宏就可以正常工作。如果表2正在减去行,那么我最终得到表1中不需要的公式/数据。宏我正在使用:
Sub Table 1()
Sheet3.Unprotect Password:="password"
ThisWorkbook.Sheets("Sheet3").ListObjects("Table 1").Resize [range]
Sheet3.Protect Password:="password"
End Sub
有没有办法编写宏来删除这些无关的数据(当前表之后的所有数据/公式)?我知道手动删除它们很简单,但我希望保护包含表格的选项卡,并且只允许运行宏(也会受到保护),以避免随机的人弄乱这个工作表。任何建议都表示赞赏。
谢谢! 格雷厄姆
答案 0 :(得分:0)
在调整大小之前计算行数,然后在调整大小之后计算行数。然后,如果您的表变小,请删除差异行。在我的示例中,我的表名为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