4 błędy, których należy unikać podczas programowania makr Excela za pomocą VBA

4 błędy, których należy unikać podczas programowania makr Excela za pomocą VBA

Microsoft Excel jest już zdolnym narzędziem do analizy danych, ale dzięki możliwości automatyzacji powtarzalnych zadań za pomocą makr poprzez pisanie prostego kodu w Visual Basic for Applications (VBA) jest o wiele bardziej wydajne. Jednak używany niepoprawnie VBA może powodować problemy.





Nawet jeśli nie jesteś programistą, VBA oferuje proste funkcje, które pozwalają dodać imponującą funkcjonalność do arkuszy kalkulacyjnych.





Nie ma znaczenia, czy jesteś guru VBA, który tworzy pulpity nawigacyjne w programie Excel, czy nowicjuszem piszącym proste skrypty, które wykonują podstawowe obliczenia komórek. Postępuj zgodnie z tymi prostymi technikami programowania, aby nauczyć się pisać czysty, wolny od błędów kod.





Pierwsze kroki z VBA

VBA może zrobić dla Ciebie różne fajne rzeczy. Od pisania makr modyfikujących arkusze do wysyłanie e-maili z arkusza kalkulacyjnego Excel za pomocą skryptów VBA istnieje bardzo niewiele ograniczeń dotyczących Twojej produktywności.

Jeśli nie programowałeś wcześniej w VBA w programie Excel, musisz włączyć narzędzia deweloperskie w swoim programie Excel. Dobrą wiadomością jest to, że włączenie narzędzi programistycznych jest całkiem proste. Po prostu idź do Plik > Opcje i wtedy Dostosuj wstążkę . Po prostu przesuń Deweloper zakładka od lewego okienka do prawej.



Upewnij się, że pole wyboru ma włączoną tę kartę, a teraz karta Deweloper pojawi się w menu programu Excel.

Najłatwiejszym sposobem na przejście do okna edytora kodu jest po prostu kliknięcie na Zobacz kod przycisk pod Sterownica w menu programisty.





Jesteś teraz gotowy do pisania kodu VBA! W tej zakładce uzyskasz dostęp do VBA, a także nagrywanie makr w Excelu . Teraz, gdy program Excel jest gotowy do pracy, przyjrzyjmy się kilku typowym błędom, których należy unikać, oraz sposobom ich zapobiegania.

1. Okropne nazwy zmiennych

Teraz, gdy jesteś w oknie kodu, czas zacząć pisać kod VBA. Pierwszym ważnym krokiem w większości programów, czy to w VBA, czy w jakimkolwiek innym języku, jest zdefiniowanie zmiennych. Niewłaściwe nazywanie zmiennych jest jednym z najczęstszych błędów programistycznych popełnianych przez nowych programistów.





jak napisać pętlę for w java

Przez dziesięciolecia pisania kodu natknąłem się na wiele szkół myślenia, jeśli chodzi o konwencje nazewnictwa zmiennych i na własnej skórze nauczyłem się kilku zasad. Oto kilka szybkich wskazówek dotyczących tworzenia nazw zmiennych:

  • Postaraj się, aby były jak najkrótsze.
  • Postaraj się, aby były jak najbardziej opisowe.
  • Poprzedź je typem zmiennej (boolean, integer itp.).

Oto przykładowy zrzut ekranu z programu, którego często używam do wykonywania wywołań Windows WMIC z programu Excel w celu zebrania informacji o komputerze .

Jeśli chcesz użyć zmiennych wewnątrz funkcji w module lub obiekcie (wyjaśnię to poniżej), musisz zadeklarować ją jako zmienną „publiczną”, poprzedzając deklarację słowem Publiczny . W przeciwnym razie zmienne są deklarowane przez poprzedzenie ich słowem Nic .

Jak widać, jeśli zmienna jest liczbą całkowitą, jest poprzedzona int . Jeśli to ciąg, to P . Jest to osobista preferencja, która pomaga później podczas programowania, ponieważ zawsze będziesz wiedzieć, jaki typ danych przechowuje zmienna, patrząc na nazwę.

Pamiętaj też, aby nazwać arkusze w skoroszycie programu Excel.

W ten sposób, gdy odwołujesz się do nazwy arkusza w kodzie Excel VBA, odwołujesz się do nazwy, która ma sens. W powyższym przykładzie mam arkusz, w którym pobieram informacje o sieci, więc nazywam arkusz „Sieć”. Za każdym razem, gdy chcę odwołać się do arkusza Sieć, mogę to zrobić szybko, nie sprawdzając numeru arkusza.

2. Łamanie zamiast zapętlania

Jednym z najczęstszych problemów nowszych programistów VBA, gdy zaczynają pisać kod, jest prawidłowe radzenie sobie z pętlami.

Zapętlanie jest bardzo powszechne w programie Excel, ponieważ często przetwarzasz wartości danych w całym wierszu lub kolumnie, więc musisz zapętlić, aby przetworzyć je wszystkie.

Nowi programiści często chcą po prostu wyrwać się z pętli (pętle VBA For lub pętle VBA Do While ) natychmiast po spełnieniu określonego warunku.

Oto przykład tej metody używanej do przerwania pętli VBA.

For x = 1 To 20
If x = 6 Then Exit For
y = x + intRoomTemp
Next i

Nowi programiści stosują takie podejście, ponieważ jest to łatwe. Staraj się unikać jawnego przerywania pętli.

Najczęściej kod, który pojawia się po tej „przerwie”, jest ważny do przetworzenia. O wiele czystszym i bardziej profesjonalnym sposobem obsługi warunków, w których chcesz opuścić pętlę w połowie, jest po prostu uwzględnienie tego warunku wyjścia w czymś takim jak instrukcja VBA While.

While (x>=1 AND x<=20 AND x6)
For x = 1 To 20
y = x + intRoomTemp
Next i
Wend

Pozwala to na logiczny przepływ kodu. Teraz kod przejdzie w pętlę i zatrzyma się, gdy osiągnie 6. Nie ma potrzeby dołączania niezręcznych poleceń EXIT lub BREAK w połowie pętli.

3. Nieużywanie tablic

Innym interesującym błędem, jaki popełniają nowi programiści VBA, jest próba przetwarzania wszystkiego wewnątrz licznych zagnieżdżonych pętli, które filtrują wiersze i kolumny podczas procesu obliczeniowego.

Może to również prowadzić do poważnych problemów z wydajnością. Przechodzenie przez kolumnę i wydobywanie wartości za każdym razem jest zabójcą dla twojego procesora. Bardziej wydajnym sposobem obsługi długich list liczb jest użycie tablicy.

Jeśli nigdy wcześniej nie używałeś tablicy, nie martw się. Wyobraź sobie tablicę jako tackę na kostki lodu z określoną liczbą „kostek”, w których możesz umieścić informacje. Kostki są ponumerowane od 1 do 12 iw ten sposób „wkładasz” do nich dane.

Możesz łatwo zdefiniować tablicę, wpisując Dim arrMyArray(12) jako Integer .

jak używać telefonu jako mikrofonu do komputera?

Tworzy to „tacę” z 12 dostępnymi miejscami do wypełnienia.

Oto jak może wyglądać kod z pętlą wierszy bez tablicy:

Sub Test1()
Dim x As Integer
intNumRows = Range('A2', Range('A2').End(xldown)).Rows.Count
Range('A2').Select
For x = 1 To intNumRows
If Range('A' & str(x)).value <100 then
intTemp = (Range('A' & str(x)).value) * 32 - 100
End If
ActiveCell.Offset(1, 0).Select
Next
End Sub

W tym przykładzie kod jest przetwarzany w dół przez każdą komórkę w zakresie i wykonuje obliczenia temperatury.

Jeśli kiedykolwiek będziesz chciał wykonać inne obliczenia na tych samych wartościach, proces będzie niezgrabny. Będziesz musiał zduplikować ten kod, przetworzyć wszystkie te komórki i wykonać nowe obliczenia. Wszystko za jedną zmianę!

Oto lepszy przykład, używając tablicy. Najpierw utwórzmy tablicę.

Sub Test1()
Dim x As Integer
intNumRows = Range('A2', Range('A2').End(xldown)).Rows.Count
Range('A2').Select
For x = 1 To intNumRows
arrMyArray(x-1) = Range('A' & str(x)).value)
ActiveCell.Offset(1, 0).Select
Next
End Sub

ten x-1 do wskazywania elementu tablicy jest konieczne tylko dlatego, że pętla For zaczyna się od 1. Elementy tablicy muszą zaczynać się od 0.

Teraz, gdy masz już tablicę, bardzo łatwo jest przetworzyć zawartość.

Sub TempCalc()
For x = 0 To UBound(arrMyArray)
arrMyTemps(y) = arrMyArray(x) * 32 - 100
Next
End Sub

Ten przykład przechodzi przez całą tablicę wierszy ( UBound podaje liczbę wartości danych w tablicy), wykonuje obliczenia temperatury, a następnie umieszcza je w innej tablicy o nazwie arrMyTemps .

4. Używanie zbyt wielu odniesień

Niezależnie od tego, czy programujesz w pełnoprawnym Visual Basic, czy VBA, musisz uwzględnić „odniesienia”, aby uzyskać dostęp do niektórych funkcji.

Odwołania są czymś w rodzaju „bibliotek” wypełnionych funkcjami, z których można skorzystać, jeśli włączysz ten plik. Referencje można znaleźć w widoku programisty, klikając Narzędzia w menu, a następnie klikając Bibliografia .

To, co znajdziesz w tym oknie, to wszystkie aktualnie wybrane referencje dla twojego bieżącego projektu VBA.

Powinieneś sprawdzić tę listę, ponieważ niepotrzebne odniesienia mogą marnować zasoby systemowe. Jeśli nie używasz żadnej manipulacji plikami XML, to po co pozostawiać zaznaczoną opcję Microsoft XML? Jeśli nie komunikujesz się z bazą danych, usuń Microsoft DAO itp.

Jeśli nie masz pewności, co robią te wybrane odniesienia, naciśnij F2 a zobaczysz Eksploratora obiektów. W górnej części tego okna możesz wybrać bibliotekę referencyjną do przeglądania.

Po wybraniu zobaczysz wszystkie obiekty i dostępne funkcje, na które możesz kliknąć, aby dowiedzieć się więcej.

Na przykład, kiedy klikam na bibliotekę DAO, szybko staje się jasne, że chodzi o łączenie się z bazami danych i komunikację z nimi.

Zmniejszenie liczby odwołań używanych w projekcie programistycznym jest po prostu dobrym rozsądkiem i pomoże zwiększyć wydajność całej aplikacji.

jak uzyskać e-mail icloud na Androidzie

Programowanie w Excel VBA

Cały pomysł pisania kodu w Excelu przeraża wiele osób, ale ten strach naprawdę nie jest konieczny. Visual Basic for Applications to bardzo prosty język do nauczenia się, a jeśli zastosujesz się do podstawowych typowych praktyk wymienionych powyżej, zapewnisz, że Twój kod jest czysty, wydajny i łatwy do zrozumienia.

Nie zatrzymuj się na tym. Zbuduj solidne podstawy umiejętności Excela dzięki Samouczek VBA dla początkujących . Następnie zapoznaj się z językiem VBA i makrami dzięki zasobom, które pomogą Ci zautomatyzować arkusze kalkulacyjne .

Udział Udział Ćwierkać E-mail Czy warto uaktualnić do systemu Windows 11?

Windows został przeprojektowany. Ale czy to wystarczy, aby przekonać Cię do przejścia z Windows 10 na Windows 11?

Czytaj dalej
Powiązane tematy
  • Wydajność
  • Programowanie
  • Programowanie
  • Programowanie Visual Basic
  • Microsoft Excel
O autorze Antoniego Granta(40 opublikowanych artykułów)

Anthony Grant jest niezależnym pisarzem zajmującym się programowaniem i oprogramowaniem. Jest specjalistą w dziedzinie informatyki, zajmuje się programowaniem, Excelem, oprogramowaniem i technologią.

Więcej od Anthony'ego Granta

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ć