Visual Basic for Application (VBA) http://dzono4.w.interia.pl Książka Visual Basic dla aplikacji w Office XP PL, autorzy: Edward C. Willett i Steve Cummings, Wyd. Helion
Typy zmiennych Różne dane różnie zapisywane w pamięci. Rodzaj danej = typ danej. Typ określa: zakres wartości, np. zmienna typu Integer od -32,768 do 32,767, zmienna typu Boolean tylko wartości True lub False wielkośd pamięci zajmowanej przez zmienną, np. zmienna typu Integer 2 bajty, a zmienna typu Single 4 bajty
Typy zmiennych cd. strukturę zajętego przez zmienną obszaru pamięci, np. gdy zmienna typu Byte ma wartośd 137 1 0 0 0 1 0 0 1 a gdy zmienna A jest typu tablicowego Dim A (10) As Byte A 1 A 2 A 3 A 4 A 5 A 6 A 7 A 8 A 9 A 10 gdzie każde A i na 8 bitach zbiór możliwych operacji
Typy zmiennych cd. Przykład: Zmienna, przechowywana w pamięci jako sekwencja bitów 0 1 0 0 1 1 1 1, reprezentuje: - literę O (kod ASCII 79), gdy zmienna została zadeklarowana jako zmienna znakowa (String) - liczbę 79, gdy zmienna została zadeklarowana jako zmienna liczbowa (np. Integer lub Byte). Czyli: typ danej = sposób interpretacji przez program
Typ Danych Zawartośd Wielkośd pamięci Zakres Byte całkowita 1 bajt 0 do 255 Boolean całkowita 2 bajty True lub False Integer całkowita 2 bajty -32 768 do 32 767 Long całkowita 4 bajty -2 147 483 648 do 2 147 483 647 Single liczba zmiennopozycyjna 4 bajty Ujemne:-3.402823E38 do - 1.401298E-45 Dodatnie: 1.401298E-45 do 3.402823E38 Double liczba zmiennopozycyjna 8 bajtów Ujemne: -0.79769313486232E 308 do -4.940656458412E-324 Dodatnie: 4.94065645841247E-324 do 1.797693134862E 308
Operatory Visual Basic Operatory arytmetyczne ^ Operator potęgowania 1 - Operator negacji 2 * Operator mnożenia 3 / Operator dzielenia 3 Operator dzielenia \ całkowitego 4 Mod Operator modulo 5 + Operator dodawania 6 - Operator odejmowania 6
Operatory porównania < Operator mniejszości <= Operator mniejszości lub równości > Operator większości >= Operator większości lub równości = Operator równości <> Operator różności
Operatory łaocuchowe + Operator dodawania & Operator konkatenacji Operatory logiczne Not And Or Operator negacji Operator iloczynu logicznego, koniunkcji Operator sumy logicznej, alternatywy
Instrukcja przypisania. ZMIENNA liczba napis coś innego Przypisywanie wartości zmiennej: L=P (L:=P, LET L=P) Uwaga! Po podstawieniu pod lewą stronę stara wartośd zmiennej bezpowrotnie znika!
Przykład 1: Licznik wierszy Sub licznik() program wpisze w kolejne wiersze pierwszej kolumny arkusza kolejne liczby naturalne Cells.Clear instrukcja czyści wszystkie komórki w danym arkuszu Excela i = 1 Cells(1, 1) = "Kolejne wartości i:" instrukcja cells(w,k) oznacza zawartośd komórki w arkuszu Excela, na skrzyżowaniu w-tego wiersza i k-tej kolumny Do Until i = 11 Cells(i + 1, 1) = i i = i + 1 Loop End Sub
Przykład 2: Zamiana zmiennych miejscami x Zwykłe: x=y y=x y Spowoduje inny skutek. Jaki? Dlatego potrzebna jest zmienna pomocnicza, która przez chwilę przechowa wartośd jednej zmiennej
Instrukcje warunkowe If Then - najprostsza instrukcja wyboru Składnia instrukcji If: If Warunek Then Blok instrukcji VB wykonywany gdy warunek jest prawdziwy End If Uproszczona składnia instrukcji If: If Warunek Then Instrukcja1 VB [: Instrukcja2 VB [:... [: InstrukcjaN VB]...]]
Instrukcja warunkowa - If Then TAK Warunek? NIE Instr_1 Instr_2
Instrukcje warunkowe If... Then Else Składnia instrukcji If... Then Else: If Warunek Then Blok instrukcji VB wykonywany gdy warunek jest prawdziwy Else Blok instrukcji VB wykonywany gdy warunek nie jest prawdziwy End If
Instrukcja warunkowa - If Then Else TAK Warunek? NIE Instrukcja_1 Instrukcja_2 Instrukcja_3
Instrukcje warunkowe If... ElseIf zagnieżdżanie warunków Składnia instrukcji If...ElseIf: If Warunek1 Then Blok instrukcji VB wykonywany gdy Warunek1 jest prawdziwy ElseIf Warunek2 Then Blok instrukcji VB wykonywany gdy Warunek1 nie jest prawdziwy a Warunek2 jest prawdziwy [ElseIf Warunek3 Then Blok instrukcji VB wykonywany gdy Warunek1 i Warunek2 nie są prawdziwe a Warunek3 jest prawdziwy... [ElseIf WarunekN Then Blok instrukcji VB wykonywany gdy Warunki od 1 do (N-1) nie są prawdziwe a WarunekN jest prawdziwy ]...] [Else Blok instrukcji VB wykonywany gdy żaden z Warunków od 1 do N nie jest prawdziwy ] End If
Przykład użycia instrukcji If...ElseIf: If (intzysk>3200) Then intpodatek=20 intwiadomosc=msgbox("musisz zapłacid olbrzymi podatek") ElseIf (intzysk>2700) Then intpodatek=16 intwiadomosc=msgbox("musisz zapłacid 16% podatku") ElseIf (intzysk>1400) Then intpodatek=7 intwiadomosc=msgbox("musisz zapłacid 7% podatku") ElseIf (intzysk>600) Then intpodatek=4 intwiadomosc=msgbox("masz mało ale i tak pład!") ElseIf (blnpracuje=false) Then intwiadomosc=msgbox("chyba jesteś na czyimś utrzymaniu...") Else intpodatek=0 intwiadomosc=msgbox("z czego Ty żyjesz?") End If
Przykład 1: Program wczytuje dowolną liczbę rzeczywistą i podaje jej odwrotnośd lub podaje komunikat, że się nie da. Sub dziel() Dim x As Single Dim y As Single Dim war As Boolean zmienna war jest zmienną logiczną i może przyjmowad tylko wartośd True lub False x = InputBox("Podaj dowolną liczbę:") war = x <> 0 If war Then MsgBox "Odwrotnośd liczby " & x & " wynosi " & 1 / x Else MsgBox "Dielenie przez 0 niewykonalne" End If End Sub
Przykład 2: Proste funkcje opis funkcji Function mabs(x) As Single nagłówek fcji z jej nazwą i parametrem formalnym x If x >= 0 Then mabs = x podstawienie wartości pod nazwę fcji Else mabs = -x End If End Function Function msign(x) As Integer nagłówek fcji Dim y As Single If x >= 0 Then y = 1 Else y = -1 End If msign = y podstawienie wartości pod nazwę fcji End Function
Przykład 2: Proste funkcje wywołanie funkcji Sub Mabs_Msign() x = InputBox("x=") program wywołujący działanie funkcji MsgBox "Wartośd bezwzględna z " & x & "=" & mabs(x) tu skok do opisu fcji MsgBox "Znak " & x & "=" & msign(x) End Sub
Przykład 4: Program nalicza podatek, w zależności od dochodów, używając rozbudowanej postaci instrukcji warunkowej If...Then ElseIf. End Sub Zyski() intzysk = InputBox("Ile zarabiasz?") If (intzysk > 1200) Then intpodatek = 20 intwiadomosc = MsgBox("Musisz zapłacid olbrzymi podatek") ElseIf (intzysk > 700) Then intpodatek = 16 intwiadomosc = MsgBox("Musisz zapłacid 16% podatku") ElseIf (intzysk > 400) Then intpodatek = 7 intwiadomosc = MsgBox("Musisz zapłacid 7% podatku") ElseIf (intzysk > 200) Then intpodatek = 4 intwiadomosc = MsgBox("Masz mało ale i tak pład!") 'ElseIf (blnpracuje = False) Then 'intwiadomosc = MsgBox("Chyba jesteś na czyimś utrzymaniu...") Else intpodatek = 0 intwiadomosc = MsgBox("Z czego Ty żyjesz?") End If End Sub
Program pyta o hasło i podaje pewien adres, gdy hasło jest poprawne lub komunikat, że hasło jest niewłaściwe.
Sied działao START Utwórz wzór hasła Ustal adres Wprowadź hasło TAK Wyprowadź adres Czy hasło OK? NIE Wyprowadź komunikat Złe hasło! STOP
Przykład 7: Program rozwiązuje równanie liniowe dla dowolnych współczynników a, b. Sub RL() Dim a As Single Dim b As Single Dim x As Single zmienne na współczynniki i rozwiązanie deklarujemy jako liczby rzeczywiste a = InputBox("a=") b = InputBox("b=") If a = 0 Then If b = 0 Then MsgBox "Nieskooczenie Wiele Rozwiązao" Else MsgBox "Równanie Sprzeczne" End If Else x = -b / a MsgBox "x=" & x End If End Sub
Przykład 8: program rozwiązuje równanie kwadratowe ax 2 +bx+c=0, dla dowolnych współczynników a, b, c oraz podaje odpowiedni komunikat, gdy równanie nie ma rozwiązania w zbiorze liczb rzeczywistych. Sub RK() Dim a As Single Dim b As Single Dim c As Single Dim x1 As Single Dim x2 As Single a = InputBox("a=") b = InputBox("b=") c = InputBox("c=") delta = b ^ 2-4 * a * c
Ciąg dalszy programu - algorytm rozwiązania If delta < 0 Then MsgBox "Brak Rozw. w R" ElseIf delta = 0 Then x1 = -b / 2 / a x2 = x1 MsgBox "Podwójny pierwiastek x1=x2=" & x1 Else x1 = (-b - Sqr(delta)) / 2 / a x2 = (-b + Sqr(delta)) / 2 / a MsgBox "x1=" & x1 & " x2=" & x2 End If End Sub