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.

Najkrócej:

Najbezpieczniej jawnie wskazać arkusz źródłowy, docelowy oraz zakres, zamiast opierać się na zaznaczeniu użytkownika.

Gotowy kod

Skopiuj makro

VBA
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 Sub
Dostosowanie

Co zmienić w kodzie?

01

Zmień nazwy arkuszy "Dane" i "Raport".

02

Zakres A2:D określa kolumny kopiowane do arkusza docelowego.

03

Jeśli chcesz kopiować tylko wartości, przypisz .Value bez używania schowka.

Wyjaśnienie

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.

Uważaj na

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.