Podstawy programowania w języku Visual Basic dla Aplikacji (VBA) Instrukcje Język Basic został stworzony w 1964 roku przez J.G. Kemeny ego i T.F. Kurtza z Uniwersytetu w Darthmouth (USA). Nazwa Basic jest akronimem: BASIC - Beginner s All-purpose Symbolic Instruction Code BASIC został zaprojektowany głównie dla własnych potrzeb prostego zapisu programów obliczeń arytmetycznych, jednak szybko się rozpowszechnił. Najpopularniejsze obecnie to: Visual Basic oraz Visual Basic dla Aplikacji (VBA) Struktura procedury w VBA Sub nazwa()...... Treść procedury... End Sub Podstawowe instrukcje VBA w Excelu 97 Instrukcja przypisania (podstawienia) zmienna = wyrażenie zmienna - nazwa zmiennej = operator przypisania wyrażenie - jego wartość zostanie obliczona i zapamiętana w zmiennej Przykłady: suma = 0 i = i + 1 pole = 3.14 * r^2 1
Wprowadzanie danych InputBox zmienna = InputBox(Prompt, Title, Default, Xpos, Ypos, HelpFile, Context) Prompt - napis wyświetlany w oknie dialogowym (max 1024 znaki). Może zawierać znaki zmiany wiersza Chr(10) lub Chr(13) Title - napis wyświetlany na belce okna jako tytuł okna dialogowego (jeśli pominięty, brak tytułu) Default - napis wyświetlany w polu edycji jako domyślny (jeśli pominięty, pole edycji jest puste) Xpos, Ypos - odległość lewego górnego rogu okna od lewego górnego rogu ekranu (jeśli pominięte, okno jest centrowane w poziomie i pionie) HelpFile, Context - potrzebne, gdy korzystamy z programów tworzących pomoc (help) Jeśli użytkownik kliknie OK lub naciśnie ENTER, funkcja zwraca to, co wpisano w polu edycji Jeśli użytkownik kliknie ANULUJ, funkcja zwraca łańcuch zerowej długości Przykład: r = InputBox( Podaj promień koła ) 2
Wyprowadzanie wyników MsgBox lub zmienna = MsgBox(Prompt, Buttons, Title, HelpFile, Context) MsgBox Prompt, Buttons, Title, HelpFile, Context Prompt - łańcuch (napis) wyświetlany w oknie dialogowym (max 1024 znaki). Może zawierać znaki zmiany wiersza Chr(10) lub Chr(13) Title - napis wyświetlany na belce okna jako tytuł okna dialogowego (jeśli pominięty, brak tytułu) Buttons - wyrażenie liczbowe - suma wartości specyfikujących numer i typ wyświetlanych przycisków (jeśli pominięte, przyjmuje się 0) Funkcja MsgBox użyta w pierwszej z podanych postaci, zwraca informację o wybranym przez użytkownika przycisku (szczegóły w podanej na wykładzie literaturze). Przykłady: MsgBox "Pole koła = " & p & Chr(13) & "Obwód koła = " & ob MsgBox "Pole koła = " & p & Chr(13) _ & "Obwód koła = " & ob,, WYNIK Pozioma kreska (znak podkreślenia) po Chr(13) w drugim przykładzie jest znakiem kontynuacji (oznacza, że dalszy ciąg tego wiersza jest kontynuowany w następnej linii). 3
Czytanie danych z arkusza i pisanie do arkusza Cells Czytanie: Pisanie: zmienna = Cells (wiersz, kolumna) Cells (wiersz, kolumna) = wyrażenie wiersz - numer wiersza kolumna - numer kolumny (kolumna A ma nr 1, B - 2, C - 3 itd.) Przykłady: Odczyt liczby z komórki B1 i zapamiętanie jej w zmiennej o nazwie n n = Cells(1,2) Zapis tekstu suma= oraz wartości pamiętanej w zmiennej o nazwie suma do komórki B4 Cells(4,2)= suma= & suma 4
a) wierszowa instrukcja IF Instrukcje warunkowe IF If warunek Then instrukcje warunek - wyrażenie o wartości typu logicznego instrukcje - jedna lub kilka instrukcji oddzielonych dwukropkiem If warunek Then instrukcje1 Else instrukcje2 Przykład: If delta = 0 Then x = -b/(2*a) b) blokowa instrukcja IF If warunek Then Instrukcje End If 5
If warunek Then instrukcje1 Else instrukcje2 End If IF warunek Then instrukcje1 ElseIf warunek Then instrukcje2... Else instrukcje3 End If Przykład: If delta = 0 Then x = -b/(2*a) End If 6
Select Case wyrażenie Case wartość1 instrukcje1 Case wartość2 instrukcje2... End Select Instrukcja wyboru Select Case wyrażenie - numeryczne lub znakowe wartość1, wartość2 - jedna lub kilka oddzielonych przecinkami pozycji, każda z nich może mieć postać: wyrażenie wyrażenie To wyrażenie Is operator_porównania wyrażenie instrukcje1 - wykonywane, gdy wyrażenie jest równe wartości1 instrukcje2 - wykonywane, gdy wyrażenie jest równe wartości2 7
Select Case wyrażenie Case wartość1 instrukcje1 Case wartość2 instrukcje2... Case Else Instrukcje End Select Instrukcje po Case Else są wykonywane, gdy wyrażenie nie jest równe żadnej z podanych wcześniej wartości (tzn. wartość1, wartość2 itd.). Instrukcje pętli Do - pętle o nieokreślonej liczbie powtórzeń a) prosta pętla Do instrukcja lub grupa instrukcji są powtarzane do momentu wykonania instrukcji Exit Do, powodującej wyjście z pętli. Do instrukcje... węwnątrz pętli powinna wystąpić... instrukcja Exit Do Loop 8
b) złożone pętle Do - uzależniają powtarzanie grupy instrukcji od spełnienia (lub niespełnienia) wskazanego warunku powtarzają grupę instrukcji tak długo, jak długo warunek ma wartość PRAWDA (pętla While) lub FAŁSZ (pętla Until) Warunek może być sprawdzany: - przed wykonaniem pętli - po wykonaniu pętli a) pętla Do typu While (sprawdzanie warunku przed wejściem do pętli) Do While warunek instrukcje... Loop b) pętla Do typu While (sprawdzanie warunku po wykonaniu pętli) Do instrukcje... Loop While warunek 9
c) pętla Do typu Until (sprawdzanie warunku przed wejściem do pętli) Do Until warunek instrukcje... Loop d) pętla Do typu Until (sprawdzanie warunku po wykonaniu pętli) Do instrukcje... Loop Until warunek 10
Instrukcja pętli For - pętla o określonej liczbie powtórzeń Postać instrukcji: lub For licznik = początek To koniec instrukcje Next licznik For licznik = początek To koniec Step krok instrukcje Next licznik Wewnątrz pętli może wystąpić instrukcja Exit For powodująca wyjście z pętli. licznik - zmienna numeryczna, pełni rolę licznika pętli początek - początkowa wartość zmiennej licznik koniec - końcowa wartość zmiennej licznik krok - może być dodatni lub ujemny, jeśli nie został podany, przyjmuje się wartość 1 Podczas realizacji pętli wartość zmiennej licznik zostaje zwiększona o krok krok 0 krok < 0 pętla wykona się, jeśli licznik koniec pętla wykona się, jeśli licznik koniec 11
Przykłady programów: 1. Obliczanie pola i obwodu koła Sub PoleKoła() Dim r As Single, p As Single, ob As Single Const pi = 3.1415 r = InputBox("Podaj promień koła", "POLE KOŁA") p = pi * r ^ 2: ob = 2 * pi * r MsgBox "Pole koła = " & p & Chr(13) _ & "Obwód koła = " & ob End Sub 12
2. Rozwiązywanie równania kwadratowego Sub Trójmian() Dim a As Single, b As Single, c As Single Dim delta As Single, x1 As Single, x2 As Single a = InputBox("Podaj współczynnik a", "TRÓJMIAN") b = InputBox("Podaj współczynnik b", "TRÓJMIAN") c = InputBox("Podaj współczynnik c", "TRÓJMIAN") delta = b ^ 2-4 * a * c If delta < 0 Then MsgBox "Brak pierwiastków rzeczywistych",, "ROZWIĄZANIE" ElseIf delta = 0 Then x1 = -b / (2 * a) MsgBox "x= " & x1,, "ROZWIĄZANIE" Else x1 = (-b - Sqr(delta)) / (2 * a) x2 = (-b + Sqr(delta)) / (2 * a) MsgBox "x1=" & x1 & Chr(13) & "x2=" & x2,, "ROZWIĄZANIE" End If End Sub 13
Rozwiązywanie równania kwadratowego c.d. 14
3. Obliczanie sumy wyrazów ciągu Sub SumaCiągu() Dim suma As Single, a(1 To 100) As Single Dim i, n As Integer n = Cells(1, 2) 'czytaj n z "B1" For i = 1 To n a(i) = Cells(i, 1) 'czytaj a(i) z "A1" do "An" Next suma = 0 'oblicz For i = 1 To n ' sumę suma = suma + a(i) Next Cells(n, 2) = "suma=" & suma 'wpisz wynik do "Bn" End Sub 15