簡體   English   中英

Excel VBA“下標超出范圍”運行錯誤“ 9”

[英]Excel VBA “Subscript out of range” Run Error '9'

我試圖實現以下代碼,以便可以讀取一個單元格值,然后將該值放入同一工作表上的另一個單元格中。

工作表具有以下名稱:TestUserGuidance(無空格)代碼如下:

Sub GuideTest()
    Dim dblPower, dblMass, dblRatedSpeed, dblRefLength, dblAwot, dblEngineSpeed, dblRoadSpeed As Double
    Dim dblPMR As Double

    dblPower = Worksheets("TestUserGuidance").Cell("B1").Value
    Worksheets("TestUserGuidance").Cell("E1") = dblPower
End Sub 

誰能告訴我我要去哪里錯了嗎?

謝謝

在此處輸入圖片說明

我認為vba找不到TestUserGuidance表。 如果在立即窗口中運行以下命令,則會出現“對象不支持此屬性或方法”錯誤:

?worksheets(1).cell("A1")

如果運行此命令,則會收到錯誤消息,提示您“下標超出范圍”:

?worksheets("non-existent sheet").cell("A1")

這向我表明活動的工作簿是不正確的,因為如果vba能夠找到工作表,則將出現另一個錯誤。 您可以嘗試添加ThisWorkbook(並同時使用范圍)嗎?

dblPower = ThisWorkbook.Worksheets("TestUserGuidance").Range("B1").Value
ThisWorkbook.Worksheets("TestUserGuidance").Range("E1") = dblPower

另一個選擇是重命名工作表:

在此處輸入圖片說明

這樣,您就不必擔心活動的工作簿(也可以提高智能):

shtTestUserGuidance.Range("E1") = shtTestUserGuidance.Range("B1")

另外,我建議您進行其他人建議的所有更正。 否則,您可能還會遇到其他問題。

最后,如果工作表就像模板,結構不會改變,那么最好只使用一個公式(即E1的公式:= B1)。 即使存在條件邏輯,也可能更容易將其維護為公式而不是vba代碼。

以下是一些故障排除步驟:

通過單擊左側的灰色區域,在設置dblPower的行上切換斷點: 在此處輸入圖片說明

如果尚不存在,請通過按ctrl + g打開“立即”窗口: 在此處輸入圖片說明

運行代碼時,它應在斷點處暫停。 現在您可以檢查范圍。 嘗試在立即窗口中鍵入以下內容,然后按Enter:

?Worksheets("TestUserGuidance").Name

要么

?ActiveWorkbook.Name

請注意,當光標位於子例程內的某個位置時,也可以通過按F8鍵逐行瀏覽代碼。 底線是您可能需要逐行檢查代碼以弄清楚這一點。

這是使代碼正常工作的方式:

Sub GuideTest()
    Dim dblPower, dblEngineSpeed, dblRoadSpeed As Double ' first two are of variant type
    Dim dblPMR As Double

    dblPower = Worksheets(1).Range("B1").Value
    Worksheets(1).Range("E1") = dblPower
End Sub

使用“ E1”或“ B1”時,應使用Range而不是Cells。 在我的回答中, Worksheets(1)是指Worksheets("TestUserGuidance")

dblRoadSpeed被聲明為double。 要解決此問題,請將所有變量聲明為單獨變量,在vba中,您可以通過兩種方式進行操作。

Dim dblPower As Double, dblMass As Double

要么

Dim dblPower As Double
Dim dblMass As Double

另外,您無需聲明任何變量即可執行操作。 您可以一步一步復制該值。

Worksheets("TestUserGuidance").Range("E1").Value = Worksheets("TestUserGuidance").Range("B1").Value 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM