macros单独运行正常,但在运行时出错

我在Class模块下有一个VBA代码:

Option Explicit Public WithEvents MyQuery As QueryTable Private Sub MyQuery_AfterRefresh(ByVal Success As Boolean) MsgBox ("data is refreshed") MsgBox ("about to clear key ranks") Call Module2.ClearKeyRanks MsgBox ("about to vlookup") Call Module2.VL MsgBox ("about to replace 0's") Call Module2.replace_zeros MsgBox ("about to sort keys") Call Module2.SortKey MsgBox ("about to refresh pvt") Call Module2.refreshDisplayPivot MsgBox ("querie initialized") Call InitializeQueries End Sub Private Sub MyQuery_BeforeRefresh(Cancel As Boolean) Call Module1.InitializeQueries MsgBox ("about to sort keys") Call Module2.SortKey MsgBox ("about to clear mem") Call Module2.ClearMem MsgBox ("about to memranks") Call Module2.memRanks MsgBox ("about to refresh") End Sub 

当我在工作簿中分别运行这些macros时,它工作正常。 但是,当我尝试通过点击工作簿中的“全部刷新”选项来执行此操作时,它会执行步骤,并将Module2.ClearKeyRanks的“运行时错误50290:应用程序定义的或对象定义的错误”步。 该代码是:

  Sub ClearKeyRanks() Dim key As Object ' Excel Worksheet Set key = ThisWorkbook.Worksheets("Key") key.Range("B2:B10000").ClearContents 

我已经尝试过与Dim键作为工作表,它仍然会引发同样的错误。 据我所知,错误是在key.Range(“B2:B10000”)。ClearContents行,但我不知道如何解决这个问题。 任何帮助表示赞赏!

我只是注意到你没有为Module2声明一个variables。 我认为Module2是类的名字?….

 Private Sub MyQuery_AfterRefresh(ByVal Success As Boolean) MsgBox ("data is refreshed") MsgBox ("about to clear key ranks") 'declare a variable for the class Dim myModule2 As Module2 'Initialize the variable Set myModule2 = New Module2 'call the objects methods Call myModule2.ClearKeyRanks MsgBox ("about to vlookup") Call myModule2.VL MsgBox ("about to replace 0's") Call myModule2.replace_zeros MsgBox ("about to sort keys") Call myModule2.SortKey MsgBox ("about to refresh pvt") Call myModule2.refreshDisplayPivot MsgBox ("querie initialized") Call InitializeQueries End Sub