Kurs VBA – cz. 16 – Projektowanie programu

Poznaliśmy już wszystkie istotne elementy kodu. Możemy już napisać większość programów w VBA. Oczywiście dobry murarz potrzebuje nie tylko cegieł ale i umiejętności ich układania w spójną i bezpieczną całość. Poniższy tekst należy raczej traktować bardziej jako lekturę do poduszki niż ścisły kurs techniczny.

Na temat projektowania oprogramowania napisano tysiące książek i opracowano setki metodyk. Poniżej ledwie pływam po powierzchni tego problemu, mam jednak nadzieję, że po przeczytaniu tego tekstu początkujący programista VBA będzie lepiej przygotowany na to, co przyniesie przygoda z programowaniem. Czytaj więcej...

Kurs VBA – cz. 15 – funkcje wbudowane

Poznaliśmy już większość klocków potrzebnych do budowania standardowych programów w VBA. Poprzednia część kursu wprowadziła szczególnie dużo informacji. Dzisiaj lżejszy temat, funkcje wbudowane. Jest to swego rodzaju skrzynka narzędziowa, pozwalająca wykonywać różna operacje na liczbach, ciągach znaków i datach.

Funkcje takie używa się tak jak funkcje napisane przez nas. Nie znajdziemy jednak nigdzie ich kodu. Oczywiście nie trzeba uczyć się ich na pamięć. Warto jednak o nich pamiętać. Dokładne informacje o każdej funkcji znajdziemy w pomocy (przycisk F1 przy włączonym VBE). Wystarczy napisać w procedurze daną funkcję, zaznaczyć ją i nacisnąć F1.

Funkcje można podzielić na:

  • matematyczne
  • znakowe
  • daty i czasu
  • inne
Poniższe przykłady przedstawiłem z nawiasami. Trzeba jednak pamiętać, nawiasy umieszczamy, jeżeli funkcja jest argumentem innej. Nie umieszczamy nawiasów, jeżeli jest to pierwsza funkcja w danej linii. Poniżej zastosowana została funkcja replace. Funkcja MsgBox została użyta bez nawiasów. Replace już wymaga nawiasów, bo jest argumentem dla MsgBox.

Matematyczne

=&0=&Zwraca wartość bezwzględną liczby. np: Abs(- 10) zwraca 10, Abs(10) zwraca 10.

Int(liczba), Fix(liczba) – Obie funkcje zwracają część całkowitą liczbyInt(99.8) zwraca 99

W przypadku liczb ujemnych Int zwraca pierwszą liczbę całkowitą mniejszą lub równą liczbie, Fix zwraca dla liczb ujemnych pierwszą większą lub równą liczbę. Czytaj więcej...

Pytanie użytkownika – funkcja UDF

Jeden z czytelników zadał mi niedawno pytanie:

W Excelu utworzyłem moduł MODULE1 w nim Funkcja
w której tylko jedna instrukcja

Range(„A1″).value = 15
Pojawia się bład ” #ARG! ”
skad to ?
Jest to EXCEL 2007.

Funkcje UDF (User Defined Function, Funkcje zdefiniowane przez użytkownika) rozszerzają możliwości naszych formuł. Tak jak standardowe funkcje, przyjmują one jakieś argumenty (lub nie) i zawsze zwracają dokładnie jedną wartość.

Funckję UDF pisze się tak jak standardowe funkcje VBA. Muszą jednak spełniać szereg warunków, aby działały prawidłowo w formułach. Czytaj więcej...

Kurs VBA – cz. 14 – Pętle

W poprzedniej części poznaliśmy metodę sterowania programem przy pomocy instrukcji warunkowych. Teraz do sterowania programem użyjemy konstrukcji zwanych pętlami. Pozwalają one wykonywać ten sam fragment kodu kilka razy. Oczywiście ilością powtórzeń możemy sterować i może być inna przy każdym wykonaniu tego samego programu. Kod wewnątrz pętli może nawet wcale się nie wykonać. Przerwaniem lub zakończeniem pętli nazywamy przejście od wykonywania kodu wewnątrz pętli do wykonywania instrukcji bezpośrednio po niej. Iteracja  jest jednorazowym wykonaniem pętli.


Do until / Do while

Ta pętla służy do wykonania fragmentu kodu pewną ilość razy. Najprostsza wersja składa się tylko z klamry Do…loop. Nie uruchamiaj tego kodu!

 

Jest to przykład tak zwanej nieskończone pętli, która będzie omówiona później. Jej działanie nigdy nie będzie przerwane. Kolejne przykłady można już bezpiecznie testować.

Do pętli możemy dodać warunki while lub until, które mogą przerwać wykonywanie.

  Czytaj więcej...

Kurs VBA – cz. 13 – Instrukcje warunkowe If, Case


W poprzednich częściach kursu poznaliśmy zmienne i metody pracy z nimi. Czas przejść do ostatniego elementu układanki, czyli wspomnianego już wcześniej sterowania programem. Podstawową instrukcją sterowania w prawie każdym języku programowania jest IF, czyli „jeżeli”. Może ona być używana na kilka sposobów, każdy jednak ogranicza się do sprawdzania, czy jakieś wyrażenie jest prawdziwe lub nie i wykonania odpowiedniego kodu, przyporządkowanego do jednej z tych dwóch wartości. Czytaj więcej...

Kurs VBA – cz. 12 – Podstawowe wejście i wyjście

 

 

W poprzednich częściach kursu nauczyliśmy się o zmiennych, jak na nich operować i jak przypisywać im wartości. Siłą jakiegokolwiek programu komputerowego jest możliwość interakcji z użytkownikiem i sterowania programem w zależności od otrzymanych danych. Już niedługo pokażę jak sterować programem przy pomocy różnych instrukcji warunkowych. Dzisiaj omówimy sobie podstawowe metody odbierania danych od użytkownika.

 

 

Formularze

Na pewno najbardziej elegancką i potężną metodą komunikacji z użytkownikiem są formularze. Mogą zawierać przeróżne kontrolki, od przycisków, poprzez suwaki, wykresy, obrazki itp. Tworzenie formularzy nie jest specjalnie trudne jednak jest to temat na osobną cześć kursu. Czytaj więcej...

Funkcje volatile – wolne przeliczanie arkusza

W celu usprawnienia obliczeń w arkuszu Excel stosuje skomplikowany algorytm dzięki któremu zawsze obliczana jest tylko ta część, która jest w danej chwili potrzebna. Funkcje volatile łamią ten algorytm. Volatile można przetłumaczyć jako ulotne, zmienne. Z uwagi na ich nieprzewidywalność przy każdej zmianie w arkuszu, Excel przelicza każdą jedną formułkę w całym pliku, nawet jeżeli zmieniana komórka nie ma na nią wpływu.

Jeżeli więc nasz arkusz zaczyna długo przeliczać dane przy każdej zmianie dobrze jest poszukać problemu właśnie wśród tych funkcji. Można je zastąpić przez kod VBA. Do tych funkcji należą.: Czytaj więcej...

Kurs VBA – cz. 11 – operatory

Po dużej ilości informacji z poprzedniej części kursu zajmijmy się czymś lekkim i przyjemnym, tym bardziej, że operatorami zajmowaliśmy się już wcześniej. Operatorami nazywamy różnego rodzaju znaki i symbole, które sklejają razem instrukcje i słowa kluczowe. Są one bardzo istotne i użyte nieprawidłowo mogą całkowicie zmienić logikę kodu.

Operator przyjmuje argumenty tworząc wyrażenia, argumentami operatorów mogą być kolejne wyrażenia itd. W ten sposób można tworzyć skomplikowane instrukcje.
Wyrażenie 1 operator Wyrażenie 2
niektóre operatory przyjmują tylko jeden argument
operator Wyrażenie

Operator przypisania

Jak napisałem w poprzedniej części zmienne po zadeklarowaniu przyjmują wartość 0 lub pusty ciąg znaków. Do zmiany tej wartości służy operator przypisania „=”.
wyrażenie 1 = wyrażenie 2

Wyrażenie 1 musi być zmienną lub atrybutem, wyrażenie 2 jest dowolne, pod warunkiem, że zwraca jakąś wartość (czyli nie może być to np. procedura Sub). Jeżeli wyrażenie 1 jest obiektem przypisanie musimy poprzedzić słowem kluczowym Set. Czytaj więcej...

Kurs VBA – cz. 10 – Zmienne

 

Zmienne pojawiły się już wcześniej w toku kursu. Podstawiałem pod zmienne różne wartości liczbowe lub wskazywały na różne obiekty Excela. Zmienna odpowiada miejscu w pamięci operacyjnej komputera i przechowuje pewną wartość, lub cały zestaw wartości. Każda zmienna jest identyfikowana przez swoją nazwę.

W zakresie widoczności zmiennej (o czym za chwilę) może istnieć tylko jedna zmienna o danej nazwie. Zmiennym możemy przypisywać różne wartości, odczytywać je, zmieniać oraz przepisywać wartość jednej zmiennej do innej. Czytaj więcej...

Kurs VBA – cz. 9 – Obiekt Range

Większość pracy z Excelem polega na modyfikowaniu komórek. Prawie każdy element Excela ma odpowiadający sobie obiekt, w efekcie dużą część pracy w VBA wykonujemy przy pomocy zakresów (obiekt Range). Range może reprezentować pojedynczą komórkę, wiersz, kolumnę, grupę komórek z zakresu ciągłego lub nie albo nawet zakres z kilku skoroszytów jednocześnie.

Właściwość Range obiektu zwraca obiekt typu Range. Może ona być używana następująco.

ObiektNadrzedny.Range(komorka1)
ObiektNadrzedny.Range(komorka1, komorka2) Czytaj więcej...