我注意到当有自动过滤器打开时,我的VBA脚本不起作用。知道为什么会这样吗?

    wbk.Activate
    Set Criteria = Sheets("Sheet1").Cells(i, 1)

    Set rng = Sheets("Sheet1").Range(Cells(i, 2), Cells(i, 4))

    wb.Activate
    If ActiveSheet.AutoFilterMode Then ActiveSheet.ShowAllData 'remove autofilter, but it crashes on this line

    Selection.AutoFilter

    Range("$A$1:$BM$204").AutoFilter Field:=2, Criteria1:=Criteria.Value

    rng.Copy

    Range("$BC$2:$BE$204").SpecialCells(xlCellTypeVisible).PasteSpecial

非常感谢

最佳答案

如果启用,则AutoFilterMode将为True,无论实际上是否对特定列应用了过滤器。发生这种情况时,ActiveSheet.ShowAllData仍将运行,并引发错误(因为没有实际的过滤)。

我有同样的问题,并与它一起工作

If (ActiveSheet.AutoFilterMode And ActiveSheet.FilterMode) Or ActiveSheet.FilterMode Then
  ActiveSheet.ShowAllData
End If

这似乎阻止了ShowAllData在没有应用实际过滤器但启用AutoFilterMode的情况下运行。

第二个捕获Or ActiveSheet.FilterMode应该捕获高级过滤器

关于excel - Worksheet类的ShowAllData方法失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18226045/

10-10 03:26