excel VBA,Range类的自动筛选方法失败,

wqlqzqxt  于 2022-11-18  发布在  其他
关注(0)|答案(2)|浏览(287)

我得到错误Autofilter method range of class failed
我想这是因为我的标题中有一个列空间,但不完全确定如何解决这个问题。获取以下行中的错误:

ws.Range("$A:$K").AutoFilter field:=10, Criteria1:="#N/A"

我有我的范围,直到K,但当它得到一个空白列,即“我”,自动过滤器只适用,直到那里。
此外,如果我手动应用过滤器到整个第一行的宏工作。
这是为什么呢?
我试过使用A1:K1,但不起作用。当我调试并手动将过滤器应用到剩余的列时,代码工作正常。

qoefvg9y

qoefvg9y1#

引用不连续区域以应用自动筛选

  • 所有四个解决方案都可以(应该)起作用。欢迎您的反馈。
  • 经验法则:不要让Excel决定(如果不需要)...在这种情况下,
  • 为您设定范围 *。
Sub FilterData()
    
    Dim ws As Worksheet: Set ws = ActiveSheet
    If ws.FilterMode Then ws.ShowAllData ' clears any filters
    
    Dim rg As Range
    ' If your data is the only thing in the worksheet:
    Set rg = ws.UsedRange
'    ' If there are more columns:
'    Set rg = Intersect(ws.UsedRange, ws.Columns("A:K"))
'    ' or:
'    Dim rg As Range: Set rg = ws.Columns("A:K")
'    Dim lCell As Range
'    Set lCell = rg.Find("*", , xlFormulas, , xlByRows, xlPrevious)
'    Set rg = rg.Resize(lCell.Row)
'    ' If additionally there are other data below your data:
'    Set rg = ws.Range("A1").CurrentRegion.Resize(, 11) ' K = 11
    
    rg.AutoFilter Field:=10, Criteria1:="#N/A"

End Sub
pxy2qtax

pxy2qtax2#

您的工作表是否受到保护?如果是,我建议您移除工作表保护,并在筛选程式码之后重新加入。

相关问题