這不是一個答案,但替代。
命名你的範圍是Shiin建議的方法,但如果你有500個單元,那麼就像我之前提到的那樣,命名500個單元並在你的代碼中使用它們可能會非常痛苦。另一種方法是使用智能代碼。讓我們舉個例子
比方說,你有這樣的
Sub Sample()
Range("B3").Value = Range("B200")
Range("B4").Value = Range("B201")
Range("B5").Value = Range("B201")
' And
' So On
' till
Range("B500").Value = Range("B697")
End Sub
代碼編寫這些代碼的最好方法是這樣的
Sub Sample()
Dim i As Long
For i = 200 To 697
Range("B" & i - 197).Value = Range("B" & i)
Next i
End Sub
,如果你插入時說排線說300則簡單地打破了上面的代碼分兩部分
Sub Sample()
Dim i As Long
For i = 200 To 299
Range("B" & i - 197).Value = Range("B" & i)
Next i
For i = 301 To 698
Range("B" & i - 197).Value = Range("B" & i)
Next i
End Sub
所以每次插入一行,只需打破for循環成一個額外的部分。這看起來很乏味,但比命名500單元格並在代碼中使用它們要好得多。
如果您打算只使用一次宏(即1次使用),則請繼續閱讀。
如果您擔心用戶插入該行後單元格不會更新,則您可以代替分配值來指定公式。
例如
Range("B3").Formula = "=B200"
這將會把公式=B200
細胞B3
。所以下次當你插入一行,使第200行移動它的位置的時候,你會發現,該公式自動獲取細胞更新B3
HTH
如果有幾個細胞,然後作爲Shiin建議的命名範圍將幫助,但如果你有很多像你在評論中提到的細胞(1-500)的命名,然後將細胞的這一程序將真正得到痛苦,恐怕... –
是的,有很多細胞 - 所以有更好的方法嗎? – GideonShalev
AFAIK沒有其他辦法。您必須單獨命名所有500個單元格。有一個替代方案,雖然它不那麼痛苦,並且需要稍微編輯您的代碼。這會有幫助嗎? –