VBA — kopiowanie danych między arkuszami
Gotowe makro VBA do kopiowania zakresu danych między arkuszami. Automatyczne wykrycie ostatniego wiersza i wariant tylko wartości.
Najbezpieczniej jawnie wskazać arkusz źródłowy, docelowy oraz zakres, zamiast opierać się na zaznaczeniu użytkownika.
Skopiuj makro
Sub KopiujDane()
Dim src As Worksheet
Dim dst As Worksheet
Dim lastRow As Long
Set src = ThisWorkbook.Worksheets("Dane")
Set dst = ThisWorkbook.Worksheets("Raport")
lastRow = src.Cells(src.Rows.Count, "A").End(xlUp).Row
src.Range("A2:D" & lastRow).Copy Destination:=dst.Range("A2")
End SubCo zmienić w kodzie?
Zmień nazwy arkuszy "Dane" i "Raport".
Zakres A2:D określa kolumny kopiowane do arkusza docelowego.
Jeśli chcesz kopiować tylko wartości, przypisz .Value bez używania schowka.
Jak działa ten kod?
lastRow pozwala zbudować zakres o dynamicznej długości.
Copy Destination kopiuje dane bez konieczności używania Select lub Activate.
Miejsce docelowe A2 oznacza lewy górny róg wklejanego zakresu.
Najczęstsze błędy
Jeśli w arkuszu docelowym są stare dane poniżej nowego zakresu, wyczyść je przed kopiowaniem.
Kopiowanie całych kolumn jest zwykle niepotrzebnie ciężkie.
Jeżeli potrzebujesz tylko wartości, kopiowanie formatów i formuł może być niepożądane.