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

excel - excel vba 2013运行时错误424对象需要,第1张

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

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)完美运行。在sub中,第一个msgbox(2)完美地工作,但第二个(3)(与原始sub中的那个完全相同)给出了424错误。

如果我注释掉有问题的行,则第三个msgbox(4)可以正常工作。在我在此处显示的代码之前,'myNotesFile'被引用没有任何问题。这个子在另一个模块中完美地工作 有关为什么我在代码中的这个位置出现此错误的任何建议?

最佳答案:

2 个答案:

答案 0 :(得分:0)

正如其中一条评论所述,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文件,则需要更改扩展程序。

答案 1 :(得分:0)

我使用了Tony的建议宣布nr并将其传递给sub。它就像一个魅力。谢谢大家的帮助。

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复