Visual Basic dla Aplikacji -...

62
Kod VBA - Podstawy Visual Basic dla Aplikacji © Ζ.Ζ. 1 Visual Basic dla Aplikacji Visual Basic dla Aplikacji Kod Visual Basic Kod Visual Basic - - Podstawy Podstawy Wyk Wyk ł ł ad ad dr in dr in ż ż . Zbigniew Zakrzewski . Zbigniew Zakrzewski v. 1.2.2 v. 1.2.2

Transcript of Visual Basic dla Aplikacji -...

Page 1: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 1

Visual Basic dla AplikacjiVisual Basic dla AplikacjiVisual Basic dla Aplikacji

Kod Visual Basic - PodstawyKod Visual Basic Kod Visual Basic -- PodstawyPodstawy

WykWykłładad

dr indr inżż. Zbigniew Zakrzewski. Zbigniew Zakrzewski v. 1.2.2v. 1.2.2

Page 2: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 2

Zastosowanie języka Visual Basic

1. MS Office (95, 97, 2000, XP, 2003, 2007) – jako VBA:Word,Excel,PowerPoint,Access,Publisher,Visio.

2. MS Windows (Win95 i NT) – jako VBS lub WSH.3. MS Server – jako VBS lub ASP (Active Server Pages).4. MS Outlook – jako VBS oraz VBA.5. MS Internet Explorer – jako VBS.6. AutoCAD firmy AutoDesk – jako VBS.7. Corel (pakiet graficzny) – jako VBA.

1. MS Office (95, 97, 2000, XP, 2003, 2007) – jako VBA:Word,Excel,PowerPoint,Access,Publisher,Visio.

2. MS Windows (Win95 i NT) – jako VBS lub WSH.3. MS Server – jako VBS lub ASP (Active Server Pages).4. MS Outlook – jako VBS oraz VBA.5. MS Internet Explorer – jako VBS.6. AutoCAD firmy AutoDesk – jako VBS.7. Corel (pakiet graficzny) – jako VBA.

Windows Script Host

Page 3: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 3

Zasadnicze elementy języka wysokiego poziomu

1. Projekt (zestaw modułów oraz formularzy);

2. Moduł (zestaw procedur oraz funkcji);

3. Procedura (podprogram zawierający instrukcje);

4. Instrukcja (słowo kluczowe samodzielne lub grupowe);

5. Zmienna (statyczna lub dynamiczna, dane);

6. Stała (zmienna z wartością ustaloną przy deklaracji);

7. Operator (pojedynczy znak symbolizujący operację);

8. Przedrostek (znak lub zestaw znaków, skrót polecenia).

1. Projekt (zestaw modułów oraz formularzy);

2. Moduł (zestaw procedur oraz funkcji);

3. Procedura (podprogram zawierający instrukcje);

4. Instrukcja (słowo kluczowe samodzielne lub grupowe);

5. Zmienna (statyczna lub dynamiczna, dane);

6. Stała (zmienna z wartością ustaloną przy deklaracji);

7. Operator (pojedynczy znak symbolizujący operację);

8. Przedrostek (znak lub zestaw znaków, skrót polecenia).

Page 4: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 4

Etykieta w programowaniu VBA

Poprawne nazewnictwo zmiennych i obiektów:– nazwa winna rozpoczynać się od litery;– wewnątrz nazwy można używać znaku podkreślenia;– nazwa nie może zawierać znaków interpunkcyjnych:

! @ & ‘ $ # ? , * . { } ( ) [ ] = + - ^ % / \ ~ < > : ; ”– nazwa nie może zawierać spacji;– nie wskazane jest stosowanie w nazwach polskich liter;– nazwa zmiennej może maksymalnie zawierać 255 znaków;– nazwa formularza lub formantu może zawierać do 40 znaków;– nazwa nie może być taka sama jak nazwa funkcji, instrukcji lub metody

wbudowanej;– moduł kodu nie może zawierać procedur o tych samych nazwach;– nazwy zmiennych mogą się powtarzać, gdy są deklarowane lokalnie w

procedurach, a nie w sekcji deklaracji modułu;– należy zwrócić uwagę, że VBA nie rozróżnia wielkich i małych liter.

Poprawne nazewnictwo zmiennych i obiektów:– nazwa winna rozpoczynać się od litery;– wewnątrz nazwy można używać znaku podkreślenia;– nazwa nie może zawierać znaków interpunkcyjnych:

! @ & ‘ $ # ? , * . { } ( ) [ ] = + - ^ % / \ ~ < > : ; ”– nazwa nie może zawierać spacji;– nie wskazane jest stosowanie w nazwach polskich liter;– nazwa zmiennej może maksymalnie zawierać 255 znaków;– nazwa formularza lub formantu może zawierać do 40 znaków;– nazwa nie może być taka sama jak nazwa funkcji, instrukcji lub metody

wbudowanej;– moduł kodu nie może zawierać procedur o tych samych nazwach;– nazwy zmiennych mogą się powtarzać, gdy są deklarowane lokalnie w

procedurach, a nie w sekcji deklaracji modułu;– należy zwrócić uwagę, że VBA nie rozróżnia wielkich i małych liter.

Page 5: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 5

Etykieta w programowaniu VBA c.d.

Poprawianie czytelności kodu poprzez wstawianie wcięć.Cel: wyróżnianie bloków kodu, np. wyróżnianie zagnieżdżonych instrukcji:

warunku If ... Then ...Else, pętli Do ... Loop lub pętli For ... Next.Przykład:

Do While x3 <> 20 ‘ Początek pętlix1 = x1 +1

If x1 = x2 Then ‘ Początek warunkux1 = 5 ‘ Podprogram warunku spełnionegox2 = 10

Else ‘ W innym przypadkux1 = x2 ‘ Podprogram dla warunkux3 = 20 ‘ niespełnionego

End IfLoop ‘ Koniec pętli

Poprawianie czytelności kodu poprzez wstawianie wcięć.Cel: wyróżnianie bloków kodu, np. wyróżnianie zagnieżdżonych instrukcji:

warunku If ... Then ...Else, pętli Do ... Loop lub pętli For ... Next.Przykład:

Do While x3 <> 20 ‘ Początek pętlix1 = x1 +1

If x1 = x2 Then ‘ Początek warunkux1 = 5 ‘ Podprogram warunku spełnionegox2 = 10

Else ‘ W innym przypadkux1 = x2 ‘ Podprogram dla warunkux3 = 20 ‘ niespełnionego

End IfLoop ‘ Koniec pętli

Kod

Page 6: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 6

Etykieta w programowaniu VBA c.d.

Kontynuacja wiersza kodu w nowej linii.Cel: Możliwość wizualnej analizy długiego wiersza poleceń jako całości.

Przykład:MsgBox ”Aby przenieść część instrukcji VBA do ” & _

”następnego wiersza kodu, wpisz znak spacji” & _” oraz znak podkreślenia na końcu wiersza.”

Opatrywanie kodu VBA w komentarze.Public Sub Zmienne Rem Deklaracja nowej procedury

Dim x , y As Integer Rem Deklaracja zmiennychx = 10 ‘ Przypisanie wartości zmiennej xy = 20 ‘ Przypisanie wartośći zmiennej y

End Sub ‘ Zakończenie kodu procedury

Kontynuacja wiersza kodu w nowej linii.Cel: Możliwość wizualnej analizy długiego wiersza poleceń jako całości.

Przykład:MsgBox ”Aby przenieść część instrukcji VBA do ” & _

”następnego wiersza kodu, wpisz znak spacji” & _” oraz znak podkreślenia na końcu wiersza.”

Opatrywanie kodu VBA w komentarze.Public Sub Zmienne Rem Deklaracja nowej procedury

Dim x , y As Integer Rem Deklaracja zmiennychx = 10 ‘ Przypisanie wartości zmiennej xy = 20 ‘ Przypisanie wartośći zmiennej y

End Sub ‘ Zakończenie kodu procedury

Kod

Kod

Page 7: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 7

Typy danychTyp Opis Zakres wartości Pamięć

Boolean Wartość logiczna Prawda (True) lub Fałsz (False) 2 bajty

Byte Mała liczba całkowita Od 0 do 255 1 bajt

Integer Liczba całkowita Od -32 768 do 32 767 2 bajty

Long Liczba całkowita Od -2 147 483 648 do 2 147 483 647 4 bajty

Single Wartośćzmiennoprzecinkowa pojedynczej precyzji

Od -3.402823E38 do -1.401298E-45dla ujemnych wartości oraz od 1.401298E-45 do 3.402823E38 dla dodatnich wartości

4 bajty

Double Wartośćzmiennoprzecinkowa podwójnej precyzji

Od -1.79769313486231E308 do -4.94065645841247E-324 dla dodatnich wartości oraz od 4.94065645841247E-324 do 1.79769313486232E308 dla ujemnych

8 bajtów

Page 8: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 8

Typy danych c.d.Typ Opis Zakres wartości Pamięć

Currency Duża precyzyjna liczba (do 19 cyfr)

Od –922 337 203 685 477, 5808 do 922 337 203 685 477,5807; cztery cyfry na prawo od przecinka

8 bajtów

Decimal Bardzo duża, bardzo precyzyjna liczba (do 29 cyfr)

+/-79228162514264337593543950335bez przecinka ;+/-7.9228162514264337593543950335 z 28 miejscami na prawo od przecinka;najmniejsza niezerowa liczba: +/-0.0000000000000000000000000001

14 bajtów

Date Daty i godziny Od 1 stycznia 100r. do 31 grudnia 9999r. 8 bajtów

Object Obiekt Odniesienie do obiektu 4 bajty

String Tekst o zmiennej długości

Od 0 do około 2 miliardów znaków 10 bajtów +długośćłańcucha

Page 9: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 9

Typy danych c.d.Typ Opis Zakres wartości Pamięć

String Tekst o stałej długości

Od 1 do około 65400znaków

długośćłańcucha

Variant Dowolna wartość

Wartość numeryczna – typ Double. Tekst o zmiennej długości od 0 do około 2 miliardów znaków

22 bajty + długośćłańcucha

Typ niestandardowy zdefiniowany za pomocą struktury Type

Grupa zmiennych używana jako całość

Dopuszczalna wartośćkonkretnej zmiennej tworzącej grupę zależy od typu tej zmiennej

zależna od składników

Type DanePersonalne ‘ Tworzę typ zmiennej użytkownika. ID As Integer ‘ Tworzę elementy danych typu użytkownika. Nazwisko As String * 20 Adres As String * 30

End Type

Kod

Page 10: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 10

Deklaracja zmiennych

Option Explicit Pozycja – początek modułu.Wymuszenie deklaracji zmiennych. Przejrzystość kodu.

Zasadnicza składnia podstawowego sposobu deklaracji zmiennej:Dim Zmienna As Typ_Danych

Static Zmienna1 As Typ_Danych1

DynamicznaStatyczna

Przykłady:

Dim x1 As Integer, x2 As Integer

Dim z2 As DoubleDim tekst1 As string*56Static tekst2 As string

Kod

Page 11: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 11

Deklaracja zmiennej i jej zasięg

Zasięg zmiennej zależy od:• miejsca, w którym zmienna jest zadeklarowana (sekcja

deklaracji modułu, wnętrze procedury);• słowa kluczowego służącego do deklarowania zmiennej (Dim,

Public, Private lub Static).Przykłady:

Private Slowo As String ‘Deklaracja lokalnaDim Komunikat As String ‘Deklaracja lokalnaPublic Licznik As Long ‘Deklaracja

‘globalnaStatic Numer As Integer ‘Deklaracja lokalna

Zasięg zmiennej zależy od:• miejsca, w którym zmienna jest zadeklarowana (sekcja

deklaracji modułu, wnętrze procedury);• słowa kluczowego służącego do deklarowania zmiennej (Dim,

Public, Private lub Static).Przykłady:

Private Slowo As String ‘Deklaracja lokalnaDim Komunikat As String ‘Deklaracja lokalnaPublic Licznik As Long ‘Deklaracja

‘globalnaStatic Numer As Integer ‘Deklaracja lokalna

Kod

Page 12: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 12

Deklaracja zmiennej statycznej

Cechy:• zmienna statyczna nie zmienia swojej wartości po wykonaniu

procedury;• globalna deklaracja w funkcji lub procedurze zamienia wszystkie

deklaracje na statyczne.Przykłady:

Static Numer As Integer

Private Static Sub Procedura()

Static Function Suma(x1 As Integer, _

x2 As Integer) As Double

Cechy:• zmienna statyczna nie zmienia swojej wartości po wykonaniu

procedury;• globalna deklaracja w funkcji lub procedurze zamienia wszystkie

deklaracje na statyczne.Przykłady:

Static Numer As Integer

Private Static Sub Procedura()

Static Function Suma(x1 As Integer, _

x2 As Integer) As Double

Kod

Page 13: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 13

Deklarowanie wielu zmiennych w wierszu

Poprawna deklaracja zawiera (w kolejności):1. Słowo kluczowe (Dim, Private, Public),2. Nazwę zmiennej,3. Słowo kluczowe (As),4. Typ zmiennej.

Po umieszczeniu znaku przecinka można powtórzyć punkty 2, 3 i 4.

Dim x1 As Integer, x2 As Integer, x3 As Integer

Dim a1 As Currency, d1 As Date, s1 As String

Dim x1, x2, x3 As Integer : Dim x4

Poprawna deklaracja zawiera (w kolejności):1. Słowo kluczowe (Dim, Private, Public),2. Nazwę zmiennej,3. Słowo kluczowe (As),4. Typ zmiennej.

Po umieszczeniu znaku przecinka można powtórzyć punkty 2, 3 i 4.

Dim x1 As Integer, x2 As Integer, x3 As Integer

Dim a1 As Currency, d1 As Date, s1 As String

Dim x1, x2, x3 As Integer : Dim x4

Kod

Uwaga: Zmienne typu Variant.

Page 14: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 14

Stała literalna (symboliczna)

Cel:• określenie wartości, która nie zmienia się w czasie działania

programu;• możliwość globalnej zmiany deklaracji stałej stosowanej w

programie;• na stałe przypisanie nazw wartościom, w celu podniesienia

czytelności kodu.Przykłady:

Public Const Nazwisko As String = ”Kowalski”Private Const Data As Date = #1/10/1998#Const Stan As Boolean = TrueConst Poniedziałek = 1, Wtorek = 2

Cel:• określenie wartości, która nie zmienia się w czasie działania

programu;• możliwość globalnej zmiany deklaracji stałej stosowanej w

programie;• na stałe przypisanie nazw wartościom, w celu podniesienia

czytelności kodu.Przykłady:

Public Const Nazwisko As String = ”Kowalski”Private Const Data As Date = #1/10/1998#Const Stan As Boolean = TrueConst Poniedziałek = 1, Wtorek = 2

Kod

Page 15: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 15

Wykorzystanie przyrostków w deklaracjach

Przyrostek Typ zmiennej Przykład deklaracji

% Integer Dim zmienna1%, zmienna2%

Dim wartosc1&, wartosc2&

Dim slowo1!, slowo2!

Dim x#, y#

Dim x As Double, y As Double

Dim placa1@, placa2@

Dim lancuch1$, lancuch2$

& Long

! Single

# Double

@ Currency

$ String

Page 16: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 16

Definiowanie niestandardowego typu danych[Private | Public] Type nazwa_typu

nazwa_elementu [([indeksy])] As typ[nazwa_elementu[([indeksy])] As typ]. . .

End TypePublic Element nieobowiązkowy. Deklarowanie typów zdefiniowanych przez

użytkownika dostępnych we wszystkich procedurach, modułach, projektach.

Private Element nieobowiązkowy. Deklarowanie typu definiowanego przez użytkownika dostępnego tylko wewnątrz modułu.

nazwa_typu Element obowiązkowy. Nazwa typu definiowanego przez użytkownika.

nazwa_elementu Element obowiązkowy. Nazwa elementu typu definiowanego przez użytkownika.

indeksy Element nieobowiązkowy. Wymiary elementu będącego tablicą. Argument indeksy ma następującą składnię: [indeks_dolny Toindeks_górny]

typ Element obowiązkowy. Dowolnego rodzaju z wcześniejszej tabeli.

Page 17: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 17

Charakterystyka zmiennej typu „Variant”

Cechy:• uniwersalność;• możliwość przyporządkowania wartości dowolnego typu;• dynamiczna zmiana typu wartości;• zajętość dużego bloku pamięci oraz spowolnienie programu.Przykład:Dim WszystkieDane As Variant, TypDanychWszystkieDane = 3WszystkieDane = ”Dobrze”WszystkieDane = #1/10/1998 19:05:21#

‘ Zapytanie o typ bieżącej wartościTypDanych = TypeName(WszystkieDane) ‘ Date

Cechy:• uniwersalność;• możliwość przyporządkowania wartości dowolnego typu;• dynamiczna zmiana typu wartości;• zajętość dużego bloku pamięci oraz spowolnienie programu.Przykład:Dim WszystkieDane As Variant, TypDanychWszystkieDane = 3WszystkieDane = ”Dobrze”WszystkieDane = #1/10/1998 19:05:21#

‘ Zapytanie o typ bieżącej wartościTypDanych = TypeName(WszystkieDane) ‘ Date

Kod

Page 18: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 18

Operatory arytmetyczne

Operator Operacja Przykład

+ Dodawanie 2 + 1 x + y

- Odejmowanie i negacja 2 – 1 -x

* Mnożenie 3 * 4 x * y

x ^ y

x / y

x \ y

x Mod y

Sqr(x)

^ Potęgowanie 2 ^ 3

/ Dzielenie 2 / 3

\ Dzielenie całkowite 2 \ 3

Mod Reszta z dzielenia 5 Mod 2

Sqr Pierwiastek kwadratowy Sqr(4)

Funkcja posiadająca charakter operatora

Page 19: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 19

Operatory porównywania i konkatenacji

Operator Operacja Przykład

= Równość, przypisanie x = 2 x = y

<> Nierówność x <> 2 x <> y

x < y

x > y

x <= y

x >= y

Like Porównywanie łańcuchów "aBBBa" Like "a*a"

< Mniejszy x < 2

> Większy x > 2

<= Mniejszy lub równy x <= 2

>= Większy lub równy x >= 2

Is Sprawdzanie odwołań Object1 Is Object2

& lub + Konkatenacja łańcuchów "Wynik: " & x

Page 20: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 20

Przykłady zastosowań operatora „Like”

Dim MojWynikMojWynik = "aBBBa" Like "a*a" ‘ Zwraca True.MojWynik = "F" Like "[A-Z]" ‘ Zwraca True.MojWynik = "F" Like "[!A-Z]" ‘ Zwraca False.MojWynik = "a2a" Like "a#a" ‘ Zwraca True.MojWynik = "aM5b" Like "a[L-P]#[!c-e]" ‘ Zwraca True.MojWynik = "BAT123khg" Like "B?T*" ‘ Zwraca True.MojWynik = "CAT123khg" Like "B?T*" ‘ Zwraca False.

Znaki kluczowe w łańcuchu wzorcowym:? - dowolny pojedynczy znak,* - zero lub więcej znaków,# - dowolna pojedyncza cyfra (0–9),[Lista] - dowolna pojedyncza litera z <Lista>,[!Lista] - dowolna pojedyncza litera z poza <Lista>,! - negacja listy liter.

Dim MojWynikMojWynik = "aBBBa" Like "a*a" ‘ Zwraca True.MojWynik = "F" Like "[A-Z]" ‘ Zwraca True.MojWynik = "F" Like "[!A-Z]" ‘ Zwraca False.MojWynik = "a2a" Like "a#a" ‘ Zwraca True.MojWynik = "aM5b" Like "a[L-P]#[!c-e]" ‘ Zwraca True.MojWynik = "BAT123khg" Like "B?T*" ‘ Zwraca True.MojWynik = "CAT123khg" Like "B?T*" ‘ Zwraca False.

Znaki kluczowe w łańcuchu wzorcowym:? - dowolny pojedynczy znak,* - zero lub więcej znaków,# - dowolna pojedyncza cyfra (0–9),[Lista] - dowolna pojedyncza litera z <Lista>,[!Lista] - dowolna pojedyncza litera z poza <Lista>,! - negacja listy liter.

Kod

Page 21: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 21

Operatory logiczne

Operator Operacja Przykład

Not Negacja Not(x > y)

And Koniunkcja x > y And a > b

Or Alternatywa x > y Or a > b

Xor Alternatywa wykluczająca x > y Xor a < b

Eqv Równoważność x > y Eqv a > b

Imp Implikacja x > y Imp a > b

Page 22: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 22

Operacje logiczne (Not, And)

Zastosowanie operatora: „Not”Dim Test1, A, B, C, D

A = 10 : B = 8 : C = 6 : D = Null ' Przypisanie.Test1 = Not(A > B) ' Zwraca False. Test1 = Not(B > A) ' Zwraca True. Test1 = Not(C > D) ' Zwraca Null. Test1 = Not A ' Zwraca -11 (negacja bitów).

Zastosowanie operatora: „And”Dim Test2, A, B, C, D

A = 10 : B = 8 : C = 6 : D = Null ' Przypisanie.Test2 = A > B And B > C ' Zwraca True. Test2 = B > A And B > C ' Zwraca False. Test2 = A > B And B > D ' Zwraca Null.Test2 = A And B ' Zwraca 8 (mnożenie bitów).

Zastosowanie operatora: „Not”Dim Test1, A, B, C, D

A = 10 : B = 8 : C = 6 : D = Null ' Przypisanie.Test1 = Not(A > B) ' Zwraca False. Test1 = Not(B > A) ' Zwraca True. Test1 = Not(C > D) ' Zwraca Null. Test1 = Not A ' Zwraca -11 (negacja bitów).

Zastosowanie operatora: „And”Dim Test2, A, B, C, D

A = 10 : B = 8 : C = 6 : D = Null ' Przypisanie.Test2 = A > B And B > C ' Zwraca True. Test2 = B > A And B > C ' Zwraca False. Test2 = A > B And B > D ' Zwraca Null.Test2 = A And B ' Zwraca 8 (mnożenie bitów).

Kod

Kod

Page 23: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 23

Operacje logiczne (Or, Xor)

Zastosowanie operatora: „Or”Dim Test3, A, B, C, D

A = 10 : B = 8 : C = 6 : D = Null ‘ Przypisanie.Test3 = A > B Or B > C ' Zwraca True. Test3 = A > B Or B > D ' Zwraca True.Test3 = B > D Or B > A ' Zwraca Null. Test3 = A Or B ' Zwraca 10 (sumowanie bitów).

Zastosowanie operatora: „Xor”Dim Test4, A, B, C, D

A = 10 : B = 8 : C = 6 : D = Null ' Przypisanie. Test4 = A > B Xor B > C ' Zwraca False. Test4 = B > A Xor B > C ' Zwraca True. Test4 = B > A Xor C > B ' Zwraca False.Test4 = B > D Xor A > B ' Zwraca Null. Test4 = A Xor B ' Zwraca 2 (wykluczanie pary bitów).

Zastosowanie operatora: „Or”Dim Test3, A, B, C, D

A = 10 : B = 8 : C = 6 : D = Null ‘ Przypisanie.Test3 = A > B Or B > C ' Zwraca True. Test3 = A > B Or B > D ' Zwraca True.Test3 = B > D Or B > A ' Zwraca Null. Test3 = A Or B ' Zwraca 10 (sumowanie bitów).

Zastosowanie operatora: „Xor”Dim Test4, A, B, C, D

A = 10 : B = 8 : C = 6 : D = Null ' Przypisanie. Test4 = A > B Xor B > C ' Zwraca False. Test4 = B > A Xor B > C ' Zwraca True. Test4 = B > A Xor C > B ' Zwraca False.Test4 = B > D Xor A > B ' Zwraca Null. Test4 = A Xor B ' Zwraca 2 (wykluczanie pary bitów).

Kod

Kod

Page 24: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 24

Operacje logiczne (Eqv, Imp)

Zastosowanie operatora: „Eqv”Dim Test5, A, B, C, D

A = 10 : B = 8 : C = 6 : D = Null ' Przypisanie. Test5 = A > B Eqv B > C ' Zwraca True. Test5 = B > A Eqv B > C ' Zwraca False. Test5 = A > B Eqv B > D ' Zwraca Null.Test5 = A Eqv B ' Zwraca -3 (porównanie bitów).

Zastosowanie operatora: „Imp”Dim Test6, A, B, C, D

A = 10 : B = 8 : C = 6 : D = Null ' Przypisanie.Test6 = A > B Imp B > C ' Zwraca True. Test6 = A > B Imp C > B ' Zwraca False. Test6 = B > A Imp C > B ' Zwraca True. Test6 = B > A Imp C > D ' Zwraca True. Test6 = C > D Imp B > A ' Zwraca Null. Test6 = B Imp A ' Zwraca -1 (włączanie bitów).

Zastosowanie operatora: „Eqv”Dim Test5, A, B, C, D

A = 10 : B = 8 : C = 6 : D = Null ' Przypisanie. Test5 = A > B Eqv B > C ' Zwraca True. Test5 = B > A Eqv B > C ' Zwraca False. Test5 = A > B Eqv B > D ' Zwraca Null.Test5 = A Eqv B ' Zwraca -3 (porównanie bitów).

Zastosowanie operatora: „Imp”Dim Test6, A, B, C, D

A = 10 : B = 8 : C = 6 : D = Null ' Przypisanie.Test6 = A > B Imp B > C ' Zwraca True. Test6 = A > B Imp C > B ' Zwraca False. Test6 = B > A Imp C > B ' Zwraca True. Test6 = B > A Imp C > D ' Zwraca True. Test6 = C > D Imp B > A ' Zwraca Null. Test6 = B Imp A ' Zwraca -1 (włączanie bitów).

Kod

Kod

Page 25: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 25

Deklaracja tablic

Option Base {0 | 1} Początek modułu. Ograniczenie indeksów tablicy od dołu. Domyślna wartość „0”.

Tablice statyczneDim NazwaTablicy(n) As TypDanychDim NazwaTablicy(n,m,p,...) As TypDanychDim NazwaTablicy(n1 To n2,m1 To m2,p1 To p2, ...) As TypDanych

Tablice dynamiczneDim nazwatablicy() As TypDanych

Do 60 wymiarów

Option Base 1Dim miesiace(11) As StringPublic wyniki(10, 10, 2) As ByteStatic dane(1 To 5, 6 To 10) As DoublePrivate wartosci() ‘Tablica dynamiczna zmiennych Variant

Kod

Page 26: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 26

Redeklaracja tablic dynamicznych (ReDim)

Cel stosowania - ponowny przydział pamięci dla zmiennych reprezentujących tablice dynamiczne (w procedurze).

ReDim [Preserve] nazwa_zmiennej (indeksy) [As typ][, nazwa_zmiennej (indeksy) [As typ]] . . .

Preserve Element nieobowiązkowy. Słowo kluczowe powodujące zachowanie danych istniejącej tablicy w przypadku zmiany jej ostatniego rozmiaru.

nazwa_zmiennej Element obowiązkowy. Nazwa tablicy.

indeksy Element nieobowiązkowy. Wymiary zmiennej tablicowej. Można zadeklarować do 60 wymiarów.Składnia: [indeks_dolny To] indeks_górny [ ,

[indeks_dolny To] indeks_górny] . . .typ Element nieobowiązkowy. Typ danych zmiennej tablicowej.

Możliwość zmiany tylko do dołu od typu Variant.

Page 27: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 27

Redeklaracja tablic dynamicznych c.d.

Przykład:Option Base 1Dim Tab() As Integer 'Deklaracja tablicy dynamicznej.ReDim Tab(3, 2) ‘Określenie rozmiaru tablicy.ReDim Tab(3, 4) ‘Zmiana rozmiaru tablicy.

... program wypełniający tablicę ...ReDim Preserve Tab(3, 5) ‘Zmiana rozmiaru z

‘zachowaniem wcześniej wprowadzonych danych.

Przykład:Option Base 1Dim Tab() As Integer 'Deklaracja tablicy dynamicznej.ReDim Tab(3, 2) ‘Określenie rozmiaru tablicy.ReDim Tab(3, 4) ‘Zmiana rozmiaru tablicy.

... program wypełniający tablicę ...ReDim Preserve Tab(3, 5) ‘Zmiana rozmiaru z

‘zachowaniem wcześniej wprowadzonych danych.

11 12 13 14

21 22 23 24

31 32 33 34

Tab Tab Tab TabTab Tab Tab TabTab Tab Tab Tab

⎡ ⎤⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦

11 12 13 14 15

21 22 23 24 25

31 32 33 34 35

Tab Tab Tab Tab TabTab Tab Tab Tab TabTab Tab Tab Tab Tab

⎡ ⎤⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦

Nowe elementy tablicy (macierzy)

Nienaruszona część tablicy (macierzy)

Kod

Page 28: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 28

Odczyt indeksów tablicy

Odczyt dolnego indeksu tablicy:LBound(NazwaTablicy[, NumerWymiaru])

Odczyt górnego indeksu tablicy:UBound(NazwaTablicy[, NumerWymiaru])

Option Base 1Dim Dolna, GornaDim Matrix(1 To 10, 5 To 15, 10 To 20) Dim InnyMatrix(10) As Double

Dolna = LBound(Matrix, 1) ' Zwraca 1. Dolna = LBound(Matrix, 3) ' Zwraca 10. Dolna = LBound(InnyMatrix) ' Zwraca 1.Gorna = UBound(Matrix, 1) ' Zwraca 10. Gorna = UBound(Matrix, 3) ' Zwraca 20. Gorna = UBound(InnyMatrix) ' Zwraca 10.

Odczyt dolnego indeksu tablicy:LBound(NazwaTablicy[, NumerWymiaru])

Odczyt górnego indeksu tablicy:UBound(NazwaTablicy[, NumerWymiaru])

Option Base 1Dim Dolna, GornaDim Matrix(1 To 10, 5 To 15, 10 To 20) Dim InnyMatrix(10) As Double

Dolna = LBound(Matrix, 1) ' Zwraca 1. Dolna = LBound(Matrix, 3) ' Zwraca 10. Dolna = LBound(InnyMatrix) ' Zwraca 1.Gorna = UBound(Matrix, 1) ' Zwraca 10. Gorna = UBound(Matrix, 3) ' Zwraca 20. Gorna = UBound(InnyMatrix) ' Zwraca 10.

Kod

Page 29: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 29

Dialogowe okna komunikacyjne

Okno informacyjne - funkcja „MsgBox()”MsgBox(strKomunikat[, intPrzyciski] [, strNaglowek]

[, strZbiorPomocy, intNumerKontekstu])strKomunikat Wymagany. Łańcuch do 1024 znaków. Przechodzenie do

nowej linii Chr(13).Wprowadzenie pustej linii Chr(10).

intPrzyciski Nie wymagany. Suma wartości określających wyświetlane przyciski, typ wyświetlanej ikony, przycisk domyślny, modalność okna. Wartość domyślna wynosi „0”.

strNagłowek Nie wymagany. Łańcuch określający nazwę okna informacyjnego. Domyślnie jest to nazwa aplikacji.

strZbiorPomocy Nie wymagany. Łańcuch określający nazwę zbioru z pomocąpodręczną. Wymagany, gdy został określony intNumerKontekstu.

intNumerKontekstu Nie wymagany. Numer kontekstu pomocy podręcznej. Wymagany, gdy został wprowadzony strZbiorPomocy.

Page 30: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 30

Dialogowe okna komunikacyjne c.d.

Okno informacyjnePrzyciski wyświetlane w oknie informacyjnym:

Nazwa stałej Wartość Przyciski Polska wersjavbOKOnly 0 OK OK

OK, Anuluj

Przerwij, Ponów próbę, ZignorujTak, Nie, Anuluj

Tak, Nie

Ponów próbę, Anuluj

Pomoc

vbOKCancel 1 OK, Cancel

vbAbortRetryIgnore 2 Abort, Retry, Ignore

vbYesNoCancel 3 Yes, No, Cancel

vbYesNo 4 Yes, No

vbRetryCancel 5 Retry, Cancel

vbMsgBoxHelpButton 16384 Help

Page 31: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 31

Dialogowe okna komunikacyjne c.d.

Okno informacyjneNazwa stałej Wartość Opis

Ikony wyświetlane w oknie komunikatu:vbCritical 16 Wyświetla ikonę zdarzenia krytycznego.

vbDefaultButton3 512 Trzeci przycisk jako domyślny.

324864

0

256

768

vbQuestion Wyświetla ikonę zapytania.vbExclamation Wyświetla ikonę wiadomości ostrzegawczej.vbInformation Wyświetla ikonę informacyjną.

Domyślne przyciski wyświetlane w oknie komunikatu:

vbDefaultButton1 Pierwszy przycisk jako domyślny.

vbDefaultButton2 Drugi przycisk jako domyślny.

vbDefaultButton4 Czwarty przycisk jako domyślny.

Page 32: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 32

Dialogowe okna komunikacyjne c.d.

Okno informacyjneNazwa stałej Wartość Opis

Modalność okna komunikatu:

vbApplicationModal 0 Okno modalne w aplikacji; działanie bieżącej aplikacji zostanie wstrzymane, dopóki użytkownik nie odpowie na wyświetlony komunikat.

vbSystemModal 4096 Okno modalne w systemie; działanie wszystkich aplikacji zostanie wstrzymane, dopóki użytkownik nie odpowie na wyświetlony komunikat.

Inne funkcje dotyczące wyświetlania okna i tekstu w oknie:

vbMsgBoxSetForeground 65536 Okno informacyjne na pierwszy plan.vbMsgBoxRight 524288 Polecenie dosunięcia tekstu do prawej strony.vbMsgBoxRtlReading 1048576 Odwrotne wprowadzanie tekstu do okna.

Page 33: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 33

Dialogowe okna komunikacyjne c.d.

Okno informacyjneWartości zwracane przez funkcję MsgBox():

Nazwa stałej Wartość OpisvbOK 1 Użytkownik wcisnął przycisk OK.

vbCancel 2 Użytkownik wcisnął przycisk Cancel (Anuluj).

vbAbort 3 Użytkownik wcisnął przycisk Abort (Przerwij).

vbRetry 4 Użytkownik wcisnął przycisk Retry (Ponów próbę).

vbIgnore 5 Użytkownik wcisnął przycisk Ignore (Zignoruj).

vbYes 6 Użytkownik wcisnął przycisk Yes (Tak).

vbNo 7 Użytkownik wcisnął przycisk No (Nie).

Page 34: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 34

Dialogowe okna komunikacyjne c.d.

Okno informacyjnePrzykłady:Dim Info

MsgBox "Zostały wykonane niezbędne obliczenia."

Info = MsgBox("Początkowy tekst informacyjny."& _ Chr(13) & "Przechodzę do nowej linii.", _ vbDefaultButton2 + vbInformation + vbYesNoCancel + _vbMsgBoxHelpButton, "Nazwa próbnego okna")

Okno informacyjnePrzykłady:Dim Info

MsgBox "Zostały wykonane niezbędne obliczenia."

Info = MsgBox("Początkowy tekst informacyjny."& _ Chr(13) & "Przechodzę do nowej linii.", _ vbDefaultButton2 + vbInformation + vbYesNoCancel + _vbMsgBoxHelpButton, "Nazwa próbnego okna")

Kod

P

P1

Page 35: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 35

Dialogowe okna komunikacyjne c.d.

Okno informacyjne

Przykład - decyzyjne zamknięcie okna informacyjnego:Dim Msg, Style, Title, Help, Ctxt, Resp, MyStr

Msg = "Czy chcesz kontynuować ?"Style = vbYesNo + vbCritical + vbDefaultButton2 Title = "Prezentacja okna"Help = "DEMO.HLP"Ctxt = 1000

Resp = MsgBox(Msg, Style, Title, Help, Ctxt)If Resp = vbYes Then

MyStr = "Tak" Else

MyStr = "Nie" End If

MsgBox MyStr

Okno informacyjne

Przykład - decyzyjne zamknięcie okna informacyjnego:Dim Msg, Style, Title, Help, Ctxt, Resp, MyStr

Msg = "Czy chcesz kontynuować ?"Style = vbYesNo + vbCritical + vbDefaultButton2 Title = "Prezentacja okna"Help = "DEMO.HLP"Ctxt = 1000

Resp = MsgBox(Msg, Style, Title, Help, Ctxt)If Resp = vbYes Then

MyStr = "Tak" Else

MyStr = "Nie" End If

MsgBox MyStr

Kod

P

Page 36: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 36

Dialogowe okna komunikacyjne c.d.

Okno wprowadzania danych – funkcja „InputBox()”strZmienna = InputBox( strPytanie [, strTytul] [,strDomyslne]

[,intXpoz] [,intYpoz] [, strPomoc, intKontekst])strPytanie Argument obowiązkowy typu String określający komunikat

umieszczany w oknie.strTytul Parametr opcjonalny typu String określający tytuł okna komunikatu.strDomyslne Parametr opcjonalny typu String określający domyślną wartość

wyświetlaną w polu tekstowym okna. intXpoz Parametr opcjonalny typu Integer określający pozycję okna , w

twipsach, w formularzu od lewego brzegu okna.intYpoz Parametr opcjonalny typu Integer określający pozycję okienka, w

twipsach, w formularzu od górnego brzegu okna.

strPomoc Parametr opcjonalny typu String określający zbiór pomocy.

intKontekst Parametr opcjonalny typu Integer określający kontekst pomocy.

Page 37: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 37

Dialogowe okna komunikacyjne c.d.

Okno wprowadzania danychWartości zwracane przez funkcję „InputBox()”:

Akcja OpisWybór przycisku „OK” Zwracana jest wartość typu String wpisana przez

użytkownika do pola tekstowego lub zaakceptowana wartość domyślna.

Wybór przycisku „Anuluj” Zwracana jest wartość typu String w postaci pustego łańcucha ””.

Przykład:Dim a, b, c As Integera = InputBox("Podaj liczbę a: ")b = InputBox("Podaj liczbę b: ")c = a - (-b)

MsgBox "Suma podanych liczb: " & c

Kod

P

Page 38: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 38

Dialogowe okna komunikacyjne c.d.

Okno wprowadzania danychPrzykłady:Dim Message, Title, Def, War

Message = "Wprowadź wartość między 1 a 3" 'Komunikat.Title = "Wprowadzanie danych" 'Nazwa okna.Def = "1" ' Wartość bieżąca.

War = InputBox(Message, Title, Def)'Zastosowanie pomocy. Pojawienie się przycisku Pomoc.

War = InputBox(Message, Title, Def, , ,"DEMO.HLP", 10)‘Wyświetlenie okna w pozycji 100, 100.

War = InputBox(Message, Title, Def, 100, 100)

Okno wprowadzania danychPrzykłady:Dim Message, Title, Def, War

Message = "Wprowadź wartość między 1 a 3" 'Komunikat.Title = "Wprowadzanie danych" 'Nazwa okna.Def = "1" ' Wartość bieżąca.

War = InputBox(Message, Title, Def)'Zastosowanie pomocy. Pojawienie się przycisku Pomoc.

War = InputBox(Message, Title, Def, , ,"DEMO.HLP", 10)‘Wyświetlenie okna w pozycji 100, 100.

War = InputBox(Message, Title, Def, 100, 100)

Kod

P

Page 39: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 39

Funkcje i podprogramy (procedury)

Typy procedur:1. Podprogram – deklarowana za pomocą słowa kluczowego Sub.

Może być uruchamiana samodzielnie. Można z jej wnętrza uruchamiać inne procedury.

2. Funkcja – deklarowana za pomocą słowa kluczowego Function. Zwraca wartość do procedury przez którą została wywołana.

3. Procedura zdarzenia – deklarowana za pomocą słowa kluczowego Event. Uruchamiana najczęściej poprzez inicjowanie zdarzenia pochodzącego z obiektu wizualnego – formularza.

4. Procedura właściwości – deklarowana za pomocą słowa kluczowego Property. Stosowana przy odczytywaniu lub modyfikowaniu wartości właściwości.

5. Makro – podprogram bez parametrów najczęściej uruchamiany bezpośrednio z aplikacji. Można go wywołać z parametrami z poziomu innej procedury.

Typy procedur:1. Podprogram – deklarowana za pomocą słowa kluczowego Sub.

Może być uruchamiana samodzielnie. Można z jej wnętrza uruchamiać inne procedury.

2. Funkcja – deklarowana za pomocą słowa kluczowego Function. Zwraca wartość do procedury przez którą została wywołana.

3. Procedura zdarzenia – deklarowana za pomocą słowa kluczowego Event. Uruchamiana najczęściej poprzez inicjowanie zdarzenia pochodzącego z obiektu wizualnego – formularza.

4. Procedura właściwości – deklarowana za pomocą słowa kluczowego Property. Stosowana przy odczytywaniu lub modyfikowaniu wartości właściwości.

5. Makro – podprogram bez parametrów najczęściej uruchamiany bezpośrednio z aplikacji. Można go wywołać z parametrami z poziomu innej procedury.

Page 40: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 40

Deklaracja funkcji

Deklaracja i składnia funkcji:

[Public | Private] [Static] Function Nazwa [(ListaArgumentów)] [As TypZwracany][instrukcje][Nazwa = wyrażenie][Exit Function]

[instrukcje][Nazwa = wyrażenie]

End Function

Deklaracja i składnia funkcji:

[Public | Private] [Static] Function Nazwa [(ListaArgumentów)] [As TypZwracany][instrukcje][Nazwa = wyrażenie][Exit Function]

[instrukcje][Nazwa = wyrażenie]

End Function

Przestrzeńładunkowa funkcji

(wnętrze)

Deklaracja zasięgu działania funkcji

Miejsce wprowadzania danych do funkcji

Page 41: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 41

Składnia listy argumentów funkcji

[Optional] [ByVal | ByRef] [ParamArray] NazwaZmiennej [( )] [As Typ] [= WarDomyślna]

Optional Element nieobowiązkowy. Wskazuje, że argument nie jest wymagany.

ByVal Element nieobowiązkowy. Wskazuje, że argument przekazywany jest przez wartość podaną w trakcie wywołania funkcji.

ByRef Element nieobowiązkowy. Wskazuje, że argument przekazywany jest przez odwołanie do ostatnio przypisanej wartości. W języku Visual Basic ByRef jest ustawieniem domyślnym.

ParamArray Element nieobowiązkowy. Stosowany tylko jako ostatni argument na liście argumentów. Wskazuje, że ostatnim argumentem jest opcjonalna tablica z elementami typu Variant.

NazwaZmiennej Element obowiązkowy. Nazwa różna od wbudowanych.

WarDomyślna Element nieobowiązkowy. Stała lub konkretna wartość.Typ Element nieobowiązkowy. Dowolny typ danych.

Page 42: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 42

Funkcje – przykłady deklaracji

Function Pierwiastek(Argument As Double) _

As Double If Argument < 0 Then 'Sprawdzanie argumentu.

MsgBox "Podaj dodatnią wartość." Exit Function 'Wyjście z funkcji.

ElsePierwiastek = Sqr(Argument)

'Zwraca wartość.End If

End Function

Function Pierwiastek(Argument As Double) _

As Double If Argument < 0 Then 'Sprawdzanie argumentu.

MsgBox "Podaj dodatnią wartość." Exit Function 'Wyjście z funkcji.

ElsePierwiastek = Sqr(Argument)

'Zwraca wartość.End If

End Function

Kod

P

Page 43: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 43

Funkcje – przykłady deklaracji i wywołań

Function Obliczenia(ByVal Arg1 As Integer, _ParamArray ArgN())

Dim Wartosc‘Wywołanie funkcji jak poniżej:

Wartosc = Obliczenia(4, 3 ,2 ,1) ‘ Lokalne zmienne otrzymały wartości:‘ Arg1 = 4, ‘ ArgN(0) = 3, ArgN(1) = 2, ArgN(2) = 1

Function Obliczenia(ByVal Arg1 As Integer, _ParamArray ArgN())

Dim Wartosc‘Wywołanie funkcji jak poniżej:

Wartosc = Obliczenia(4, 3 ,2 ,1) ‘ Lokalne zmienne otrzymały wartości:‘ Arg1 = 4, ‘ ArgN(0) = 3, ArgN(1) = 2, ArgN(2) = 1

KodDeklaracja funkcji

Wywołanie funkcji poprzez przypisanie

Page 44: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 44

Funkcje – przykłady deklaracji i wywołań c.d.

Public Function Srednia(ByVal Arg1 As _Integer, ParamArray ArgN())

Dim i As IntegerSrednia = 0

For i = 0 To Arg1 - 1Srednia = Srednia + ArgN(i)

Next iSrednia = Srednia / Arg1

End FunctionSub Wykonaj()

MsgBox Srednia(6, 2, 4, 3, 6, 7, 8)End Sub

Public Function Srednia(ByVal Arg1 As _Integer, ParamArray ArgN())

Dim i As IntegerSrednia = 0

For i = 0 To Arg1 - 1Srednia = Srednia + ArgN(i)

Next iSrednia = Srednia / Arg1

End FunctionSub Wykonaj()

MsgBox Srednia(6, 2, 4, 3, 6, 7, 8)End Sub

Kod

P

Page 45: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 45

Funkcje – przykłady deklaracji i wywołań c.d.

Function Funkcja(MyStr As String, Optional _Arg1 As Integer = 5, Optional Arg2 _= "Zofia")

Dim RetVal‘Funkcja może być wywołana następująco:

RetVal = Funkcja("Cześć", 2, "Słowo") ‘Wszystkie trzy argumenty dostarczone.

RetVal = Funkcja("Test", , 5) ‘Ominięty drugi argument.

RetVal = Funkcja(MyStr:="Cześć", Arg1:=7)‘Pierwszy i drugi argument wywołany‘według nazwy.

Function Funkcja(MyStr As String, Optional _Arg1 As Integer = 5, Optional Arg2 _= "Zofia")

Dim RetVal‘Funkcja może być wywołana następująco:

RetVal = Funkcja("Cześć", 2, "Słowo") ‘Wszystkie trzy argumenty dostarczone.

RetVal = Funkcja("Test", , 5) ‘Ominięty drugi argument.

RetVal = Funkcja(MyStr:="Cześć", Arg1:=7)‘Pierwszy i drugi argument wywołany‘według nazwy.

Kod

Deklaracja funkcji

Wywołanie funkcji poprzez przypisanie

Page 46: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 46

Deklaracja procedury

Deklaracja i składnia procedury:

[Public | Private | Friend] [Static] Sub Nazwa [(ListaArgumentów)][instrukcje][Nazwa = wyrażenie][Exit Sub]

[instrukcje][Nazwa = wyrażenie]

End Sub

Deklaracja i składnia procedury:

[Public | Private | Friend] [Static] Sub Nazwa [(ListaArgumentów)][instrukcje][Nazwa = wyrażenie][Exit Sub]

[instrukcje][Nazwa = wyrażenie]

End Sub

Przestrzeń ładunkowa procedury (wnętrze)

Deklaracja zasięgu działania procedury

Miejsce wprowadzania danych do procedury

Friend – deklaracja podobna do słowa kluczowego Public; stosowana wyłącznie w module klasy; procedura widoczna w całym projekcie, poza kontrolerem obiektów.

Page 47: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 47

Składnia listy argumentów procedury

[Optional] [ByVal | ByRef] [ParamArray] NazwaZmiennej [( )] [As Typ] [= WarDomyślna]

Optional Element nieobowiązkowy. Wskazuje, że argument nie jest wymagany.

ByVal Element nieobowiązkowy. Wskazuje, że argument przekazywany jest przez wartość podaną w trakcie wywołania procedury.

ByRef Element nieobowiązkowy. Wskazuje, że argument przekazywany jest przez odwołanie do ostatnio przypisanej wartości. W języku Visual Basic ByRef jest ustawieniem domyślnym.

ParamArray Element nieobowiązkowy. Stosowany tylko jako ostatni argument na liście argumentów. Wskazuje, że ostatnim argumentem jest opcjonalna tablica z elementami typu Variant.

NazwaZmiennej Element obowiązkowy. Nazwa różna od wbudowanych.

WarDomyślna Element nieobowiązkowy. Stała lub konkretna wartość.Typ Element nieobowiązkowy. Dowolny typ danych.

Page 48: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 48

Procedura – przykład deklaracji

Sub ObliczPole(Dlugosc, Szerokosc, Okno) 'Deklaracja zmiennej lokalnej

Dim Pole As Double. If Dlugosc = 0 Or Szerokosc = 0 Then

'Jeżeli któryś z argumentów jest równy 0,Exit Sub 'opuść natychmiast procedurę.

End If'Oblicz pole prostokąta.

Pole = Dlugosc * Szerokosc'Wypisz wartość Pole w oknie MsgBox.

If Okno = True Then MsgBox PoleEnd Sub

Sub ObliczPole(Dlugosc, Szerokosc, Okno) 'Deklaracja zmiennej lokalnej

Dim Pole As Double. If Dlugosc = 0 Or Szerokosc = 0 Then

'Jeżeli któryś z argumentów jest równy 0,Exit Sub 'opuść natychmiast procedurę.

End If'Oblicz pole prostokąta.

Pole = Dlugosc * Szerokosc'Wypisz wartość Pole w oknie MsgBox.

If Okno = True Then MsgBox PoleEnd Sub

Kod

P

Page 49: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 49

Procedura – przykłady wywołań

Private Sub PodajParametry()

Dim x As Single, y As Single, z As Booleanx = 10: y = 30: z = True

Call ObliczPole(x, y, z)End Sub

Public Sub PodajParametry()Dim x As Single, y As Single, z As Boolean

x = 10: y = 60: z = TrueObliczPole Dlugosc:=x, Szerokosc:= y, Okno:=z

End Sub

Private Sub PodajParametry()

Dim x As Single, y As Single, z As Booleanx = 10: y = 30: z = True

Call ObliczPole(x, y, z)End Sub

Public Sub PodajParametry()Dim x As Single, y As Single, z As Boolean

x = 10: y = 60: z = TrueObliczPole Dlugosc:=x, Szerokosc:= y, Okno:=z

End Sub

Kod

P

P1

Page 50: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 50

Wbudowane instrukcje, funkcje i metody

Zestawy instrukcji, funkcji i metod można podzielić na:1. Formatujące dane (np. Format – formatowanie danych według

zadanego wzorca; możliwość tworzenia własnego wzorca).2. Konwertujące typy danych (możliwość kontrolowania typów

danych i tworzenia przejrzystego oraz czytelnego kodu).3. Manipulujące łańcuchami znaków (obcinanie, wydzielanie

fragmentów, filtrowanie łańcuchów znaków).4. Manipulujące datami i godzinami (wyodrębnianie składników,

wykonywanie operacji matematycznych).5. Umożliwiające komunikację z użytkownikiem (Funkcje MsgBox

oraz InputBox – wizualny sposób wyświetlania komunikatów oraz pobierania danych od użytkownika).

6. Matematyczne, finansowe i logiczne.7. Wykonujące operacje wejścia oraz wyjścia.

Zestawy instrukcji, funkcji i metod można podzielić na:1. Formatujące dane (np. Format – formatowanie danych według

zadanego wzorca; możliwość tworzenia własnego wzorca).2. Konwertujące typy danych (możliwość kontrolowania typów

danych i tworzenia przejrzystego oraz czytelnego kodu).3. Manipulujące łańcuchami znaków (obcinanie, wydzielanie

fragmentów, filtrowanie łańcuchów znaków).4. Manipulujące datami i godzinami (wyodrębnianie składników,

wykonywanie operacji matematycznych).5. Umożliwiające komunikację z użytkownikiem (Funkcje MsgBox

oraz InputBox – wizualny sposób wyświetlania komunikatów oraz pobierania danych od użytkownika).

6. Matematyczne, finansowe i logiczne.7. Wykonujące operacje wejścia oraz wyjścia.

Page 51: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 51

Składnia instrukcji warunkowej (If)

Instrukcja warunkowa: If ... Then ... Else ... End If1. If warunek Then [instrukcje] Przykład:

If d > 200 Then c = d + 2

2. If warunek Then instrukcje Else instrukcjePrzykład:

If d > 200 Then c = d + 2 Else c = d - 62 3. If warunek1 Then

instrukcje[ElseIf warunek2 Then

instrukcje][Else

instrukcje]End If

Instrukcja warunkowa: If ... Then ... Else ... End If1. If warunek Then [instrukcje] Przykład:

If d > 200 Then c = d + 2

2. If warunek Then instrukcje Else instrukcjePrzykład:

If d > 200 Then c = d + 2 Else c = d - 62 3. If warunek1 Then

instrukcje[ElseIf warunek2 Then

instrukcje][Else

instrukcje]End If

Kod

Kod

Page 52: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 52

Składnia instrukcji warunkowej (If) c.d.

Przykład:

Private Sub Warunek(Num As Long, _

Optional Cyfry As Long)If Num < 10 Then ‘Pierwszy warunek

Cyfry = 1ElseIf Num < 100 Then ‘Drugi warunek

Cyfry = 2Else ‘Pozostałe przypadki

Cyfry = 3End If

MsgBox "Jest to wartość " &Cyfry& " cyfrowa."End Sub

Przykład:

Private Sub Warunek(Num As Long, _

Optional Cyfry As Long)If Num < 10 Then ‘Pierwszy warunek

Cyfry = 1ElseIf Num < 100 Then ‘Drugi warunek

Cyfry = 2Else ‘Pozostałe przypadki

Cyfry = 3End If

MsgBox "Jest to wartość " &Cyfry& " cyfrowa."End Sub

Kod

P

Page 53: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 53

Instrukcja warunkowa (Select Case)

Instrukcja: Select Case ... End SelectSkładnia:

Select Case WyrażenieTest[Case lista_wyrażeń_n

[instrukcje_n]] ...[Case Else

[instrukcje_else]]End Select

Przykład:Select Case NumCase 1 To 5MsgBox "Przedział od 1 do 5"Case 6, 7, 8MsgBox "Przedział od 6 do 8"Case 9 To 10MsgBox "Przedział od 9 do 10"Case Is > 10MsgBox "Wartość większa od 10."Case ElseMsgBox "Poza przedziałem" & _

" liczb dodatnich."End Select

Kod

P

Page 54: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 54

Instrukcja warunkowa (While)

Instrukcja warunkowa: While...Wend Wykonuje ciąg instrukcji, dopóki warunek posiada wartość True.

Składnia:While warunek

[instrukcje]WendPrzykład:Private Sub Iter(n,Licz As Long, Licz1 As Long)Dim Licz2 As LongWhile Licz < Licz1Licz = Licz + n: Licz2 = Licz2 + 1

WendMsgBox "Liczba iteracji wynosi: " & Licz2

End Sub

Instrukcja warunkowa: While...Wend Wykonuje ciąg instrukcji, dopóki warunek posiada wartość True.

Składnia:While warunek

[instrukcje]WendPrzykład:Private Sub Iter(n,Licz As Long, Licz1 As Long)Dim Licz2 As LongWhile Licz < Licz1Licz = Licz + n: Licz2 = Licz2 + 1

WendMsgBox "Liczba iteracji wynosi: " & Licz2

End Sub

Punkt zapętlenia (While end)

Warunkowy początek pętli

Kod

P

Page 55: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 55

Iteracyjna instrukcja (For)

Składnia:For licznik = poczatek To koniec [Step krok]

[instrukcje][Exit For]

[instrukcje]Next [licznik]Przykład:Dim Slowo, Znak, CiagFor Slowo = 10 To 1 Step -1 'Wykonaj 10 powtórzeń.

For Znak = 0 To 9 'Wykonaj 10 powtórzeń.Ciag = Ciag & Znak 'Dołącz cyfrę do ciągu.

Next Znak 'Zwiększ licznik.Ciag = Ciag & " " 'Dołącz znak spacji.

Next Slowo

Składnia:For licznik = poczatek To koniec [Step krok]

[instrukcje][Exit For]

[instrukcje]Next [licznik]Przykład:Dim Slowo, Znak, CiagFor Slowo = 10 To 1 Step -1 'Wykonaj 10 powtórzeń.

For Znak = 0 To 9 'Wykonaj 10 powtórzeń.Ciag = Ciag & Znak 'Dołącz cyfrę do ciągu.

Next Znak 'Zwiększ licznik.Ciag = Ciag & " " 'Dołącz znak spacji.

Next Slowo

Kod

- liczba iteracji1koniec poczatekkrok−

+

P

Page 56: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 56

Iteracyjna instrukcja (For) c.d.

Składnia:For Each element In grupa

[instrukcje][Exit For]

[instrukcje]Next [element]Przykład:Dim Istnieje, MojObiekt, MojaKolekcja

Istnieje = FalseFor Each MojObiekt In MojaKolekcja

If MojObiekt.Text = "Egzamin" ThenIstnieje = TrueExit For

End IfNext

Składnia:For Each element In grupa

[instrukcje][Exit For]

[instrukcje]Next [element]Przykład:Dim Istnieje, MojObiekt, MojaKolekcja

Istnieje = FalseFor Each MojObiekt In MojaKolekcja

If MojObiekt.Text = "Egzamin" ThenIstnieje = TrueExit For

End IfNext

Kod

Dynamiczne określenie liczby iteracji

Page 57: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 57

Instrukcja pętli logicznej (Do ... Loop)

Składnia:Do [{While | Until} warunek]

[instrukcje][Exit Do]

[instrukcje]Loop

Składnia alternatywna:

Do[instrukcje]

[Exit Do][instrukcje]

Loop [{While | Until} warunek]

Powtarza blok instrukcji tak długo, jak długo warunek posiada wartość True.

Powtarza blok instrukcji tak długo, jak długo warunek posiada wartość False.

Page 58: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 58

Instrukcja pętli logicznej (Do ... Loop) c.d.

Przykład:

Dim Flaga, LicznikFlaga = True: Licznik = 0Do 'Zewnętrzna pętla.Do While Licznik < 20 'Wewnętrzna pętla.

Licznik = Licznik + 1 'Zwiększaj licznik.If Licznik = 10 ThenFlaga = False

Exit Do 'Wyjdź z wewnętrznej pętli.End If

LoopLoop Until (Flaga = False)

‘Wyjdź z zewnętrznej pętli.

Przykład:

Dim Flaga, LicznikFlaga = True: Licznik = 0Do 'Zewnętrzna pętla.Do While Licznik < 20 'Wewnętrzna pętla.

Licznik = Licznik + 1 'Zwiększaj licznik.If Licznik = 10 ThenFlaga = False

Exit Do 'Wyjdź z wewnętrznej pętli.End If

LoopLoop Until (Flaga = False)

‘Wyjdź z zewnętrznej pętli.

Kod

P

Page 59: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 59

Instrukcja pętli logicznej (Do ... Loop) c.d.

Przykład (bez zastosowania słów kluczowych „While lub Until”):Public Sub TestDanych()Dim Odpowiedz As String

Odpowiedz = InputBox("Wpisz literę (A-E)")DoIf Odpowiedz = "" ThenOdpowiedz = InputBox("Nic nie wpisałeś. " & _

"Wpisz literę A, B, C, D lub E.")ElseIf Len(Odpowiedz) > 1 ThenOdpowiedz = InputBox("Wpisz tylko jedną literę.")ElseIf Odpowiedz < "A" Or Odpowiedz > "E" ThenOdpowiedz = InputBox("Nieprawidłowa litera. " & _

"Wpisz literę A, B, C, D lub E.")Else

MsgBox "Dziękuję. Dane zostały przyjęte"Exit Do

End IfLoop

End Sub

Przykład (bez zastosowania słów kluczowych „While lub Until”):Public Sub TestDanych()Dim Odpowiedz As String

Odpowiedz = InputBox("Wpisz literę (A-E)")DoIf Odpowiedz = "" ThenOdpowiedz = InputBox("Nic nie wpisałeś. " & _

"Wpisz literę A, B, C, D lub E.")ElseIf Len(Odpowiedz) > 1 ThenOdpowiedz = InputBox("Wpisz tylko jedną literę.")ElseIf Odpowiedz < "A" Or Odpowiedz > "E" ThenOdpowiedz = InputBox("Nieprawidłowa litera. " & _

"Wpisz literę A, B, C, D lub E.")Else

MsgBox "Dziękuję. Dane zostały przyjęte"Exit Do

End IfLoop

End Sub

Kod

P

Page 60: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 60

Instrukcja skoku do etykiety (GoTo)

Składnia:

Goto etykietaPodstawowe zasady w stosowaniu instrukcji GoTo:1. Wyrażenie będące etykietą musi występować jako pierwsze w

wierszu i nie może być poprzedzane znakami odstępów lub tabulacji.

2. Etykieta musi być zakończona dwukropkiem.3. Etykieta musi rozpoczynać się od litery, lecz w jej tekście mogą

występować cyfry - razem do 40 znaków nie licząc dwukropka.4. Dla zgodności ze starszymi wersjami języka dopuszczone jest

stosowanie jako etykiety numeru wiersza programu. W tym przypadku nie jest konieczne stawianie za etykietą dwukropka.

Składnia:

Goto etykietaPodstawowe zasady w stosowaniu instrukcji GoTo:1. Wyrażenie będące etykietą musi występować jako pierwsze w

wierszu i nie może być poprzedzane znakami odstępów lub tabulacji.

2. Etykieta musi być zakończona dwukropkiem.3. Etykieta musi rozpoczynać się od litery, lecz w jej tekście mogą

występować cyfry - razem do 40 znaków nie licząc dwukropka.4. Dla zgodności ze starszymi wersjami języka dopuszczone jest

stosowanie jako etykiety numeru wiersza programu. W tym przypadku nie jest konieczne stawianie za etykietą dwukropka.

Uwaga ! Częste stosowanie nie jest wskazane.

Page 61: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 61

Przykład zastosowania instrukcji (GoTo)

Przykład:Public Sub SkokDoEtykiety()Dim Wartosc

Wartosc = InputBox("Podaj liczbę specjalną.")If Wartosc = "" Then

MsgBox "Brak danych."Exit Sub

End IfSelect Case WartoscCase 2100

GoTo WartoscSpecjalnaCase Is < 1000

MsgBox "Wartość mniejsza niż 1000"Case Is >= 1000

MsgBox "Wartość większa lub równa 1000"End Select

Exit SubWartoscSpecjalna:

MsgBox "Podano wartość specjalną."End Sub

Przykład:Public Sub SkokDoEtykiety()Dim Wartosc

Wartosc = InputBox("Podaj liczbę specjalną.")If Wartosc = "" Then

MsgBox "Brak danych."Exit Sub

End IfSelect Case WartoscCase 2100

GoTo WartoscSpecjalnaCase Is < 1000

MsgBox "Wartość mniejsza niż 1000"Case Is >= 1000

MsgBox "Wartość większa lub równa 1000"End Select

Exit SubWartoscSpecjalna:

MsgBox "Podano wartość specjalną."End Sub

Kod

P

Page 62: Visual Basic dla Aplikacji - konto.bydgoszcz.wsinf.edu.plkonto.bydgoszcz.wsinf.edu.pl/~zbizak/Dokumenty/VBA... · –należy zwrócićuwagę, że VBA nie rozróżnia wielkich i małych

Kod VBA - PodstawyVisual Basic dla Aplikacji© Ζ.Ζ. 62

Przykład zastosowania instrukcji (GoTo) c.d.

Przykład:Sub GoToDemo(Numer) Dim MyStringIf Numer = 1 Then GoTo Line1 Else GoTo Line2

‘==== Początek sekcji etykiet ======Line1:

MyString = "Podałeś liczbę o wartości 1." GoTo Line3

Line2:MyString = "Podałeś liczbę o wartości 2."

Line3: MsgBox MyString

End Sub

Przykład:Sub GoToDemo(Numer) Dim MyStringIf Numer = 1 Then GoTo Line1 Else GoTo Line2

‘==== Początek sekcji etykiet ======Line1:

MyString = "Podałeś liczbę o wartości 1." GoTo Line3

Line2:MyString = "Podałeś liczbę o wartości 2."

Line3: MsgBox MyString

End Sub

Kod

P