2015-10-21 11 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 Joao,

Ваш код содержит несколько ошибок, и вы предоставить немного дополнительной информации, чтобы позволить нам помочь, но положить в попытке.

Пожалуйста, смотрите ниже код и сравнивайте ваш код, указанный ниже код ближе всего к тому, что вы пытаетесь сделать, и тестируется и работает.

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

Спасибо. оно работает! –