我是vba新手,所以在學習。我很努力地理解爲什麼這在Excel 2016中失敗了,我的研究一片空白。我有以下代碼vba:變量未在activeCell中定義
Option Explicit
Sub Range_End_Method()
Dim lRow As Long
Dim lCol As Long
Dim i As Integer
Dim rng As Range
Set rng = ActiveCell
lRow = Cells(Rows.Count, 1).End(xlUp).Row
lCol = Cells(1, Columns.Count).End(xlToLeft).Column
Do While rng.Value <> Empty
If InStr(rng.Value, "Petrol") = 0 Then
currentRow = ActiveCell.Row
Worksheets("MySheet").Cells(currentRow, 5) = "Shopping"
Set rng = rng.Offset(1)
rng.Select
Else
currentRow = ActiveCell.Row
Worksheets("MySheet").Cells(currentRow, 9) = "Not Found"
Set rng = rng.Offset(1)
rng.Select
End If
Loop
End Sub
如果我打開vba編輯器並將其輸入到「Microsoft Excel Objects」表中,我不會收到錯誤消息。但是,如果我跑的「模塊」命名我的模塊「m_End」我拋出了一個錯誤,說
Compile Error
Variable not defined
它強調在VBA編輯器中的變量是在第一個「如果條件來自行「currentRow」 「:
currentRow = ActiveCell.Row
我不明白有什麼區別,以及如何解決錯誤。
任何幫助,將不勝感激。
您在代碼的開頭缺少一個*** Sub ***語句。 –
在你的代碼的開始,你應該有'Option Explicit',接着是'Sub yourSubName()'。既然如此,你從不聲明'currentRow'是一個變量。如果您在開始時沒有Option Explicit,請進入「工具►選項►編輯器►代碼設置」並選擇「需要變量聲明」,這將爲您節省大量時間。也許在你的sheet模塊中,你沒有'Option Explicit' –
對不起,我剛剛編輯了我的代碼 - 我錯誤地忘了複製選項和子語句。運行代碼時,他們也在那裏。這仍然給出了同樣的錯誤。我應該如何聲明變量?謝謝 – Dan