当标准过滤器值有时缺失时如何自动过滤数据

问题描述 投票:0回答:1

我正在尝试编写一段代码,我想根据列是否包含这些值之一(“A”,“B”,“G”,“P”,“L”,“M”,“ C”、“H”、“K”、“T”、“W”、“E”、“N”、“S”、“D”、“X”、“U”、“F”)。但有时该列不具有这些值之一(例如,在一个项目中,没有包含“N”和“L”的数据)。在这种情况下,程序会给我一个错误。我该如何解决这个问题?

我的代码如下:

    Set sh = wbmain.Worksheets("depth")
    
    sh.Range("A1:J" & sh.Range("J" & Rows.Count).End(xlUp).Row).AutoFilter Field:=10, Criteria1:=Array( _
        "A", "B", "G", "P", "L", "M", "C", "H", "K", "T", "W", "E", "N", "S", "D", "X", "U", "F"), Operator:= _
        xlFilterValues
    
    sh.Range("C1:I" & sh.Range("C" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Select

我认为错误简历下一步可能会起作用,但我不确定如何实现它,就好像“M”有错误一样,那么它只会跳过“M”之后的所有内容(而不是过滤“C”, “H”、“K”、“T”、“W”、“E”、“N”、“S”、“D”、“X”、“U”、“F”)...

excel vba macros
1个回答
0
投票

请尝试一下。

    Set sh = wbmain.Worksheets("depth")
    sh.Range("A1:J" & sh.Range("J" & Rows.Count).End(xlUp).Row).AutoFilter Field:=10, Criteria1:=Array( _
        "A", "B", "G", "P", "L", "M", "C", "H", "K", "T", "W", "E", "N", "S", "D", "X", "U", "F"), Operator:= _
        xlFilterValues
    Dim visRng As Range
    On Error Resume Next
    Set visRng = sh.Range("C1:I" & sh.Range("C" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeVisible)
    On Error GoTo 0
    If Not visRng Is Nothing Then visRng.Select
© www.soinside.com 2019 - 2024. All rights reserved.