Excel插入行 - 使用命名范围隐藏行

时间:2013-09-13 12:34:42

标签: excel vba rows hidden

我隐藏了带复选框宏的行

每次我想插入一个新行时,vba代码都搞砸了,分配给隐藏行的代码将不起作用

有没有办法动态地让行改变vba中的代码

所以我不必重做所有行值和复选框中的移动

[IMG] http://i39.tinypic.com/2akek5z.jpg [/ IMG]


Sub CheckBox1_Click()

If Range("B3").Value = True Then
    Rows("4:18").EntireRow.Hidden = False
Else
    Rows("4:18").EntireRow.Hidden = True
End If

End Sub

Sub CheckBox2_Click()

If Range("B51").Value = True Then
    Rows("52:66").EntireRow.Hidden = False
Else
    Rows("52:66").EntireRow.Hidden = True
End If

End Sub

我在代码中有大约10个子检查框


如果我插入或删除一行,下面的代码将无效。

这是因为行已更改

来自我写的原始代码

1 个答案:

答案 0 :(得分:0)

<强> 修改

使用'命名范围'而不是硬编码范围。插入新行时,命名范围将自动更新。例如:

我选择了第9行到第13行并将它们命名为'RowsABC',如下所示:

enter image description here

我还将复选框单元格命名为“CheckABC”,以便它不再依赖于它所在的行。

您的代码现在看起来像这样:

If Range("CheckABC").Value = True Then
    Range("RowsABC").EntireRow.Hidden = False
Else
    Range("RowsABC").EntireRow.Hidden = True
End If

现在您可以选择第10行和右键单击的行 - &gt;插入,您的宏将隐藏行9:14而不是9:13,因为命名范围将在您插入时自动更新。