Potrzebowałem nauczyć się pisać makra w Excelu, lecz z dostępnych darmowych kursów nie najlepiej wychodziło w końcu sięgnąłem po artykuł Pana Tomka Kuchta z ExcelForum.pl w którym porównuje szybkość algorytmów sortowań który mnie olśnił i pokazał w jaki sposób pisać makra. Artykuł dostępny pod tym linkiem.
Na samym początku powiedzmy sobie co to VBA w Excelu, to środowisko dla programisty w którym dosłownie możemy programować Excela. W tej części wytłumaczę parę zagadnień oraz obsługę.
Excel dla Dewelopera.
Uruchamiamy program Excel, tworzymy sobie nowy pusty arkusz, następnie sprawiamy aby naszym oczom w pasku narzędzi pojawiła się opcja Deweloper.
Wybieramy w Menu Plik -> Opcje
W kolejnym oknie przechodzimy w lewym panelu do opcji Dostosowywanie Wstążki i zaznaczamy opcje jak ww. screenie Deweloper klikamy OK i naszym oczom objawi się opcja dla Deweloperów.
Z panelu narzędzi wybieramy opcje Deweloper i uruchamiamy w lewym górnym rogu Visual Basic.
Po lewej stronie znajduje się podgląd projektu.
Aby zacząć pisać makro musimy stworzyć moduł wybierając z górnego Menu Insert -> Module.
W podglądzie projektu pojawi się nasz stworzony moduł i otworzy zawartość, w której będziemy pisać kod programu.
Tworzymy arkusz do pracy.
Stwórzmy sobie arkusz podobny do mojego A1 – Nr części, B2 – Nazwa, B3 – Cena i uzupełnijmy z 10 wierszy pod nimi.
Stwórzmy dodatkowy skoroszyt o nazwie Kopia, a pierwszy nazwijmy Baza.
Programowanie VBA procedura kopiowanie, makro i objaśnienie.
Sub kopiowanie(baza, kopia, ilosc_wierszy, ilosc_kolumn) ' procedura Sub kopiowanie przejmująca 4 zmienne Dim i As Integer ' deklaracja i typu integer Dim j As Integer ' deklaracja j typu integer ' 2 pętle zagnieżdżone for, kopiowanie ' For i = 1 To ilosc_wierszy ' rozpoczęcie pętli for i = 1 do ilosc_wierszy For j = 1 To ilosc_kolumn ' rozpoczęcie pętli for j = 1 do ilosc_kolumn ' przypisanie wartości komórki(i,j) kopii do komórki bazy ' kopia.Cells(i, j).Value = baza.Cells(i, j).Value Next ' zakończenie pętli dla j Next ' zakończenie pętli dla i End Sub ' zakończenie procedury kopiowanie Sub makro() Dim baza As Worksheet ' deklaracja nazwy baza Dim kopia As Worksheet Dim ilosc_wierszy As Integer Dim ilosc_kolumn As Integer Set baza = Sheets("Baza") ' przypisanie dla zmiennej baza skoroszytu "Baza" Set kopia = Sheets("Kopia") ' jw ilosc_wierszy = baza.UsedRange.Rows.Count ' przypisanie ilosci wierwszy dla zmiennej ilosc_kolumn = baza.UsedRange.Columns.Count ' jw Call kopiowanie(baza, kopia, ilosc_wierszy, ilosc_kolumn) ' wywolanie makra End Sub
W komentarzach większość rzeczy została wytłumaczona, teraz wystarczy poczytać i rozszyfrować, ten program naprowadził mnie do dalszej przygody z VBA, jest czytelny i przypomina inne języki programowania.
Jeżeli podobał Ci się ten artykuł i chciałbyś kolejne, zostaw komentarz 🙂