Samouczek dla początkujących na temat pisania makr VBA w programie Excel (i dlaczego powinieneś się uczyć)

Samouczek dla początkujących na temat pisania makr VBA w programie Excel (i dlaczego powinieneś się uczyć)

Makra Excela mogą zaoszczędzić mnóstwo czasu dzięki automatyzacja procesów Excela, z których często korzystasz . Ale makra są w rzeczywistości dość ograniczone. Łatwo popełnić błąd w narzędziu do nagrywania, a proces nagrywania jest niewygodny.





Używanie VBA do tworzenia makr daje znacznie więcej możliwości. Możesz dokładnie powiedzieć programowi Excel, co ma robić i jak to zrobić. Otrzymasz również dostęp do znacznie większej liczby funkcji i możliwości. Jeśli regularnie korzystasz z Excela, warto nauczyć się tworzyć makra VBA.





Zaczniemy od podstaw.





Co to jest VBA?

VBA to Visual Basic dla aplikacji , język programowania, którego można używać w wielu aplikacjach firmy Microsoft. Visual Basic to język programowania, a VBA to jego wersja specyficzna dla aplikacji. (Microsoft zrezygnował z Visual Basic w 2008 roku, ale VBA wciąż się rozwija).

Na szczęście dla nie-programistów VBA jest bardzo prosty, a interfejs, którego używasz do jego edycji, oferuje wiele pomocy. Wiele poleceń, których będziesz używać, wyświetla podpowiedzi i automatyczne uzupełnianie, ułatwiając szybkie działanie skryptu.



Mimo to przyzwyczajenie się do VBA zajmuje trochę czasu.

Zalety makr VBA w programie Excel

Jeśli VBA jest trudniejsze niż nagrywanie makra, dlaczego miałbyś go używać? Krótka odpowiedź brzmi, że makra VBA mają znacznie więcej mocy.





Zamiast klikać w arkuszu kalkulacyjnym i rejestrować te kliknięcia, możesz uzyskać dostęp do pełnego zakresu funkcji i możliwości programu Excel. Musisz tylko wiedzieć, jak z nich korzystać.

zewnętrzny dysk twardy nierozpoznany windows 10

A kiedy poczujesz się bardziej komfortowo z VBA, możesz zrobić wszystko, co możesz zrobić w zwykłym makrze, w znacznie krótszym czasie. Wyniki będą również bardziej przewidywalne, jak mówisz Excel dokładnie co robić. W ogóle nie ma dwuznaczności.





Po utworzeniu makra VBA można je łatwo zapisać i udostępnić, aby każdy mógł z niego skorzystać. Jest to szczególnie przydatne, gdy pracujesz z wieloma osobami, które muszą wykonywać te same czynności w programie Excel.

Spójrzmy na proste makro VBA, aby zobaczyć, jak to działa.

Przykład makra VBA w Excelu

Spójrzmy na proste makro. Nasz arkusz kalkulacyjny zawiera nazwiska pracowników, numer sklepu, w którym pracują pracownicy oraz ich kwartalną sprzedaż.

To makro doda kwartalną sprzedaż z każdego sklepu i zapisze te sumy do komórek w arkuszu kalkulacyjnym (jeśli nie masz pewności, jak uzyskać dostęp do okna dialogowego VBA, sprawdź nasz przewodnik VBA tutaj ):

Sub StoreSales()
Dim Sum1 As Currency
Dim Sum2 As Currency
Dim Sum3 As Currency
Dim Sum4 As Currency
For Each Cell In Range('C2:C51')
Cell.Activate
If IsEmpty(Cell) Then Exit For
If ActiveCell.Offset(0, -1) = 1 Then
Sum1 = Sum1 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 2 Then
Sum2 = Sum2 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 3 Then
Sum3 = Sum3 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 4 Then
Sum4 = Sum4 + Cell.Value
End If
Next Cell

Range('F2').Value = Sum1
Range('F3').Value = Sum2
Range('F4').Value = Sum3
Range('F5').Value = Sum4

End Sub

Może to wyglądać na długie i skomplikowane, ale podzielimy go, abyś mógł zobaczyć poszczególne elementy i dowiedzieć się trochę o podstawach VBA.

Deklarowanie Sub

Na początku modułu mamy 'Sub StoreSales()'. Definiuje to nową sub o nazwie StoreSales.

Możesz także zdefiniować funkcje --- różnica polega na tym, że funkcje mogą zwracać wartości, a subs nie (jeśli znasz inne języki programowania, subs są odpowiednikami metod). W tym przypadku nie musimy zwracać wartości, więc używamy sub.

Na końcu modułu mamy „End Sub”, który informuje program Excel, że skończyliśmy z tym makrem VBA.

Deklarowanie zmiennych

Wszystkie pierwsze wiersze kodu w naszym skrypcie zaczynają się od „Dim”. Dim to polecenie VBA służące do deklarowania zmiennej.

Tak więc „Dim Sum1” tworzy nową zmienną o nazwie „Sum1”. Musimy jednak powiedzieć Excelowi, jaki to rodzaj zmiennej. Musimy wybrać typ danych. W VBA istnieje wiele różnych typów danych --- można znaleźć pełna lista w dokumentach pomocy Microsoft .

Ponieważ nasze makro VBA będzie dotyczyć walut, używamy typu danych Waluta.

Instrukcja „Dim Sum1 As Currency” nakazuje programowi Excel utworzenie nowej zmiennej Currency o nazwie Sum1. Każda zadeklarowana zmienna musi mieć instrukcję „As”, aby poinformować program Excel o jej typie.

Uruchamianie pętli for

Pętle to jedne z najpotężniejszych rzeczy, które możesz stworzyć w dowolnym języku programowania. Jeśli nie znasz pętli, zapoznaj się z tym wyjaśnieniem pętli Do-While . W tym przykładzie używamy pętli For, która również została omówiona w artykule.

Oto jak wygląda pętla:

For Each Cell in Range('C2:C51')
[a bunch of stuff]
Next Cell

To mówi programowi Excel, aby iterował przez komórki w określonym przez nas zakresie. Użyliśmy Zakres obiektu , który jest specyficznym typem obiektu w VBA. Kiedy używamy go w ten sposób ---Range('C2:C51')---mówi Excelowi, że jesteśmy zainteresowani tymi 50 komórkami.

„For Each” mówi Excelowi, że zrobimy coś z każdą komórką w zakresie. „Następna komórka” pojawia się po wszystkim, co chcemy zrobić, i mówi Excelowi, aby rozpoczął pętlę od początku (zaczynając od następnej komórki).

Mamy też takie stwierdzenie: „Jeśli jest pusta (komórka), to wyjdź po”.

Czy wiesz, co to robi?

Notatka: Ściśle mówiąc, użycie pętli While mogło być lepszym wyborem . Jednak ze względu na naukę zdecydowałem się użyć pętli For z wyjściem.

skąd mam wiedzieć, jaka jest moja płyta główna?

Stwierdzenia „jeżeli-to-inaczej”

Rdzeń tego konkretnego makra znajduje się w instrukcjach If-Then-Else. Oto nasza sekwencja instrukcji warunkowych:

If ActiveCell.Offset(0, -1) = 1 Then
Sum1 = Sum1 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 2 Then
Sum2 = Sum2 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 3 Then
Sum3 = Sum3 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 4 Then
Sum4 = Sum4 + Cell.Value
End If

W większości przypadków prawdopodobnie możesz się domyślić, co robią te stwierdzenia. Możesz jednak nie znać ActiveCell.Offset. „ActiveCell.Offset(0, -1)” nakazuje programowi Excel przyjrzenie się komórce znajdującej się o jedną kolumnę na lewo od aktywnej komórki.

W naszym przypadku oznacza to, że program Excel sprawdzi kolumnę numeru sklepu. Jeśli Excel znajdzie 1 w tej kolumnie, pobiera zawartość aktywnej komórki i dodaje ją do Sum1. Jeśli znajdzie 2, dodaje zawartość aktywnej komórki do Sum2. I tak dalej.

Excel przechodzi przez wszystkie te instrukcje w kolejności. Jeśli instrukcja warunkowa jest spełniony, uzupełnia instrukcję Then. Jeśli nie, przechodzi do następnego ElseIf. Jeśli dojdzie do końca i żaden z warunków nie zostanie spełniony, nie podejmie żadnych działań.

Kombinacja pętli i warunków warunkowych jest tym, co napędza to makro. Pętla informuje program Excel, aby przeszedł przez każdą komórkę w zaznaczeniu, a warunki warunkowe informują go, co ma zrobić z tą komórką.

Zapisywanie wartości komórek

Na koniec możemy zapisać wyniki naszych obliczeń do komórek. Oto linie, których używamy, aby to zrobić:

Range('F2').Value = Sum1
Range('F3').Value = Sum2
Range('F4').Value = Sum3
Range('F5').Value = Sum4

Za pomocą „.Value” i znaku równości ustawiamy każdą z tych komórek na wartość jednej z naszych zmiennych.

I to wszystko! Mówimy programowi Excel, że skończyliśmy pisać ten Sub za pomocą „End Sub”, a makro VBA jest gotowe.

Kiedy uruchamiamy makro z Makra przycisk w Deweloper zakładka, otrzymujemy nasze sumy:

Łączenie bloków konstrukcyjnych VBA w programie Excel

Kiedy po raz pierwszy spojrzysz na powyższe makro VBA, wygląda ono dość skomplikowanie. Ale po rozbiciu go na części składowe logika staje się jasna. Jak każdy język skryptowy, przyzwyczajenie się do składni VBA wymaga czasu.

Ale wraz z praktyką zbudujesz swoje słownictwo VBA i będziesz w stanie pisać makra szybciej, dokładniej i ze znacznie większą mocą, niż kiedykolwiek mógłbyś je nagrać.

Gdy utkniesz, uruchomienie wyszukiwania Google to szybki sposób na uzyskanie odpowiedzi na pytania VBA. I Dokumentacja Microsoft Excel VBA może być pomocny, jeśli chcesz go przekopać w poszukiwaniu technicznej odpowiedzi.

Gdy już opanujesz podstawy, możesz zacząć używać VBA do takich rzeczy jak wysyłanie e-maili z Excela eksportowanie zadań programu Outlook i wyświetlanie informacji o komputerze.

darmowe filmy online bez pobierania, rejestracji i płacenia
Udział Udział Ćwierkać E-mail Oto dlaczego FBI wydało ostrzeżenie dotyczące Hive Ransomware

FBI wydało ostrzeżenie o szczególnie paskudnym szczepie oprogramowania ransomware. Oto dlaczego należy szczególnie uważać na oprogramowanie ransomware Hive.

Czytaj dalej
Powiązane tematy
  • Wydajność
  • Arkusz
  • Microsoft Excel
  • Microsoft Office 2016
  • Makra
  • Poradniki kodowania
O autorze Potem Albright(506 opublikowanych artykułów)

Dann jest konsultantem ds. strategii treści i marketingu, który pomaga firmom generować popyt i leady. Prowadzi również bloga o strategii i content marketingu na dannalbright.com.

Więcej od Danna Albrighta

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Kliknij tutaj, aby zasubskrybować