Excel VBA循环遍历可见的筛选行

3

我有一个带自动筛选的Excel表。

在筛选后的表格中,只有少量行被筛选出来。

我的目标是迭代所有可见行以收集数据并复制到另一个工作表中。

我想找到一种方法来收集第一个可见行号的变量。

我的草稿代码如下:

Dim cnp As String
Dim nome As String
Dim filter_rng As Range
Dim rw As Range
Dim last_row As Long 'last visible data row
Dim dest_row As Long 'row to paste the colected data

Set filter_rng = Range("A5:Y" & last_row).Rows.SpecialCells(xlCellTypeVisible)
'collect data
For Each rw In filter_rng.SpecialCells(xlCellTypeVisible)
    workshett(1).Activate
    cnp = Range("a" & rw).Value
    nome = Range("b" & rw).Value

'copy data to another worksheet first data line is cell A2
    Worksheet(2).Activate
    Range("A" & dest_row + 1).Value = cnp
    Range("b" & dest_row + 1).Value = nome

Next rw
1个回答

10

你的代码包含多个错误,并且你提供的额外信息很少,这使我们难以帮助你,但还是会尝试。

请参考下方的代码并与你自己的代码进行比较,下面的代码最接近你所尝试做的,并经过测试和工作正常。

Dim cnp As String
Dim nome As String
Dim filter_rng As Range
Dim rw As Range
Dim last_row As Long 'last visible data row
Dim dest_row As Long 'row to paste the colected data

last_row = 200
dest_row = 1

Set filter_rng = Sheets(1).Range("A5:Y" & last_row)

'collect data
For Each rw In filter_rng.SpecialCells(xlCellTypeVisible)
    'Worksheets(1).Activate
    cnp = Sheets(1).Range("A" & rw.Row).Value
    nome = Sheets(1).Range("B" & rw.Row).Value

'copy data to another worksheet first data line is cell A2
    'Worksheets(2).Activate
    Sheets(2).Range("A" & dest_row + 1).Value = cnp
    Sheets(2).Range("B" & dest_row + 1).Value = nome

Next rw

GD Joao,如果我的回答解决了你的问题,请接受它作为正确答案?你可以通过点击我回答顶部的大“V”符号来完成。 - mtholen
SpecialCells 只在筛选器连续的情况下起作用。 - Fandango68

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接