VBA Podstawy a

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

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

1

Funkcje wbudowane - numeryczne

Funkcja

Opis

Abs(liczba)

Zwraca bezwzględną wartość argumentu. Zwracana wartość jest tego
samego typu co argument funkcji.

Atn(liczba)

Zwraca wartość typu Double równą arcusowi tangensowi liczby.

Cos(liczba)

Funkcja zwraca wartość typu Double odpowiadającą cosinusowi kąta
podanego w radianach.

Exp(liczba)

Funkcja zwraca wartość typu Double równą stałej e (podstawa
logarytmu naturalnego) podniesionej do potęgi liczba.

Int(liczba)
Fix(
liczba)

Funkcje zwracają wartości tego samego typu co przekazany
argument. Wartość funkcji odpowiada części całkowitej argumentu.

Fix(liczba) = Sgn(liczba) * Int(Abs(liczba))

Dim Liczba

Liczba = Int(99.8)

'Zwróci 99.

Liczba = Fix(99.2)

'Zwróci 99

Liczba = Int(-99.8) 'Zwróci -100.

Liczba = Fix(-99.8) 'Zwróci –99.

Liczba = Int(-99.2)

'Zwróci -100.

Liczba = Fix(-99.2)

'Zwróci -99.

Kod

P

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

2

Funkcje wbudowane – numeryczne c.d.

Funkcja

Opis

Log(liczba)

Zwraca wartość typu Double równą logarytmowi naturalnemu
liczby.

Rnd[(liczba)] Zwraca wartość typu Single będącą liczbą losową.

Randomize [liczba] - Inicjuje generator liczb losowych.

Sin(liczba)

Zwraca wartość typu Double równą sinusowi kąta podanego w
radianach.

Sqr(liczba)

Zwraca wartość typu Double równą pierwiastkowi kwadratowemu z
liczby.

Tan(liczba)

Zwraca wartość typu Double równą tangensowi kąta podanego w
radianach.

Sgn(liczba)

Zwraca wartość typu Variant (Integer) reprezentującą znak liczby.

Wartosc1 = 42: Wartosc2 = -2.6: Wartosc3 = 0

Znak = Sgn(Wartosc1) ' Zwraca 1.

Znak = Sgn(Wartosc2) ' Zwraca -1.

Znak = Sgn(Wartosc3) ' Zwraca 0.

Kod

P

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

3

Funkcje wbudowane – łańcuchowe

Funkcja

Opis

Trim(ciąg)

Obcina spacje początkowe i końcowe w łańcuchu ciąg.

Mid(string, _
start
[, długość])

Zwraca wartość typu Variant (String) zawierającą podaną liczbę
znaków z ciągu znaków.

Chr(kod_znaku) Zwraca wartość typu String zawierającą znak odpowiadający

podanemu kodowi znaku.

MojZnak = Chr(65) ' Zwraca A.

LCase(ciąg)

Zwraca wartość typu String zamienioną na małe litery.

UCase(ciąg)

Zwraca wartość typu Variant (String) zawierającą podany ciąg
zamieniony na wielkie litery.

LTrim(ciąg)

Obcina spacje początkowe w łańcuchu ciąg.

RTrim(ciąg)

Obcina spacje końcowe w łańcuchu ciąg.

MidB(string, _
start
[, długość])

Zwraca wartość typu Variant (String) zawierającą podaną liczbę
bajtów z ciągu znaków (na znak przypadają 2 bajty).

Lanc1 = MidB(Lanc, 3, 4) ‘Z „ABCD” zwróci „BC”

Kod

Kod

P

P1

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

4

Funkcje wbudowane – łańcuchowe c.d.

Funkcja

Opis

Left(lancuch, _
długość
)

Zwraca wartość typu Variant (String) zawierającą podaną liczbę
znaków począwszy od lewej strony ciągu znaków lancuch.

Right(lancuch, _
długość
)

Zwraca wartość typu Variant (String) zawierającą podaną liczbę
znaków począwszy od prawej strony ciągu znaków lancuch.

Len(ciąg |
nazwa_zmiennej)

Zwraca wartość typu Long zawierającą liczbę znaków w ciągu
znaków lub liczbę bajtów niezbędnych do przechowania
zmiennej nazwa_zmiennej.

LenB(ciąg |
nazwa_zmiennej)

Zwraca wartość typu Long zawierającą liczbę bajtów w ciągu
znaków lub liczbę bajtów niezbędnych do przechowania w
pamięci zmiennej nazwa_zmiennej, także zdefiniowanej przez
użytkownika (włącznie z przestrzeniami między elementami).

InStr([start, ]
string1, string2
[,compare])

Zwraca wartość typu Variant (Long) określającą miejsce
pierwszego wystąpienia jednego ciągu znaków w drugim.

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

5

Przykłady zastosowań funkcji (Len, LenB)

Type

MojRekord

ID As Integer
Nazwisko As String * 10
Adres As String * 30

End Type

Private Sub

Lancuchy()

Dim

Klient As MojRekord

Dim

MyInt As Integer, MyCur As Currency

Dim

MyString, MyLen, MyStr

MyString = "Hello World": MyStr = "Abc"
MyLen = Len(MyInt)

'Zwraca 2.

MyLen = Len(Klient)

'Zwraca 42.

MyLen = Len(MyString)

'Zwraca 11.

MyLen = Len(MyCur)

'Zwraca 8.

MyLen = LenB(MyStr)

'Zwraca 6.

End Sub

Type

MojRekord

ID As Integer
Nazwisko As String * 10
Adres As String * 30

End Type

Private Sub

Lancuchy()

Dim

Klient As MojRekord

Dim

MyInt As Integer, MyCur As Currency

Dim

MyString, MyLen, MyStr

MyString = "Hello World": MyStr = "Abc"
MyLen = Len(MyInt)

'Zwraca 2.

MyLen = Len(Klient)

'Zwraca 42.

MyLen = Len(MyString)

'Zwraca 11.

MyLen = Len(MyCur)

'Zwraca 8.

MyLen = LenB(MyStr)

'Zwraca 6.

End Sub

Notacja DBCS (Double-Byte

Character Set )

Kod

P

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

6

Składnia funkcji (InStr)

InStr([start, ] string1, string2 [,compare])

start

Określa pozycję początkową poszukiwań w łańcuchu string1, parametr
jest wymagany przy określeniu wartości compare.

string1

Element obowiązkowy. Łańcuch przeszukiwany.

string2

Element obowiązkowy. Łańcuch lub znak poszukiwany.
vbUseCompareOption

-1 Pobiera opcje porównywania z ustawień

Option Compare.

0 Porównywanie binarne.

vbTextCompare

1 Porównywanie tekstowe.

Porównywanie oparte na informacji
znajdującej się w bazie MS Access.

2

vbBinaryCompare

compare

vbDatabaseCompare

Pozycja deklaracji na początku modułu:

Option Compare {Binary | Text | Database}

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

7

Przykłady zastosowań funkcji (InStr)

Zwracane wartości funkcji - InStr([start, ] string1, string2 [,compare])

Warunek

Zwrócona wartość

string1 posiada zerową długość

0

string1 posiada wartość Null

Null

string2 posiada wartość zerową

start

string2 posiada wartość Null

Null

string2 nie został znaleziony

0

string2 został znaleziony w string1

Pozycja w której został odszukany

start > string2

0

Dim

SearchString, SearchChar, MyPos

SearchString ="XXpXXpXXPXXP"
SearchChar = "P"

MyPos = InStr(4, SearchString, SearchChar, 1)

'Zwraca 6.

MyPos = InStr(1, SearchString, SearchChar, 0)

'Zwraca 9.

MyPos = InStr(SearchString, SearchChar)

'Zwraca 9.

MyPos = InStr(1, SearchString, "W")

'Zwraca 0.

Kod

Binarne

Tekstowe

P

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

8

Przykłady zastosowań funkcji łańcuchowych

Public Function

WymianaZnaku(x,x1,x2)

Dim

p As Long

Dim

s1 As String, s2 As String

p = InStr(1, x, x1, 1)

If

p = 0 Then

WymianaZnaku = x
Exit Function

End If

s1 = Left(x, p - 1)
s2 = Right(x, Len(x) - p)

WymianaZnaku = s1 & x2 & s2

End Function

Public Function

WymianaZnaku(x,x1,x2)

Dim

p As Long

Dim

s1 As String, s2 As String

p = InStr(1, x, x1, 1)

If

p = 0 Then

WymianaZnaku = x
Exit Function

End If

s1 = Left(x, p - 1)
s2 = Right(x, Len(x) - p)

WymianaZnaku = s1 & x2 & s2

End Function

Kod

Lańcuch

przeszukiwany

Znak

szukany

Znak do

wstawienia

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

9

Składnia funkcji (Format)

Format

(Wyrażenie[, Format[, PierwszyDzienTygodnia[, PierwszyTydzienRoku]]])

Wyrażenie

Element obowiązkowy. Dowolne poprawne wyrażenie.

Format

Element opcjonalny. Nazwa lub zdefiniowane przez
użytkownika wyrażenie formatujące.

PierwszyDzienTygodnia Element opcjonalny. Opcjonalna wartość lub stała

określająca pierwszy dzień tygodnia.

PierwszyTydzienRoku

Element opcjonalny. Opcjonalna wartość lub stała
określająca pierwszy tydzień roku.

Różne formaty dla różnych wartości numerycznych

Liczba sekcji

Otrzymany wynik wyrażenia Format (użytkownika)

1

Stosowane do wszystkich wartości.

2

Pierwsza do dodatnich wartości i zera, druga do ujemnych wartości.

3

Pierwsza do dodatnich, druga do ujemnych, trzecia do zera.

4

Pierwsze trzy jak dla liczby sekcji 3, czwarta do wartości Null.

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

10

Formaty dla funkcji (Format)

Różne formaty dla różnych wartości łańcuchowych

Liczba sekcji

Otrzymany wynik wyrażenia Format

1

Wyrażenie Format stosowane do wszystkich danych string.

2

Pierwsza sekcja stosowana do wartości łańcuchowych, druga do
wartości Null i do pustych łańcuchów (””).

Zdefiniowane formaty numeryczne

Nazwa formatu

Opis

Currency

Wyświetla liczbę z separatorem tysięcy. Formatowanie oparte na
ustawieniach lokalnych w systemie.

General Number Wyświetla liczbę bez separatora tysięcy.

Fixed

Wyświetla przynajmniej jedną cyfrę od lewej i dwie cyfry od
prawej strony separatora dziesiętnego.

Standard

Wyświetla liczbę z separatorem tysięcy, przynajmniej jedną cyfrę
od lewej i dwie cyfry od prawej strony separatora dziesiętnego.

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

11

Formaty dla funkcji (Format) c.d.

Nazwa formatu

Opis

Percent

Wyświetla liczbę pomnożoną przez 100 ze znakiem procentu (%).
Wyświetla dwie cyfry po prawej stronie separatora dziesiętnego.

Scientific

Używa standardowego formatu wykładniczego.

Yes/No

Wyświetla nie (No), jeśli liczba jest 0, w przeciwnym przypadku
wyświetla tak (Yes).

True/False

Wyświetla False (fałsz), jeśli liczba jest 0, w przeciwnym
przypadku wyświetla True (prawda).

On/Off

Wyświetla Off, jeżeli liczba jest 0, w przeciwnym wypadku On.

Znaki formatów numerycznych i łańcuchowych użytkownika

Znak

Opis

None

Wyświetla niesformatowaną liczbę.

0

Znak pola. Wyświetla cyfrę lub zero. Nadmiar z lewej strony jest
wyświetlany, natomiast z prawej strony jest obcinany.

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

12

Znaki formatów funkcji (Format)

Znak

Opis

#

Znak pola. Wyświetla cyfrę lub nic. Nie są wyświetlane nadmiarowe zera.

.

Znak dziesiętny. Pozycja kropki dziesiętnej w utworzonym formacie.
Jeżeli liczba jest mniejsza od jedności, w celu wyświetlenia zera należy
przed kropką, użyć znaku „0”.

%

Znak procentu. Ustawiany na określonej pozycji. Wyrażenie jest mnożone
przez 100.

,

Separator tysięcy. Znak używany jako separator tysięcy w formatowanym
wyjściu zależy od formatu numerycznego rozpoznawanego przez system.

:

Separator czasu. Oddziela od siebie godziny, minuty i sekundy.

/

Separator daty. Oddziela od siebie dzień, miesiąc i rok.

E+ E-

e+ e-

Format wykładniczy. Powoduje, że liczba jest wyświetlana w formacie
wykładniczym. Liczbę znaków wykładnika określa się z prawej strony.

-+$()

Wyświetla znak literowy.

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

13

Znaki formatów funkcji (Format) c.d.

Znak

Opis

\

Znak zezwolenia. Pozwala na wyświetlenie znaków używanych do
formatowania (a, c, d, h, m, n, p, q, s, t, w, y, /, :, #, 0, %, E, e,
przecinek, kropka, @, &, <, >, !
).

” ”

Wyświetla łańcuch zawarty między dwoma znakami cudzysłowu. W
celu włączania łańcucha do argumentu Format z kodu należy użyć
funkcji Chr.

@

Miejsce na znak. Wyświetla znak lub spację.

&

<
>

!

Miejsce na znak. Wyświetla znak lub nic nie wyświetla.

Wyświetla wszystkie znaki w formacie małych liter.

Wyświetla wszystkie znaki w formacie dużych liter.

Ł

cuchowe

Powoduje wypełnianie miejsc na znaki od lewej do prawej.
Standardowo są wypełniane od prawej do lewej.

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

14

Formatowanie daty i czasu funkcją (Format)

Zdefiniowane nazwy formatów daty i czasu

Nazwa formatu

Opis

General Date

Wyświetlanie określone jest ustawieniami systemu.

Long Date

Wyświetla datę według formatu długiej daty ustawionego
przez system.

Long Time

Wyświetla czas według formatu długiego czasu
ustawionego przez system.

Medium Date

Wyświetla datę według formatu średniej daty
odpowiedniego do wersji języka aplikacji typu host.

Medium Time

Wyświetla czas w formacie 12-godzinnym.

Short Date

Wyświetla datę według formatu krótkiej daty, ustawionego
przez system.

Short Time

Wyświetla czas w formacie 24-godzinnym.

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

15

Znaki formatów daty i czasu funkcji (Format)

Znaki do samodzielnego tworzenia formatów daty i czasu

Znak

Opis

:

Separator czasu oddzielający godziny, minuty i sekundy.

/

Separator daty oddzielający dzień, miesiąc i rok.

c

Wyświetla datę jako ddddd i czas jako ttttt, w tej kolejności.

d

Wyświetla dzień jako liczbę bez zera na początku.

dd

Wyświetla dzień jako liczbę z zerem na początku.

ddd

Wyświetla dzień w skrócie (skróty ang. np.: Thu, Fri).

dddd

Wyświetla dzień jako pełną nazwę (ang. np.: Friday).

ddddd

Wyświetla datę jako kompletną datę (najczęściej m/d/yy).

dddddd

Wyświetla datę jako kompletną datę (mmmm dd, yyyy).

w

Wyświetla dzień w postaci liczby (od 1 dla niedzieli do 7 dla soboty).

ww

Wyświetla tydzień w roku jako liczbę (1 do 54).

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

16

Znaki formatów daty i czasu funkcji (Format) c.d.

m

Wyświetla miesiąc jako liczbę bez zera na początku (od 1 do 12).

mm

Wyświetla miesiąc jako liczbę z zerem na początku (od 01 do 12).

mmm

Wyświetla miesiąc w skrócie (skróty ang. np.: Jan, Dec).

mmmm

Wyświetla miesiąc jako pełną nazwę (ang. np.: January, December).

q

Wyświetla kwartał roku jako liczbę (od 1 do 4).

y

Wyświetla dzień jako liczbę (od 1 do 366).

yy

Wyświetla rok jako dwucyfrową liczbę (od 00 do 99).

yyyy

Wyświetla rok jako trzy lub czterocyfrową liczbę (od 100 do 9999).

h

Wyświetla godzinę jako liczbę bez zera na początku (od 0 do 23).

hh

Wyświetla godzinę jako liczbę z zerem na początku (od 00 do 23).

n

Wyświetla minuty jako liczbę bez zera na początku (od 0 do 59).

nn

Wyświetla minuty jako liczbę z zerem na początku (od 00 do 59).

s

Wyświetla sekundy jako liczbę bez zera na początku (od 0 do 59).

ss

Wyświetla sekundy jako liczbę z zerem na początku (od 00 do 59).

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

17

Przykłady zastosowań funkcji (Format)

Przykład:

Dim

MyTime, MyDate, MyStr

MyTime = #17:04:23#
MyDate = #January 27, 1993#

MyStr = Format(Time, "Long Time")

‘Zwraca bieżący systemowy czas
‘w długim formacie.

MyStr = Format(Date, "Long Date")

‘Zwraca bieżącą systemową datę
‘w długim formacie.

MyStr = Format(MyTime, "h:m:s")

‘Zwraca "17:4:23".

MyStr = Format(MyTime, "hh:mm:ss AMPM")

‘Zwraca "05:04:23 PM".

Przykład:

Dim

MyTime, MyDate, MyStr

MyTime = #17:04:23#
MyDate = #January 27, 1993#

MyStr = Format(Time, "Long Time")

‘Zwraca bieżący systemowy czas
‘w długim formacie.

MyStr = Format(Date, "Long Date")

‘Zwraca bieżącą systemową datę
‘w długim formacie.

MyStr = Format(MyTime, "h:m:s")

‘Zwraca "17:4:23".

MyStr = Format(MyTime, "hh:mm:ss AMPM")

‘Zwraca "05:04:23 PM".

Kod

P

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

18

Przykłady zastosowań funkcji (Format) c.d.

Przykład:

MyStr = Format(MyDate, "dddd, mmm d yyyy")

'Zwraca „środa, sty 27 1993".

MyStr = Format(23)

'Zwraca "23".

MyStr = Format(5459.4, "##,##0.00")

'Zwraca "5 459,40".

MyStr = Format(334.9, "###0.00")

MyStr = Format(5, "0.00%")

'Zwraca "500,00%".

MyStr = Format("HELLO", "<")

'Zwraca "hello".

MyStr = Format("To jest to", ">")

'Zwraca „TO JEST TO".

Przykład:

MyStr = Format(MyDate, "dddd, mmm d yyyy")

'Zwraca „środa, sty 27 1993".

MyStr = Format(23)

'Zwraca "23".

MyStr = Format(5459.4, "##,##0.00")

'Zwraca "5 459,40".

MyStr = Format(334.9, "###0.00")

MyStr = Format(5, "0.00%")

'Zwraca "500,00%".

MyStr = Format("HELLO", "<")

'Zwraca "hello".

MyStr = Format("To jest to", ">")

'Zwraca „TO JEST TO".

Kod

P

P1

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

19

Funkcje daty i czasu

Funkcja

Opis

Date

Zwraca wartość typu (Date) zawierającą bieżącą datę
systemową.

Time

Zwraca wartość typu (Date) zawierającą bieżącą godzinę
systemową.

Now

Zwraca wartość typu (Date) określającą bieżącą datę i godzinę
systemową pobraną.

Second(godzina)

Zwraca wartość typu Variant (Integer), która jest liczbą
całkowitą z przedziału od 0 do 59 włącznie.

Minute(godzina)

Zwraca wartość typu Variant (Integer), która jest liczbą
całkowitą z przedziału od 0 do 59 włącznie.

Hour(godzina)

Zwraca wartość typu Variant (Integer), która jest liczbą

całkowitą z przedziału od 0 do 59 włącznie.

Day(data)

Zwraca wartość typu Variant (Integer), która jest liczbą

całkowitą z przedziału od 1 do 31 włącznie, określającą dzień

miesiąca.

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

20

Funkcje daty i czasu c.d.

Funkcja

Opis

Weekday(data,
[pierwszydzientygodn
ia
])

Zwraca wartość typu Variant (Integer) zawierającą liczbę
całkowitą określającą dzień tygodnia. Od 1 do 7.

Month(data)

Zwraca wartość typu Variant (Integer), która jest liczbą
całkowitą z przedziału od 1 do 12 włącznie, określającą
miesiąc roku.

Year(data)

Zwraca wartość typu Variant (Integer) zawierającą liczbę
całkowitą, określającą rok.

DateSerial(year,
month, day
)

Zwraca wartość typu Variant (Date) dla określonego roku,
miesiąca i dnia.

TimeSerial(hour,
minute, second
)

Zwraca wartość typu Variant (Date) zawierającą określenie
czasu dla konkretnej godziny, minuty i sekundy.

DateValue(data)

Zwraca wartość typu Variant (Date).

TimeValue(godzina) Zwraca wartość typu Variant (Date) zawierającą godzinę.

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

21

Funkcje daty i czasu c.d.

Funkcja

Opis

DateAdd(jednostki_d,
ilość_jed, data
)

Zwraca wartość typu Variant (Date) zawierającą
datę, do której dodano określony przedział czasu.

DateDiff(jednostki_d, data1,
data2
[,pierwszydzientygodnia
[, pierwszytydzienroku]])

Zwraca wartość typu Variant (Long) określającą
liczbę przedziałów czasowych pomiędzy dwiema
datami. Jednostki_d określają rodzaj jednostek.

DatePart(jednostki_d, date
[,pierwszydzientygodnia [,
pierwszytydzienroku]])

Zwraca wartość typu Variant (Integer) zawierającą
określoną część podanej daty.

Timer

Zwraca wartość typu Single określającą liczbę
sekund, które upłynęły od północy.

Dim

MojaData As Date

Dim

Msg

MojaData = InputBox("Wprowadź datę:", "Data", Date)
Msg = "Mamy kwartał nr: " & DatePart("q", MojaData)
MsgBox

Msg

Kod

P

Wartość domyślna

P1

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

22

Przykład zastosowania funkcji (Timer)

Dim

Intr As Boolean

Public Sub

TimerShow(S As Single)

Dim

Start

Do

Label1.Caption = Timer
DoEvents
Call

Delay(S)

Loop Until

Intr = False

End Sub

Public Sub

Delay(Time1 As Single)

Dim

Start

Start = Timer
Do

DoEvents

Loop Until

Timer - Start > Time1

End Sub

Dim

Intr As Boolean

Public Sub

TimerShow(S As Single)

Dim

Start

Do

Label1.Caption = Timer
DoEvents
Call

Delay(S)

Loop Until

Intr = False

End Sub

Public Sub

Delay(Time1 As Single)

Dim

Start

Start = Timer
Do

DoEvents

Loop Until

Timer - Start > Time1

End Sub

Kod

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

23

Funkcje testujące

Funkcja

Opis

IsDate(wyrażenie) Zwraca wartość typu Boolean wskazującą, czy wyrażenie może

zostać przekształcone na wartość oznaczającą datę.

IsArray(nazwa_z
miennej
)

Zwraca wartość typu Boolean wskazującą, czy argument jest
zmienną prostą czy tablicą.

IsEmpty(wyrażeni
e
)

Zwraca wartość typu Boolean wskazującą, czy zmienna została
zainicjowana.

IsMissing(nazwa_
argumentu
)

Zwraca wartość Boolean wskazującą, czy argument
nieobowiązkowy typu Variant został przekazany do procedury.

IsNull(wyrażenie) Zwraca wartość Boolean wskazującą, czy wyrażenie nie

zawiera danych (ma wartość Null).

IsNumeric(wyraże
nie
)

Zwraca wartość typu Boolean wskazującą, czy wartością
wyrażenia jest liczba.

IsObject(identyfik
ator
)

Zwraca wartość typu Boolean wskazującą, czy identyfikator
reprezentuje zmienną obiektową.

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

24

Funkcje konwersji danych

Funkcja

Opis

Str(liczba)

Zwraca wartość typu String reprezentującą liczbę.

Val(ciąg)

Zwraca wartości liczb tworzących ciąg w postaci wartości
numerycznej odpowiedniego typu.

Asc(ciąg)

Zwraca wartość typu Integer odpowiadającą kodowi znaku
pierwszego elementu w ciągu znaków.

Hex(liczba)

Zwraca wartość typu String reprezentującą heksadecymalną
(szesnastkową) wartość liczby.

Oct(liczba)

Zwraca wartość typu Variant (String) reprezentującą oktetową
(ósemkową) wartość liczby.

CBool(wyrażenie) Zwraca wartość typu Boolean. Konwersja dowolnego typu na

logiczny.

CByte(wyrażenie) Zwraca wartość typu Byte. Konwersja dowolnego typu na typ

Byte.

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

25

Funkcje konwersji danych c.d.

Funkcja

Opis

CCur(wyrażenie)

Zwraca wartość typu Currency. Konwersja dowolnego typu na
typ Currency.

CDate(wyrażenie) Zwraca wartość typu Date. Konwersja dowolnego poprawnego

wyrażenia oznaczającego datę na typ Date.

CDbl(wyrażenie)

Zwraca wartość typu Double. Konwersja dowolnego typu z
poprawną wartością na typ Double.

CDec(wyrażenie)

Zwraca wartość typu Decimal. Konwersja dowolnego typu z
poprawną wartością na typ Decimal.

CInt(wyrażenie)

Zwraca wartość typu Integer. Konwersja dowolnego typu z
poprawną wartością na typ Integer.

CLng(wyrażenie)

Zwraca wartość typu Long. Konwersja dowolnego typu z
poprawną wartością na typ Long.

CSng(wyrażenie)

Zwraca wartość typu Single. Konwersja dowolnego typu z
poprawną wartością na typ Single.

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

26

Funkcje konwersji danych c.d.

Funkcja

Opis

CVar(wyrażenie) Zwraca wartość typu Variant. Konwersja dowolnego typu z

poprawną wartością na typ Variant.

CStr(wyrażenie)

Zwraca wartość zależną od konwertowanego wyrażenia.

Dim

A, B, Test

A = 5: B = 5

'Inicjowanie zmiennych.

Test = CBool(A = B)

'Zmienna zawiera True.

A = 0

'Przypisanie wartości.

Test = CBool(A)

'Zmienna zawiera False.

Dim

MyDouble, MyByte

MyDouble = 125.5678

'MyDouble jest typu Double.

MyByte = CByte(MyDouble) 'MyByte zawiera 126.
Dim

MyCurr, MyDouble

MyCurr = CCur(234.456784) 'MyCurr jest typu Currency.
MyDouble = CDbl(MyCurr *8.2*0.01) 'Konwersja do Double.

Kod

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

27

Funkcje konwersji danych c.d.

Dim

MyDate, MyShortDate, MyTime, MyShortTime

MyDate = "12 luty 1969"

'Zdefiniowanie daty.

MyShortDate = CDate(MyDate)

'Konwersja do typu Date.

MyTime = "4:35:47 PM"

'Zdefiniowanie czasu.

MyShortTime = CDate(MyTime)

'Konwersja do typu Date.

Dim

MyInt, MyVar

MyInt = 4534

'MyInt jest typu Integer.

MyVar = CVar(MyInt & "000")

'MyVar zawiera łańcuch
'4534000.

Dim

MyDouble, MyString

MyDouble = 437.324

'MyDouble jest typu Double.

MyString = CStr(MyDouble)

'MyString zawiera "437.324".

Dim

MyDate, MyShortDate, MyTime, MyShortTime

MyDate = "12 luty 1969"

'Zdefiniowanie daty.

MyShortDate = CDate(MyDate)

'Konwersja do typu Date.

MyTime = "4:35:47 PM"

'Zdefiniowanie czasu.

MyShortTime = CDate(MyTime)

'Konwersja do typu Date.

Dim

MyInt, MyVar

MyInt = 4534

'MyInt jest typu Integer.

MyVar = CVar(MyInt & "000")

'MyVar zawiera łańcuch
'4534000.

Dim

MyDouble, MyString

MyDouble = 437.324

'MyDouble jest typu Double.

MyString = CStr(MyDouble)

'MyString zawiera "437.324".

Kod

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

28

Instrukcje operacji wejścia/wyjścia

Open nazwa_sciezki For tryb [Access dostep] [blokada] As
[#]numer_pliku [Len=dlugosc_rekordu]

Nazwa_sciezki Element obowiązkowy. Wyrażenie znakowe określające nazwę

pliku może zawierać nazwę katalogu lub folderu i dysku.

tryb

Element obowiązkowy. Słowo kluczowe określające tryb otwarcia
pliku: Append, Binary, Input, Output lub Random.

dostep

Element nieobowiązkowy. Słowo kluczowe określające dozwolone
operacje na otwartym pliku: Read, Write lub Read Write.

blokada

Element nieobowiązkowy. Słowo kluczowe określające dozwolone
dla innych procesów operacje na pliku: Shared, Lock Read, Lock
Write
i Lock Read Write.

numer_pliku

Element obowiązkowy. Numer pliku z zakresu 1 do 511 włącznie.
Następny wolny numer pliku - wykorzystanie funkcji FreeFile.

dlugosc_rekor
du

Element nieobowiązkowy. Liczba mniejsza lub równa 32 767
(bajtów).

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

29

Instrukcje operacji wejścia/wyjścia c.d.

Typy dostępu do pliku operacji Open:

Input - powoduje otwarcie do czytania z pliku. W tym
trybie można używać instrukcji: Input #.
Output
- powoduje otwarcie do zapisu w pliku. W tym
trybie można używać instrukcji: Write # lub Print #.
Append
- w przypadku otwarcia w tym trybie
istniejącego pliku, dane zostaną zapisane na jego końcu,
bez usuwania dotychczasowej zawartości. Jeżeli plik o
podanej nazwie nie istnieje, następuje jego utworzenie.
W tym trybie można używać instrukcji: Write # lub
Print #.
Random
- odczyt i zapis danych – rekordowych.
Binary - odczyt i zapis porcji bajtów do pliku.

Sekwencyjny

Swobodny
Binarny

Tryb

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

30

Instrukcje operacji wejścia/wyjścia c.d.

Close [[[#]numer_pliku] [, [#]numer_pliku]] ...

Kończy operację wejścia/wyjścia na pliku otwartym za pomocą instrukcji Open

numer_pliku

Element nieobowiązkowy. Numer zamykanego zbioru. W przypadku
braku jakiegokolwiek numeru, zostaną zamknięte wszystkie otwarte
zbiory.

Kod

Open

„test.txt" For Input As #1 'Sekwencyjne otwarcie w

'trybie Input. Należy zamknąć zbiór,
'aby otworzyć w innym trybie.

Close

#1

Open

„test.txt" For Binary Access Write As #1 'Binarne

'otwarcie.

Close

#1

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

31

Instrukcje operacji wejścia/wyjścia c.d.

Type

Record

'Zdefiniowanie własnego typu rekordowego.

ID As Integer
Name As String * 20

End Type

Dim

MyRecord As Record 'Deklaracja zmiennej rekordowej.

Open

„test.txt" For Random As #1 Len = Len(MyRecord)

Close

#1

Open

„test.txt" For Output Shared As #1 'Dowolny proces

'może zapisywać lub odczytywać ze zbioru „TESTFILE”.

Close

#1

Open

„test.txt" For Binary Access Read Lock Read As #1

'

Binarne otwarcie w trybie odczytu. Inne

procesy nie

'mają dostępu.

Type

Record

'Zdefiniowanie własnego typu rekordowego.

ID As Integer
Name As String * 20

End Type

Dim

MyRecord As Record 'Deklaracja zmiennej rekordowej.

Open

„test.txt" For Random As #1 Len = Len(MyRecord)

Close

#1

Open

„test.txt" For Output Shared As #1 'Dowolny proces

'może zapisywać lub odczytywać ze zbioru „TESTFILE”.

Close

#1

Open

„test.txt" For Binary Access Read Lock Read As #1

'

Binarne otwarcie w trybie odczytu. Inne

procesy nie

'mają dostępu.

Kod

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

32

Instrukcje operacji wejścia/wyjścia c.d.

Input #numer_pliku, lista_zmiennych

Odczytuje dane z otwartego pliku sekwencyjnego i przypisuje dane do zmiennej.

numer_pliku

Numer zbioru, z którego będą pobierane dane.

lista_zmiennych

Zmienne, którym zostaną przypisane wartości ze wskazanego
zbioru numer_pliku.

Dim

MyString, MyNumber

Open

"test.txt" For Input As #1

Do While

Not EOF(1)

'Zapętlenie do końca zbioru.

Input #

1, MyString, MyNumber

'Przesłanie danych do
'dwóch zmiennych.

MsgBox

MyString + " " + MyNumber

Loop

Close

#1

Kod

P

S

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

33

Instrukcje operacji wejścia/wyjścia c.d.

Print #numer_pliku, [[{Spc(n) | Tab[(n)]}] [wyrazenie]
[pozycja_znaku]]

Zapisuje do pliku sekwencyjnego dane w postaci sformatowanej do wydruku.

numer_pliku

Numer docelowego pliku.

Spc(n)

Służy do wstawiania do wydruku znaków spacji; wartość n oznacza
liczbę wstawionych spacji.

Tab(n)

Służy do ustawiania punktu wstawiania w kolumnie o podanym
numerze bezwzględnym; wartość n oznacza numer kolumny.
Bez parametru – ustawia co 14 kolumn.

wyrazenie

Dane do zapisu: numeryczne lub łańcuchowe.

pozycja_znaku Określa punkt wstawiania następnego znaku. Aby umieścić punkt

wstawiania bezpośrednio po ostatnim wyświetlonym znaku, należy
użyć średnika. Jeżeli opcja pozycja_znaku jest pominięta, następny
znak drukowany jest w następnym wierszu.

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

34

Instrukcje operacji wejścia/wyjścia c.d.

Open

„test1.txt" For Output As #1

Print #

1, "To tylko test"

Print #

1,

’Wydruk pustej linii do zbioru.

Print #

1, "Zone 1"; Tab ; "Zone 2" ‘Dwie strefy druku.

Print #

1, "Hello" ; " " ; "World" ‘Spacja.

Print #

1, Spc(5) ; "5 przednich spacji " ‘Pięć spacji.

Print #

1, Tab(10) ; "Hello" ‘Druk w kolumnie nr 10.

Dim

MyBool, MyDate, MyNull, MyError

MyBool = False : MyDate = #7/20/1969#
MyNull = Null : MyError = CVErr(32767)

Print #

1, MyBool ; " jest wartością typu Boolean"

Print #

1, MyDate ; " jest datą"

Print #

1, MyNull ; " posiada wartość null"

Print #

1, MyError ; " określa numer błędu"

Close

#1

Open

„test1.txt" For Output As #1

Print #

1, "To tylko test"

Print #

1,

’Wydruk pustej linii do zbioru.

Print #

1, "Zone 1"; Tab ; "Zone 2" ‘Dwie strefy druku.

Print #

1, "Hello" ; " " ; "World" ‘Spacja.

Print #

1, Spc(5) ; "5 przednich spacji " ‘Pięć spacji.

Print #

1, Tab(10) ; "Hello" ‘Druk w kolumnie nr 10.

Dim

MyBool, MyDate, MyNull, MyError

MyBool = False : MyDate = #7/20/1969#
MyNull = Null : MyError = CVErr(32767)

Print #

1, MyBool ; " jest wartością typu Boolean"

Print #

1, MyDate ; " jest datą"

Print #

1, MyNull ; " posiada wartość null"

Print #

1, MyError ; " określa numer błędu"

Close

#1

Kod

P

S

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

35

Instrukcje operacji wejścia/wyjścia c.d.

Write #numer_pliku, [lista_wyjscia]

Zapisuje dane do pliku sekwencyjnego.

numer_pliku

Element obowiązkowy. Dowolny poprawny numer pliku.

lista_wyjscia

Element nieobowiązkowy. Jest to jedno lub więcej wyrażeń
numerycznych lub wyrażeń znakowych oddzielonych od siebie
przecinkami.

Open "

test2.txt" For Output As #1

Write

#1, "Dane zapisane do pliku", 234

Write

#1,

'Zapisz pusty wiersz.

Print

#1, Spc(5) ; "5 znaków spacji "

Print

#1, Tab(10) ; "Cześć" 'Drukuj słowo w 10 kolumnie.

Close

#1

'Zamknij plik.

Kod

P

S

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

36

Instrukcje operacji wejścia/wyjścia c.d.

Put [#]numer_pliku, [numer_rekordu], nazwa_zmiennej

Przepisuje dane ze zmiennej do pliku dyskowego.

numer_pliku

Element obowiązkowy. Dowolny poprawny numer pliku.

numer_rekordu

Element nieobowiązkowy. Wartość typu Variant. Jest to numer
rekordu (Random) lub numer bajtu (Binary).

nazwa_zmiennej Element obowiązkowy. Nazwa zmiennej zawierającej dane, które

mają być zapisane na dysk.

Type

Rekord

ID As Integer

Nazwisko As String * 20

End Type
Dim

MyRecord As Rekord, RecordNumber

Open

„test3.txt" For Random As #1 Len = Len(MyRecord)

For

RecordNumber = 1 To 5

MyRecord.ID = RecordNumber

MyRecord.Nazwisko = "Moje Nazwisko" & RecordNumber

Put #

1, RecordNumber, MyRecord

Next

RecordNumber

Close

#1

Kod

P

S

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

37

Instrukcje operacji wejścia/wyjścia c.d.

Get [#]numer_pliku, [numer_rekordu], nazwa_zmiennej

Wczytuje do zmiennej dane z otwartego pliku dyskowego

numer_pliku

Element obowiązkowy. Dowolny poprawny numer pliku.

numer_rekordu

Element nieobowiązkowy. Wartość typu Variant. Numer rekordu
(Random) lub numer bajtu (Binary).

nazwa_zmiennej Element obowiązkowy. Nazwa zmiennej, do której wczytywane

są dane.

Type

Rekord

ID As Integer

Nazwisko As String * 20

End Type
Dim

MojRekord As Rekord, Pozycja

Open "

Dane.dat" For Random As #1 Len = Len(MojRekord)

For

Pozycja = 1 To 5

Get

#1, Pozycja, MojRekord

Next

Pozycja

Close

#1

Kod

P

S

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

38

Instrukcje operacji wejścia/wyjścia c.d.

Seek(numer_pliku)

Zwraca wartość typu Long określającą bieżącą pozycję odczytu/zapisu dla pliku

otwartego instrukcją Open.

numer_pliku

Element obowiązkowy. Dowolny poprawny numer pliku.

Type

Rekord

ID As Integer
Nazwisko As String * 20

End Type

Dim

MojRekord As Rekord, NrRekordu, Res

Open "

Dane.dat" For Random As #1 Len = Len(MojRekord)

Do While Not

EOF(1)

Get

#1, , MojRekord

'Przeczytaj kolejny rekord.

Res = MsgBox("Pozycja w pliku: " & Seek(1), 64, _

"Informacja")

Loop

Close

#1

Kod

P

S

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

39

Polecenia operacji na plikach i katalogach

Polecenie

Opis działania

ChDir

Zmienia bieżący katalog

ChDrive

Zmienia bieżący napęd

Dir

Zwraca nazwę pliku lub katalog pasujący do określonego wzorca

lub atrybutu pliku

FileCopy

Kopiuje plik

FileDateTime

Zwraca datę i godzinę ostatniej modyfikacji pliku

FileLen

Zwraca rozmiar pliku w bajtach

GetAttr

Zwraca wartość reprezentującą atrybut pliku

Kill

Usuwa plik

MkDir

Tworzy nowy katalog

Name

Zmienia nazwę pliku lub katalogu

RmDir

Usuwa pusty katalog

SetAttr

Zmienia atrybut pliku

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

40

Funkcje sprawdzające - przykłady

Function

FileExists(nazwa) As Boolean

FileExists = Dir(nazwa) <> ””

End Function

Zwrócenie przez funkcję Dir pustego ciągu znaków oznacza, że nie można
znaleźć poszukiwanego pliku.

Kod

Zwrócenie przez porównanie iloczynu literału z funkcją GetAttr oraz literału,
wartości false oznacza, że nie można znaleźć poszukiwanego katalogu (folderu).

Function

PathExists(nazwa) As Boolean

PathExists = (GetAttr(nazwa) and vbDirectory) _

= vbDirectory

End Function

Kod

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

41

Lista plików w katalogu

Sub

ListaPlikow(Directory As String)

Dim

r As Integer

r = 1

'Wstawianie i formatowanie nagłówków

Cells.ClearContents

Cells

(r, 1).Value = "Nazwa pliku"

Cells

(r, 2).Value = "Rozmiar"

Cells

(r, 3).Value = "Data/Godzina"

Range

("A1:C1").Font.Bold = True

'Pobieranie plików

f = Dir(Directory, 7) ‘pobiera pierwszy wpis (zbiór)
Do While

f <> ""

r = r + 1
Cells

(r, 1).Value = f

Cells

(r, 2).Value = FileLen(Directory & f)

Cells

(r, 3).Value = FileDateTime(Directory & f)

f = Dir

‘pobiera kolejny wpis

Loop

End Sub

Kod

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

42

Instrukcja dla skróconego wywołania (With)

Składnia:

With obiekt

.Podprogram.Wlasciwosc

[instrukcje]
End With

Składnia:

With obiekt

.Podprogram.Wlasciwosc

[instrukcje]
End With

Kod

Równoważne podprogramy

With

MojObiekt
.Height = 100
.Caption ="Pozdrawiam"

With

.Font

.Color = Czerwony

.Bold = True

End With

End With

MojObiekt.Height = 100
MojObiekt.Caption = "Pozdrawiam"
MojObiekt.Font.Color = Czerwony
MojObiekt.Font.Bold = True

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

43

Wykorzystanie obiektu FileSearch

Właściwość lub metoda

Opis działania

FileName

Nazwa pliku do wyszukania (możliwe do stosowania znaki
wzorców)

FoundFile

Zwraca obiekt zawierający nazwy znalezionych plików

LookIn

Katalog do wyszukiwania

SearchSubFolder

True, jeśli mają być przeszukiwane podkatalogi

Execute

Wykonuje operację wyszukiwania

NewSearch

Resetuje obiekt FileSearch

Function

PlikIstnieje(path, fname) As Boolean

With Application.FileSearch

.NewSearch

.FileName

= fname

.LookIn

= path

.Execute

PlikIstnieje = .FoundFiles.Count = 1

End With

End Function

Kod

Sprawdzenie czy plik istnieje

(od

Office 97

) ?

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

44

Lista plików z zastosowaniem FileSearch

Sub

ListaPlikow2(Directory As String)

Dim

r As Integer

r = 1

'Wstawianie i formatowanie nagłówków

Cells.ClearContents

Cells

(r, 1).Value = "Nazwa pliku"

Cells

(r, 2).Value = "Rozmiar"

Cells

(r, 3).Value = "Data/Godzina"

Range

("A1:C1").Font.Bold = True

r = r + 1

With Application.FileSearch

.NewSearch
.LookIn = Directory
.FileName = ”*.*”
.SearchSubFolders = False
.Execute

For

i = 1 To .FoundFiles.Count

Cells

(r, 1).Value = .FoundFiles(i)

Cells

(r, 2).Value = FileLen(.FoundFiles(i))

Cells

(r, 3).Value = FileDateTime(.FoundFiles(i))

r = r + 1

Next i

End With

End Sub

Kod

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

45

Obsługa błędów w VBA

Rodzaj błędu

Opis

Składniowy

Nieprawidłowe wpisanie instrukcji. Są wychwytywane w trakcie
pisania instrukcji lub podczas pierwszego uruchomienia procedury.
Nieprawidłowa instrukcja zostaje podświetlona lub zostaje
wyświetlone okno informacyjne.

Wykonania

Mogą wystąpić mimo poprawnego napisania instrukcji. Powodem
wystąpienia może być np. wprowadzenie łańcucha zamiast liczby,
brak dyskietki w napędzie, podanie niewłaściwej ścieżki dostępu
do pliku lub nieprawidłowej wartości liczbowej.

Logiczny

Otrzymanie błędnego wyniku. Wina najczęściej leży po stronie
programisty. Nieprzewidziana operacja lub zastosowanie złej logiki
w odniesieniu do algorytmu programu komputerowego.

Najczęściej stosowane narzędzia przy obsłudze błędów:

On Error, Resume, obiekt Err

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

46

Obsługa błędów w VBA c.d.

Przykład wygenerowanego błędu podczas działania procedury:

Public Sub

Blad1()

Dim

a, b, c

a = InputBox("Podaj wartość a: ")
b = InputBox("Podaj wartość b: ")

c = a / b: MsgBox "Wynik obliczeń: " & c

End Sub

Przykład wygenerowanego błędu podczas działania procedury:

Public Sub

Blad1()

Dim

a, b, c

a = InputBox("Podaj wartość a: ")
b = InputBox("Podaj wartość b: ")

c = a / b: MsgBox "Wynik obliczeń: " & c

End Sub

Kod

P

Numer wygenerowanego błędu

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

47

Obsługa błędów w VBA c.d.

Zastosowanie instrukcji On Error w zabezpieczeniu przed błędami:

Public Sub

Blad2()

Dim

a, b, c

On Error GoTo

Blad

a = InputBox("Podaj wartość a: ")
b = InputBox("Podaj wartość b: ")

c = a / b: MsgBox "Wynik obliczeń: " & c
Exit Sub

Blad:

MsgBox

"Uwaga! Dzielenie przez zero!"

End Sub

Zastosowanie instrukcji On Error w zabezpieczeniu przed błędami:

Public Sub

Blad2()

Dim

a, b, c

On Error GoTo

Blad

a = InputBox("Podaj wartość a: ")
b = InputBox("Podaj wartość b: ")

c = a / b: MsgBox "Wynik obliczeń: " & c
Exit Sub

Blad:

MsgBox

"Uwaga! Dzielenie przez zero!"

End Sub

P

Kod

Zabezpieczenie przed wszystkimi błędami.

Komunikat w ogólności może być nieprawidłowy.

W chwili błędu, wyjście z

podprogramu.

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

48

Obsługa błędów w VBA c.d.

Zastosowanie instrukcji Resume przy powrocie do miejsca błędu:

Public Sub

Blad3()

Dim

a, b, c

On Error GoTo

Blad

a = InputBox("Podaj wartość a: ")
b = InputBox("Podaj wartość b: ")

c = a / b: MsgBox "Wynik obliczeń: " & c
Exit Sub

Blad:

MsgBox

"Uwaga! Dzielenie przez zero!„

b = 1: Resume

End Sub

Zastosowanie instrukcji Resume przy powrocie do miejsca błędu:

Public Sub

Blad3()

Dim

a, b, c

On Error GoTo

Blad

a = InputBox("Podaj wartość a: ")
b = InputBox("Podaj wartość b: ")

c = a / b: MsgBox "Wynik obliczeń: " & c
Exit Sub

Blad:

MsgBox

"Uwaga! Dzielenie przez zero!„

b = 1: Resume

End Sub

Kod

Można zastosować jedną z trzech odmian instrukcji Resume:

Resume
Resume Next
Resume etykieta

Skok w miejsce błędu.
Skok do następnej linii za miejscem błędu.
Skok do dowolnej linii od chwili obsłużenia błędu.

P

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

49

Obsługa błędów w VBA c.d.

Zastosowanie instrukcji (Resume etykieta) przy powrocie do miejsca błędu:

Public Sub

Blad4()

Dim

a, b, c

On Error GoTo

Blad

a = InputBox("Podaj wartość a: ")

Wartosc_b:

b = InputBox("Podaj wartość b: ")

c = a / b: MsgBox "Wynik obliczeń: " & c
Exit Sub

Blad:

MsgBox

"Uwaga! Dzielenie przez zero!"

Resume

Wartosc_b

End Sub

Zastosowanie instrukcji (Resume etykieta) przy powrocie do miejsca błędu:

Public Sub

Blad4()

Dim

a, b, c

On Error GoTo

Blad

a = InputBox("Podaj wartość a: ")

Wartosc_b:

b = InputBox("Podaj wartość b: ")

c = a / b: MsgBox "Wynik obliczeń: " & c
Exit Sub

Blad:

MsgBox

"Uwaga! Dzielenie przez zero!"

Resume

Wartosc_b

End Sub

Kod

P

Skok do etykiety przed linią pobierającą dane (ponowne wykonanie kilku poleceń).

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

50

Obsługa błędów w VBA c.d.

Samodzielne definiowanie błędów w przestrzeni numeracyjnej od 1001 do 65535:

Public Sub

Blad5()

Dim

a, b, c

On Error GoTo

Blad

a = InputBox("Podaj wartość a: ")

Wartosc_b:

b = InputBox("Podaj wartość b: ")
If

b = 0 Then Err.Raise 1111,, _

”Wprowadź liczbę różną od zera!”

c = a / b: MsgBox "Wynik obliczeń: " & c
Exit Sub

Blad:

If Err

= 1111 Then

MsgBox Err.Description
Resume

Wartosc_b

End If

End Sub

Samodzielne definiowanie błędów w przestrzeni numeracyjnej od 1001 do 65535:

Public Sub

Blad5()

Dim

a, b, c

On Error GoTo

Blad

a = InputBox("Podaj wartość a: ")

Wartosc_b:

b = InputBox("Podaj wartość b: ")
If

b = 0 Then Err.Raise 1111,, _

”Wprowadź liczbę różną od zera!”

c = a / b: MsgBox "Wynik obliczeń: " & c
Exit Sub

Blad:

If Err

= 1111 Then

MsgBox Err.Description
Resume

Wartosc_b

End If

End Sub

P

Zastosowanie obiektu Err oraz jego metody

Raise z argumentem Description.

Kod

background image

Kod VBA - Podstawy

Visual Basic dla Aplikacji

© Ζ.Ζ.

51

Obsługa błędów w VBA c.d.

Stworzenie uniwersalnego programu obsługi błędów:

Public Sub

Blad6()

Dim

a, b, c

On Error GoTo

Blad

a = InputBox("Podaj wartość a: ")

Wartosc_b:

b = InputBox("Podaj wartość b: ")

c = a / b: MsgBox "Wynik obliczeń: " & c

Exit Sub

Blad:

MsgBox

"Nr błędu: " & Err.Number & _

Chr

(13) & "Opis błędu: " & _

Err.Description

Resume

Wartosc_b

End Sub

Stworzenie uniwersalnego programu obsługi błędów:

Public Sub

Blad6()

Dim

a, b, c

On Error GoTo

Blad

a = InputBox("Podaj wartość a: ")

Wartosc_b:

b = InputBox("Podaj wartość b: ")

c = a / b: MsgBox "Wynik obliczeń: " & c

Exit Sub

Blad:

MsgBox

"Nr błędu: " & Err.Number & _

Chr

(13) & "Opis błędu: " & _

Err.Description

Resume

Wartosc_b

End Sub

P

Kod


Wyszukiwarka

Podobne podstrony:
VBA Podstawy cz II
VBA Podstawy cz I
Podstawowe pojęcia programowania na przykładzie VBA
Podstawowe zasady udzielania pomocy przedlekarskiej rany i krwotoki
Farmakologia pokazy, Podstawy Farmakologii Ogólnej (W1)
Podstawy fizyczne
CZLOWIEK I CHOROBA – PODSTAWOWE REAKCJE NA
Podstawy elektroniki i miernictwa2
podstawy konkurencyjnosci
KOROZJA PODSTAWY TEORETYCZNE I SPOSOBY ZAPOBIEGANIA
PODSTAWOWE ZABIEGI RESUSCYTACYJNE (BLS) U DZIECI
01 E CELE PODSTAWYid 3061 ppt
Epidemiologia jako nauka podstawowe założenia
PODSTAWY STEROWANIA SILNIKIEM INDUKCYJNYM
06 Podstawy syntezy polimerówid 6357 ppt
4 socjalizacja jako podstawowy proces spoeczny
Podstawy MN 2007

więcej podobnych podstron