Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 清除筛选器错误的函数-ShowAllData失败_Vba_Excel - Fatal编程技术网

Vba 清除筛选器错误的函数-ShowAllData失败

Vba 清除筛选器错误的函数-ShowAllData失败,vba,excel,Vba,Excel,下午好 我编写了一个函数,该函数传递了一组工作表,并且应该清除每个工作表上的所有过滤器。以下是函数: Function Clearwsfilters(sheets() As Object) For i = LBound(sheets) To UBound(sheets) With sheets(i) If .AutoFilterMode Then If .FilterMode Then

下午好

我编写了一个函数,该函数传递了一组工作表,并且应该清除每个工作表上的所有过滤器。以下是函数:

Function Clearwsfilters(sheets() As Object)

    For i = LBound(sheets) To UBound(sheets)
        With sheets(i)
            If .AutoFilterMode Then
                If .FilterMode Then
                    Debug.Print "Clearing Filters on Sheet: "; i
          ------>   .ShowAllData
                End If
            ElseIf .FilterMode Then
                Debug.Print "Clearing Filters on Sheet: "; i
                .ShowAllData
            End If
        End With
    Next i

End Function
当我运行它时,它会卡在我用箭头指示的线路上。此函数将被传递到存储在对象数组中的6个同名工作表。如有必要,我可以提供有关此阵列的更多详细信息


感谢您查看此

可能因为没有应用过滤器而中断,如果在
之前的下一次
错误恢复中设置
,会发生什么情况?另外,为什么在
If
Else If
中执行相同的操作?我认为您不需要检查是否有筛选器,只要清除是否有筛选器,如果没有,就跳过它。如果工作表有自动筛选器但没有应用筛选器,它将成功退出循环。已应用筛选器的工作表上的函数失败。根据我看过的另一个论坛,电子表格上的高级过滤器将.FilterMode设置为True,而.AutoFilterMode仍然为False。Else If语句就是为了捕捉这个问题。我将此问题作为一个单独的问题发布,因为我认为错误可能来自将一组工作表传递到此函数,而不是仅操作一张工作表。而不是使用
Worksheet.ShowAllData
使用
Worksheet.AutoFilter.ShowAllData
(史蒂文·马丁的回答)。