0

我隐藏了带有复选框宏的行

每次我想插入一个新行时,vba 代码都会弄乱,分配给下面隐藏行的代码将不起作用

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

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

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


子 CheckBox1_Click()

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

结束子

子 CheckBox2_Click()

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

结束子

我在代码中有大约 10 个子复选框


如果我插入或删除一行,下面的代码将不起作用。

这是因为行已更改

从我写的原始代码

4

1 回答 1

0

编辑

使用“命名范围”而不是对范围进行硬编码。当您插入新行时,命名范围将自动更新。例如:

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

在此处输入图像描述

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

您的代码现在如下所示:

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

现在您可以选择一行,例如第 10 行,然后右键单击 -> 插入,您的宏将隐藏行 9:14 而不是 9:13,因为当您插入时,命名范围会自动更新。

于 2013-09-13T13:21:21.010 回答