excel vba 2013运行时错误424对象需要

帮帮我。 这真让我抓狂。 我有以下代码:

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'没有任何问题。 而这个子在另一个模块中完美工作。
任何build议,为什么我在我的代码中的这个位置得到这个错误?

作为评论状态之一,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 

如果你不想传递一个参数,另一个解决方法是在fixLongLine中调用这个函数:

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

当然,如果您的文件不是.xls文件,则需要更改扩展名。

我用Tony L的build议宣告nr并将其传递给sub。 它像一个魅力工作。 感谢大家的帮助。