2015-10-21 64 views
2

我有一个带有自动过滤器的Excel表。Excel VBA通​​过可视过滤行循环

在已过滤的表格中,我只有几行过滤。

我的目标是强化所有可见的行以将数据复制到其他表单中。

我想要一种方式来收集一个变量与fisrt可见行号。

我的代码草案:

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 

回答

8

GD若昂,

您的代码包含了几个错误,你提供一些额外的信息,让我们来帮助你,而是要放在一个尝试。

请参阅下面的代码并与您的代码进行比较,下面的代码与您正在尝试执行的操作最接近,并且经过测试和工作。

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 

祝你好运!

+0

GD Joao,如果我的答案解决了您的问题,那么请接受它作为正确的答案?您可以通过点击我答案顶部的大“V”勾来完成。 – mtholen

+0

谢谢。有用! –