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