VBA Podstawy cz II

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


Document Outline


Wyszukiwarka

Podobne podstrony:
Podstawy 1 cz 1 II
VBA Podstawy cz I
Podstawy Pedagogiki Specjalnej cz II oligo B
Podstawy Pedagogiki Specjalnej cz II oligo C
(15)Syst.rz-d. Cz. II, Prawne podstawy bezpieczeństwa państwa
Podstawy edytorstwa wykład cz II
Zadania podstawy cz. 1do wydruku, WSFiZ - Zarządzanie, II semestr, Podstawy rachunkowości, dr Rafał
podstawy wnioskowania cz II
W -- Zwiazki karbonylowe cz. II, podstawy chemii organicznej
Podstawy Pedagogiki Specjalnej cz II oligo D
Materiały z wykładu przedmiotu Podstawy działalnosci gospodarczej statystyka cz II
Podstawowe węzły wspinaczkowe cz II
Podstawy Pedagogiki Specjalnej cz II oligo B
Podstawy Pedagogiki Specjalnej cz II oligo C
Podstawy doboru wyłączników różnicowoprądowych cz II

więcej podobnych podstron