Excel vba Method' Sheets'如果从Thisworkbook调用则失败

时间:2016-11-11 07:12:29

标签: excel vba excel-vba

我想调用位于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

我在这里做错了什么?

2 个答案:

答案 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选项,它可以正常工作。