Używanie VBA do programowania Excela nie jest tak popularne, jak kiedyś. Jednak wciąż jest wielu programistów, którzy wolą to podczas pracy z programem Excel. Jeśli jesteś jedną z tych osób, ten artykuł jest dla Ciebie.
Kopiowanie wiersza w programie Excel VBA to coś, w czym Excel VBA jest naprawdę przydatny. Na przykład możesz chcieć mieć jeden plik ze wszystkimi potwierdzeniami z datą, kontem, kategorią, dostawcą, produkt / usługa i koszty wprowadzane są pojedynczo, w miarę ich pojawiania się - raczej ewolucja księgowości rachunkowość statyczna. Aby to zrobić, musisz mieć możliwość skopiowania wiersza z jednego arkusza do drugiego.
Przykładowy program Excel VBA, który kopiuje wiersz z jednego arkusza do drugiego - używając tylko trzech kolumn dla uproszczenia - zawiera:
- Kolumna alfa dla tekst
- Kolumna numeryczna - w docelowym arkuszu tworzona jest suma automatyczna
- Kolumna daty - bieżąca data i godzina są wypełniane automatycznie
Uwagi dotyczące pisania kodu Excel VBA
Aby wywołać zdarzenie, które kopiuje wiersz, użyj standardowego elementu sterującego formularza przycisku. W programie Excel kliknij Wstaw na karcie Deweloper. Następnie wybierz kontrolkę Formularz przycisku i narysuj przycisk tam, gdzie chcesz. Program Excel automatycznie wyświetla okno dialogowe, które umożliwia wybranie opcji
makro wyzwalane zdarzeniem kliknięcia przycisku lub w celu utworzenia nowego.Istnieje kilka sposobów znalezienia ostatniego wiersza w docelowym arkuszu, aby program mógł skopiować wiersz na dole. W tym przykładzie wybrano zachowanie numeru ostatniego wiersza w arkuszu. Aby zachować numer ostatniego rzędu, musisz gdzieś zapisać tę liczbę. Może to stanowić problem, ponieważ użytkownik może zmienić lub usunąć numer. Aby obejść ten problem, umieść go w komórce bezpośrednio pod przyciskiem formularza. W ten sposób użytkownik jest niedostępny. (Najłatwiej jest wprowadzić wartość w komórce, a następnie przesunąć nad nią przycisk).
Kod do skopiowania wiersza za pomocą Excel VBA
Sub Add_The_Line () Dim currentRow As Integer Sheets („Sheet1”). Wybierz currentRow = Zakres („C2”). Wartość Rzędy (7). Wybierz opcję Select. Skopiuj arkusze („Arkusz2”). Wybierz Wiersze (currentRow). Wybierz ActiveSheet. Wklej Dim theDate As Date theDate = Now () Cells (currentRow, 4) .Value = CStr (theDate) Cells (currentRow + 1, 3). Aktywuj Dim rTotalCell As Range Set rTotalCell = _ Arkusze („Arkusz2”). Komórki ( Wydziwianie. Count, „C”). End (xlUp) .Offset (1, 0) rTotalCell = Funkcja arkusza roboczego. Suma _ (zakres („C7”, rTotalCell. Offset (-1, 0))) Arkusze („Arkusz 1”). Zakres („C2”). Wartość = prąd Rzęd + 1 Koniec Sub
W tym kodzie użyto xlUp, „magicznej liczby” lub, bardziej technicznie, wyliczonej stałej, która jest rozpoznawana przez metodę End. Przesunięcie (1,0) po prostu przesuwa się o jeden wiersz w górę w tej samej kolumnie, więc efektem netto jest wybranie ostatniej komórki w kolumnie C.
Słowem oświadczenie mówi:
- Przejdź do ostatniej komórki w kolumnie C (odpowiednik End + Strzałka w dół).
- Następnie wróć do ostatniej nieużywanej komórki (odpowiednik strzałki End + Strzałka w górę).
- Następnie przejdź o jeszcze jedną komórkę.
Ostatnia instrukcja aktualizuje lokalizację ostatniego wiersza.
VBA jest prawdopodobnie trudniejszy niż VB.NET, ponieważ musisz znać zarówno VB, jak i Excel VBA. Korzystanie z xlUP jest dobrym przykładem specjalistycznej wiedzy, która jest niezbędna do pisania makr VBA bez szukania trzech różnych rzeczy dla każdej instrukcji, którą kodujesz. Firma Microsoft poczyniła duże postępy w uaktualnianiu edytora Visual Studio, aby pomóc ci ustalić prawidłową składnię, ale edytor VBA niewiele się zmienił.