Vba: как скопировать видимые строки на другой лист
Вы можете использовать следующий синтаксис в VBA для копирования только видимых строк с одного листа на другой:
SubCopyVisibleRows ()
Dim sourceWS As Worksheet
Dim destinationWS As Worksheet
Set sourceWS = ThisWorkbook.Sheets(" Sheet1 ")
Set destinationWS = ThisWorkbook.Sheets(" Sheet2 ")
sourceWS.Range(" A1:D999 ").SpecialCells(xlCellTypeVisible).Copy
destinationWS.Cells(1, 1).PasteSpecial
Application.CutCopyMode = False
End Sub
Этот конкретный макрос скопирует каждую видимую строку в диапазоне A1:D999 листа Sheet1 и вставит их, начиная с ячейки A1 листа Sheet2 .
Примечание . Строка Application.CutCopyMode = False указывает, что режим вырезания и копирования должен быть отключен после запуска макроса.
В следующем примере показано, как использовать этот синтаксис на практике.
Пример. Копирование видимых строк на другой лист с помощью VBA.
Предположим, у нас есть следующий набор данных на листе 1 , который содержит информацию о различных баскетболистах:
Теперь предположим, что мы применяем фильтр к набору данных, чтобы отображать только строки, в которых название команды равно Mavs или Spurs:
Теперь предположим, что мы хотим использовать VBA для копирования только видимых ячеек с Листа 1 на Лист 2.
Для этого мы можем создать следующий макрос:
SubCopyVisibleRows ()
Dim sourceWS As Worksheet
Dim destinationWS As Worksheet
Set sourceWS = ThisWorkbook.Sheets(" Sheet1 ")
Set destinationWS = ThisWorkbook.Sheets(" Sheet2 ")
sourceWS.Range(" A1:D999 ").SpecialCells(xlCellTypeVisible).Copy
destinationWS.Cells(1, 1).PasteSpecial
Application.CutCopyMode = False
End Sub
Когда мы запускаем этот макрос, мы получаем следующий вывод в Sheet2 :
Обратите внимание, что каждая строка, видимая на Листе1 , была скопирована и вставлена на Лист2 .
Примечание № 1. Мы использовали xlCellTypeVisible в макросе, чтобы указать, что мы хотим копировать только видимые ячейки.
Примечание № 2. Полную документацию по методу копирования VBA можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в VBA:
VBA: как найти последнюю использованную строку
VBA: скопировать строки на другой лист на основе критериев
VBA: Как вставить только значения без форматирования