我是一位在Excel環境下學習VBA的3周新手(在我30年前在Pascal上完最後一門編程課程之後)。我不明白爲什麼有時執行一些代碼引用表單需要激活表單。我的具體問題,通過一些玩具代碼:需要Excel VBA表單激活嗎?
Public Sub Test()
Dim Rng As Range
Set Rng = Worksheets("Sheet2").Range(Cells(1, 1), Cells(5, 1)).Find(What:="Prize",LookIn:=xlValues)
If Rng Is Nothing Then
MsgBox "Nothing there"
Else
MsgBox "Found the prize"
End If
End Sub
如果我把測試(),而Sheet1中是有效的(通過在Sheet1用戶窗體說)我得到一個「定義或對象定義的錯誤應用」。如果Sheet2處於活動狀態,代碼將正常運行。
爲什麼Sheet2必須處於活動狀態才能執行此代碼?我可以通過激活Sub2內的Sheet2然後再次激活Sheet 1來解決這個問題,但這看起來很笨拙。有沒有更好的辦法?
感謝您的幫助!我在我的實際代碼中遇到了類似這樣的其他激活問題。
'細胞()'沒有工作預選賽總是指ActiveSheet。你需要使用'Worksheets(「Sheet2」)。Cells(...)' –