2013-02-20 135 views
0

我有一个Excel 2010电子表格,其中包含一些VB代码,用于根据选择自动隐藏某些行。但是,如果我需要在我的Excel电子表格中插入一行,它不会自动更新vb代码,就像它对公式所做的那样。在Excel中添加行不会更新VB代码

这里是我的代码示例:

If Target.Address(False, False) = "B96" Then 
    Select Case Target.Value 
     Case "NO": Rows("97:101").Hidden = True 
     Case "YES": Rows("97:101").Hidden = False 
    End Select 
End If 

因此,举例来说,如果我插在我的Excel电子表格中的新行,在行90,我本来期望的VB代码来自动更新和target.address将更改为B97,依此类推。它适用于Excel公式,所以有办法让代码也可以工作吗?

谢谢

+1

你有没有尝试玩命名的范围?这是一个猜测,买也许你可以指定一个命名范围,而不是实际的行数。当您插入一行时,范围可能会自动更新。 – PowerUser 2013-02-20 14:57:32

+0

VB代码不能像公式一样工作,但像PowerUser建议的那样,创建命名范围可能会起作用。 – Ripster 2013-02-20 15:05:06

回答

2

我建议你的名字(的一部分)的有关范围(例如A97:A101)的命名范围,比方说OPTIONRNGE,那么你的代码更改为:

Case "NO": Range("OPTIONRNGE").Rows.Hidden = True 
Case "YES": Range("OPTIONRNGE").Rows.Hidden = False 

等然后,如果插入行,它将扩展范围,并且代码仍然会执行相同的操作。命名范围几乎总是比VBA中的硬编码范围或行编号更好。

+0

谢谢....我还不清楚它是否会有所帮助。我有许多这些条件声明,其中一些在电子表格的不同位置具有相同的“案例”值。我将它们分开列出的原因是后面的值会发生变化,如果它影响其他单元格,则更容易修复。有没有另一种方法可以引用单元格而不指定值或范围?否则,我将在哪里以及如何指定这些值的范围,以便我可以在VB代码中引用它们? – Mark 2013-02-20 15:52:14

+1

“我还不清楚它是否会有帮助” - 我敢肯定它会! “是否有另一种方法可以在不指定值或范围的情况下引用单元格?” - 否。您可以直接参考范围范围(“A1:A10”),或者如果您已命名它们,请按名称Range(“MYRANGE”)。就是这样 – 2013-02-20 16:25:45

+0

谢谢。我会继续尝试。 – Mark 2013-02-20 17:31:27