Excel VBA从表中删除筛选器

时间:2017-12-02 22:25:55

标签: excel excel-vba filter vba

我正在尝试创建一个宏,它将创建一个表,然后删除标题行中的过滤器。为了澄清,我希望过滤器本身已根除,完全从表中删除。在其他线程上看,很难看出人们是否只是希望他们的过滤器说“全选”或者他们是否希望过滤器本身被删除..我希望过滤器本身消失。

任何帮助将不胜感激!我不是VBA最伟大的人,似乎无法在Google上找到任何使用Excel的野心。

4 个答案:

答案 0 :(得分:1)

这应该在表格中打开/关闭过滤器。因此,运行一次,关闭过滤器,再次运行以打开过滤器。

Sheets("Sheetname").ListObjects("TableName").Range.AutoFilter

答案 1 :(得分:0)

要关闭过滤器,只需使用

    unsigned short int min = input.front();
    unsigned short res = 0;

    for (size_t i = 1; i < input.size(); ++i)
    {
        if (input[i] <= min)
        {
            min = input[i];
            continue;
        }

        int dif = input[i] - min;
        res = dif > res ? dif : res;
    }

    return res != 0 ? res : -1;

Cells.AutoFilter

答案 2 :(得分:0)

我最喜欢的变体如下:

Sub ResetFilters()
    On Error Resume Next
    ActiveSheet.ShowAllData
End Sub

答案 3 :(得分:0)

我发现当按钮触发vba代码时,ListObjects.Range.AutoFilter不起作用,因为再次按下按钮会重新打开过滤器。在这种情况下,您可以使用:

Sheets("Sheetname").ListObjects("TableName").ShowAutoFilterDropDown = False