簡體   English   中英

Excel VBA 2013運行時錯誤424對象

[英]excel vba 2013 run-time error 424 object required

救命。 這真讓我抓狂。 我有以下代碼:

private sub anything()
     ' 30 lines of code that work perfectly
     MsgBox myNotesFile.sheets("NotesReport").Cells(3, 6)  '1
     fixLongLines
end sub

Private Sub fixLongLines()
  MsgBox ""  '2 
  MsgBox myNotesFile.sheets("NotesReport").Cells(3, 6) '3
  MsgBox ThisWorkbook.sheets("bindata").Range("A1") '4
end sub

第一個msgbox(1)可以正常運行。 在該子程序中,第一個msgbox(2)可以正常工作,但是第二個(3)(與原始子程序中的完全相同)給我424錯誤。

如果我將違規行注釋掉,則第三個msgbox(4)可以完美運行。 引用“ myNotesFile”之前,在這里顯示的代碼沒有任何問題。 這個子可以在另一個模塊中完美地工作。
關於為什么在我的代碼中此位置會出現此錯誤的任何建議?

正如評論之一所述,fixLongLines不知道myNotesFile是什么。 您可以通過fixLongLines參數傳遞工作表或僅傳遞一張表。 這是您只傳遞一張紙的方法:

Sub anything()
     ' 30 lines of code that work perfectly
     MsgBox myNotesFile.Sheets("NotesReport").Cells(3, 6)  '1
     Dim nr As Worksheet
     Set nr = myNotesFile.Sheets("NotesReport")
     Call fixLongLines(nr)
End Sub

Private Sub fixLongLines(mySheet As Worksheet)
     MsgBox ""  '2
     MsgBox mySheet.Cells(3, 6) '3
     MsgBox ThisWorkbook.Sheets("bindata").Range("A1") '4
End Sub

如果您不想傳遞參數,則另一個解決方法可能是像這樣在fixLongLines中進行調用:

MsgBox Workbooks("myNotesFile.xls").Sheets("NotesReport").Cells(3, 6)

當然,如果您的文件不是.xls文件,則需要更改擴展名。

我使用了Tony L的建議,即聲明nr並將其傳遞給sub。 它像魅力一樣運作。 感謝大家的幫助。

暫無
暫無

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

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