图表工作表处于活动状态时,VBA .ShowAllData失败

时间:2018-04-11 18:15:33

标签: excel vba filter

我将下面的代码附加到Excel中用户窗体上的按钮。代码的其他部分执行高级过滤,我使用下面的代码在重新应用过滤器之前清除过滤器,以使其运行得更快。只要wsDataSchool是活动工作表或其他工作表处于活动状态,它就可以正常工作。但是,如果在单击按钮之前有一个CHART表激活,那么我会收到一条错误,说ShowAllData失败。这太奇怪了,我找不到任何关于它的东西。有关为什么会发生这种情况或如何解决问题的任何想法?

If wsDataSchool.FilterMode = True Then
    wsDataSchool.ShowAllData
End If

1 个答案:

答案 0 :(得分:0)

然后添加一个测试。这将测试当前工作表是否为图表工作表,如果是,则按代号激活目标工作表。

Option Explicit
Public Sub test()
    If wsDataSchool.FilterMode Then
        Select Case ActiveSheet.Type
        Case -4167
            wsDataSchool.ShowAllData
        Case Else
            wsDataSchool.Activate
            wsDataSchool.ShowAllData
        End Select
    End If
End Sub

虽然很难看,但如果您需要返回图表工作表,如果在图表表中,您可以如下:

Public Sub test1()
    Application.ScreenUpdating = True
    Dim ws As Chart
    If wsDataSchool.FilterMode Then
        Select Case ActiveSheet.Type
        Case -4167
            wsDataSchool.ShowAllData
        Case Else
            Set ws = ActiveSheet
            wsDataSchool.Activate
            wsDataSchool.ShowAllData
            ws.Activate
        End Select
    End If
    Application.ScreenUpdating = False
End Sub