我想调用位于Module1中的Thisworkbook中的sub,但最终会显示错误消息" Method' Sheets'对象' _Global'失败&#34 ;.如果单独运行,我在Module1中的子运行正常。我在Thisworkbook中的代码就像这样简单:
Private Sub Workbook_Open()
Call gvGetDPMlist
End Sub
我在Module1中的代码是:
Sub gvGetDPMlist()
Sheets("Sheet1").Range("tDPM[#All]").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets("Sheet3").Range("filterSite_ID"), _
CopyToRange:=Sheets("Sheet1").Range("M1:O1"), Unique:=False
End Sub
我在这里做错了什么?
答案 0 :(得分:0)
太长而无法正确插入评论中,因此我将其作为答案进行编写
这可能是宏执行(在工作簿开放时立即发生)与工作表实际可用性之间的时间问题
要对此进行测试,您可以按如下方式重构代码:
Option Explicit
Sub gvGetDPMlist()
Dim IRng As Range, Crng As Range, oRng As Range
Set IRng = Sheets("Sheet001").Range("tDPM[#All]")
Set Crng = Sheets("Sheet003").Range("filterSite_ID")
Set oRng = Sheets("Sheet001").Range("M1:O1")
IRng.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Crng, CopyToRange:=oRng
End Sub
这样你就可以看到它是否真的是一个时间问题(它应该在第一个Set
语句中出错)或者在AdvancedFilter
执行中发生错误(它应该出错)在IRng.AdvancedFilter...
声明)
答案 1 :(得分:0)
经过一些调查后,问题出现在Excel受保护的视图设置中。我从本地网络共享打开我的Excel文件。如果启用了源自Internet的文件的受保护视图,则即使我在Excel启动时应答“启用”,vba中的“高级过滤器”语句也会失败。如果禁用此Excel选项,它可以正常工作。