Excel VBA从自动筛选中删除筛选实际上会删除所有记录

Excel VBA从自动筛选中删除筛选实际上会删除所有记录,excel,vba,Excel,Vba,我一直有一个问题,试图让这个工作。 我已使筛选器正常工作,但无法使其删除筛选器并显示所有记录。 结果是,它从过滤器中删除了所有复选标记,而不是全部选中,从而给我留下了一个空白表。 我尝试了以下多种变体,并且简单地说: Sheets("live_list").Range("main_list").AutoFilter Field:=8 当前所在的主代码 Private Sub Worksheet_Change(ByVal Target As Range)

我一直有一个问题,试图让这个工作。 我已使筛选器正常工作,但无法使其删除筛选器并显示所有记录。
结果是,它从过滤器中删除了所有复选标记,而不是全部选中,从而给我留下了一个空白表。
我尝试了以下多种变体,并且简单地说:

Sheets("live_list").Range("main_list").AutoFilter Field:=8
当前所在的主代码

Private Sub Worksheet_Change(ByVal Target As Range)
   If "D2" <> "All" Then
        Sheets("live_list").Range("main_list").AutoFilter Field:=8, Criteria1:=Cells(2, 4).Value
   Else
        Sheets("live_list").ListObjects("main_list").AutoFilter.ShowAllData
   End If
        
End Sub
Private子工作表\u更改(ByVal目标作为范围)
如果“D2”“全部”,则
工作表(“活动列表”)。范围(“主列表”)。自动筛选字段:=8,标准1:=单元格(2,4)。值
其他的
工作表(“实时列表”).ListObjects(“主列表”).AutoFilter.ShowAllData
如果结束
端接头
请尝试以下代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    With Sheets("live_list")
        If Not .FilterMode = True Then
            .Range("main_list").AutoFilter Field:=8, Criteria1:=Cells(2, 4).Value
        Else
            .AutoFilter.ShowAllData
        End If
    End With
End Sub

这应该可以正常工作。

太愚蠢了,没有正确声明单元格

Private Sub Worksheet_Change(ByVal Target As Range)
   If Cells(2, 4).Value <> "All" Then
        Sheets("live_list").Range("main_list").AutoFilter Field:=8, Criteria1:=Cells(2, 4).Value
   Else
        Sheets("live_list").ListObjects("main_list").AutoFilter.ShowAllData
   End If
        
End Sub
Private子工作表\u更改(ByVal目标作为范围)
如果单元格(2,4)。值为“全部”,则
工作表(“活动列表”)。范围(“主列表”)。自动筛选字段:=8,标准1:=单元格(2,4)。值
其他的
工作表(“实时列表”).ListObjects(“主列表”).AutoFilter.ShowAllData
如果结束
端接头

“D2”“All”
并没有做您认为应该做的事情。这是将字符串
D2
与字符串
All
进行比较<代码>“D2”“所有”将始终是
真的
。更改
工作表(“live_list”)。列表对象(“main_list”)。自动筛选。ShowAllData
工作表(“live_list”)。ShowAllData
@BigBen Bingo,这就是问题所在,我不知道我在做什么。我希望能够根据单元格中放置的任何内容进行筛选(这是一个经过验证的下拉列表),然后使用“所有选项”移除过滤器