4 błędów, których można uniknąć podczas programowania makr programu Excel za pomocą VBA

  • Gabriel Brooks
  • 0
  • 2919
  • 751
Reklama

Microsoft Excel jest już bardzo skutecznym narzędziem do analizy danych, ale z możliwością zautomatyzowania powtarzających się zadań za pomocą makr Jak wysyłać wiadomości e-mail z arkusza kalkulacyjnego Excel za pomocą skryptów VBA Jak wysyłać wiadomości e-mail z arkusza kalkulacyjnego Excel za pomocą skryptów VBA Nasz szablon kodu pomoże Ci ustawić zautomatyzowane wiadomości e-mail z poziomu programu Excel za pomocą skryptów CDO (Collaboration Data Objects) i skryptów VBA. pisząc prosty kod w (VBA), jest on o wiele bardziej wydajny. Jednak nieprawidłowo użyte VBA może powodować wiele problemów.

Nawet jeśli nie jesteś programistą, VBA oferuje proste funkcje, które pozwalają dodać naprawdę imponującą funkcjonalność do arkuszy kalkulacyjnych, więc nie odchodź jeszcze!

Niezależnie od tego, czy jesteś guru w języku VBA, który tworzy pulpity nawigacyjne w programie Excel Zbuduj własny pulpit nawigacyjny pogody w tej klasie mistrzowskiej Arkusz kalkulacyjny Zbuduj swój własny pulpit nawigacyjny w tej klasie mistrzowskiej Arkusz kalkulacyjny Google Czy chcesz przekształcić swoje konto na Dysku Google w inteligentny system analizy pogody i żyjesz fantazją Star Trek? Dobrze! lub nowicjusz, który umie tylko pisać proste skrypty wykonujące podstawowe obliczenia komórkowe, możesz zastosować proste techniki programowania, które pomogą Ci zwiększyć szanse na napisanie czystego i wolnego od błędów kodu.

Rozpoczęcie pracy z VBA

Jeśli wcześniej nie programowałeś w VBA w Excelu, włączenie narzędzi programistycznych jest w rzeczywistości dość łatwe. Po prostu idź do Plik > Opcje i wtedy Dostosuj wstążkę. Po prostu przenieś Deweloper grupa poleceń z lewego panelu po prawej stronie.

Upewnij się, że pole wyboru jest włączone, a teraz karta Deweloper pojawi się w menu Excela.

W tym momencie najprostszym sposobem na przejście do okna edytora kodu jest kliknięcie przycisku Wyświetl kod przycisk pod Sterownica w menu Deweloper.

1. Straszne nazwy zmiennych

Teraz, gdy jesteś w oknie kodu, czas zacząć pisać kod VBA Jak stworzyć własną prostą aplikację za pomocą VBA Jak stworzyć własną prostą aplikację za pomocą VBA Dla tych z Was, którzy naprawdę chcieliby móc pisać twoją własną aplikację, ale nigdy wcześniej nie wpisałem ani jednego wiersza kodu, przeprowadzę cię przez proces tworzenia ... Pierwszym ważnym krokiem w większości programów, czy to w VBA, czy w jakimkolwiek innym języku, jest zdefiniowanie zmiennych.

Przez kilka dziesięcioleci pisania kodu natknąłem się na wiele szkół myślenia na temat konwencji nazewnictwa zmiennych i nauczyłem się kilku rzeczy na własnej skórze. Oto krótkie wskazówki dotyczące tworzenia nazw zmiennych:

  • Ustaw je tak krótko, jak to możliwe.
  • Spraw, aby były jak najbardziej opisowe.
  • Przedmowa je zmiennym typem (boolean, liczba całkowita itp.).
  • Pamiętaj, aby użyć właściwego zakresu (patrz poniżej).

Oto przykładowy zrzut ekranu z programu, którego często używam do wywoływania WMIC Windows z Excela w celu zbierania informacji o komputerze Jak wyświetlić wszystkie informacje o komputerze za pomocą prostego skryptu Excel VBA Jak zobaczyć wszystkie informacje o komputerze za pomocą prostego skryptu Excel VBA Excel i 10 minut pracy dostarczy Ci bardziej szczegółowych informacji o twoim komputerze, niż kiedykolwiek myślałeś, że to możliwe. Brzmi zbyt dobrze, aby mogło być prawdziwe? To Windows, jeśli wiesz, jak go używać. .

Jeśli chcesz użyć zmiennych wewnątrz dowolnej funkcji w module lub obiekcie (wyjaśnię to poniżej), musisz zadeklarować to jako “publiczny” zmienna, zastępując deklarację znakiem Publiczny. W przeciwnym razie zmienne deklaruje się, zastępując je słowem Ciemny.

Jak widać, jeśli zmienna jest liczbą całkowitą, poprzedza ją int. Jeśli to ciąg, to str. Pomaga to później podczas programowania, ponieważ zawsze będziesz wiedzieć, jaki typ danych zawiera zmienna, wystarczy spojrzeć na nazwę. Zauważysz również, że jeśli istnieje coś takiego jak ciąg znaków, który zawiera nazwę komputera, to zmienna jest wywoływana strComputerName.

Unikaj tworzenia bardzo skomplikowanych lub mylących nazw zmiennych, które rozumiesz tylko Ty. Ułatw innym programistom podążanie za tobą i zrozumienie, co to wszystko znaczy!

Kolejnym błędem, jaki ludzie popełniają, jest pozostawienie nazw arkuszy jako domyślnych “Arkusz 1”, “Arkusz 2”, etc… To powoduje dalsze zamieszanie w programie. Zamiast tego nazwij arkusze, aby miały sens.

W ten sposób, gdy odwołujesz się do nazwy arkusza w kodzie Excel VBA Korzystanie z VBA do automatyzacji sesji Internet Explorera z arkusza kalkulacyjnego Excel Korzystanie z VBA do automatyzacji sesji Internet Explorer z arkusza kalkulacyjnego Excel Jego integracja z Windows pozwala kontrolować Internet Explorera w wielu zaskakujące sposoby korzystania ze skryptu Visual Basic for Applications (VBA) z dowolnej aplikacji, która go obsługuje, takiej jak Word, Outlook lub Excel. , masz na myśli nazwę, która ma sens. W powyższym przykładzie mam arkusz, w którym pobieram informacje o sieci, więc nazywam go “Sieć”. Teraz w kodzie, za każdym razem, gdy chcę odwołać się do arkusza sieciowego, mogę to zrobić szybko, bez sprawdzania, jaki to numer arkusza.

2. Zerwanie zamiast zapętlenia

Jednym z najczęstszych problemów nowszego programisty jest 6 nawyków życiowych, których programowanie może cię dzisiaj nauczyć 6 nawyków życiowych, które programowanie może cię dzisiaj nauczyć Wszystko, co musisz wiedzieć o życiu udanym, możesz uzyskać z programu komputerowego. Nie wierzysz mi? Czytaj. kiedy zaczynają pisać, kod poprawnie działa z pętlami. A ponieważ tak wielu ludzi korzystających z Excela VBA jest bardzo początkującymi programistami, słabe zapętlenie jest epidemią.

Pętle są bardzo częste w programie Excel, ponieważ często przetwarzasz wartości danych w dół całego wiersza lub kolumny, więc musisz zapętlić, aby przetworzyć je wszystkie. Nowi programiści często chcą po prostu wyjść z pętli (wygląd „For” lub „While”) natychmiast, gdy spełniony jest określony warunek.

Możesz zignorować złożoność powyższego kodu, pamiętaj tylko, że w wewnętrznej instrukcji IF istnieje możliwość wyjścia z pętli For, jeśli warunek jest spełniony. Oto prostszy przykład:

Dla x = 1 do 20 Jeśli x = 6, to wyjdź dla y = x + intRoomTemp Dalej i 

Nowi programiści przyjmują takie podejście, ponieważ jest to łatwe. Kiedy pojawia się warunek, na który czekasz, aby wyjść z pętli, pokusa, by natychmiast z niej wyskoczyć, jest silna, ale nie rób tego.

Najczęściej kod, który pojawia się później “złamać” ważne jest przetworzenie, nawet ostatni raz w pętli przed wyjściem. O wiele czystszym i bardziej profesjonalnym sposobem radzenia sobie z warunkami, w których chcesz zostawić pętlę w połowie, jest włączenie tego warunku wyjścia do czegoś w rodzaju instrukcji While.

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

Pozwala to na logiczny przepływ kodu, z ostatnim przebiegiem, gdy x wynosi 5, a następnie z wdzięcznym zakończeniem, gdy pętla For zlicza do 6. Nie trzeba dołączać niewygodnych poleceń EXIT lub BREAK w środkowej pętli.

3. Nieużywanie tablic

Kolejny interesujący błąd, że nowi programiści VBA Podstawy programowania komputerowego 101 - Zmienne i typy danych Podstawy programowania komputerowego 101 - Zmienne i typy danych Po wprowadzeniu i rozmowie o programowaniu obiektowym wcześniej i skąd pochodzi jego nazwa, myślałem, że nadszedł czas, abyśmy zapoznaj się z absolutnymi podstawami programowania w sposób inny niż język. Ten… producent próbuje przetworzyć wszystko wewnątrz wielu zagnieżdżonych pętli, które filtrują w dół wiersze i kolumny podczas procesu obliczania.

Chociaż może to działać, może również prowadzić do poważnych problemów z wydajnością, jeśli będziesz musiał ciągle wykonywać te same obliczenia dla tych samych liczb w tej samej kolumnie. Pętla w tej kolumnie i wyodrębnianie wartości za każdym razem jest nie tylko nużące w programowaniu, ale także zabija procesor. Bardziej wydajnym sposobem obsługi długich list liczb jest wykorzystanie tablicy.

Jeśli nigdy wcześniej nie korzystałeś z tablicy, nie bój się. Wyobraź sobie tablicę jako tacę na kostki lodu z określoną liczbą “kostki” możesz umieścić informacje w. Kostki są ponumerowane od 1 do 12 i właśnie tak “położyć” dane do nich.

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

To tworzy “taca” z 12 dostępnymi miejscami do wypełnienia.

Oto jak mógłby wyglądać kod zapętlający wiersz bez tablicy:

Podtest 1 () Dim x As Integer intNumRows = Range („A2”, Range („A2”). End (xldown)). Rows.Count Range („A2”). Wybierz For x = 1 To intNumRows If Range („ Wartość „” i str (x)) < 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 przetwarza każdą komórkę w zakresie i wykonuje obliczenia temperatury.

Później w programie, jeśli kiedykolwiek będziesz chciał wykonać inne obliczenia na tych samych wartościach, będziesz musiał zduplikować ten kod, przetworzyć wszystkie te komórki i wykonać nowe obliczenia.

Teraz, jeśli zamiast tego użyjesz tablicy, możesz zapisać 12 wartości z rzędu w wygodnej macierzy pamięci. Potem, ilekroć chcesz uruchomić obliczenia dla tych liczb, są one już w pamięci i gotowe.

Podtest1 () Dim x As Integer intNumRows = Range ("A2", Range ("A2"). End (xldown)). Rows.Count Range ("A2"). Wybierz For x = 1 To intNumRows arrMyArray (x- 1) = Zakres („A” i str (x)). Wartość) ActiveCell.Offset (1, 0). Wybierz Next End Sub 

The “x-1” wskazanie elementu tablicy jest konieczne tylko dlatego, że pętla For zaczyna się od 1. Elementy tablicy muszą zaczynać się od 0.

Ale gdy już wszystkie tablice zostaną załadowane wartościami z wiersza, później w programie możesz po prostu połączyć ze sobą dowolne obliczenia za pomocą tablicy.

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

W tym przykładzie omówiono całą tablicę wierszy (UBound podaje liczbę wartości danych w tablicy), wykonuje obliczenia temperatury, a następnie umieszcza ją w innej tablicy o nazwie arrMyTemps.

Możesz zobaczyć, o ile prostszy jest drugi kod obliczeniowy. Od tego momentu, za każdym razem, gdy chcesz wykonać więcej obliczeń na tym samym zestawie liczb, tablica jest już wstępnie załadowana i gotowa do pracy.

4. Używanie zbyt wielu referencji

Niezależnie od tego, czy programujesz w pełnoprawnym języku Visual Basic, czy VBA, musisz to uwzględnić “referencje” aby uzyskać dostęp do niektórych funkcji, takich jak dostęp do bazy danych Access lub zapisywanie danych wyjściowych w pliku tekstowym.

Referencje są w pewnym sensie podobne “biblioteki” pełen funkcji, z których można korzystać, jeśli włączysz ten plik. Możesz znaleźć Referencje w widoku programisty, klikając Przybory w menu, a następnie klikając Referencje.

W tym oknie znajdują się wszystkie obecnie wybrane odniesienia do bieżącego projektu VBA.

Z mojego doświadczenia wynika, że ​​wybrane tutaj opcje mogą się zmieniać z jednej instalacji programu Excel na inną oraz z jednego komputera na inny. Wiele zależy od tego, co inne osoby zrobiły z programem Excel na tym komputerze, od tego, czy niektóre dodatki lub funkcje zostały dodane lub włączone, czy też niektórzy inni programiści mogli korzystać z niektórych odniesień w poprzednich projektach.

Dobrze jest sprawdzić tę listę, ponieważ niepotrzebne odwołania marnują zasoby systemowe. Jeśli nie korzystasz z żadnej manipulacji plikiem XML, to po co wybierać Microsoft XML? jeśli nie komunikujesz się z bazą danych, usuń Microsoft DAO. Jeśli nie zapisujesz danych wyjściowych w pliku tekstowym, usuń Środowisko wykonawcze skryptów Microsoft.

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

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

Na przykład po kliknięciu biblioteki DAO szybko staje się jasne, że chodzi o łączenie się z bazami danych i komunikowanie się z nimi.

Zmniejszenie liczby referencji używanych w projekcie programistycznym jest po prostu rozsądne i pomoże zwiększyć ogólną wydajność aplikacji.

Programowanie w Excel VBA

Cały pomysł pisania kodu w programie Excel Oszczędność czasu za pomocą operacji tekstowych w programie Excel Oszczędność czasu za pomocą operacji tekstowych w programie Excel Excel potrafi robić magię z liczbami i równie dobrze radzi sobie ze znakami. Ten podręcznik pokazuje, jak analizować, konwertować, zamieniać i edytować tekst w arkuszach kalkulacyjnych. Te podstawy pozwolą Ci wykonywać złożone transformacje. straszy wielu ludzi, ale ten strach naprawdę nie jest konieczny. Visual Basic for Applications jest bardzo prostym językiem do nauki, a przestrzegając podstawowych powszechnych praktyk wymienionych powyżej, zapewnisz, że Twój kod jest czysty, wydajny i łatwy do zrozumienia.

Czy kodujesz w VBA? Jakich lekcji nauczyłeś się przez lata, którymi możesz się podzielić z innymi czytelnikami uczącymi się języka VBA po raz pierwszy? Podziel się wskazówkami w sekcji komentarzy poniżej!

Zdjęcia: Komputer: www.BillionPhotos.com przez Shutterstock, Kolorowe tace na kostki lodu autorstwa hahauk przez Shutterstock.com




Jeszcze bez komentarzy

O nowoczesnej technologii, prostej i niedrogiej.
Twój przewodnik w świecie nowoczesnych technologii. Dowiedz się, jak korzystać z technologii i gadżetów, które nas otaczają każdego dnia i dowiedz się, jak odkrywać ciekawe rzeczy w Internecie.