Vba: jak skopiować widoczne linie na inny arkusz
Możesz użyć następującej składni w VBA, aby skopiować tylko widoczne wiersze z jednego arkusza do drugiego:
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
To konkretne makro skopiuje każdy widoczny wiersz z zakresu A1:D999 w Arkuszu 1 i wklei je, zaczynając od komórki A1 w Arkuszu 2 .
Uwaga : Linia Application.CutCopyMode = False określa, że po uruchomieniu makra należy wyłączyć tryb wycinania i kopiowania.
Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.
Przykład: Skopiuj widoczne wiersze do innego arkusza za pomocą VBA
Załóżmy, że w Arkuszu 1 mamy następujący zbiór danych, który zawiera informacje o różnych koszykarzach:
Załóżmy teraz, że zastosujemy filtr do zbioru danych, aby wyświetlić tylko wiersze, w których nazwa zespołu jest równa Mavs lub Spurs:
Załóżmy teraz, że chcemy użyć VBA do skopiowania tylko widocznych komórek z Arkusza 1 do Arkusza 2.
W tym celu możemy utworzyć następujące makro:
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
Kiedy uruchomimy to makro, w Arkuszu 2 otrzymamy następujące dane wyjściowe:
Zauważ, że każdy wiersz widoczny w Arkuszu 1 został skopiowany i wklejony do Arkusza 2 .
Uwaga nr 1 : W makrze użyliśmy xlCellTypeVisible , aby określić, że chcemy skopiować tylko widoczne komórki.
Uwaga #2 : Pełną dokumentację metody VBA Copy znajdziesz tutaj .
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w VBA:
VBA: Jak znaleźć ostatnio używaną linię
VBA: skopiuj wiersze do innego arkusza na podstawie kryteriów
VBA: Jak wkleić same wartości bez formatowania