Język programowania Visual Basic for Applications (VBA) jest dołączany do wszystkich aplikacji pakietu Office 97. Ma go Word, Excel, Access, PowerPoint, Binder. Jest też wbudowany w Microsoft Project. Outlook używa uproszczonej wersji VBA – języka VB Script. Dzięki VBA każdą z tych aplikacji można dopasować do indywidualnych potrzeb użytkowników (uzupełnienia lub zmiany zestawu poleceń oraz automatyzacji wymiany informacji pomiędzy aplikacjami.
Mimo, że MS Office 97 powstał w oparciu o doświadczenia milionów użytkowników poprzednich wersji programów, to jednak istnieje pewien margines wymagań nietypowych. Nawet jeżeli można spełnić te wymagania za pomocą już istniejących narzędzi (np. kopiowanie informacji przez Schowek), to przy częstym ich wykorzystywaniu praca staje się nużąca, łatwiej o pomyłkę. Wtedy właśnie opłacalną się staje automatyzacja powtarzanych wielokrotnie czynności. W przypadku pracy z jedną tylko aplikacją często można to zrobić za pomocą rejestratora makropoleceń. Jeżeli jednak w grę wchodzi współbieżne wykorzystywanie kilku aplikacji, wykonywanie bardziej złożonych sekwencji poleceń, to VBA jest niezastąpiony.
Chcąc rozpocząć programowanie w VBA dobrze jest poznać i zrozumieć takie pojęcia jak:
· procedury i funkcje;
· instrukcje przypisania, uruchomienia procedury, sterujące;
· obiekty ich właściwości i metody;
· typy danych.
W tym i w następnych artykułach publikowanych na krążkach ENTERA będziemy omawiali te pojęcia. Nasz kurs VBA został celowo zapisany w formie dokumentu MS Worda. Pozwoli to umieszczać w nim makropolecenia i procedury, które demonstrować będą działanie poszczególnych składowych VBA.
Program w VBA składa się z zestawu procedur. Procedura to zestaw instrukcji wykonujących określone zadanie. Może być ona utworzona automatycznie przez zarejestrowanie makrodefinicji lub ręcznie poprzez pisanie ich do edytora VBA. Podział programu na proce
Okno projektu edytora VBA prezentuje wykorzystywane moduły. Z dokumentem (Opis VBA) związanych jest 5 modułów (w tym przypadku formularzy okien dialogowych. Każdy taki formularz zawiera szereg procedur.
dury upraszcza jego tworzenie, testowanie (sprawdzanie poprawności) i rozbudowę. Nadrzędnym elementem nad procedurami jest najczęściej moduł skupiający procedury obsługujące jedną aplikację, okno dialogowe itp. Z danym dokumentem lub szablonem może być związanych wiele modułów (na przykład z tym dokumentem związanych jest 5 niezależnych modułów (okien dialogowych: ForNext, IfThenElse, IfThenEndIf, Kantorek, Numerki). Przedstawiono to na sąsiednim rysunku.
Procedura ma następującą budowę:
Sub nazwa procedury(parametry)
Instrukcje
End Sub
Parametry umieszczane w nawiasie i oddzielone przecinkami określają informację wprowadzaną do procedury. Procedura może też pobierać informacje w inny sposób o czym za chwilę. Istnieje specjalny rodzaj procedur, które są uruchamiane automatycznie, gdy wystąpi określone zdarzenie (np. kliknięcie myszą na przycisku polecenia, pozycji menu, wpisanie tekstu, wydanie polecenia wybranego z menu lub paska narzędzi itp.). Takie procedury (nazywane zdarzeniowymi) wykorzystuje się w programowaniu nowych poleceń pakietu.
Procedury mogą być publiczne lub prywatne. Procedury publiczne są dostępne dla innych procedur w całej aplikacji, we wszystkich jej modułach. Deklaruje się je za pomocą słowa Public wpisanego jako pierwsze słowo nagłówka procedury, np.:
Public Sub Wspolna()
.....
Procedury prywatne są dostępne tylko w module, w którym zostały zapisane. Deklaruje się je używając słowa Private np.:
Private Sub MojaWlasna()
W VBA można też wykorzystywać i tworzyć funkcje. Mają one budowę:
Function NazwaFunkcji(parametry)
Instrukcja podstawiająca pod NazwęFunkcji określoną wartość
End Function
VBA jest wyposażony w bogaty zestaw gotowych funkcji. Swoje własne funkcje opłaca się pisać najczęściej wtedy, gdy jakiś wzór jest wykorzystywany wielokrotnie w różnych miejscach programu.
Tak więc dokument lub szablon Worda może zawierać szereg modułów, a te z kolei zawierają procedury i funkcje wykonujące określone zadania i wymieniające się informacją. Więcej na temat budowy i działania procedur i funkcji można znaleźć w Pomocy VBA.
Instrukcje to konkretne polecenia do wykonania. Są one wykonywane przez VBA kolejno jedna po drugiej. Rozróżnia się instrukcje proste i strukturalne. Do instrukcji prostych zalicza się instrukcje przypisania i wykonania procedury. Instrukcje proste są zapisywane w jednym wierszu. Jeżeli są bardzo długie, to można je przenosić do następnego wiersza kończąc wiersz poprzedni spacją i znakiem podkreślenia.
Instrukcja przypisania ma budowę:
Obiekt = wyrażenie
Instrukcja oblicza wartość wyrażenia i przypisuje ją wartości obiektu. Sposób zapisu wyrażeń jest podobny do tego, który jest wykorzystywany w Excelu do zapisywania formuł. Przykładowe instrukcje przypisania:
· zmiana czcionki zaznaczonego obszaru tekstu
Selection.Font.Name = „Arial”
· przemnożenie liczby 132 przez 2 i podstawienie jako wartości obiektu o nazwie Alfa
Alfa = 123*2
· dodanie jedności do poprzedniej wartości obiektu Alfa i zapisanie wyniku w obiekcie Alfa. Jeżeli np. przed wykonaniem instrukcji Alfa miało wartość 15, to po jej wykonaniu będzie miało wartość 16:
Alfa = Alfa +1
· Wczytanie liczby zapisanej w oknie tekstowym TextBox1 i przypisanie jej zmiennej Beta
Beta = TextBox1.Value
Następujące po sobie instrukcje tworzą sekwencję. Gra w numerki ilustruje, jak działają instrukcje przypisania.
Na sąsiednim rysunku przedstawiono okno dialogowe ilustrujące wykorzystanie instrukcji przypisania. Kliknij na przycisku , żeby zobaczyć je w działaniu. Więcej na temat instrukcji przypisania można znaleźć w temacie pomocy „Tworzenie instrukcji języka Visual Basic”.
Instrukcja wykonania procedury ma postać:
NazwaProcedury(parametry)
Czasami pewną grupę instrukcji należy wykonać wielokrotnie. Najczęściej występuje to przy operowaniu tablicami np., gdy chcemy obliczyć sumę wszystkich elementów tablicy A. Można co prawda napisać:
Suma = Suma + A(1)
Suma = Suma + A(2)
.............
Ale przy sumowaniu w ten sposób tablicy składającej się z np. 1000 elementów taka metoda traci sens. Wykorzystując instrukcję For Next opisaną operację można zapisać w postaci:
For i = 1 To 1000
Suma = Suma + A(i)
Next i
Ogólna budowa instrukcji jest następująca:
For licznik = wartość początkowa To wartość końcowa
Next licznik
Instrukcja pętli wykonuje zadaną liczbę razy instrukcje w niej zawarte
Pod zmienną licznik podstawia jest wartość początkowa, a następnie sprawdzane jest, czy nowa wartość zmiennej licznik nie jest większa od wartości końcowej. Jeżeli nie jest większa, to są wykonywane Instrukcje. Po wykonaniu wszystkich instrukcji następuje zwiększenie wartości zmiennej licznik o 1 i program wraca do wiersza zaczynającego się od For. Tu ponownie sprawdza, czy licznik jest większy od wartości końcowej itd. Pętla jest wykonywana do momentu, aż wartość zmiennej licznik stanie się większa od wartości końcowej. Wtedy program przechodzi do wykonania instrukcji zapisanej po wierszu zawierającym Next licznik. Uruchom , żeby prześledzić działanie instrukcji For Next. Więcej informacji na temat tej instrukcji można znaleźć w Pomocy VBA.
Instrukcja pozwala na wybór jednej z dwu alternatywnych dróg postępowania. Ma ona kilka form, z których najprostsza przyjmuje postać:
If wyrażenie logiczne Then
Instrukcje wykonywane, gdy wyrażenie logiczne jest prawdziwe
End If
Wyrażenie logiczne może być prawdziwe (przyjmuje wtedy wartość True) lub fałszywe (przyjmuje wtedy wartość False). Na przykład:
2 > 3 ma wartość False;
Alfa > Beta ma wartość True, jeśli wartość zmiennej Alfa jest większa od wartości zmiennej Beta;
Dochod > 17000 - ma wartość True jeżeli wartość zmiennej Dochod jest większa od 17000.
Instrukcja If Then umożliwia ominięcie wykonania zawartych w niej instrukcji
Jeżeli wyrażenie logiczne jest prawdziwe, to wykonywane są instrukcje zapisane po słowie Then. W przeciwnym przypadku instrukcje te nie są wykonywane i program przechodzi do wykonania kolejnej instrukcji zapisanej poniżej End If. Kliknij tu , żeby zobaczyć, jak działa instrukcja It Then End If. Po wpisaniu dwóch liczb w pola A i B i kliknięciu na przycisku “Pokaż działanie instrukcji” będzie można, klikając na przycisku “Następny krok”, śledzić krok po kroku sposób wykonywania instrukcji.
Jeżeli po słowie Then występuje tylko jedna instrukcja, to można stosować zapis uproszczony:
If wyrażenie logiczne Then Instrukcja
Instrukcja jest wykonywana jedynie wtedy, gdy wyrażenie logiczne jest prawdziwe. Bardziej złożona forma instrukcji warunkowej zakłada wykonywanie jednej grupy instrukcji, gdy wyrażenie logiczne przyjmuje wartość True, a innej grupy instrukcji, gdy przyjmuje wartość False. Jej budowa jest następująca:
Else
Instrukcje wykonywane, gdy wyrażenie logiczne jest fałszywe
Instrukcja If Then Else stwarza możliwość wykonania jednej z dwóch grup instrukcji
Jeżeli wyrażenie logiczne przyjmuje wartość True, to są wykonywane instrukcje zapisane po słowie Then, a instrukcje po słowie Else nie są wykonywane. Jeżeli warunek przyjmuje wartość False, to wykonywane są instrukcje po słowie Else, a instrukcje po słowie Then nie są wykonywane. Uruchom , żeby zobaczyć, jak działa instrukcja If Then Else. Po wpisaniu dwóch liczb w pola A i B należy kliknąć na przycisku "Pokaż działanie instrukcji" i dalej postępować jak w poprzednim Demo.. Jeżeli pierwsza z wpisanych liczb jest większa od drugiej, to program wykonując instrukcję Wynik.Text = "A > B" wyświetli odpowiedni tekst w oknie "Wynik". W przeciwnym przypadku w oknie "Wynik" pojawi się napis "A <= B".
Pytanie sprawdzające. Co się stanie jeśli w oba okna wpiszemy tę samą liczbę?
Pozostałe instrukcje zostaną omówione w następnym odcinku.
Jeżeli VBA nie m...
patyos