【问题标题】:Removing lines with no data删除没有数据的行
【发布时间】:2020-10-01 10:23:14
【问题描述】:

我已经构建了许多宏,但没有进行太多编辑。我正在尝试将 B 列中的电子表格过滤为“0”,然后删除所有行。发生的情况是,如果 B 列中没有包含“0”的行,则代码最终会删除我要保留的所有数据。我的代码是:

    ActiveSheet.ListObjects(1).Range.AutoFilter Field:=2, _
        Criteria1:="=0", Operator:=xlAnd
    Rows("2:2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Delete Shift:=xlUp
    ActiveSheet.ListObjects(1).Range.AutoFilter Field:=2
    Columns("A:A").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.ColumnWidth = 8.5
    ActiveWindow.LargeScroll ToRight:=-1
End Sub

【问题讨论】:

  • this一样使用SpecialCells
  • 需要Operator:=xlAnd吗?
  • 您的标题指定 无数据,但您的代码正在过滤 0 .... ..你想要哪个??

标签: excel vba


【解决方案1】:

试试这个代码

Sub Test()
    Call DelFilterParam(Sheet1, "Table1", 2, "=")
End Sub

Sub DelFilterParam(ByVal wsSheet As Worksheet, ByVal stTable As String, ByVal iField As Integer, ByVal vCriteria As Variant)
    With wsSheet
        With .ListObjects(stTable).DataBodyRange
            .AutoFilter
            .AutoFilter Field:=iField, Criteria1:=vCriteria
            .EntireRow.Delete
            .AutoFilter
        End With
    End With
End Sub

【讨论】:

    【解决方案2】:

    你可以试试这个代码

     Sub test()
        Dim H As ListObject
        Set H = Sheet1.ListObjects(1)
        H.Parent.Activate
        H.AutoFilter.ShowAllData
        H.Range.AutoFilter Field:=2, Criteria1:="0"
        Application.DisplayAlerts = False
        H.DataBodyRange.SpecialCells(xlCellTypeVisible).Delete
        Application.DisplayAlerts = True
        H.AutoFilter.ShowAllData
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2019-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-12
      • 1970-01-01
      相关资源
      最近更新 更多