Excel VBA-设置范围过滤表可见单元格

时间:2019-07-03 19:30:23

标签: excel vba

我正在使用此代码将已过滤表格的范围设置为仅可见单元格。

Set rngMyRange = Selection.SpecialCells(xlCellTypeVisible)

但是,如果只选择了一个单元格,那就是一个奇怪的错误,也就是说,代码选择了过滤表中所有使用的范围。

如果选择的区域大于一个单元格,则代码将按预期工作。有没有解决的办法?

1 个答案:

答案 0 :(得分:0)

通常使用“选择”不是一个好习惯;我猜您只需要获取可见单元格的范围即可,您可以轻松地使用它:

Sub GetVisibleRangeOnly()
    Dim tbl As ListObject
    Dim rng As Range

    'change the name of the table and worksheet as you need
    Set tbl = Worksheets("Sheet1").ListObjects("Table1")

    'Note: if there is no visible cell after filtraton rng IS NOTHING will be TRUE
    Set rng = tbl.DataBodyRange.SpecialCells(xlCellTypeVisible)

End Sub