13
1 VBA – 2 HIERARCHIA OBIEKTÓW ODWOŁYWANIE SIĘ DO OBIEKTÓW WŁAŚCIWOŚCI OBIEKTÓW PĘTLE I INSTRUKCJE WARUNKOWE ZFPBIG – LABORATORIUM Przypomnienie VBA – Visual Basic for Application – skryptowy język programowania wywodzący się z Visual Basic’a (VB) zintegrowany z aplikacjami pakietu Microsoft Office i innych programach (np. AutoCAD, WordPerfect). Możliwości języka VBA można wykorzystad przede wszystkim do automatyzacji pracy z dokumentami używając makropoleceo. Możliwości VBA można rozbudowywad włączając dodatkowe biblioteki lub funkcje Windows API co pozwala na tworzenie bardzo rozbudowanych narzędzi z użyciem graficznego interface’u użytkownika tak jak to ma miejsce w aplikacjach kompilowanych do pliku EXE. W języku VBA niestety nie można tworzyd samodzielnych skompilowanych plików z rozszerzeniem “EXE”. Kod programu (makro, procedura, funkcja) napisane w edytorze VBE (Visual Basic Editor *dostęp przez skrót ALT+F11] – dostępny w pakiecie Office od wersji 2000+) zapisywane są bezpośrednio w otwartym dokumencie programu w którym wywołujemy wspomniany edytor. Dla aplikacji Excel będą to pliki “*.XLS” (do wersji 2003) lub “*.XLSM” (od wersji 2007+), natomiast dla aplikacji MS Word będą to pliki “*.DOC” (do wersji 2003) lub “*.DOCM” (od wersji 2007+). ----------------------------------- Excel bazuje na idei programowania obiektowego. Obiekt jest pewnego rodzaju pojemnikiem odzwierciedlającym jakiś element Excela. Jest on identyfikowany przez nazwę i zawiera: atrybuty (property) metody (methods) zdarzenia (events) Do obiektów nie odwołujemy się bezpośrednio, tylko przez ich atrybuty i metody. Obiekt.identyfikator[.identyfikator] Identyfikator może byd: metodą, która wykonuje jakieś działanie (dokładnie tak jak procedura lub funkcja), atrybutem, który jest jakąś zwykłą wartością, lub kolejnym obiektem. W ten sposób możemy tworzyd cały łaocuszek, na którego koocu musi byd jakiś atrybut lub metoda. HIERARCHIA OBIEKTÓW Obiekt Application (czyli excel) zawiera inne obiekty. Niektóre obiekty są kontenerami dla innych obiektów. Oto przykłady innych obiektów zawartych w obiekcie Application: 1. Workbooks (kolekcja wszystkich obiektów workbook – skoroszyt)’ o Worksheets (arkusze) ChartObjects Range PageSetup (Ustawienia strony) PivotTable (Tabela przestawana)

V A – îhome.agh.edu.pl/~mrzyglod/.../sp-is-instrukcjaZFPBIG-6(makraVBA-2).pdf · VBA – Visual Basic for Application – skryptowy język programowania wywodzący się z Visual

Embed Size (px)

Citation preview

1

VBA – 2 HIERARCHIA OBIEKTÓW ODWOŁYWANIE SIĘ DO OBIEKTÓW WŁAŚCIWOŚCI OBIEKTÓW PĘTLE I INSTRUKCJE WARUNKOWE

ZFPBIG – LABORATORIUM Przypomnienie VBA – Visual Basic for Application – skryptowy język programowania wywodzący się z Visual Basic’a (VB) zintegrowany z aplikacjami pakietu Microsoft Office i innych programach (np. AutoCAD, WordPerfect). Możliwości języka VBA można wykorzystad przede wszystkim do automatyzacji pracy z dokumentami używając makropoleceo. Możliwości VBA można rozbudowywad włączając dodatkowe biblioteki lub funkcje Windows API co pozwala na tworzenie bardzo rozbudowanych narzędzi z użyciem graficznego interface’u użytkownika tak jak to ma miejsce w aplikacjach kompilowanych do pliku EXE. W języku VBA niestety nie można tworzyd samodzielnych skompilowanych plików z rozszerzeniem “EXE”. Kod programu (makro, procedura, funkcja) napisane w edytorze VBE (Visual Basic Editor *dostęp przez skrót ALT+F11] – dostępny w pakiecie Office od wersji 2000+) zapisywane są bezpośrednio w otwartym dokumencie programu w którym wywołujemy wspomniany edytor. Dla aplikacji Excel będą to pliki “*.XLS” (do wersji 2003) lub “*.XLSM” (od wersji 2007+), natomiast dla aplikacji MS Word będą to pliki “*.DOC” (do wersji 2003) lub “*.DOCM” (od wersji 2007+). ----------------------------------- Excel bazuje na idei programowania obiektowego. Obiekt jest pewnego rodzaju pojemnikiem odzwierciedlającym jakiś element Excela. Jest on identyfikowany przez nazwę i zawiera:

atrybuty (property) metody (methods) zdarzenia (events)

Do obiektów nie odwołujemy się bezpośrednio, tylko przez ich atrybuty i metody.

Obiekt.identyfikator[.identyfikator]

Identyfikator może byd: − metodą, która wykonuje jakieś działanie (dokładnie tak jak procedura lub funkcja), − atrybutem, który jest jakąś zwykłą wartością, − lub kolejnym obiektem.

W ten sposób możemy tworzyd cały łaocuszek, na którego koocu musi byd jakiś atrybut lub metoda.

HIERARCHIA OBIEKTÓW

Obiekt Application (czyli excel) zawiera inne obiekty. Niektóre obiekty są kontenerami dla innych obiektów. Oto przykłady innych obiektów zawartych w obiekcie Application:

1. Workbooks (kolekcja wszystkich obiektów workbook – skoroszyt)’ o Worksheets (arkusze)

ChartObjects

Range

PageSetup (Ustawienia strony)

PivotTable (Tabela przestawana)

2

o Charts (wykresy)

o Names (nazwa) 2. Windows (kolekcja wszystkich obiektów window – okno)’

Przez prawie cały czas pracy z Excelem jakieś obiekty są zaznaczone. Czyli zostały kliknięte przez użytkownika. Są to:

− ActiveCell - zaznaczona komórka, − ActiveChart - zaznaczony wykres, − ActivePrinter - domyślna drukarka, − ActiveSheet - aktywny arkusz, − ActiveWindow - otwarte okno − ActiveWorkbook - wybrany skoroszyt

ODWOŁYWANIE SIĘ DO OBIEKTÓW

Aby odwoład się do obiektu należy podawad nazwy kwalifikowane, łącząc przy pomocy kropki nazwy poszczególnych obiektów.

Worksheets("Arkusz1")

sytuacji gdy otwarte są dwa skoroszyty a w każdym z nich znajduje się Arkusz1, rozwiązanie polega na utworzeniu odwołania do obiektu poprzez zawarcie w nim nazwy jego kontenera.

Workbooks("Zeszyt1"). Worksheets ("Arkusz1")

Workbooks("Zeszyt1"). Worksheets ("Arkusz1").Range("A1")

Application.( "Zeszyt1"). Worksheets ("Arkusz1").Range("A1")

W większości przypadków można pominąd obiekt Application w odwołaniach, ponieważ jest on przyjmowany domyślnie. Jeśli obiekt Zeszyt1 jest aktywnym skoroszytem w odwołaniu można go również pominąd i zastosowad następujące odwołanie:

Worksheets ("Arkusz1").Range("A1")

Range("A1")

Application

Workbooks

Worksheets

Range

PivotTable

CommandBar

Buttons

Worksheet

Functions

3

Obiekt Range Większośd pracy z Excelem polega na modyfikowaniu komórek. Prawie każdy element Excela ma odpowiadający sobie obiekt, w efekcie dużą częśd pracy w VBA wykonujemy przy pomocy zakresów (obiekt Range).

Range może reprezentowad:

pojedynczą komórkę,

wiersz,

kolumnę,

grupę komórek z zakresu ciągłego lub nie

albo nawet zakres z kilku skoroszytów jednocześnie.

Oznaczenie jednej komórki

Worksheets("Arkusz1").Range("A1").Value = 1

Oznaczenie zakresu komórek ActiveSheet.Range("A1:A10").Value = 1

Worksheets("Arkusz1").Range("F1", "F10").Value = 10

Oznaczenie komórek nie sąsiadujących ze sobą Worksheets("Arkusz1").Range("A1, A2, A5") = 1

Cells Kolejna metoda do odwoływania się do zakresu polega na użyciu właściwości cells. Jest używana do obiektów Worksheet i Range.

Obiekt.Cells(rowIndex, columnIndex)

Worksheets("Arkusz1").Cells(9, 9) = 22

Aby do komórki znajdującej się bezpośrednio poniżej aktywnej komórki wprowadzid tekst “napis” , należy użyd następującej instrukcji (rozpocznij od aktywnej komórki i traktuj ją jakby to była komórka A1. Następnie wpisz tekst „napis” w komórce znajdującej się w drugim wierszu i pierwszej kolumnie. ActiveCell.cells(2, 1) = "napis"

Ta składnia może też zostad użyta w przypadku obiektu Range. W tym przypadku zwrócona komórka jest względna w stosunku do obiektu Range, do którego się odwołano. Jeśli np. obiekt Range jest zakresem A1:D10 (40 komórek), właściwośd Cells może pobrad argumet o wartości z przedziału od 1 do 40 i zwrócid jedną z komórek obiektu Range. W przykładzie poniżej wartośd 2000 jest wprowadzana do komórki A2 , ponieważ jest to 5 komórka zakresu (licząc od góry i w prawą stronę a następnie od początku następnego wiersza):

Range("A1:D10").Cells(5) = 2000

WŁAŚCIWOŚCI OBIEKTÓW

Każdy obiekt ma swoje właściwości.

Value

Przykładowo obiekt Range posiada właściwośd o nazwie Value. Poniższe makro, po uruchomieniu, będzie wyświetlad w oknie wartośd komórki A1.

Sub wartoscKom()

MsgBox Worksheets("Arkusz1").Range("A1").Value

End Sub

4

DWICZENIE 1

Po wykonaniu procedury poniżej w komórce A1 arkusza Arkusz1 pojawi się wartośd 123.

Sub wartoscKom()

Worksheets("Arkusz1").Range("A1").Value = 123

End Sub

Formula

DWICZENIE 2

HasFormula W kolejnym przykładzie konstrukcja IF…THEN… została użyta do warunkowego wyświetlania okna dialogowego. jeśli w komórce A1 znajduje się jakaś formuła, to zostanie ona wyświetlona w oknie dialogowym za pomocą właściwości Formula obiektu Range, jeśli w komórce nie ma formuły nic się nie dzieje.

Sub hasFormula()

If Worksheets("Arkusz1").Range("A1").hasFormula Then MsgBox

Range("A1").Formula

End Sub Właściwośd Formula obiektu Range jest właściwością do odczytu i zapisu, stąd można umieścid formułę w wybranej komórce arkusza (Niestety musimy użyd wtedy angielskiej wersji formuły.):

Sub wstawFormule()

Range("D12").Formula = "=RAND()*100"

End Sub

Sub wpiszDWA()

Range("C1:C10") = 2

End Sub

Name

Name jest atrybutem Obiektu Worksheet i oznacza jego nazwę. Zmieniamy w ten sposób nazwę na

"Zielony".

Sub zmienNazwe()

Worksheets(1).name = "zielony"

End Sub

W ten sposób nadajemy zmiennej NazwaArkusza wartośd nazwy pierwszego arkusza i wyświetlany wynik w oknie dialogowym

Sub PodajNazwe()

NazwaArkusza = Worksheets(1).Name

MsgBox NazwaArkusza

End Sub

METODY OBIEKTOWE

Oprócz właściwości obiekty posiadają również swoje metody. Metoda to operacja wykonywana na obiekcie.

Clear Usunie zawartośd komórek wraz z formatowaniem

Sub wyczysc()

Range("C1:C10").Clear

End Sub

5

ClearContents Aby usunąd wartości z zakresu I pozostawid formatowanie komórek, należy zastosowad metodę obiektu Range o nazwie ClearContents

Sub wyczysc()

Range("C1", "C10").ClearContents

End Sub

Copy

Poniżej zamieszczono przykład procedury kopiującej przy użyciu Copy obiektu Range zawartośd komórki A2 z arkusza1 do komórki A2 w arkuszu2.

Sub kopiuj()

Worksheets("Arkusz1").Range("A2").Copy

Worksheets("Arkusz2").Range("A2")

End Sub

W przykładzie poniżej posłużono się sekwencją (spacja za którą znajduje się znak podkreślenia) kontynuującą instrukcję w kolejnym wierszu.

Sub kopiuj()

Worksheets("Arkusz1").Range("A3").Copy _

Worksheets("Arkusz2").Range("A3")

End Sub

Select Zaznaczanie komórek - do zaznaczania komórek używamy metody Select.

Worksheets(2).Range("B1:B15").Select

Po wykonaniu powyższego przykładu zakres B1:B15 zostaje podstawiony pod obiekt Selection. Obiekt

Selection jest typu Range, ma więc jego wszystkie atrybuty i metody.

Sub zaznaczanie()

Worksheets(2).Range("B1:B15").Select

Selection.Value = 4

End Sub

Add

Niektóre metody przyjmują argumenty, wywołuje się je podobnie jak zwykłe procedury.

Worksheets.Add Worksheets(1), , 1 Powyższa metoda dodaje nowy arkusz i może przyjąd cztery argumenty:

1. Before - przed którym arkuszem ma byd dodany nowy, 2. After - po którym arkuszu ma byd dodany nowy, 3. Count - ile arkuszów ma byd dodanych 4. Type - jakiego typu mają byd nowe arkusze

Powyżej podano pierwszy i trzeci argument. Drugi i czwarty został pominięty, więc między przecinkami jest puste miejsce. Wszystkie argumenty, które znajdują się na koocu są już pominięte, nie trzeba stawiad przecinków, Excel domyśla się, że nie chcemy ich przekazad.

Argumenty można też dodad poprzez nazwy, jest to szczególnie przydatne dla metod, które mają dużo, np. kilkanaście argumentów. Nie musimy wtedy stawiad dużo zbędnych przecinków. Instrukcję

Worksheets.Add Worksheets(1), , , xlWorksheet

można tez zapisad:

6

Worksheets.Add before:=Worksheets(1), Type:=xlWorksheet

OPERATORY

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 zmienid logikę kodu. Operator przyjmuje argumenty tworząc wyrażenia, argumentami operatorów mogą byd kolejne wyrażenia itd. W ten sposób można tworzyd skomplikowane instrukcje.

Wyrażenie 1 operator Wyrażenie 2 niektóre operatory przyjmują tylko jeden argument

operator Wyrażenie Operator przypisania

Dim zmienna1 As Integer

Dim zmienna2 As Integer

Dim zmienna3 As String

Dim zmienna4 As Date

zmienna1 = 1

zmienna2 = zmienna1 + 2

zmienna3 = "Programowanie w VBA"

zmienna4 = MsgBox("Tak czy nie? ", vbYesNo)

Operator łamania linii Zwykle jedna linia równa się jednej linii kodu. Excel czytając nasz kod spodziewa się, że każda linia będzie zamkniętą logiczną całością. Długie linie kodu można dzielid operatorem " _". Składa się ze spacji i podkreślenia.

Sub _

test() zmiennaA = "Bardzo długi i malo treściwy " & _

"tytul lektury szkolnej " & _

"do wypozyczenia w miejskiej " & _ "bibliotece publicznej"

MsgBox zmiennaA

End Sub

Dwukropek Przed chwilą pisaliśmy jedną instrukcję w kilku liniach, można też napisad kilka krótkich instrukcji w jednej linii. Poszczególne instrukcje powinny byd rozdzielone dwukropkiem. Oczywiście należy to robid tylko jeżeli nie zmniejszy to czytelności kodu.

Sub jedenWiersz()

Dim imie As String

Dim nazwisko As String imie = "Jan": nazwisko = "Kowalski": MsgBox imie & " " & nazwisko

End Sub

Operator Łączenia tekstu Dwa fragmenty tekstu łączymy operatorem "&". Można w ten sposób łączyd kilka tekstów, zmiennych String, lub funkcji zwracających String.

Sub zlacz()

7

Const Imie As String = "Jan" Const Nazwisko As String = "Kowalski"

MsgBox Imie & " " & Nazwisko End Sub

Operatory matematyczne

VBA udostępnia nam wszystkie podstawowe działania matematyczne, uwzględniając standardową kolejnośd działao.

Operator działanie kolejnośd przykład

- Liczba ujemna 0 -2

^ Potęga 1 3^2

* Mnożenie 2 2*2

/ Dzielenie 2 2/2

\ Dzielenie całkowite 3 7\2 =3

mod Reszta z dzielenia 4 7 mod 2 = 1

+ dodawanie 5 2+2

- odejmowanie 5 2-2

Zmianę kolejności wykonywania działao możemy dokonywad przy pomocy nawiasów. "(" i ")".

Operatory logiczne Różne wyrażenia zwracające wartości logiczne (True/False) możemy dodatkowo łączyd przy pomocy operatorów logicznych.

Operator opis

And Operator koniunkcji

Or Operator alternatywy

Not Operator przeczenia

8

JĘZYK VBA POSIADA KILKA INSTRUKCJI DO TWORZENIA PĘTLI WARUNKOWYCH:

− Instrukcja For... Next - pętla For... Next powtarza blok instrukcji określoną liczbę razy, stosujemy ją jeżeli z góry wiadomo ile razy pętla ma byd wykonana.

− Pętle warunkowe Do...Loop - bardzo wygodnym narzędziem są pętle, służą one do wielokrotnego wykonywania danego bloku kodu. Instrukcji Do...Loop użyjemy jeżeli nie wiemy ile razy pętla ma byd wykonana. Jest to pętla warunkowa, w której kluczową cechą jest warunek.

− Instrukcja If... Then... Else - najczęściej stosowana instrukcja warunkowa. − Instrukcja Select Case - jest to inna droga realizacji procesu podjęcia decyzji w programie.

− Instrukcja For Each... Next - pętla służąca do wykonywania operacji na obiektach kolekcji.

PĘTLA FOR … NEXT …

SKŁADNIA:

For licznik=pocz to koniec

Instrukcje powtarzane

Next licznik

Lub

For licznik=pocz to koniec Step krok

Instrukcje powtarzane

Next licznik

Konstruując pętle For ... Next należy na wstępie określid zmienną sterującą tą pętlą (w naszym przypadku jest nią zmienna o nazwie licznik) oraz zdefiniowad zakres w jakim ta zmienna będzie się zmieniała, czyli jej wartośd początkową, pocz, jej wartośd koocową, koniec, oraz krok z jakim ta zmienna będzie się zwiększała przy każdym dojściu do kooca pętli, czyli do intrukcji Next. Podczas wykonywania pętli za pierwszym razem, pod zmienną sterującą licznik podstawiona jest wartośd początkowa, pocz. Następnie sprawdzany jest warunek, czy wyznaczona w ten sposób zmienna licznik ma wartośd mniejszą lub równą niż koniec. Jeśli warunek jest ten jest spełniony to pętla jest wykonywana, czyli wykonywane instrukcje zawarte pomiędzy wierszem For licznik=pocz to koniec, a wierszem Next licznik. Przykład 1. Procedura oblicza sumę pierwszych 10 liczb całkowitych . Po zakooczeniu obliczeo procedura wyświetla komunikat zawierający wynik.

Sub suma()

‘Makro oblicza sumę pierwszych 10 liczb całkowitych Dim total As Integer

Dim i As Integer

total = 0

For i = 1 To 10

total = total + i

Next i

MsgBox total

End Sub

Procedura zawiera kilka często stosowanych elementów języka VBA: Komentarz (wiersz rozpoczynający się apostrofem)

9

Deklaracje zmiennych (wiersz rozpoczynający się poleceniem Dim)

Dwie zmienne (total oraz i)

Dwie instrukcje przypisania wartości do zmiennych (total = 0 oraz total = total + 1) Struktura pętli (For … Next…) Wbudowana funkcja VBA (MsgBox).

Przykład 2. Wyświetlenie w oknie dialogowym dziesięciu kolejnych wartości zmiennej licznik.

Sub petla1()

Dim i As Integer

For i = 1 To 10

MsgBox "Wartość licznika " & i

Next i

End Sub

Przykład 3. Zgadywanka w 10 próbach

Sub petla2()

‘Zgadywanka w 10 próbach

Dim i, sekret, strzal As Integer

sekret = InputBox("Wprowadzam sekretną liczbę")

MsgBox "W 10 próbach zgadnij moją sekretną liczbę"

For i = 1 To 10

MsgBox "Próba nr " & CStr(i)

strzal = InputBox("Zgaduj")

If strzal = sekret Then

MsgBox "Brawo. Trafiłeś w " & CStr(i) & " próbie."

Exit For

End If

Next i

End Sub

PĘTLE WARUNKOWE DO...LOOP

Mamy do dyspozycji jakby pięd odmian pętli Do...Loop, wszystkie z nich działają w podobny sposób różnice przedstawiam w tabeli poniżej.

Typ pętli Opis

Do...Loop Wielokrotnie wykonuje blok kodu tak długo aż instrukcja warunkowa umieszczona wewnątrz tej pętli wykona instrukcje Exit Do. W tym przypadku użycie instrukcji Exit Do jest praktycznie obowiązkowe gdybyśmy jej nie zastosowali pętla byłaby wykonywana w nieskooczonośd.

Do While...Loop Rozpoczyna i powtarza blok kodu umieszczonego wewnątrz pętli jeżeli jest spełniony warunek umieszczony na początku tej pętli. Jest to prawdopodobnie najczęściej stosowana odmiana pętli warunkowej.

Do...Loop While Wykonuje blok kodu umieszczony wewnątrz pętli jeden raz i powtarza go tak długą jak długo jest spełniony warunek umieszczony na koocu pętli.

Do Until...Loop Rozpoczyna i powtarza blok kodu umieszczony wewnątrz pętli

10

dopóki nie zostanie spełniony warunek umieszczony na początku tej pętli.

Do...Loop Until Wykonuje blok kodu umieszczony wewnątrz pętli jeden raz i powtarza go do czasu gdy zostanie spełniony warunek umieszczony na koocu pętli .

Pętla Do While … Loop

Do While warunek

Intrukcje powtarzane

Loop

gdzie warunek jest dowolnym wyrażeniem logicznym (np. i<10). Jeśli wartośd tego wyrażenia jest równa True, czyli warunek jest spełniony, to intrukcje w pętli są wykonywane. Pod dojściu do intrukcji Loop sterowanie wraca do początkowej instrukcji pętli, Do While warunek i ponownie sprawdzany jest warunek. Jeśli w dalszym ciągu jest on spełniony (tzn. ma wartośd True), to instrukcje wewnątrz pętli są wykonywane ponownie i po dojściu do kooca pętli sterowanie ponownie wraca do początku, warunek jest sprawdzany itd. Jeśli warunek nie jest spełniony to wykonywana jest instrukcja następna po wierszu Loop. Zatem pętla Do While wykonywana jest tak długo dopóki warunek ma wartośd True. Ważna uwaga: aby uniknąd nieskooczonych pętli wartośd warunku musi mied możliwośd zmiany wewnątrz pętli z wartości True na wartośd False. Przykład 4.

Sub petla3()

Dim a As Integer

a = 0

Do While a < 10

a = a + 1

MsgBox a

Loop

End Sub

INSTRUKCJA IF …THEN … ELSE…

Postad tej instrukcji jest następująca:

If warunek Then

Else

Instrukcje gdy warunek nie jest spełniony

End If

Warunek może byd dowolnym wyrażeniem logicznym lub wyrażeniem relacji, którego wynik jest True lub False. Podczas wykonywania instrukcji If, najpierw obliczany jest warunek i jeśli jego wartośd jest równa True (tzn. warunek jest spełniony), to wykonywana jest instrukcja lub instrukcje znajdujące się po słowie kluczowym Then (aż do słowa kluczowego Else), w przeciwnym razie, gdy wartośd warunku jest równa False (tzn. warunek nie jest spełniony), to pomijane są instrukcje znajdujące się po słowie Then natomiast program przechodzi do wykonywania instrukcji następujących po słowie kluczowym Else, aż do słów kluczowych End If. W obydwu przypadkach po wykonaniu odpowiedniej grupy instrukcji w zależności od spełnienia warunku, program przechodzi następnie do wykonania kolejnej instrukcji znajdującej się po słowie kluczowym End If Warto zauważyd, że instrukcje wykonywane po Then lub Else mogą zawierad również kolejne instrukcje if/else.

11

Przykład 5 Przykład zastosowania instrukcji if/else do sprawdzenia poprawności wykonania operacji dzielenia.

Sub dziel()

Dim x As Single

Dim y As Single

Dim z As Single

x = InputBox("Wprowadz liczbę x")

y = InputBox("Wprowadz liczbę y")

If y <> 0 Then

z = x / y

MsgBox "wynik dzielenia = " & z

Else

MsgBox "Pamiętaj ... nie dzielić przez zero"

End If

End Sub

Złożona instrukcja If Jeśli w wyniku sprawdzenia warunku możliwe są nie dwa, lecz więcej działao do wykonania, wówczas można posłużyd się złożoną instrukcją If. Ma ona następującą postad:

If warunek1 Then

Instrukcje1 gdy warunek1 jest spełniony

ElseIf warunek2 Then

Instrukcje2 gdy warunek2 jest spełniony

ElseIf warunek_n Then

Instrukcje_n gdy warunek_n jest spełniony

Else

Instrukcje gdy nie spełniony jest żaden z powyższych warunków

End If

Przykład 6 Sprawdzanie w jakiej porze dnia się znajdujemy

Sub czas()

Dim t As Date

t = Time 'Pobranie czasu systemowego komputera

If t < #7:00:00 AM# Then

MsgBox "Jest zbyt wcześnie, żeby myśleć"

ElseIf t < #12:00:00 PM# Then

MsgBox "Przedpołudniowa pora pracy"

ElseIf t < #6:00:00 PM# Then

MsgBox "Pracujemy też po południu"

ElseIf t < #11:00:00 PM# Then

MsgBox "Wieczór - czas na relaks"

Else

MsgBox "Czas na spanie. Noc"

End If

End Sub

INSTRUKCJA WYBORU SELECT CASE

Instrukcja wyboru Select Case jest bardzo podobna w działaniu do złożonej instrukcji If. Instrukcja ta pozwala wykonad określone grupy instrukcji w zależności od wartości testu sterującego instrukcją Select Case. Postad tej instrukcji jest następująca:

Select Case Test Case Wartość1

12

Instrukcje_1 Case Wartość2

Instrukcje_2 Case Wartość3

Instrukcje_3

Case Wartość_n Instrukjce_n

Case Else Instrukcje_po_else

End Select

Przy wykonywaniu instrukcji Select Case najpierw jest obliczana wartośd wyrażenia stojącego w wierszu Select Case zaznaczonego wyżej jako Test, a następnie w zależności od jego wartości jest wykonywana ta grupa instrukcji, która znajduje się po Case odpowiadającym obliczonej wartości. Należy zwrócid uwagę, że po każdym Case może występowad albo pojedyocza wartośd, albo pewien zakres wartości. W każdym przypadku Visual Basic próbuje dopasowad odpowiedni Case do aktualnej wartości wyrażenia testowego Test. Gdy żaden z Case nie może byd dopasowany, wówczas wykonywane są instrukcje stojące po Case Else. Należy jednak zauwazyd, że stosowanie Case Else nie jest obowiązkowe. Po wykonaniu odpowiedniej grupy instrukcji z danego Case program przechodzi do instrukcji następującej po End Select. Przykład 7

Sub ocena()

Dim ocena As Integer

'Wczytanie danej oceny

ocena = InputBox("Podaj ocenę")

Select Case ocena

Case 6

MsgBox "ocena celująca"

Case 5

MsgBox "ocena bardzo dobra"

Case 4

MsgBox "ocena dobra"

Case 3

MsgBox "ocena dostateczna"

Case 2

MsgBox "ocena dopuszczająca"

Case 1

MsgBox "ocena niedostateczna"

Case Else

MsgBox "To nie jest ocena"

End Select

End Sub

Przykład 8

Sub ocena2()

Dim ocena As Integer

ocena = InputBox("Podaj ocenę")

Select Case ocena

Case 2 To 6

MsgBox "ocena pozytywna"

Case 1

MsgBox "ocena negatywna"

Case Else

MsgBox "To nie jest ocena"

End Select

End Sub

13

Przykład 9 Sub czas()

Dim t As Date

Select Case Time 'Pobranie czasu systemowego komputera

Case ID < #7:00:00 AM#

MsgBox "Jest zbyt wcze?nie aby my?leć"

Case #7:00:00 AM# To #12:00:00 PM#

MsgBox "Przedpołudniowa pora pracy"

Case #12:00:00 PM# To #6:00:00 PM#

MsgBox "Pracujemy też popołudniu"

Case #6:00:00 PM# To #11:00:00 PM#

MsgBox "Wieczór - czas na relaks"

Case Else

MsgBox "Czas na spanie. Noc"

End Select

End Sub

ZADANIA: Zadanie Napisad program realizujący algorytm rozwiązania liniowego ax+b=0 Oprócz oczywistego rozwiązania, w przypadku gdy a jest różne od zera, x = -b/a, trzeba rozważyd również przypadki, gdy a=0 oraz b=0. Aby ustrzec się błędów wykorzystania przy wprowadzeniu za a wartości zero, program będzie to sprawdzał i wysyłał odpowiedni komunikat. Formularz do rozwiązania tego zadania powinien umożliwiad wprowadzenie dwóch danych liczbowych: a oraz b, wykonanie obliczeo i wyświetlenie wyniku.