VBA Podstawy cz I

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

1

Visual Basic dla Aplikacji

Visual Basic dla Aplikacji

Visual Basic dla Aplikacji

Kod Visual Basic - Podstawy

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

background image

Kod VBA - Podstawy

Visual 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

background image

Kod VBA - Podstawy

Visual 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).

background image

Kod VBA - Podstawy

Visual 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.

background image

Kod VBA - Podstawy

Visual 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ętli

x1 = x1 +1

If

x1 = x2 Then

Początek warunku

x1 = 5

‘ Podprogram warunku spełnionego

x2 = 10

Else

‘ W innym przypadku

x1 = x2

‘ Podprogram dla warunku

x3 = 20

‘ niespełnionego

End If

Loop

‘ 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ętli

x1 = x1 +1

If

x1 = x2 Then

Początek warunku

x1 = 5

‘ Podprogram warunku spełnionego

x2 = 10

Else

‘ W innym przypadku

x1 = x2

‘ Podprogram dla warunku

x3 = 20

‘ niespełnionego

End If

Loop

‘ Koniec pętli

Kod

background image

Kod VBA - Podstawy

Visual 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 zmiennych

x = 10

Przypisanie wartości zmiennej x

y = 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 zmiennych

x = 10

Przypisanie wartości zmiennej x

y = 20

Przypisanie wartośći zmiennej y

End Sub

Zakończenie kodu procedury

Kod

Kod

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

7

Typy danych

Typ

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-45

dla 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

background image

Kod VBA - Podstawy

Visual 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)

+/-79228162514264337593543950335

bez 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

background image

Kod VBA - Podstawy

Visual 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

65400

znakó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

background image

Kod VBA - Podstawy

Visual 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

Dynamiczna

Statyczna

Przykłady:

Dim

x1 As Integer, x2 As Integer

Dim

z2 As Double

Dim

tekst1 As string*56

Static

tekst2 As string

Kod

background image

Kod VBA - Podstawy

Visual 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 lokalna

Dim

Komunikat As String ‘Deklaracja lokalna

Public

Licznik As Long

‘Deklaracja
‘globalna

Static

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 lokalna

Dim

Komunikat As String ‘Deklaracja lokalna

Public

Licznik As Long

‘Deklaracja
‘globalna

Static

Numer As Integer ‘Deklaracja lokalna

Kod

background image

Kod VBA - Podstawy

Visual 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

background image

Kod VBA - Podstawy

Visual 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.

background image

Kod VBA - Podstawy

Visual 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 = True

Const

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 = True

Const

Poniedziałek = 1, Wtorek = 2

Kod

background image

Kod VBA - Podstawy

Visual 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

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

16

Definiowanie niestandardowego typu danych

[Private | Public] Type nazwa_typu

nazwa_elementu [([indeksy])] As typ

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

End Type
Public

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 To
indeks_górny]

typ

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

background image

Kod VBA - Podstawy

Visual 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, TypDanych

WszystkieDane = 3
WszystkieDane = ”Dobrze”
WszystkieDane = #1/10/1998 19:05:21#

‘ Zapytanie o typ bieżącej wartości

TypDanych = 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, TypDanych

WszystkieDane = 3
WszystkieDane = ”Dobrze”
WszystkieDane = #1/10/1998 19:05:21#

‘ Zapytanie o typ bieżącej wartości

TypDanych = TypeName(WszystkieDane) ‘ Date

Kod

background image

Kod VBA - Podstawy

Visual 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

background image

Kod VBA - Podstawy

Visual 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

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

20

Przykłady zastosowań operatora „Like”

Dim

MojWynik

MojWynik = "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

MojWynik

MojWynik = "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

background image

Kod VBA - Podstawy

Visual 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

background image

Kod VBA - Podstawy

Visual 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

background image

Kod VBA - Podstawy

Visual 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

background image

Kod VBA - Podstawy

Visual 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

background image

Kod VBA - Podstawy

Visual 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 statyczne

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

Tablice dynamiczne

Dim nazwatablicy() As TypDanych

Do 60 wymiarów

Option Base 1

Dim

miesiace(11) As String

Public

wyniki(10, 10, 2) As Byte

Static

dane(1 To 5, 6 To 10) As Double

Private

wartosci() ‘Tablica dynamiczna zmiennych Variant

Kod

background image

Kod VBA - Podstawy

Visual 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.

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

27

Redeklaracja tablic dynamicznych c.d.

Przykład:
Option Base 1

Dim

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 1

Dim

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

Tab

Tab

Tab

Tab

Tab

Tab

Tab

Tab

Tab

11

12

13

14

15

21

22

23

24

25

31

32

33

34

35

Tab

Tab

Tab

Tab

Tab

Tab

Tab

Tab

Tab

Tab

Tab

Tab

Tab

Tab

Tab

Nowe elementy tablicy (macierzy)

Nienaruszona część tablicy (macierzy)

Kod

background image

Kod VBA - Podstawy

Visual 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 1

Dim

Dolna, Gorna

Dim

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 1

Dim

Dolna, Gorna

Dim

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

background image

Kod VBA - Podstawy

Visual 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.

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

30

Dialogowe okna komunikacyjne c.d.

Okno informacyjne

Przyciski wyświetlane w oknie informacyjnym:

Nazwa stałej

Wartość

Przyciski

Polska wersja

vbOKOnly

0

OK

OK

OK, Anuluj

Przerwij, Ponów próbę,
Zignoruj
Tak, 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

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

31

Dialogowe okna komunikacyjne c.d.

Okno informacyjne

Nazwa stałej

Wartość

Opis

Ikony wyświetlane w oknie komunikatu:

vbCritical

16

Wyświetla ikonę zdarzenia krytycznego.

vbDefaultButton3

512

Trzeci przycisk jako domyślny.

32
48
64

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.

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

32

Dialogowe okna komunikacyjne c.d.

Okno informacyjne

Nazwa 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.

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

33

Dialogowe okna komunikacyjne c.d.

Okno informacyjne

Wartości zwracane przez funkcję MsgBox():

Nazwa stałej

Wartość

Opis

vbOK

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).

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

34

Dialogowe okna komunikacyjne c.d.

Okno informacyjne

Przykł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 informacyjne

Przykł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

background image

Kod VBA - Podstawy

Visual 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

background image

Kod VBA - Podstawy

Visual 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.

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

37

Dialogowe okna komunikacyjne c.d.

Okno wprowadzania danych

Wartości zwracane przez funkcję „InputBox()”:

Akcja

Opis

Wybó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 Integer

a = InputBox("Podaj liczbę a: ")
b = InputBox("Podaj liczbę b: ")
c = a - (-b)

MsgBox

"Suma podanych liczb: " & c

Kod

P

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

38

Dialogowe okna komunikacyjne c.d.

Okno wprowadzania danych

Przykł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 danych

Przykł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

background image

Kod VBA - Podstawy

Visual 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.

background image

Kod VBA - Podstawy

Visual 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

background image

Kod VBA - Podstawy

Visual 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.

background image

Kod VBA - Podstawy

Visual 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.

Else

Pierwiastek = 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.

Else

Pierwiastek = Sqr(Argument)

'Zwraca wartość.

End If

End Function

Kod

P

background image

Kod VBA - Podstawy

Visual 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

Kod

Deklaracja funkcji

Wywołanie funkcji poprzez przypisanie

background image

Kod VBA - Podstawy

Visual 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 Integer
Srednia = 0

For

i = 0 To Arg1 - 1

Srednia = Srednia + ArgN(i)

Next

i

Srednia = Srednia / Arg1

End Function

Sub

Wykonaj()

MsgBox

Srednia(6, 2, 4, 3, 6, 7, 8)

End Sub

Public Function

Srednia(ByVal Arg1 As _
Integer, ParamArray ArgN())

Dim

i As Integer
Srednia = 0

For

i = 0 To Arg1 - 1

Srednia = Srednia + ArgN(i)

Next

i

Srednia = Srednia / Arg1

End Function

Sub

Wykonaj()

MsgBox

Srednia(6, 2, 4, 3, 6, 7, 8)

End Sub

Kod

P

background image

Kod VBA - Podstawy

Visual 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

background image

Kod VBA - Podstawy

Visual 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.

background image

Kod VBA - Podstawy

Visual 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.

background image

Kod VBA - Podstawy

Visual 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 Pole

End 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 Pole

End Sub

Kod

P

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

49

Procedura – przykłady wywołań

Private Sub

PodajParametry()

Dim

x As Single, y As Single, z As Boolean

x = 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 = True

ObliczPole Dlugosc:=x, Szerokosc:= y, Okno:=z

End Sub

Private Sub

PodajParametry()

Dim

x As Single, y As Single, z As Boolean

x = 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 = True

ObliczPole Dlugosc:=x, Szerokosc:= y, Okno:=z

End Sub

Kod

P

P1

background image

Kod VBA - Podstawy

Visual 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.

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

51

Składnia instrukcji warunkowej (If)

Instrukcja warunkowa: If ... Then ... Else ... End If

1. If warunek Then [instrukcje]

Przykład:

If

d > 200 Then c = d + 2

2. If warunek Then instrukcje Else instrukcje

Przykł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 If

1. If warunek Then [instrukcje]

Przykład:

If

d > 200 Then c = d + 2

2. If warunek Then instrukcje Else instrukcje

Przykł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

background image

Kod VBA - Podstawy

Visual 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 = 1

ElseIf

Num < 100 Then

‘Drugi warunek

Cyfry = 2

Else

‘Pozostałe przypadki

Cyfry = 3

End 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 = 1

ElseIf

Num < 100 Then

‘Drugi warunek

Cyfry = 2

Else

‘Pozostałe przypadki

Cyfry = 3

End If

MsgBox

"Jest to wartość " &Cyfry& " cyfrowa."

End Sub

Kod

P

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

53

Instrukcja warunkowa (Select Case)

Instrukcja: Select Case ... End Select

Składnia:

Select Case WyrażenieTest

[Case lista_wyrażeń_n

[instrukcje_n]] ...

[Case Else

[instrukcje_else]]

End Select

Przykład:
Select Case

Num

Case

1 To 5

MsgBox "Przedział od 1 do 5"

Case

6, 7, 8

MsgBox "Przedział od 6 do 8"

Case

9 To 10

MsgBox "Przedział od 9 do 10"

Case Is

> 10

MsgBox "Wartość większa od 10."

Case Else

MsgBox "Poza przedziałem" & _

" liczb dodatnich."

End Select

Kod

P

background image

Kod VBA - Podstawy

Visual 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]

Wend

Przykład:

Private Sub

Iter(n,Licz As Long, Licz1 As Long)

Dim

Licz2 As Long

While

Licz < Licz1

Licz = Licz + n: Licz2 = Licz2 + 1

Wend

MsgBox

"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]

Wend

Przykład:

Private Sub

Iter(n,Licz As Long, Licz1 As Long)

Dim

Licz2 As Long

While

Licz < Licz1

Licz = Licz + n: Licz2 = Licz2 + 1

Wend

MsgBox

"Liczba iteracji wynosi: " & Licz2

End Sub

Punkt zapętlenia (

W

hile

end

)

Warunkowy początek pętli

Kod

P

background image

Kod VBA - Podstawy

Visual 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, Ciag

For

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, Ciag

For

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 iteracji

1

koniec poczatek

krok

+

P

background image

Kod VBA - Podstawy

Visual 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 = False

For Each

MojObiekt In MojaKolekcja

If

MojObiekt.Text = "Egzamin" Then

Istnieje = True
Exit For

End If

Next

Składnia:

For Each element In grupa

[instrukcje]

[Exit For]

[instrukcje]

Next [element]

Przykład:

Dim

Istnieje, MojObiekt, MojaKolekcja

Istnieje = False

For Each

MojObiekt In MojaKolekcja

If

MojObiekt.Text = "Egzamin" Then

Istnieje = True
Exit For

End If

Next

Kod

Dynamiczne określenie liczby iteracji

background image

Kod VBA - Podstawy

Visual 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.

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

58

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

Przykład:

Dim

Flaga, Licznik

Flaga = True: Licznik = 0
Do

'Zewnętrzna pętla.

Do While

Licznik < 20

'Wewnętrzna pętla.

Licznik = Licznik + 1 'Zwiększaj licznik.

If

Licznik = 10 Then

Flaga = False

Exit Do

'Wyjdź z wewnętrznej pętli.

End If

Loop

Loop Until (

Flaga = False)

‘Wyjdź z zewnętrznej pętli.

Przykład:

Dim

Flaga, Licznik

Flaga = True: Licznik = 0
Do

'Zewnętrzna pętla.

Do While

Licznik < 20

'Wewnętrzna pętla.

Licznik = Licznik + 1 'Zwiększaj licznik.

If

Licznik = 10 Then

Flaga = False

Exit Do

'Wyjdź z wewnętrznej pętli.

End If

Loop

Loop Until (

Flaga = False)

‘Wyjdź z zewnętrznej pętli.

Kod

P

background image

Kod VBA - Podstawy

Visual 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)")

Do

If

Odpowiedz = "" Then

Odpowiedz = InputBox("Nic nie wpisałeś. " & _

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

ElseIf Len

(Odpowiedz) > 1 Then

Odpowiedz = InputBox("Wpisz tylko jedną literę.")

ElseIf

Odpowiedz < "A" Or Odpowiedz > "E" Then

Odpowiedz = InputBox("Nieprawidłowa litera. " & _

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

Else

MsgBox

"Dziękuję. Dane zostały przyjęte"

Exit Do

End If

Loop

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)")

Do

If

Odpowiedz = "" Then

Odpowiedz = InputBox("Nic nie wpisałeś. " & _

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

ElseIf Len

(Odpowiedz) > 1 Then

Odpowiedz = InputBox("Wpisz tylko jedną literę.")

ElseIf

Odpowiedz < "A" Or Odpowiedz > "E" Then

Odpowiedz = InputBox("Nieprawidłowa litera. " & _

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

Else

MsgBox

"Dziękuję. Dane zostały przyjęte"

Exit Do

End If

Loop

End Sub

Kod

P

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

60

Instrukcja skoku do etykiety (GoTo)

Składnia:

Goto etykieta
Podstawowe 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 etykieta
Podstawowe 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.

background image

Kod VBA - Podstawy

Visual 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 If

Select Case

Wartosc

Case

2100

GoTo

WartoscSpecjalna

Case Is

< 1000

MsgBox "Wartość mniejsza niż 1000"

Case Is

>= 1000

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

End Select

Exit Sub

WartoscSpecjalna:

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 If

Select Case

Wartosc

Case

2100

GoTo

WartoscSpecjalna

Case Is

< 1000

MsgBox "Wartość mniejsza niż 1000"

Case Is

>= 1000

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

End Select

Exit Sub

WartoscSpecjalna:

MsgBox "Podano wartość specjalną."

End Sub

Kod

P

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

62

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

Przykład:

Sub

GoToDemo(Numer)

Dim

MyString

If

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

MyString

If

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


Document Outline


Wyszukiwarka

Podobne podstrony:
VBA Podstawy cz II
silnik+asynchroniczny+sk b3ada++++si ea+z+2+podstawowych+cz ea 9cci VAR2TK5HRUCC3C6S3IJDYEHIJ7PKU3ZK
LAB01 02 Charakterystyki dynamiczne podstawowych cz onów UAR
05 GIMP od podstaw, cz 2 Warstwy
Podstawy 1 cz 1 III
Autodesk Robot Structural Analysis Professional kurs podstawowy cz 2
07 GIMP od podstaw, cz 4 Przekształcenia
CAD Podstawy cz 1
Zadania podstawy cz. 1do wydruku, WSFiZ - Zarządzanie, II semestr, Podstawy rachunkowości, dr Rafał
zestaw słów podstawowych cz.3, NAUKA CZYTANIA
Zestaw słów podstawowych cz.2, NAUKA CZYTANIA
06 GIMP od podstaw, cz 3 Selekcja
Podstawy 1 cz 1 II
04 GIMP od podstaw, cz 1 Filtry
Słowniczek Historyczny Podstawówka CZ 2
Dyrekcja Szkoly Podstawowej cz 5
VBA Podstawy a

więcej podobnych podstron