2013-02-20 31 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

相關問題