【问题标题】:Excel Insert Rows - Using Named Ranges To Hide RowsExcel 插入行 - 使用命名范围隐藏行
【发布时间】:2013-09-13 12:34:42
【问题描述】:

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

每次我想插入一个新行时,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 个子复选框


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

这是因为行发生了变化

来自我编写的原始代码

【问题讨论】:

  • 在这种情况下,您需要编写代码来跟踪行的添加、删除和隐藏/取消隐藏,并使用动态行引用
  • 另外,您可能应该向我们展示一些代码,以便我们可以帮助您解决真正的问题
  • 嗨,我不确定什么是动态行引用

标签: excel vba rows hidden


【解决方案1】:

编辑

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

我选择了第 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,因为命名范围会在您插入时自动更新。

【讨论】:

  • 您好,感谢 cmets,我会从 excel 表中为您发布一些代码,我基本上只是希望在插入或删除行时更新代码
  • 嗨,我不知道遍历它们是什么意思,我将不得不更改很多代码并且不知道该怎么做
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-03
  • 2011-09-07
  • 1970-01-01
  • 1970-01-01
  • 2019-09-08
  • 1970-01-01
  • 2019-12-05
相关资源
最近更新 更多