【问题标题】:Loop Through Dynamic Filtered List循环通过动态过滤列表
【发布时间】:2017-08-18 13:24:16
【问题描述】:

如何遍历过滤列表中的可见行?我在第一个过滤行中有一个单元格,假设 B 列是“Y”。我需要能够将特定列中的所有非隐藏单元格更改为 Y。这也需要是动态的,因为 B 列的范围每天都会有所不同。

基本上,我需要修改这段代码:

Range("B2").Select --Where B2 is "Y"

Selection.AutoFill Destination:=Range(*This is where I am unsure*)

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    不确定您在此处使用自动填充到底想达到什么目的,但这会让您了解如何处理过滤后的单元格...

    Dim ws As Worksheet
    Dim lr As Long
    Dim FillWith As String
    
    Set ws = ActiveSheet    'Change it as per your requirement
    lr = ws.UsedRange.Rows.Count
    FillWith = ws.Range("B2").Value     'Change it as per your requirement
    If ws.FilterMode Then
        If ws.Range("B1:B" & lr).SpecialCells(xlCellTypeVisible).Cells.Count > 1 Then
            ws.Range("B2:B" & lr).SpecialCells(xlCellTypeVisible).Value = FillWith
        End If
    End If
    

    【讨论】:

    • 您好,感谢您的回复。我没有关注 lr 变量。我们想在那里做什么?
    • lr 变量保存工作表上使用的最后一行,即包含数据的最后一行,当您需要在应用过滤条件后检查某些行是否可见时,这是必不可少的,并且根据您的要求,您只需需要在应用过滤条件后填充 B 列中的可见单元格。代码中的 IF 条件在应用过滤器后检查某些行是否可见,如果符合条件,则只有代码会填充 B 列中的可见单元格。
    • @studentofarkad 不客气!很高兴它奏效了。请花一点时间接受答案,将您的问题标记为已解决。 :)
    • 我是通过更新标题做到的,但还有其他方法吗?
    【解决方案2】:

    您只能使用SpecialCells 引用可见单元格

    Range("A2:A100").SpecialCells (xlCellTypeVisible)
    

    【讨论】:

    猜你喜欢
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2020-05-04
    相关资源
    最近更新 更多