#Dyrektywa Const - przykład

W tym przykładzie wykorzystano dyrektywę #Const do zadeklarowania warunkowych stałych kompilacji wykorzystywanych w konstrukcjach #If...#Else...#End If.

#Const DebugVersion = 1	' Dla dyrektywy #If

' przyjmie wartość True.


#If...Then...#Else - przykład

W tym przykładzie konstrukcja #If...Then...#Else odwołuje się do warunkowych stałych kompilacji w celu określenia, czy pewne instrukcje powinny zostać uwzględnione w kompilacji.

' Jeśli warunkowa stała Mac przyjmuje wartość True,

' wykonaj instrukcje w bloku dyrektywy #If.

#If Mac Then

'.W tym miejscu należy umieścić instrukcje dla

' komputera Macintosh.

'.

'.

' W przeciwnym razie, jeśli to jest 32-bitowy program

' dla Windows, wykonaj poniższe instrukcje:

#ElseIf Win32 Then

'.W tym miejscu należy umieścić instrukcje dla

' Windows.

'.

'.

' Jeśli to nie jest ani Macintosh, ani Windows, wykonaj

' poniższe instrukcje.

#Else

'.W tym miejscu należy umieścić instrukcje dla

' innej platformy.

'.

'.

#End If


#Const - dyrektywa

Stosowana do definiowania warunkowej stałej kompilatora dla Visual Basic.

Składnia

#Const nazwa_stałej = wyrażenie

Składnia dyrektywy kompilatora #Const zawiera następujące elementy:

Element	Opis
nazwa_ stałej	Element obowiązkowy typu Variant (String). Jest to nazwa stałej, która musi być zgodna ze standardową konwencją nazewnictwa zmiennej.
wyrażenie	Element obowiązkowy. Literał, inna warunkowa stała kompilatora lub dowolna kombinacja zawierająca wybrane bądź wszystkie operatory arytmetyczne lub logiczne oprócz Is.
Użycie

Warunkowe stałe kompilatora są zawsze typu Private w module, w którym występują. Przy użyciu dyrektywy #Const nie można utworzyć stałej kompilatora typu Public. Stałe kompilatora typu Public mogą być tworzone tylko w interfejsie użytkownika.

W wyrażeniu mogą zostać użyte tylko warunkowe stałe kompilatora i literały. Zastosowanie standardowej stałej zdefiniowanej za pomocą Const lub stałej nie zdefiniowanej powoduje błąd. Na odwrót, stałe zdefiniowane przy użyciu słowa kluczowego #Const mogą być stosowane tylko dla kompilacji warunkowej.

Warunkowe stałe kompilatora są zawsze wyliczane na poziomie modułu, niezależnie od ich położenia w kodzie programu.


#If...Then...#Else - dyrektywa

Kompiluje warunkowo wybrane bloki kodu Visual Basic.

Składnia

#If wyrażenie Then

instrukcje

[#ElseIf wyrażenie-n Then

[instrukcje_elseif]]

[#Else

[instrukcje_else]]

#End If

Dyrektywa #If...Then...#Else ma następujące elementy:

Element	Opis
wyrażenie	Element obowiązkowy. Jest to dowolne wyrażenie, które składa się wyłącznie z jednej lub wielu warunkowych stałych kompilatora, literałów i operatorów, które po wyliczeniu dają w wyniku wartość True lub False.
instrukcje	Element obowiązkowy. Wiersze programu w języku Visual Basic lub dyrektywy kompilatora, które są wykonywane, jeśli skojarzone z dyrektywą wyrażenie ma wartość True.
wyrażenie-n	Element nieobowiązkowy. Dowolne wyrażenie, które składa się z jednej lub wielu warunkowych stałych kompilatora, literałów i operatorów, które po wyliczeniu dają w wyniku wartość True lub False.
instrukcje_elseif	Element nieobowiązkowy. Jeden lub wiele wierszy programu lub dyrektyw kompilatora, które są wykonywane, jeśli wyrażenie-n ma wartość True.
instrukcje_else	Element nieobowiązkowy. Jeden lub wiele wierszy programu lub dyrektyw kompilatora, które są wykonywane, jeśli żadne z poprzednich wyrażeń i wyrażeń-n nie ma wartości True.
Użycie

Działanie dyrektywy #If...Then...#Else jest takie samo, jak instrukcji If...Then...Else poza tym, że nie istnieje jednowierszowa postać dyrektyw #If, #Else, #ElseIf ani #End If. Oznacza to, że żaden inny kod nie może pojawić się w tym samym wierszu, co dowolna z tych dyrektyw. Kompilacja warunkowa jest zazwyczaj wykorzystywana do kompilacji tego samego programu na różne platformy. Jest także stosowana do pomijania w pliku wykonywalnym kodu programu służącego do śledzenia programu. Kod programu wyłączony podczas kompilacji warunkowej jest całkowicie pomijany i nie ma żadnego odzwierciedlenia w wynikowym wykonywalnym pliku, w związku z czym nie wpływa na jego rozmiar lub efektywność.

Niezależnie od wyniku dowolnego porównania, obliczane są wszystkie wyrażenia. Stąd wszystkie stałe użyte w wyrażeniach muszą być zdefiniowane—każda nie zdefiniowana stała ma wartość Empty.

Uwaga   Instrukcja Option Compare nie wpływa na wyrażenia w dyrektywach #If i #ElseIf. Wyrażenia w dyrektywie warunkowej kompilatora są zawsze obliczane z włączoną opcją Option Compare Text.


Stałe języka Visual Basic

W celu ułatwienia programowania systemie Visual Basic for Applications zdefiniowano poniższe stałe. Mogą być one stosowane w dowolnym miejscu kodu programu zamiast rzeczywistych wartości:

Stałe dotyczące kalendarza

Stałe dla kolorów

Stałe kompilatora

Stałe związane z datą

Stałe funkcji Dir, GetAttr i SetAttr

Stałe statusu IME

Stałe funkcji Instr i StrComp

Stałe dla kodów klawiszy

Różne stałe

Stałe funkcji MsgBox

Stałe funkcji QueryClose

Stałe funkcji Shell

Stałe funkcji StrConv

Stałe dla kolorów systemowych

Stałe VarType


Stałe dotyczące kalendarza

Poniższe stałe mogą być stosowane w dowolnym miejscu kodu programu zamiast rzeczywistych wartości:

Stała	Wartość	Opis
vbCalGreg	0	Sygnalizuje, że jest stosowany kalendarz gregoriański.
vbCalHijri	1	Sygnalizuje, że jest stosowany kalendarz Hijri.


Stałe kompilatora

Visual Basic for Applications definiuje stałe do wyłącznego użytku z dyrektywą #If...Then...#Else. Stałe te są funkcjonalnie równoważne stałym definiowanym przez dyrektywę #If...Then...#Else poza tym, że mają one zakres globalny, czyli mogą wystąpić w dowolnym miejscu projektu.

Dla platformy 16-bitowej stałe kompilatora zdefiniowane są następująco:

Stała	Wartość	Opis
Win16	True	Sygnalizuje środowisko 16-bitowe.
Win32	False	Sygnalizuje, że środowisko nie jest 32-bitowe.
Dla platformy 32-bitowej stałe kompilatora zdefiniowane są następująco:

Stała	Wartość	Opis
Win16	False	Sygnalizuje, że środowisko nie jest 16-bitowe.
Win32	True	Sygnalizuje środowisko 32-bitowe.
Uwaga   Powyższe stałe są udostępniane przez Visual Basic, dlatego nie można na żadnym poziomie definiować własnych stałych o takich samych nazwach.


Stałe związane z datą

Poniższe stałe mogą być użyte w dowolnym miejscu kodu programu zamiast ich rzeczywistych wartości:

Wartości argumentów

Argument pierwszy_dzień_tygodnia może przyjmować następujące wartości:

Stała	Wartość	Opis
vbUseSystem	0	Zastosuj ustawienia NLS API.
vbSunday	1	Niedziela (domyślnie)
vbMonday	2	Poniedziałek
vbTuesday	3	Wtorek
vbWednesday	4	Środa
vbThursday	5	Czwartek
vbFriday	6	Piątek
vbSaturday	7	Sobota
Argument pierwszy_dzień_roku może przyjmować następujące wartości:

Stała	Wartość	Opis
vbUseSystem	0	Zastosuj ustawienia NLS API.
VbFirstJan1	1	Zacznij od tygodnia, w którym występuje 1 stycznia (domyślnie).
vbFirstFourDays	2	Zacznij od pierwszego tygodnia, w którym co najmniej 4 dni są w nowym roku.
vbFirstFullWeek	3	Zacznij od pierwszego pełnego tygodnia roku.
Wartości zwracane

Stała	Wartość	Opis
vbSunday	1	Niedziela
vbMonday	2	Poniedziałek
vbTuesday	3	Wtorek
vbWednesday	4	Środa
vbThursday	5	Czwartek
vbFriday	6	Piątek
vbSaturday	7	Sobota


Stałe funkcji Dir, GetAttr i SetAttr

Poniższe stałe mogą być użyte w dowolnym miejscu kodu programu zamiast ich rzeczywistych wartości:

Stała	Wartość	Opis
vbNormal	0	Zwykły (domyślnie dla Dir i SetAttr)
vbReadOnly	1	Tylko do odczytu
vbHidden	2	Ukryty
vbSystem	4	Plik systemowy
vbVolume	8	Etykieta dysku
vbDirectory	16	Katalog lub folder
vbArchive	32	Od ostatniego składowania plik był modyfikowany


Stałe statusu IME

Poniższe stałe mogą być użyte w dowolnym miejscu kodu programu zamiast ich rzeczywistych wartości.

Stałe dla japońskich ustawień regionalnych japońskiego są następujące:

Stała	Wartość	Opis
vbIMENoOp	0	Brak zainstalowanego IME
vbIMEOn	1	IME włączone
vbIMEOff	2	IME wyłączone
vbIMEDisable	3	IME nieaktywne
vbIMEHiragana	4	Znaki dwubajtowe Hiragana (DBC)
vbIMEKatakanaDbl	5	Katakana DBC
vbIMEKatakanaSng	6	Jednobajtowe znaki Katakana (SBC)
vbIMEAlphaDbl	7	DBC alfanumeryczne
vbIMEAlphaSng	8	SBC alfanumeryczne
Stałe dla języka chińskiego (w wersji tradycyjnej i uproszczonej) są następujące:

Stała	Wartość	Opis
vbIMENoOp	0	Brak zainstalowanego IME
vbIMEOn	1	IME włączone
vbIMEOff	2	IME wyłączone
Dla języka koreańskiego pierwsze pięć bitów zwracanej wartości jest ustawione jak poniżej:

Bit	Wartość	Opis	Wartość	Opis
0	0	Brak zainstalowanego IME	1	IME zainstalowane
1	0	IME nieaktywne	1	IME aktywne
2	0	Tryb angielski IME	1	Tryb Hangeul
3	0	Tryb Banja (SBC)	1	Tryb Junja (DBC)
4	0	Tryb zwykły	1	Tryb konwersji Hanja


Stałe funkcji Instr i StrComp

Poniższe stałe są zdefiniowane w bibliotece typów systemu Visual Basic for Applications i mogą być użyte w dowolnym miejscu kodu programu zamiast ich rzeczywistych wartości:

Stała	Wartość	Opis
vbBinaryCompare	0	Wykonuje porównanie binarne.
vbTextCompare	1	Wykonuje porównanie tekstowe.
vbDatabaseCompare	2	W systemie Microsoft Access, wykonuje porównanie w oparciu o informacje zawarte w bazie danych.


Różne stałe

Poniższe stałe są zdefiniowane w bibliotece typów systemu Visual Basic for Applications i mogą być użyte w dowolnym miejscu kodu programu zamiast ich rzeczywistych wartości:

Stała	Równoważnik	Opis
vbCrLf	Chr(13) + Chr(10)	Połączenie znaku powrotu karetki ze znakiem przejścia do nowego wiersza
vbCr	Chr(13)	Znak powrotu karetki
vbLf	Chr(10)	Znak nowego wiersza
vbNewLine	Chr(13) + Chr(10) lub Chr(13)	Znak nowego wiersza, wybierany w zależności od platformy
vbNullChar	Chr(0)	Znak o wartości 0
vbNullString	Ciąg o wartości 0	To nie jest to samo, co ciąg znaków o zerowej długości (""); stosowany przy wywoływaniu procedur zewnętrznych
vbTab	Chr(9)	Znak tabulacji
vbBack	Chr(8)	Znak Backspace
vbFormFeed	Chr(12)	Nie stosowane w Microsoft Windows
vbVerticalTab	Chr(11)	Nie stosowane w Microsoft Windows


Stałe funkcji MsgBox

Poniższe stałe mogą być użyte w dowolnym miejscu kodu programu zamiast ich rzeczywistych wartości:

Argumenty funkcji MsgBox

Stała	Wartość	Opis
vbOKOnly	0	Tylko przycisk OK (domyślnie)
vbOKCancel	1	Przyciski OK i Anuluj
vbAbortRetryIgnore	2	Przyciski Przerwij, Ponów i Ignoruj
vbYesNoCancel	3	Przyciski Tak, Nie i Anuluj
vbYesNo	4	Przyciski Tak i Nie
vbRetryCancel	5	Przyciski Ponów i Anuluj
vbCritical	16	Komunikat krytyczny
vbQuestion	32	Pytanie ostrzegawcze
vbExclamation	48	Komunikat ostrzegawczy
vbInformation	64	Komunikat informacyjny
vbDefaultButton1	0	Jako domyślny ustawiony jest pierwszy przycisk (domyślnie)
vbDefaultButton2	256	Jako domyślny ustawiony jest drugi przycisk
vbDefaultButton3	512	Jako domyślny ustawiony jest trzeci przycisk
vbDefaultButton4	768	Jako domyślny ustawiony jest czwarty przycisk
vbApplicationModal	0	Okno komunikatu modalne dla aplikacji (domyślnie)
vbSystemModal	4096	Okno komunikatu modalne dla systemu
Wartości zwracane przez funkcję MsgBox

Stała	Wartość	Opis
vbOK	1	Naciśnięto przycisk OK
vbCancel	2	Naciśnięto przycisk Anuluj
vbAbort	3	Naciśnięto przycisk Przerwij
vbRetry	4	Naciśnięto przycisk Ponów
vbIgnore	5	Naciśnięto przycisk Ignoruj
vbYes	6	Naciśnięto przycisk Tak
vbNo	7	Naciśnięto przycisk Nie


Stałe funkcji Shell

Poniższe stałe mogą być użyte w dowolnym miejscu kodu programu zamiast ich rzeczywistych wartości:

Stała	Wartość	Opis
vbHide	0	Okno jest ukrywane, a fokus jest przekazywany do ukrytego okna.
vbNormalFocus	1	Okno posiada fokus i jest przywracane do swego oryginalnego rozmiaru i położenia.
vbMinimizedFocus	2	Okno jest wyświetlane jako ikona z fokusem.
vbMaximizedFocus	3	Okno jest maksymalizowane z fokusem.
vbNormalNoFocus	4	Okno jest przywracane do swego ostatniego rozmiaru i położenia. Aktualne okno aktywne pozostaje aktywne.
vbMinimizeNoFocus	6	Okno jest wyświetlane jako ikona. Aktualne okno aktywne pozostaje aktywne.


Stałe funkcji StrConv

Poniższe stałe mogą być użyte w dowolnym miejscu kodu programu zamiast ich rzeczywistych wartości:

Stała	Wartość	Opis
vbUpperCase	1	Zamienia w ciągu znaków litery na wielkie.
vbLowerCase	2	Zamienia w ciągu znaków litery na małe.
vbProperCase	3	Zamienia w ciągu znaków pierwszą literę każdego wyrazu na wielką.
vbWide	4	Zamienia w ciągu znaki wąskie (jednobajtowe) na znaki szerokie (dwubajtowe). Dotyczy ustawień regionalnych dalekowschodnich.
vbNarrow	8	Zamienia w ciągu znaki szerokie (dwubajtowe) na znaki wąskie (jednobajtowe). Dotyczy wersji dalekowschodnich.
vbKatakana	16	Zamienia w ciągu znaki Hiragana na znaki Katakana. Dotyczy tylko wersji japońskiej.
vbHiragana	32	Zamienia w ciągu znaki Katakana na znaki Hiragana. Dotyczy tylko wersji japońskiej.
vbUnicode	64	Zamienia ciąg znaków na Unicode, stosując domyślną stronę kodową systemu.
vbFromUnicode	128	Zamienia ciąg znaków z Unicode na domyślną stronę kodową systemu.


Stałe VarType

Poniższe stałe mogą być użyte w dowolnym miejscu kodu programu zamiast ich rzeczywistych wartości:

Stała	Wartość	Opis
vbEmpty	0	Nie zainicjowana (domyślnie)
vbNull	1	Nie zawiera poprawnych danych
vbInteger	2	Liczba typu Integer
vbLong	3	Liczba całkowita długa
vbSingle	4	Liczba zmiennoprzecinkowa pojedynczej precyzji
vbDouble	5	Liczba zmiennoprzecinkowa podwójnej precyzji
vbCurrency	6	Typ Currency
vbDate	7	Typ Date
vbString	8	Typ String
vbObject	9	Obiekt
vbError	10	Błąd
vbBoolean	11	Typ Boolean
vbVariant	12	Typ Variant (używany tylko dla tablic elementów typu Variant)
vbDataObject	13	Obiekt dostępu do danych
vbDecimal	14	Typ Decimal
vbByte	17	Typ Byte
vbArray	8192	Tablica


Stałe dla kolorów

Poniższe stałe mogą być stosowane w dowolnym miejscu kodu programu zamiast rzeczywistych wartości:

Stała	Wartość	Opis
vbBlack	0x0	Czarny
vbRed	0xFF	Czerwony
vbGreen	0xFF00	Zielony
vbYellow	0xFFFF	Żółty
vbBlue	0xFF0000	Niebieski
vbMagenta	0xFF00FF	Purpurowy
vbCyan	0xFFFF00	Błękitny
vbWhite	0xFFFFFF	Biały


Stałe dla kodów klawiszy

Poniższe stałe mogą być stosowane w dowolnym miejscu kodu programu zamiast rzeczywistych wartości:

Stała	Wartość	Opis
vbKeyLButton	0x1	Lewy przycisk myszy
vbKeyRButton	0x2	Prawy przycisk myszy
vbKeyCancel	0x3	Klawisz CANCEL
vbKeyMButton	0x4	Środkowy przycisk myszy
vbKeyBack	0x8	Klawisz BACKSPACE
vbKeyTab	0x9	Klawisz TAB
vbKeyClear	0xC	Klawisz CLEAR
vbKeyReturn	0xD	Klawisz ENTER
vbKeyShift	0x10	Klawisz SHIFT
vbKeyControl	0x11	Klawisz CTRL
vbKeyMenu	0x12	Klawisz MENU
vbKeyPause	0x13	Klawisz PAUSE
vbKeyCapital	0x14	Klawisz CAPS LOCK
vbKeyEscape	0x1B	Klawisz ESC
vbKeySpace	0x20	Klawisz SPACJA
vbKeyPageUp	0x21	Klawisz PAGE UP
vbKeyPageDown	0x22	Klawisz PAGE DOWN
vbKeyEnd	0x23	Klawisz END
vbKeyHome	0x24	Klawisz HOME
vbKeyLeft	0x25	Klawisz STRZAŁKA W LEWO
vbKeyUp	0x26	Klawisz STRZAŁKA W GÓRĘ
vbKeyRight	0x27	Klawisz STRZAŁKA W PRAWO
vbKeyDown	0x28	Klawisz STRZAŁKA W DÓŁ
vbKeySelect	0x29	Klawisz SELECT
vbKeyPrint	0x2A	Klawisz PRINT SCREEN
vbKeyExecute	0x2B	Klawisz EXECUTE
vbKeySnapshot	0x2C	Klawisz SNAPSHOT
vbKeyInsert	0x2D	Klawisz INSERT
vbKeyDelete	0x2E	Klawisz DELETE
vbKeyHelp	0x2F	Klawisz HELP
vbKeyNumlock	0x90	Klawisz NUM LOCK
Klawisze od A do Z mają takie same wartości, jak odpowiadające im znaki ze zbioru znaków ASCII:

Stała	Wartość	Opis
vbKeyA	65	Klawisz A
vbKeyB	66	Klawisz B
vbKeyC	67	Klawisz C
vbKeyD	68	Klawisz D
vbKeyE	69	Klawisz E
vbKeyF	70	Klawisz F
vbKeyG	71	Klawisz G
vbKeyH	72	Klawisz H
vbKeyI	73	Klawisz I
vbKeyJ	74	Klawisz J
vbKeyK	75	Klawisz K
vbKeyL	76	Klawisz L
vbKeyM	77	Klawisz M
vbKeyN	78	Klawisz N
vbKeyO	79	Klawisz O
vbKeyP	80	Klawisz P
vbKeyQ	81	Klawisz Q
vbKeyR	82	Klawisz R
vbKeyS	83	Klawisz S
vbKeyT	84	Klawisz T
vbKeyU	85	Klawisz U
vbKeyV	86	Klawisz V
vbKeyW	87	Klawisz W
vbKeyX	88	Klawisz X
vbKeyY	89	Klawisz Y
vbKeyZ	90	Klawisz Z
Klawisze od 0 do 9 mają takie same wartości, jak odpowiadające im znaki ze zbioru znaków ASCII:

Stała	Wartość	Opis
vbKey0	48	Klawisz 0
vbKey1	49	Klawisz 1
vbKey2	50	Klawisz 2
vbKey3	51	Klawisz 3
vbKey4	52	Klawisz 4
vbKey5	53	Klawisz 5
vbKey6	54	Klawisz 6
vbKey7	55	Klawisz 7
vbKey8	56	Klawisz 8
vbKey9	57	Klawisz 9
Poniższe stałe reprezentują klawisze z klawiatury numerycznej:

Stała	Wartość	Opis
vbKeyNumpad0	0x60	Klawisz 0
vbKeyNumpad1	0x61	Klawisz 1
vbKeyNumpad2	0x62	Klawisz 2
vbKeyNumpad3	0x63	Klawisz 3
vbKeyNumpad4	0x64	Klawisz 4
vbKeyNumpad5	0x65	Klawisz 5
vbKeyNumpad6	0x66	Klawisz 6
vbKeyNumpad7	0x67	Klawisz 7
vbKeyNumpad8	0x68	Klawisz 8
vbKeyNumpad9	0x69	Klawisz 9
vbKeyMultiply	0x6A	Klawisz znaku mnożenia (*)
vbKeyAdd	0x6B	Klawisz znaku dodawania (+)
vbKeySeparator	0x6C	Klawisz ENTER
vbKeySubtract	0x6D	Klawisz znaku odejmowania (–)
vbKeyDecimal	0x6E	Klawisz kropki dziesiętnej (.)
vbKeyDivide	0x6F	Klawisz znaku dzielenia (/)
Poniższe stałe reprezentują klawisze funkcyjne:

Stała	Wartość	Opis
vbKeyF1	0x70	Klawisz F1
vbKeyF2	0x71	Klawisz F2
vbKeyF3	0x72	Klawisz F3
vbKeyF4	0x73	Klawisz F4
vbKeyF5	0x74	Klawisz F5
vbKeyF6	0x75	Klawisz F6
vbKeyF7	0x76	Klawisz F7
vbKeyF8	0x77	Klawisz F8
vbKeyF9	0x78	Klawisz F9
vbKeyF10	0x79	Klawisz F10
vbKeyF11	0x7A	Klawisz F11
vbKeyF12	0x7B	Klawisz F12
vbKeyF13	0x7C	Klawisz F13
vbKeyF14	0x7D	Klawisz F14
vbKeyF15	0x7E	Klawisz F15
vbKeyF16	0x7F	Klawisz F16


Stałe funkcji QueryClose

Poniższe stałe mogą być stosowane w dowolnym miejscu kodu programu zamiast rzeczywistych wartości:

Stała	Wartość	Opis
vbFormControlMenu	0	Użytkownik wybrał polecenie Zamknij z menu sterowania formularza.
vbFormCode	1	W kodzie programu wywołano instrukcję Unload.
vbAppWindows	2	Kończy się bieżąca sesja systemu Microsoft Windows.
vbAppTaskManager	3	Menedżer zadań systemu Windows zamyka aplikację.
vbFormMDIForm	4	Formularz podrzędny wobec MDI jest zamykany, gdyż jest zamykany formularz typu MDI. Stała nie obsługiwana dla obiektu UserForm.


Stałe dla kolorów systemowych

Poniższe stałe mogą być stosowane w dowolnym miejscu kodu programu zamiast rzeczywistych wartości:

Stała	Wartość	Opis
vbScrollBars	0x80000000	Kolor paska przewijania
vbDesktop	0x80000001	Kolor pulpitu
vbActiveTitleBar	0x80000002	Kolor paska tytułu w aktywnym oknie
vbInactiveTitleBar	0x80000003	Kolor paska tytułu w nieaktywnym oknie
vbMenuBar	0x80000004	Kolor tła menu
vbWindowBackground	0x80000005	Kolor tła okna
vbWindowFrame	0x80000006	Kolor ramki okna
vbMenuText	0x80000007	Kolor tekstu w menu
vbWindowText	0x80000008	Kolor tekstu w oknie
vbTitleBarText	0x80000009	Kolor tekstu w tytule, polu rozmiaru i strzałce przewijania
vbActiveBorder	0x8000000A	Kolor obramowania aktywnego okna
vbInactiveBorder	0x8000000B	Kolor obramowania nieaktywnego okna
vbApplicationWorkspace	0x8000000C	Kolor tła aplikacji z interfejsem wielodokumentowym (MDI)
vbHighlight	0x8000000D	Kolor tła elementów zaznaczonych w formancie
vbHighlightText	0x8000000E	Kolor tekstu elementów zaznaczonych w formancie
vbButtonFace	0x8000000F	Kolor cienia na powierzchni przycisków poleceń
vbButtonShadow	0x80000010	Kolor cienia na krawędziach przycisków poleceń
vbGrayText	0x80000011	Kolor tekstu nieaktywnego (przyciemnionego)
vbButtonText	0x80000012	Kolor tekstu na przyciskach
vbInactiveCaptionText	0x80000013	Kolor tekstu w nieaktywnym tytule
vb3DHighlight	0x80000014	Kolor zaznaczonych elementów trójwymiarowych
vb3DDKShadow	0x80000015	Najciemniejszy kolor cienia elementów trójwymiarowych
vb3DLight	0x80000016	Drugi pod względem jasności po vb3DHighlight kolor elementów trójwymiarowych
vbInfoText	0x80000017	Kolor tekstu etykietek narzędziowych
vbInfoBackground	0x80000018	Kolor tła etykietek narzędziowych


Instrukcja Call - przykład

W tym przykładzie pokazano sposób użycia instrukcji Call do przekazania sterowania do procedury typu Sub, do funkcji wewnętrznej, do procedury z biblioteki dołączanej dynamicznie (DLL) oraz do procedury zasobu programowego komputera Macintosh.

' Wywołaj procedurę typu Sub.

Call DrukAnaliza("Pozdrawiam wszystkich")

' Powyższa instrukcja powoduje przekazanie sterowania

' do procedury typu Sub występującej poniżej.

Sub DrukAnaliza(Ciąg)

Debug.Print Ciąg	' Drukuj w oknie Analiza programu.

End Sub

' Wywołaj funkcję wewnętrzną. Wartość zwracana przez

' funkcję jest ignorowana.

Call Shell(NazwaProg, 1)	' Zmienna NazwaProg zawiera

' ścieżkę dostępu do pliku

' wykonywalnego.

' Wywołaj procedurę z biblioteki typu Microsoft Windows

' DLL. Instrukcja Declare musi być typu Private w

' module klasy, ale nie w module standardowym.

Private Declare Sub MessageBeep _

Lib "User" (ByVal N As Integer)

Sub WołajDll()

Call MessageBeep(0)	' Wywołaj procedurę z

' biblioteki Windows DLL.

MessageBeep 0	' Wywołaj ponownie tę procedurę, ale

 	' bez użycia słowa kluczowego Call.

End Sub

' Wywołaj zasób programowy komputera Macintosh.

Declare Sub MessageAlert Lib "MyHd:MyAlert" _

Alias "MyAlert" (ByVal N As Integer)

Sub WołajZasóbProg()

Call MessageAlert(0)	' Wywołaj zasób programowy

' komputera Macintosh.

MessageAlert 0	' Wywołaj zasób ponownie, ale bez

' użycia słowa kluczowego Call.

End Sub


Funkcja Choose - przykład

W tym przykładzie wykorzystano funkcję Choose do wyświetlenia nazwy, która zależy od wartości indeksu przekazanej procedurze za pomocą parametru Ind.

Function Wybierz(Ind As Integer)

Wybierz = Choose(Ind, "Europa", "Ameryka", "Azja")

End Function


Funkcja DoEvents - przykład

W tym przykładzie wykorzystano funkcję DoEvents do oddania sterowania do systemu operacyjnego każdorazowo po wykonaniu 1000 iteracji pętli. Funkcja DoEvents zwraca liczbę otwartych formularzy systemu Visual Basic, ale tylko w przypadku, gdy aplikacją główną jest Visual Basic.

' Utwórz zmienną przechowującą liczbę formularzy

' systemu Visual Basic, które zostały otwarte i są

' widoczne.

Dim I, OtwarteForm

For I = 1 To 150000	' Początek pętli.

If I Mod 1000 = 0 Then 	' Jeśli pętla wykonała się

' 1000 razy,.

OtwarteForm = DoEvents	' przekaż sterowanie do

' systemu operacyjnego.

End If

Next I	' Zwiększ licznik pętli.


Instrukcja Do...Loop - przykład

W tym przykładzie pokazano sposób użycia instrukcji Do...Loop. Wewnętrzna instrukcja Do...Loop wykonywana jest 10 razy, po czym zmiennej Flaga przypisywana jest wartość False, a wewnętrzna pętla zostaje przerwana za pomocą instrukcji Exit Do. Zewnętrzna pętla sprawdza wartość zmiennej Flaga i natychmiast kończy działanie.

Dim Flaga, Licznik

Flaga = True: Licznik = 0	' Inicjuj zmienne.

Do	' Zewnętrzna pętla.

Do While Licznik < 20	' Wewnętrzna pętla.

Licznik = Licznik + 1	' Zwiększaj licznik.

If Licznik = 10 Then	' Jeśli warunek spełniony,

Flaga = False	' przypisz zmiennej Flaga

' wartość False.

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

End If

Loop

Loop Until Flaga = False	' Natychmiast wyjdź z

' zewnętrznej pętli.


Instrukcja End - przykład

W tym przykładzie wykorzystano instrukcję End do przerwania działania programu, jeśli użytkownik poda nieprawidłowe hasło.

Sub Form_Load

Dim Hasło, Ciąg

Hasło = "lufa"

Ciąg = InputBox("Wpisz swoje hasło")

If Ciąg <> Hasło Then

MsgBox "Hasło nieprawidłowe."

End

End If

End Sub


Instrukcja Exit - przykład

W tym przykładzie wykorzystano instrukcję Exit do wyjścia z pętli typu For...Next, typu Do...Loop oraz z procedury typu Sub.

Sub ExitDemo()

Dim I, Liczba

Do	' Wykonuj nieskończoną pętlę.

For I = 1 To 1000	' Wykonaj pętlę 1000 razy.

Liczba = Int(Rnd * 1000)	' Wygeneruj liczbę

' losową.

Select Case Liczba	' Wykonaj następny krok

' zależnie od wartości

' tej liczby.

Case 7: Exit For	' Jeśli liczba = 7, wyjdź

' z pętli For...Next.

Case 29: Exit Do	' Jeśli liczba = 29, wyjdź

' z pętli Do...Loop.

Case 54: Exit Sub' Jeśli liczba = 54,

' zakończ procedurę Sub.

End Select

Next I

Loop

End Sub


Instrukcja For Each...Next - przykład

W tym przykładzie wykorzystano instrukcję For Each...Next do przeszukania właściwości Text wszystkich elementów kolekcji w celu znalezienia ciągu znaków "Cześć". Obiekt MójObiekt jest obiektem tekstowym i stanowi element kolekcji MojaKolekcja. Obie nazwy zostały utworzone jedynie dla tego przykładu.

Dim Istnieje, MójObiekt, MojaKolekcja

Istnieje = False	' Inicjuj zmienne.

For Each MójObiekt In MojaKolekcja	' Przeglądaj każdy

' element kolekcji.

If MójObiekt.Text = "Cześć" Then ' Jeśli został

' napotkany tekst "Cześć".

Istnieje = True	' Ustaw wartość zmiennej

' Istnieje na True.

Exit For	' Wyjdź z pętli.

End If

Next


Instrukcja For...Next - przykład

W tym przykładzie wykorzystano instrukcję For...Next do utworzenia ciągu znaków zawierającego 10 sekwencji cyfr od 0 do 9. Kolejne sekwencje oddzielone są pojedynczym znakiem spacji. Zewnętrzna pętla korzysta ze zmiennej licznikowej, która jest zmniejszana przy każdym wykonaniu pętli.

Dim Słowo, Znak, Ciąg

For Słowo = 10 To 1 Step -1 	' Wykonaj 10 powtórzeń.

For Znak = 0 To 9	' Wykonaj 10 powtórzeń.

Ciąg = Ciąg & Znak	' Dołącz cyfrę do ciągu.

Next Znak	' Zwiększ licznik.

Ciąg = Ciąg & " "	' Dołącz znak spacji.

Next Słowo


Instrukcja GoSub...Return - przykład

W tym przykładzie wykorzystano instrukcję GoSub do wywołania podprogramu z procedury typu Sub. Instrukcja Return powoduje powrót do procedury wywołującej, a następnie wykonanie instrukcji występującej bezpośrednio po instrukcji GoSub. Instrukcję Exit Sub wykorzystano do zabezpieczenia przed przypadkowym przekazaniem sterowania do podprogramu.

Sub GoSubDemo()

Dim Num

' Pobierz od użytkownika liczbę.

Num = InputBox("Wpisz liczbę dodatnią, która " & _

"zostanie podzielona przez 2. ")

' Uruchom procedurę tylko w przypadku, gdy użytkownik

' podał liczbę dodatnią.

If Num > 0 Then GoSub MojaProc

Debug.Print Num

Exit Sub	' Skorzystaj z instrukcji Exit, aby

' zapobiec wystąpieniu błędu.

MojaProc:

Num = Num/2	' Wykonaj operację dzielenia.

Return	' Zwróć sterowanie do instrukcji

' występującej bezpośrednio po instrukcji

' GoSub.

End Sub


Instrukcja GoTo - przykład

W tym przykładzie wykorzystano instrukcję GoTo do przekazania sterowania do wierszy procedury opatrzonych etykietami.

Sub GotoDemo()

Dim Num, Ciąg

Num = 1 	' Zainicjuj zmienną.

' Przekaż sterowanie do odpowiedniego wiersza w

' zależności od wartości zmiennej Num.

If Num = 1 Then GoTo Linia1 Else GoTo Linia2

Linia1:

Ciąg = "Liczba ma wartość 1"

GoTo OstatniaLinia	' Przejdź do ostatniego

' wiersza.

Linia2:

' Poniższa instrukcja nie zostanie wykonana.

Ciąg = "Liczba ma wartość 2"

OstatniaLinia:

Debug.Print Ciąg	' Wyświetl napis " Liczba ma

' wartość 1" w oknie Analiza programu.

End Sub


Instrukcja If...Then...Else - przykład

W tym przykładzie pokazano instrukcję If...Then...Else w formie bloku i w formie jednowierszowej. Pokazano również sposób użycia konstrukcji If TypeOf...Then...Else.

Dim Num, Cyfry, Ciąg

Num = 53	' Zainicjuj zmienną.

If Num < 10 Then

Cyfry = 1

ElseIf Num < 100 Then

' Warunek jest spełniony, więc następna instrukcja

' zostanie wykonana.

Cyfry = 2

Else

Cyfry = 3

End If

' Ustaw wartość ciągu, korzystając ze składni

' jednowierszowej.

If Cyfry = 1 Then Ciąg = "Jeden" Else Ciąg = "Więcej niż jeden"

Poniżej wykorzystano konstrukcję If TypeOf do określenia, czy formant przekazany do procedury jest polem tekstowym.

Sub TypFormantu(MójFormant As Control)

If TypeOf MójFormant Is CommandButton Then

Debug.Print "Przekazano " & _

TypeName(MójFormant)

ElseIf TypeOf MójFormant Is CheckBox Then

Debug.Print " Przekazano " & _

TypeName(MójFormant)

ElseIf TypeOf MójFormant Is TextBox Then

Debug.Print " Przekazano " & _

TypeName(MójFormant)

End If

End Sub


Funkcja IIf - przykład

W tym przykładzie wykorzystano funkcję IIf do określenia wartości parametru OkreślMnie procedury OkreślParam. Procedura zwraca słowo "Wielki", jeśli wartość parametru przekracza 1000. W przeciwnym razie zwracane jest słowo "Mały".

Function OkreślParam (OkreślMnie As Integer)

OkreślParam = IIf(OkreślMnie > 1000, "Wielki", _

"Mały")

End Function


Instrukcje On...GoSub, On...GoTo - przykład

W tym przykładzie wykorzystano instrukcje On...GoSub do przekazania sterowania do podprogramów i instrukcję On...GoTo do przekazania sterowania do wierszy opatrzonych etykietami.

Sub OnGosubGotoDemo()

Dim Num, Ciąg

Num = 2	' Zainicjuj zmienną.

' Przekaż sterowanie do Sub2.

On Num GoSub Sub1, Sub2	' Wykonywanie programu

' wraca w to miejsce.

' po wykonaniu instrukcji On...GoSub.

On Num GoTo Linia1, Linia2	' Przekaż sterowanie

' do wiersza oznaczonego etykietą Linia2.

' Po instrukcji On...GoTo program nie

' powróci w to miejsce.

Exit Sub

Sub1:

Ciąg = "Sub1" : Return

Sub2:

Ciąg = "Sub2" : Return

Linia1:

Ciąg = "Linia1"

Linia2:

Ciąg = "Linia2"

End Sub


Funkcja Partition - przykład

W tym przykładzie przyjęto, że istnieje tabela Zamówienia zawierająca pole Fracht. Przykład tworzy zapytanie, które zwraca liczbę zamówień, dla których koszt frachtu zawiera się w jednym z zadanych przedziałów. Funkcję Partition wykorzystano do ustalenia granic przedziałów. Następnie funkcja SQL Count zwraca liczbę zamówień z każdego przedziału. W tym przykładzie argumentami funkcji Partition są start = 0, stop = 500, interwał = 50. Stąd pierwszy przedział zawiera się między 0 a 49, a ostatni przedział ma maksymalną wartość 500.

SELECT DISTINCTROW Partition([fracht],0, 500, 50)

AS Range,

Count(Zamówienia.Fracht) AS Count

FROM Zamówienia

GROUP BY Partition([fracht],0,500,50);


Instrukcja Select Case - przykład

W tym przykładzie wykorzystano instrukcję Select Case do określenia wartości zmiennej. Druga klauzula Case obejmuje faktyczną wartość tej zmiennej i dlatego wykonywana jest jedynie instrukcja związana z tą klauzulą.

Dim Num

Num = 8	' Zainicjuj zmienną.

Select Case Num	' Określ wartość zmiennej Num.

Case 1 To 5	' Wartość Num zawiera się między 1 a 5.

Debug.Print "W przedziale od 1 do 5"

' Poniżej znajduje się jedyna klauzula Case, która

' przyjmuje wartość True.

Case 6, 7, 8	' Num ma wartość z przedziału od 6 do 8.

Debug.Print " W przedziale od 6 do 8"

Case Is > 8 And Num < 11	' przedział od 9 do 10.

Debug.Print "Wartość większa niż 8"

Case Else	' Pozostałe wartości.

Debug.Print "Poza przedziałem od 1 do 10"

End Select


Funkcja Shell - przykład

W tym przykładzie wykorzystano funkcję Shell do uruchomienia aplikacji określonej przez użytkownika. Wykorzystanie funkcji MacID w systemie Macintosh zapewnia możliwość uruchomienia aplikacji nawet wówczas, gdy nazwa pliku aplikacji została zmieniona. Funkcja Shell nie jest dostępna w wersjach systemu Macintosh starszych niż System 7.0.

' W systemie Microsoft Windows:

' Wywołanie funkcji Shell z drugim parametrem o

' wartości 1 powoduje uruchomienie aplikacji w oknie o

' standardowym rozmiarze i przeniesienie fokusu do tego

' okna.

Dim RetVal

RetVal = Shell("C:\WINDOWS\CALC.EXE", 1)	' Uruchom

' Kalkulator.

' W systemie Macintosh:

' Obie instrukcje uruchamiają program Microsoft Excel.

RetVal = Shell("Microsoft Excel")' Określ nazwę pliku.

RetVal = Shell(MacID("XCEL"))	' Określ sygnaturę.


Instrukcja Stop - przykład

W tym przykładzie wykorzystano instrukcję Stop do wstrzymania wykonania każdej iteracji pętli For...Next.

Dim I

For I = 1 To 10	' Rozpocznij wykonywanie pętli

' For...Next.

Debug.Print I	' Wyświetl wartość licznika w oknie

' Analiza programu.

Stop	' Wstrzymaj wykonywanie programu przy każdej

' iteracji.

Next I


Funkcja Switch - przykład

W tym przykładzie wykorzystano funkcję Switch do wyznaczenia nazwy języka, którym posługują się mieszkańcy określonego miasta.

Function ZnajdźJęzyk (NazwaMiasta As String)

ZnajdźJęzyk = _

Switch(NazwaMiasta = "Londyn", "angielski", _

 NazwaMiasta = "Rzym", "włoski", _

 NazwaMiasta = "Paryż", "francuski")

End Function


Instrukcja While...Wend - przykład

W tym przykładzie wykorzystano instrukcję While...Wend do zwiększania wartości zmiennej licznikowej. Instrukcje znajdujące się w pętli są wykonywane, dopóki jest spełniony pewien warunek.

Dim Licznik

Licznik = 0	' Zainicjuj zmienną.

While Licznik < 20	' Sprawdź wartość zmiennej Licznik.

Licznik = Licznik + 1	' Zwiększ licznik.

Wend	' Zakończ wykonywanie pętli, gdy Licznik > 19.

Debug.Print Licznik	' Wyświetla liczbę 20 w oknie

' Analiza programu.


Instrukcja With - przykład

W tym przykładzie wykorzystano instrukcję With do wykonania serii instrukcji na pojedynczym obiekcie. Obiekt MójObiekt i nazwy jego właściwości zostały utworzone wyłącznie dla tego przykładu.

With MójObiekt

.Height = 100	' Jest to równoważne instrukcji

' MójObiekt.Height = 100.

.Caption = "Pozdrawiam wszystkich"	' Jest to

' równoważne instrukcji

' MójObiekt. Caption = "Pozdrawiam wszystkich".

With .Font

.Color = Czerwony	' Jest to równoważne

' instrukcji

' MójObiekt. Font.Color = Czerwony.

.Bold = True	' Jest to równoważne instrukcji

' MójObiekt.Font.Bold = True.

End With

End With


Call - instrukcja

Przekazuje sterowanie do procedury Sub, Function lub do procedury biblioteki dołączanej dynamicznie.

Składnia

[Call] nazwa [lista_argumentów]

Składnia instrukcji Call zawiera następujące elementy:

Element	Opis
Call	Nieobowiązkowe słowo kluczowe. Jeśli zostało podane, lista_argumentów musi być ujęta w nawiasy okrągłe. Na przykład:
	Call MojaProc(0)
nazwa	Element obowiązkowy. Jest to nazwa wołanej procedury.
lista_ argumentów	Element nieobowiązkowy. Jest to lista oddzielonych przecinkami zmiennych, tablic lub wyrażeń przekazywanych do procedury. Pozycje tej listy mogą zawierać słowa kluczowe ByVal lub ByRef, które określają sposób traktowania argumentów przez wołaną procedurę. Słów ByVal i ByRef można użyć ze słowem Call tylko w wywołaniu procedury DLL.
Użycie

W wywołaniu procedury nie jest konieczne użycie słowa kluczowego Call. Jeśli jednak do wywołania procedury z elementami użyto słowa kluczowego Call, lista_argumentów musi być ujęta w nawiasy. Jeśli słowo Call zostało pominięte, należy również pominąć nawiasy obejmujące listę elementów. Jeśli instrukcji Call (o dowolnej składni) użyto do wywołania dowolnej funkcji wewnętrznej lub zdefiniowanej przez użytkownika, wartość zwrócona przez funkcję zostanie zignorowana.

Aby do procedury przekazać całą tablicę, należy po nazwie tablicy umieścić puste nawiasy.


Choose - funkcja

Wybiera i zwraca wartość z listy argumentów.

Składnia

Choose(indeks, wybór_1[,wybór_2, ... [,wybór_n]])

Składnia funkcji Choose zawiera następujące elementy:

Element	Opis
indeks	Element obowiązkowy. Jest to wyrażenie numeryczne lub pole o wartości z przedziału od 1 do liczby dostępnych możliwości do wyboru.
wybór	Element obowiązkowy. Jest to wyrażenie typu Variant zawierające jedną z możliwości do wyboru.
Użycie

Funkcja Choose zwraca wartość z listy możliwości odpowiadającą wartości indeksu. Jeśli indeks wynosi 1, funkcja Choose zwraca pierwszą pozycję z listy; jeśli indeks wynosi 2, funkcja zwraca drugą pozycję itd.

Funkcję Choose można zastosować do odszukania wartości na liście możliwości. Przykładowo, jeśli element indeks wynosi 3, a lista możliwości wygląda następująco: wybór_1 = "jeden", wybór_2 = "dwa" i wybór_3 = "trzy", wówczas funkcja Choose zwróci "trzy". Tego typu działanie może być szczególnie użyteczne, jeśli indeks reprezentuje wartość w grupie opcji.

Funkcja Choose oblicza wartość każdej pozycji listy, mimo że zawsze zwraca tylko jedną wartość. Z tego powodu należy liczyć się z niepożądanymi efektami ubocznymi. Jeśli na przykład jako część każdego z wyrażeń występuje funkcja MsgBox, to pole komunikatu pojawi się tyle razy, ile jest możliwości wyboru na liście, mimo że funkcja Choose zwróci wartość tylko jednego wyrażenia.

Funkcja Choose zwróci wartość Null, jeśli indeks ma wartość mniejszą niż 1 lub większą niż liczba pozycji na liście możliwości.

Jeśli wartość indeksu nie jest liczbą całkowitą, jest ona przed użyciem zaokrąglana do najbliższej liczby całkowitej.


DoEvents - funkcja

Przekazuje sterowanie do systemu operacyjnego, umożliwiając przetwarzanie zdarzeń.

Składnia

DoEvents( )

Użycie

W autonomicznych wersjach systemu Visual Basic, jak np. Visual Basic, Standard Edition, Funkcja DoEvents zwraca wartość typu Integer reprezentującą liczbę otwartych formularzy. We wszystkich innych aplikacjach funkcja DoEvents zwraca wartość zero.

Funkcja DoEvents przekazuje sterowanie do systemu operacyjnego. Sterowanie jest zwracane po obsłudze przez system operacyjny wszystkich zdarzeń z systemowej kolejki oraz po wysłaniu z kolejki SendKeys wszystkich kluczy.

Funkcji DoEvents warto używać wtedy, gdy wykonywany program (lub jego fragmenty) zajmują dużo czasu procesora. Okresowe wywoływanie tej funkcji pozwoli systemowi operacyjnemu na obsługę bez zbytniego opóźnienia takich zdarzeń, jak naciśnięcia klawiszy czy kliknięcia myszą.

Ostrzeżenie  Należy sprawdzić, czy procedura oddająca sterowanie za pomocą funkcji DoEvents nie zostanie ponownie wywołana z innej części programu przed powrotem sterowania po pierwszym wywołaniu tej funkcji DoEvents, gdyż grozi to trudnymi do przewidzenia skutkami. Ponadto, funkcji DoEvents nie należy stosować, jeśli inne aplikacje mogą w tym czasie odwoływać się do procedury, która oddała sterowanie.


Do...Loop - instrukcja

Powtarza blok instrukcji tak długo, jak długo warunek ma wartość True lub dopóki warunek nie przyjmie wartości True.

Składnia

Do [{While | Until} warunek]
[instrukcje]
[Exit Do]
[instrukcje]

Loop

Alternatywna składnia jest następująca:

Do
[instrukcje]
[Exit Do]
[instrukcje]

Loop [{While | Until} warunek]

Składnia instrukcji Do...Loop zawiera następujące elementy:

Element	Opis
warunek	Element nieobowiązkowy. Jest to wyrażenie numeryczne lub wyrażenie znakowe, którego wartością jest True lub False (warunek o wartości Null jest traktowany jako False).
instrukcje	Jedna lub kilka instrukcji powtarzanych tak długo, jak długo warunek ma wartość True albo dopóki nie przyjmie on wartości True.
Użycie

Wewnątrz instrukcji Do…Loop można umieścić dowolną liczbę instrukcji Exit Do, które powodują natychmiastowe wyjście z pętli. Instrukcja Exit Do jest często stosowana po sprawdzeniu pewnego warunku, np. w instrukcji If…Then. Jeśli ten warunek zachodzi, instrukcja Exit Do przekazuje sterowanie do instrukcji następującej bezpośrednio po instrukcji Loop.

Zastosowana wewnątrz zagnieżdżonej instrukcji Do…Loop, instrukcja Exit Do przekazuje sterowanie do pętli bezpośrednio obejmującej tę zagnieżdżoną instrukcję Do…Loop.


End - instrukcja

Kończy procedurę lub blok.

Składnia

End

End Function

End If

End Property

End Select

End Sub

End Type

End With

Składnia instrukcji End przybiera następujące formy:

Instrukcja	Opis
End	Kończy wykonywanie programu. Z reguły nie jest ona potrzebna, jednak może być użyta wewnątrz procedury do zamknięcia plików otwartych instrukcją Open i do wyczyszczenia zmiennych.
End Function	Wymagana do zakończenia instrukcji Function.
End If	Wymagana do zakończenia bloku instrukcji If…Then…Else.
End Property	Wymagana do zakończenia procedury Property Let, Property Get lub Property Set.
End Select	Wymagana do zakończenia instrukcji Select Case.
End Sub	Wymagana do zakończenia instrukcji Sub.
End Type	Wymagana do zakończenia definicji typu zdefiniowanego przez użytkownika (instrukcji Type).
End With	Wymagana do zakończenia instrukcji With.
Użycie

Instrukcja End przywraca stan inicjalny zmiennych na poziomie modułu oraz wszystkich lokalnych zmiennych statycznych we wszystkich modułach. Aby zachować bieżące wartości tych zmiennych, należy zamiast instrukcji End użyć instrukcji Stop. Zostawiamy sobie wówczas możliwość wznowienia programu z zachowaniem wartości tych zmiennych.

Uwaga   Instrukcja End natychmiastowo zatrzymuje wykonywanie kodu programu, nie wywołując przy tym zdarzeń Unload, QueryUnload lub Terminate ani żadnego innego kodu Visual Basic. Kod programu umieszczony w zdarzeniach Unload, QueryUnload i Terminate w formularzach i modułach klas nie jest wykonywany. Obiekty utworzone z modułów klasy ulegają zniszczeniu, pliki otwarte za pomocą instrukcji Open są zamykane, a pamięć wykorzystywana przez program zostaje zwolniona. Odwołania do obiektów wykorzystywane przez inne programy zostają unieważnione.

Instrukcja End jest sposobem na szybkie zatrzymanie programu. Aby zakończyć pracę w środowisku Visual Basic w sposób normalny, należy rozładować wszystkie formularze. Program zamyka się w chwili, gdy nie ma żadnych innych programów korzystających z odwołań do obiektów utworzonych z publicznych modułów klasy ani nie jest wykonywany żaden kod programu.


Exit - instrukcja

Powoduje wyjście z bloku instrukcji Do…Loop, For...Next, Function, Sub lub Property.

Składnia

Exit Do

Exit For

Exit Function

Exit Property

Exit Sub

Składnia instrukcji Exit przybiera następujące formy:

Instrukcja	Opis
Exit Do	Umożliwia wyjście z pętli Do...Loop. Może być stosowana tylko wewnątrz instrukcji Do...Loop. Instrukcja Exit Do przekazuje sterowanie do instrukcji umieszczonej bezpośrednio za instrukcją Loop. Użyta wewnątrz zagnieżdżonych instrukcji Do…Loop, instrukcja Exit Do przekazuje sterowanie do pętli bezpośrednio obejmującej tę zagnieżdżoną instrukcję Do…Loop, która zawiera instrukcję Exit Do.
Exit For	Umożliwia wyjście z pętli For. Może być stosowana tylko w pętli For...Next lub For Each...Next. Instrukcja Exit For przekazuje sterowanie do instrukcji umieszczonej bezpośrednio po instrukcji Next. Użyta wewnątrz zagnieżdżonych pętli For, instrukcja Exit For przekazuje sterowanie do pętli bezpośrednio obejmującej tę pętlę For, która zawiera instrukcję Exit For.
Exit Function	Powoduje natychmiastowe wyjście z procedury Function, w której jest umieszczona. Program jest wznawiany od instrukcji następującej bezpośrednio po instrukcji, która wywołała procedurę Function.
Exit Property	Powoduje natychmiastowe wyjście z procedury Property, w której jest umieszczona. Program jest wznawiany od instrukcji następującej bezpośrednio po instrukcji, która wywołała procedurę Property.
Exit Sub	Powoduje natychmiastowe wyjście z procedury Sub, w której jest umieszczona. Program jest wznawiany od instrukcji następującej bezpośrednio po instrukcji, która wywołała procedurę Sub.
Użycie

Nie należy mylić instrukcji Exit z instrukcją End. Instrukcja Exit nie określa końca struktury.


For Each...Next - instrukcja

Powtarza grupę instrukcji dla każdego elementu tablicy lub kolekcji.

Składnia

For Each element In grupa
[instrukcje]
[Exit For]
[instrukcje]

Next [element]

Składnia instrukcji For...Each...Next zawiera następujące elementy:

Element	Opis
element	Element obowiązkowy. Jest to zmienna, która przebiega wszystkie elementy zbioru lub tablicy. W przypadku zbiorów, element musi być zmienną typu Variant, zmienną obiektu typowego lub obiektu konkretnego. W przypadku tablic, element może być jedynie zmienną typu Variant.
grupa	Element obowiązkowy. Jest to nazwa zbioru obiektów lub tablicy (z wyjątkiem tablicy typów zdefiniowanych przez użytkownika).
instrukcje	Element nieobowiązkowy. Jest to jedna lub kilka instrukcji wykonywanych dla każdego elementu grupy.
Użycie

Sterowanie wchodzi do bloku For Each tylko wtedy, gdy w grupie znajduje się choć jeden element. Wówczas wszystkie instrukcje pętli są wykonywane dla pierwszego elementu grupy. Jeśli w grupie jest więcej elementów, wszystkie instrukcje zawarte w pętli są wykonywane dla każdego elementu. Po wyczerpaniu się elementów grupy pętla kończy się i program przechodzi do instrukcji następującej bezpośrednio po instrukcji Next.

Inną możliwością zakończenia wykonywania pętli jest umieszczenie w niej instrukcji Exit For. Instrukcja Exit For występuje często po sprawdzeniu pewnego warunku, np. w instrukcji If…Then, i w przypadku gdy taki warunek jest spełniony, przekazuje sterowanie do instrukcji bezpośrednio następującej po instrukcji Next.

Pętle For Each...Next mogą być zagnieżdżane przez umieszczenie jednej pętli wewnątrz drugiej. Każda pętla musi jednak mieć swój własny, "prywatny" element.

Uwaga   Jeśli w instrukcji Next opuszczono parametr element, pętla jest wykonywana tak, jakby element wystąpił. W przypadku wystąpienia instrukcji Next przed odpowiadającą jej instrukcją For, wystąpi błąd.

Instrukcji For Each...Next nie można zastosować do tablicy typu zdefiniowanego przez użytkownika, gdyż zmienna typu Variant nie może zawierać wartości typu zdefiniowanego przez użytkownika.


For...Next - instrukcja

Powtarza grupę instrukcji określoną liczbę razy.

Składnia

For licznik = początek To koniec [Step krok]
[instrukcje]
[Exit For]
[instrukcje]

Next [licznik]

Składnia instrukcji For…Next zawiera następujące elementy:

Element	Opis
licznik	Element obowiązkowy. Jest to zmienna numeryczna, która pełni rolę licznika pętli. Zmienna ta nie może być typu Boolean ani elementem tablicy.
początek	Element obowiązkowy. Jest to wartość początkowa licznika.
koniec	Element obowiązkowy. Jest to wartość końcowa licznika.
krok	Element nieobowiązkowy. Jest to wielkość, o jaką zwiększany jest licznik przy każdym wykonaniu pętli. Jeśli nie jest podany, przyjmuje się krok równy 1.
instrukcje	Element nieobowiązkowy. Jest to jedna lub kilka instrukcji umieszczonych pomiędzy słowami For i Next; instrukcje te wykonywane są określoną liczbę razy.
Użycie

Argument krok może być dodatni lub ujemny. Wartość tego elementu determinuje sposób realizacji pętli, jak to podano poniżej:

Wartość	Pętla wykona się, jeśli
Dodatnia lub 0	licznik <= koniec
Ujemna	licznik >= koniec
Po wykonaniu wszystkich instrukcji znajdujących się wewnątrz pętli do licznika dodawany jest krok. Następnie albo instrukcje pętli zostaną wykonane ponownie (jeśli nadal spełniony jest warunek, który implikował pierwsze wykonanie pętli), albo następuje wyjście z pętli, a wykonywanie programu zostaje wznowione od instrukcji następującej bezpośrednio po instrukcji Next.

Wskazówka   Zmiana wartości licznika przez instrukcje wewnątrz pętli powoduje, iż program traci na czytelności i trudniej wykryć w nim ewentualne błędy.

Inną możliwością zakończenia wykonywania pętli jest umieszczenie w niej instrukcji Exit For. Instrukcja Exit For występuje często po sprawdzeniu pewnego warunku, np. w instrukcji If…Then, i w przypadku gdy taki warunek jest spełniony, przekazuje sterowanie do instrukcji bezpośrednio następującej po instrukcji Next.

Pętle For...Next mogą być zagnieżdżane przez umieszczenie jednej pętli wewnątrz drugiej. Każda pętla musi jednak mieć swój własny, "prywatny" licznik. Poniżej przedstawiony fragment programu jest poprawny:

For I = 1 To 10

For J = 1 To 10

For K = 1 To 10

...

Next K

Next J

Next I

Uwaga   Jeśli w instrukcji Next opuszczono element licznik, pętla jest wykonywana tak, jakby licznik wystąpił. W przypadku wystąpienia instrukcji Next przed odpowiadającą jej instrukcją For, wystąpi błąd.


GoSub...Return - instrukcja

Wewnątrz procedury przekazuje sterowanie do podprogramu i powoduje powrót z tego podprogramu.

Składnia

GoSub wiersz
...
wiersz
...

Return

Argument wiersz może być dowolną etykietą wiersza lub dowolnym numerem wiersza.

Użycie

Instrukcji GoSub i Return można użyć w dowolnym miejscu procedury, jednak instrukcja GoSub i odpowiadająca jej instrukcja Return muszą znajdować się w tej samej procedurze. Podprogram może zawierać kilka instrukcji Return, jednak to pierwsza wykonana instrukcja Return powoduje powrót sterowania do instrukcji bezpośrednio następującej po ostatnio wykonanej instrukcji GoSub.

Uwaga   Za pomocą instrukcji GoSub...Return nie można ani wejść, ani wyjść z procedury Sub.

Wskazówka   Lepszą, bardziej strukturalną niż stosowanie instrukcji GoSub...Return techniką programowania jest tworzenie oddzielnych procedur, które mogą być wywoływane z dowolnego miejsca programu.


GoTo - instrukcja

Powoduje bezwarunkowe przejście ("skok") do wskazanego wiersza procedury.

Składnia

GoTo wiersz

Obowiązkowy argument wiersz może być dowolną etykietą wiersza lub dowolnym numerem wiersza.

Użycie

Instrukcja GoTo może odnosić się do wierszy tylko w obrębie tej procedury, w której się znajduje.

Uwaga   Nadużywanie instrukcji GoTo powoduje, iż program traci na czytelności i trudno usuwać z niego błędy. Jeśli tylko jest to możliwe, zamiast GoTo lepiej stosować strukturalne instrukcje sterujące (Do...Loop, For...Next, If...Then...Else, Select Case).


If...Then...Else - instrukcja

Powoduje warunkowe wykonanie grupy instrukcji, zależnie od wartości wyrażenia.

Składnia

If warunek Then [instrukcje] [Else instrukcje_else]

Inną możliwością jest zastosowanie składni blokowej:

If warunek Then
[instrukcje]

[ElseIf warunek_n Then
[instrukcje_elseif] ...

[Else
[instrukcje_else]]

End If

Składnia instrukcji If...Then...Else zawiera następujące elementy:

Element	Opis
warunek	Element obowiązkowy. Wyrażenie jednego z dwóch podanych niżej typów:
	Wyrażenie numeryczne lub wyrażenie znakowe o wartości True lub False. Jeśli wartością warunku jest Null, traktowane jest ono tak, jakby miało wartość False.
	Wyrażenie postaci TypeOf nazwa_obiektu Is typ_obiektu. Element nazwa_obiektu jest dowolnym odesłaniem obiektowym, a typ_obiektu jest dowolnym poprawnym typem obiektu. Wyrażenie ma wartość True, jeśli wskazany obiekt ma typ obiektu określony przez typ_obiektu; w przeciwnym przypadku wartością wyrażenia jest False.
instrukcje	W składni blokowej jest to element nieobowiązkowy; w składni jednowierszowej bez klauzuli Else jest on obowiązkowy. Jest to jedna lub więcej instrukcji oddzielonych dwukropkami. Instrukcje te są wykonywane, jeśli warunek ma wartość True.
warunek_n	Element nieobowiązkowy o postaci takiej samej jak warunek.
instrukcje_elseif	Element nieobowiązkowy. Jest to jedna lub więcej instrukcji wykonywanych wówczas, gdy odpowiadający im warunek_n ma wartość True.
instrukcje_else	Element nieobowiązkowy. Jest to jedna lub więcej instrukcji wykonywanych wówczas, gdy wartość żadnego z poprzednich warunków (tj. warunek i wszystkie warunki_n) nie jest równa True.
Użycie

Postać jednowierszową (składnia pierwsza) stosuje się w krótkich, prostych testach. Jednak postać blokowa (składnia druga) jest bardziej uniwersalna, zgodna z duchem zasad programowania strukturalnego, a także bardziej czytelna i umożliwiająca łatwiejsze wykrywanie błędów.

Uwaga   W postaci jednowierszowej instrukcji można, jako rezultat decyzji If...Then, wykonać kilka instrukcji. Jednak wszystkie instrukcje muszą zmieścić się w jednym wierszu i muszą być oddzielone dwukropkami, jak w poniższym przykładzie:

If A > 10 Then A = A + 1 : B = B + A : C = C + B

Instrukcja If w postaci blokowej musi być pierwszą instrukcją w wierszu. Elementy Else, ElseIf i End If instrukcji If mogą być poprzedzone pojedynczym numerem wiersza lub jedną etykietą wiersza. Blok If musi kończyć się instrukcją End If.

Aby sprawdzić, która z postaci instrukcji If została zastosowana, wystarczy zobaczyć, co występuje po słowie kluczowym Then. Jeśli jest to coś innego niż komentarz i znajduje się w tym samym wierszu, oznacza to, iż mamy do czynienia z jednowierszową składnią instrukcji If.

Klauzule Else i ElseIf są nieobowiązkowe. W blokowej składni instrukcji If może wystąpić dowolnie wiele klauzul ElseIf, żadna z nich jednak nie może się pojawić po klauzuli Else. Blokowa instrukcja If może być zagnieżdżona, to znaczy umieszczona wewnątrz innej instrukcji.

W czasie wykonywania blokowej instrukcji If (składnia druga) sprawdzany jest warunek. Jeśli jego wartością jest True, wykonywane są instrukcje występujące po słowie Then. Jeśli wartością warunku jest False, obliczane są po kolei warunki ElseIf (jeśli istnieją). Po znalezieniu warunku o wartości True wykonywane są instrukcje umieszczone po odpowiadającym temu warunkowi słowie Then. Jeśli żaden z warunków ElseIf nie jest równy True (lub jeśli nie ma klauzul ElseIf), wykonywane są instrukcje umieszczone po słowie Else. Po wykonaniu odpowiednich instrukcji występujących po słowie Then lub Else sterowanie przechodzi do instrukcji bezpośrednio następującej po End If.

Wskazówka   Jeśli wykonanie pewnych czynności zależy od wartości pojedynczego wyrażenia, wygodniejsza może być instrukcja Select Case. Jednak klauzula TypeOf nazwa_obiektu Is typ_obiektu nie może wystąpić w instrukcji Select Case.


IIf - funkcja

Zwraca jeden z argumentów, zależnie od wartości wyrażenia.

Składnia

IIf(expr, truepart, falsepart)

Funkcja IIf ma następujące nazwane argumenty:

Argument	Opis
expr	Argument obowiązkowy. Jest to wyrażenie, którego wartość ma być obliczona.
truepart	Argument obowiązkowy. Jest to wartość lub wyrażenie zwracane przez funkcję wtedy, gdy wartością argumentu expr jest True.
falsepart	Argument obowiązkowy. Jest to wartość lub wyrażenie zwracane przez funkcję wtedy, gdy wartością argumentu expr jest False.
Użycie

Funkcja IIf zawsze oblicza wartość obu argumentów: truepart i falsepart, mimo że zwraca tylko jeden z nich. Z tego powodu mogą wystąpić niepożądane efekty uboczne. Jeśli na przykład obliczenie falsepart powoduje dzielenie przez zero, błąd wystąpi nawet wtedy, gdy wartością argumentu expr jest True.


On...GoSub, On...GoTo - instrukcje

Powoduje przejście do jednego lub kilku z podanych wierszy, zależnie od wartości wyrażenia.

Składnia

On wyrażenie GoSub lista_przeznaczenia

On wyrażenie GoTo lista_przeznaczenia

Składnia instrukcji On...GoSub i On...GoTo zawiera następujące elementy:

Element	Opis
wyrażenie	Element obowiązkowy. Jest to dowolne wyrażenie numeryczne o wartości całkowitej z przedziału od 0 do 255 włącznie. Jeśli wartość wyrażenia nie jest całkowita, przed użyciem jest zaokrąglana.
lista_przeznaczenia	Element obowiązkowy. Jest to lista numerów wierszy lub etykiet wierszy oddzielonych przecinkami.
Użycie

Wartość wyrażenia określa, do którego z wierszy wymienionych na liście_przeznaczenia jest przekazywane sterowanie. Jeśli wartość wyrażenia jest mniejsza niż 1 lub większa niż liczba pozycji na liście, zachodzi jedna z opisanych poniżej sytuacji:

Jeśli expression jest	...to
równe 0	sterowanie przechodzi do instrukcji występującej bezpośrednio po instrukcji On...GoSub lub On...GoTo.
większe niż liczba pozycji na liście	sterowanie przechodzi do instrukcji występującej bezpośrednio po instrukcji On...GoSub lub On...GoTo.
ujemne	wystąpi błąd.
większe niż 255	wystąpi błąd.
Na jednej liście mogą znajdować się zarówno numery wierszy, jak i etykiety wierszy. Liczba pozycji na liście instrukcji On...GoSub i On...GoTo jest dowolna. Jeśli jednak lista nie mieści się w jednym wierszu, należy w celu kontynuowania jednego wiersza logicznego w następnym wierszu fizycznym zastosować znak kontynuacji wiersza.

Wskazówka   Bardziej strukturalnym i elastycznym sposobem rozgałęziania sterowania w programie jest użycie instrukcji Select Case.


Partition - funkcja

Zwraca wartość typu Variant (String) wskazującą, w którym z obliczanych przedziałów leży zadana liczba.

Składnia

Partition(number, start, stop, interval)

Funkcja Partition ma następujące nazwane argumenty:

Argument	Opis
number	Argument obowiązkowy. Jest to liczba całkowita, dla której ma być określony przedział, w którym się ona mieści.
start	Argument obowiązkowy. Jest to liczba całkowita wyznaczająca początek całego przedziału liczb. Nie może być mniejsza niż 0.
stop	Argument obowiązkowy. Jest to liczba całkowita wyznaczająca koniec całego przedziału liczb. Nie może być równa ani mniejsza od wartości start.
interval	Argument obowiązkowy. Jest to liczba całkowita równa długości każdego z przedziałów w serii przedziałów zawartych między wartościami start a stop. Nie może być mniejsza niż 1.
Użycie

Funkcja Partition określa konkretny przedział wartości, w którym mieści się wartość argumentu number, i zwraca wartość typu Variant (String) opisującą ten przedział. Funkcja Partition jest bardzo przydatna w kwerendach. Można na przykład tak sformułować kwerendę, by pokazywała, ile złożono zamówień na określone kwoty: od 1 do 1000, od 1001 do 2000 i tak dalej.

W poniższej tabeli pokazano na przykładzie trzech zestawów argumentów start, stop i interval sposób określania przedziałów. Kolumny "Pierwszy" i "Ostatni" pokazują możliwe wartości zwracane przez funkcję Partition. Przedziały są reprezentowane przez ciąg znaków wartość_dolna:wartość_górna, przy czym początek przedziału (wartość_dolna) jest oddzielony od końca przedziału (wartość_górna) znakiem dwukropka (:).

start	stop	interval	Przed	Pierwszy	Ostatni	Za
0	99	5	"   :-1"	"      0:  4"	"     95: 99"	"   100:   "
20	199	10	"   :  19"	"    20:  29"	"   190: 199"	"   200:   "
100	1010	20	"   :   99"	"  100:  119"	" 1000: 1010"	" 1011:   "
Trzeci wiersz w powyższej tabeli ilustruje przypadek, gdy argumenty start i stop określają zakres liczb, który nie może być równo podzielony na przedziały o długości określonej przez argument interval. Ostatni przedział kończy się na wartości stop (11 liczb w przedziale), mimo że interval wynosi 20.

Jeśli jest to konieczne, funkcja Partition zwraca opis przedziału ze spacjami wiodącymi przed liczbami oznaczającymi jego krańce, tak by przed i za dwukropkiem było tyle samo znaków co w liczbie stop plus jeden znak. Gwarantuje to, iż niezależnie od wartości argumentu number, tekst będący wynikiem funkcji Partition będzie mógł być bez przekształceń poprawnie sortowany.

Jeśli interval jest równy 1, to przedział wynikowy ma postać number: number, niezależnie od wartości argumentów start i stop. Przykładowo, jeśli interval wynosi 1, number jest równa 100, a stop wynosi 1000, funkcja Partition zwróci tekst "  100:  100".

Jeśli którykolwiek z argumentów jest równy Null, funkcja Partition zwraca wartość Null.


Select Case - instrukcja

Powoduje wykonanie jednej z kilku grup instrukcji, zależnie od wartości wyrażenia.

Składnia

Select Case wyrażenie_testowe
[Case lista_wyrażeń_n
[instrukcje_n]] ...
[Case Else
[instrukcje_else]]

End Select

Składnia instrukcji Select Case zawiera następujące elementy:

Element	Opis
wyrażenie_ testowe	Element obowiązkowy. Jest to dowolne wyrażenie numeryczne lub wyrażenie znakowe.
lista_wyrażeń_n	Element obowiązkowy, jeśli wystąpiło słowo Case. Jest to lista zawierająca jedną lub więcej pozycji o jednej z następującej postaci: wyrażenie, wyrażenie To wyrażenie, Is operator_porównania wyrażenie. Słowo kluczowe To określa zakres wartości. Jeśli wystąpiło słowo kluczowe To, mniejsza wartość musi wystąpić przed To. Do określenia przedziału może też służyć słowo kluczowe Is z operatorem porównania (z wyjątkiem Is i Like). Jeśli brak słowa Is, jest ono wstawiane automatycznie.
instrukcje_n	Element nieobowiązkowy. Jest to jedna lub więcej instrukcji wykonywanych w przypadku, gdy wyrażenie_testowe pasuje do jednej z pozycji listy_wyrażeń_n.
instrukcje_else	Element nieobowiązkowy. Jest to jedna lub więcej instrukcji wykonywanych wówczas, gdy wyrażenie_testowe nie pasuje do żadnej z klauzul Case.
Użycie

Jeśli wartość wyrażenia_testowego pasuje do jednej z pozycji listy_wyrażeń klauzuli Case, wówczas wykonywane są instrukcje występujące po tej klauzuli Case, aż do następnej klauzuli Case albo, w przypadku klauzuli ostatniej, aż do instrukcji End Select. Następnie sterowanie jest przekazywane do instrukcji umieszczonej bezpośrednio za End Select. Jeśli wyrażenie_testowe pasuje do listy_wyrażeń w kilku klauzulach Case, wówczas wykonywane są instrukcje tylko z pierwszej w kolejności klauzuli.

Klauzula Case Else zawiera instrukcje (instrukcje_else), które zostaną wykonane wówczas, gdy wyrażenie_testowe nie pasuje do żadnej z list_wyrażeń klauzul Case. Wprawdzie klauzula Case Else i jej instrukcje nie są obowiązkowe, to jednak warto ją umieścić w bloku Select Case, by uwzględnić nie przewidziane w klauzulach Case wartości wyrażenia_testowego. Jeśli wyrażenie_testowe nie pasuje do żadnej listy klauzul Case i nie ma klauzuli Case Else z instrukcjami, sterowanie programu przechodzi do instrukcji umieszczonej bezpośrednio za instrukcją End Select.

Każda klauzula Case może obejmować wiele wyrażeń i zakresów. Poniższy przykładowy wiersz jest całkowicie poprawny:

Case 1 To 4, 7 To 9, 11, 13, Is > MaxLiczba

Uwaga   Operator porównania Is oznacza co innego niż słowo kluczowe Is w instrukcji Select Case.

Zakresy i wyrażenia mogą się także odnosić do ciągów znaków. W następnym przykładzie lista klauzuli Case odpowiada ciągowi znaków równemu dokładnie cokolwiek, ciągom zawartym w porządku alfabetycznym pomiędzy deser a zupa oraz ciągowi równemu bieżącej wartości ElemTest:

Case "cokolwiek", "deser" To "zupa", ElemTest

Instrukcje Select Case można zagnieżdżać. Dla każdej zagnieżdżonej instrukcji Select Case musi istnieć odpowiadająca jej instrukcja End Select.


Shell - funkcja

Uruchamia program i w przypadku powodzenia zwraca wartość typu Variant (Double) reprezentującą identyfikator zadania odpowiadającego uruchomionemu programowi, natomiast w przypadku niepowodzenia zwraca zero.

Składnia

Shell(pathname[,windowstyle])

Funkcja Shell ma następujące nazwane argumenty:

Argument	Opis
pathname	Argument obowiązkowy typu Variant (String). Jest to nazwa programu, który ma być uruchomiony, wraz z wszystkimi potrzebnymi argumentami lub opcjami podawanymi w wierszu poleceń; może zawierać nazwę katalogu lub folderu oraz nazwę dysku.
windowstyle	Argument nieobowiązkowy typu Variant (Integer) odpowiadający stylowi okna, w którym ma być wykonywany program. Jeśli windowstyle jest pominięty, program jest uruchamiany w postaci zminimalizowanej z fokusem.
Nazwany argument windowstyle może przyjąć jedną z następujących wartości:

Stała	Wartość	Opis
vbHide	0	Okno jest ukrywane, a fokus jest przekazywany do tego ukrytego okna.
vbNormalFocus	1	Okno otrzymuje fokus, a rozmiar i położenie okna są przywracane do stanu początkowego.
vbMinimizedFocus	2	Okno jest wyświetlane jako ikona z fokusem.
vbMaximizedFocus	3	Okno jest maksymalizowane i ma fokus.
vbNormalNoFocus	4	Odtwarzany jest ostatni rozmiar i położenie okna. Aktualnie aktywne okno pozostaje aktywne.
vbMinimizedNoFocus	6	Okno jest wyświetlane jako ikona. Aktualnie aktywne okno pozostaje aktywne.
Użycie

Jeśli funkcja Shell poprawnie uruchomiła podany plik wykonywalny, zwraca jako wynik identyfikator zadania. Identyfikator zadania jest to liczba jednoznacznie określająca wykonujący się program. Jeśli funkcja Shell nie może uruchomić wskazanego programu, sygnalizowany jest błąd. W przypadku użycia w środowisku Microsoft Windows funkcji MacID z funkcją Shell wystąpi błąd.

Uwaga   Funkcja Shell uruchamia programy w sposób asynchroniczny. Oznacza to, że program uruchomiony przez funkcję Shell może się nie zakończyć przed rozpoczęciem wykonywania instrukcji występujących po funkcji Shell.


Stop - instrukcja

Zawiesza wykonywanie programu.

Składnia

Stop

Użycie

Instrukcje Stop mogą w dowolnym miejscu procedur zawiesić wykonywanie programu. Umieszczenie w programie instrukcji Stop daje efekt podobny do ustawienia w kodzie programu punktu przerwania.

Instrukcja Stop zawiesza wykonywanie programu, jednak, w odróżnieniu od instrukcji End, nie zamyka plików i nie czyści zmiennych chyba że znajduje się w skompilowanym pliku wykonywalnym (.exe).


Switch - funkcja

Oblicza wartości na liście wyrażeń i zwraca wartość typu Variant lub wyrażenie odpowiadające pierwszemu na liście wyrażeniu o wartości True.

Składnia

Switch(wyr_1, wartość_1[, wyr_2, wartość_2 … [, wyr_n,wartość_n]])

Składnia funkcji Switch zawiera następujące elementy:

Element	Opis
wyr	Element obowiązkowy. Jest to wyrażenie typu Variant, które ma być obliczone.
wartość	Element obowiązkowy. Jest to wartość lub wyrażenie, które zostanie zwrócone, jeśli odpowiadające wyrażenie wyr ma wartość True.
Użycie

Lista argumentów funkcji Switch składa się z par wyrażeń i wartości. Wyrażenia są obliczane od lewej do prawej, a wartość odpowiadająca pierwszemu wyrażeniu o wartości True jest zwracana jako wynik funkcji. Jeśli pary nie są właściwie skonstruowane, wystąpi błąd wykonania. Przykładowo, jeśli wyrażenie wyr_1 ma wartość True, funkcja Switch zwróci wartość_1. Jeśli wyrażenie wyr_1 ma wartość False, ale wyrażenie wyr_2 ma wartość True, funkcja Switch zwróci wartość_2 i tak dalej.

Funkcja Switch zwróci wartość Null, jeśli:

·	wartość żadnego z wyrażeń nie jest równa True;

·	pierwszemu wyrażeniu o wartości True odpowiada wartość równa Null.

Funkcja Switch oblicza wszystkie wyrażenia, mimo że zwraca tylko jedno z nich. Z tej przyczyny należy uważać na ewentualne efekty uboczne. Jeśli na przykład obliczenie któregoś z wyrażeń powoduje dzielenie przez zero, wystąpi błąd.


While...Wend - instrukcja

Wykonuje ciąg instrukcji tak długo, jak długo warunek ma wartość True.

Składnia

While warunek
[instrukcje]

Wend

Składnia instrukcji While...Wend zawiera następujące elementy:

Element	Opis
warunek	Element obowiązkowy. Jest to wyrażenie numeryczne lub wyrażenie znakowe o wartości True lub False. Jeśli warunek ma wartość Null, jest traktowany tak, jakby miał wartość False.
instrukcje	Element nieobowiązkowy. Jest to jedna lub wiele instrukcji wykonywanych wtedy, gdy warunek ma wartość True.
Użycie

Jeśli warunek ma wartość True, wykonywane są wszystkie instrukcje aż do instrukcji Wend. Następnie sterowanie powraca do instrukcji While i warunek jest sprawdzany ponownie. Jeśli warunek ma nadal wartość True, proces jest powtarzany. Jeśli warunek nie jest już równy True, wykonywanie programu jest przenoszone do instrukcji następującej bezpośrednio po instrukcji Wend.

Pętle While...Wend mogą być zagnieżdżane do dowolnego poziomu. Każda instrukcja Wend odpowiada ostatniej instrukcji While.

Wskazówka   Bardziej elastycznym i strukturalnym sposobem tworzenia pętli jest zastosowanie instrukcji Do...Loop.


With - instrukcja

Wykonuje ciąg instrukcji na pojedynczym obiekcie lub na typie zdefiniowanym przez użytkownika.

Składnia

With obiekt
[instrukcje]

End With

Składnia instrukcji With zawiera następujące elementy:

Element	Opis
obiekt	Element obowiązkowy. Jest to nazwa obiektu lub typu zdefiniowanego przez użytkownika.
instrukcje	Element nieobowiązkowy. Jest to jedna lub więcej instrukcji wykonywanych na obiekcie.
Użycie

Instrukcja With umożliwia wykonanie ciągu instrukcji na określonym obiekcie bez konieczności wielokrotnego kwalifikowania składowych nazwą obiektu. Na przykład, aby zmienić wartości różnych właściwości pojedynczego obiektu, należy umieścić instrukcje przypisania tych wartości właściwościom wewnątrz struktury With, odwołując się do obiektu tylko raz, a nie tyle razy, ile jest instrukcji przypisania. Przykład poniżej pokazuje użycie instrukcji With do przypisania wartości kilku właściwościom jednego obiektu.

With MojaEtykieta

.Wysokosc = 2000

.Szerokosc = 2000

.Nagłówek = "Oto moja etykieta"

End With

Uwaga   Po wejściu do bloku instrukcji With nie ma możliwości zmiany elementu obiekt. Nie można zatem jedną instrukcją With operować na kilku różnych obiektach.

Instrukcje With można zagnieżdżać, umieszczając jeden blok With wewnątrz drugiego. Ponieważ jednak składowe z zewnętrznych bloków With są przesłaniane w blokach wewnętrznych, to aby odwołać się w bloku wewnętrznym do składowej obiektu z bloku zewnętrznego należy w bloku wewnętrznym użyć pełnego, kwalifikowanego odesłania do obiektu z bloku zewnętrznego.

Ważne  Nie należy wykonywać skoków do wnętrza lub z wnętrza bloków With. Jeśli wykonywane są instrukcje w bloku With, ale nie kończą się one wykonaniem instrukcji With lub End With, mogą wystąpić błędy lub program może zachowywać się w sposób nieprzewidziany.


Funkcja Asc - przykład

W tym przykładzie wykorzystano funkcję Asc do wyznaczenia kodu znaku odpowiadającego pierwszej literze ciągu znaków.

Dim MójNumer

MójNumer = Asc("A")	' Wynik: 65.

MójNumer = Asc("a")	' Wynik: 97.

MójNumer = Asc("Adam")	' Wynik: 65.


Funkcja CBool - przykład

W tym przykładzie wykorzystano funkcję CBool do zamiany wyrażenia na wartość typu Boolean. Jeśli wyrażenie przyjmuje wartość niezerową, funkcja CBool zwraca wartość True. W przeciwnym razie zwracana jest wartość False.

Dim A, B, Test

A = 5: B = 5	' Zainicjuj zmienne.

Test = CBool(A = B)	' Zmienna Test przyjmuje wartość

' True.

A = 0	' Zdefiniuj zmienną.

Test = CBool(A)	' Zmienna Test przyjmuje wartość

' False.


Funkcja CByte - przykład

W tym przykładzie wykorzystano funkcję CByte do zamiany wyrażenia na wartość typu Byte.

Dim MójDouble, MójByte

MójDouble = 125.5678	' Zmienna MójDouble jest typu

' Double.

MójByte = CByte(MójDouble)	' Zmienna MójByte ma

' wartość 126.


Funkcja CDate - przykład

W tym przykładzie wykorzystano funkcję CDate do zamiany ciągu znaków na wartość typu Date. Nie zaleca się przedstawiana daty i godziny w postaci ciągu znaków (tak jak pokazano w tym przykładzie). W zamian należy korzystać z literałów daty i godziny, takich jak #12.2.1969#, #16:45:23#.

Dim MojaData, MojaDataShort, MójCzas, MójCzasShort

MojaData = "12 luty 1969"	' Określ datę.

MojaDataShort = CDate(MojaData)	' Zamień na daną

' typu Date.

MójCzas = "16:35:47"	' Określ godzinę.

MójCzasShort = CDate(MójCzas)	' Zamień na daną

' typu Date.


Funkcja CCur - przykład

W tym przykładzie wykorzystano funkcję CCur do zamiany wyrażenia na wartość typu Currency.

Dim MójDouble, MójCurr

MójDouble = 543.214588	' Zmienna MójDouble jest typu

' Double.

MójCurr = CCur(MójDouble * 2)' Zamień wynik działania

' MójDouble * 2 (1086.429176) na wartość typu

' Currency (1086.4292).


Funkcja CDbl - przykład

W tym przykładzie wykorzystano funkcję CDbl do zamiany wyrażenia na wartość typu Double.

Dim MójCurr, MójDouble

MójCurr = CCur(234.456784)	' Zmienna MójCurr jest typu

' Currency.

MójDouble = CDbl(MójCurr * 8.2 * 0.01)	' Zamień wynik

' działania na wartość typu Double.


Funkcja CInt - przykład

W tym przykładzie wykorzystano funkcję CInt do zamiany pewnej wartości na wartość typu Integer.

Dim MójDouble, MójInt

MójDouble = 2345.5678	' Zmienna MójDouble jest typu

' Double.

MójInt = CInt(MójDouble)	' Zmienna MójInt ma wartość

' 2346.


Funkcja CLng - przykład

W tym przykładzie wykorzystano funkcję CLng do zamiany pewnej wartości na wartość typu Long.

Dim MojaWar1, MojaWar2, MójLong1, MójLong2

' Zmienne MojaWar1, MojaWar2 są typu Double.

MojaWar1 = 25427.45: MojaWar2 = 25427.55

MójLong1 = CLng(MojaWar1)	' Zmienna MójLong1

' ma wartość 25427.

MójLong2 = CLng(MojaWar2)	' Zmienna MójLong2

' ma wartość 25428.


Funkcja CSng - przykład

W tym przykładzie wykorzystano funkcję CSng do zamiany pewnej wartości na wartość typu Single.

Dim MójDouble1, MójDouble2, MójSingle1, MójSingle2

' Zmienne MójDouble1, MójDouble2 są typu Double.

MójDouble1 = 75.3421115: MójDouble2 = 75.3421555

MójSingle1 = CSng(MójDouble1)' Zmienna MójSingle1

' ma wartość 75.34211.

MójSingle2 = CSng(MójDouble2)'Zmienna MójSingle2

' ma wartość 75.34216.


Funkcja CStr - przykład

W tym przykładzie wykorzystano funkcję CStr do zamiany wartości numerycznej na wartość typu String.

Dim MójDouble, MójString

MójDouble = 437.324	' Zmienna MójDouble jest typu

' Double.

MójString = CStr(MójDouble)	' Zmienna MójString

' jest ciągiem "437.324".


Funkcja CVar - przykład

W tym przykładzie wykorzystano funkcję CVar do zamiany wyrażenia na wartość typu Variant.

Dim MójInt, MójVar

MójInt = 4534	' Zmienna MójInt jest typu Integer.

MójVar = CVar(MójInt & "000")' Zmienna MójVar zawiera

' ciąg 4534000.


Funkcja CVErr - przykład

W tym przykładzie wykorzystano funkcję CVErr do wyznaczenia wartości typu Variant, dla której funkcja VarType przyjmuje wartość vbError (10). Zdefiniowana przez użytkownika funkcja ObliczDouble zwraca błąd, jeśli przekazany jej parametr nie jest liczbą. W procedurach zdefiniowanych przez użytkownika można wykorzystać funkcję CVErr, aby zwracać numery błędów zdefiniowanych przez użytkownika lub odkładać na później obsługę błędów wykonania. Do sprawdzenia, czy dana wartość reprezentuje błąd, służy funkcja IsError.

' Wywołaj funkcję ObliczDouble, przekazując jej

' błędny parametr.

Sub Test()

Debug.Print ObliczDouble("345.45robert")

End Sub

' Definicja funkcji ObliczDouble.

Function ObliczDouble(Num)

If IsNumeric(Num) Then

ObliczDouble = Num * 2	' Zwróć wynik.

Else

ObliczDouble = CVErr(2001)	' Zwróć numer błędu

' zdefiniowanego przez użytkownika.

End If

End Function


Funkcja Val - przykład

W tym przykładzie wykorzystano funkcję Val do wyznaczenia wartości liczbowych zapisanych w postaci ciągów znaków.

Dim MojaWar

MojaWar = Val("2457")	' Wynik: 2457.

MojaWar = Val(" 2 45 7")	' Wynik: 2457.

MojaWar = Val("24 i 57")	' Wynik: 24.


Funkcje konwersji

Asc - funkcja

CBool - funkcja

CByte - funkcja

CCur - funkcja

CDate - funkcja

CDec - funkcja

CDbl - funkcja

Chr - funkcja

CInt - funkcja

CLng - funkcja

CSng - funkcja

CStr - funkcja

CVar - funkcja

CVErr - funkcja

Format - funkcja

Hex - funkcja

Oct - funkcja

Str - funkcja

Val - funkcja


Asc - funkcja

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

Składnia

Asc(ciąg)

Obowiązkowy argument ciąg jest dowolnym poprawnym wyrażeniem znakowym. Jeśli ciąg nie zawiera żadnego znaku, wystąpi błąd wykonania.

Użycie

W systemie różnym od systemu DBCS funkcja zwraca wartości z przedziału od 0 do 255, a w systemach DBCS - wartości z przedziału od -32768 do 32767.

Uwaga   Funkcja AscB jest używana z argumentem, który jest ciągiem bajtów. Zamiast kodu pierwszego znaku ciągu, funkcja AscB zwraca pierwszy bajt ciągu. Funkcja AscW natomiast zwraca kod znaku formatu Unicode z wyjątkiem platform gdzie format Unicode nie jest obsługiwany, w tym przypadku funkcja AscW zachowuje się identycznie jak funkcja Asc.


CVErr - funkcja

Zwraca wartość typu Variant o podtypie Error, zawierającą określony przez użytkownika numer błędu.

Składnia

CVErr(numer_błędu)

Obowiązkowy argument numer_błędu jest dowolnym poprawnym numerem błędu.

Użycie

Funkcja CVErr pozwala w procedurach użytkownika definiować własną obsługę błędu. Na przykład, jeśli funkcja użytkownika ma przyjmować argumenty o wartościach z pewnego przedziału i prawidłowo powinna zwracać ciąg, to może ona sprawdzać, czy wartości argumentów wejściowych należą do odpowiedniego przedziału. Jeśli wartości argumentów wejściowych są inne niż oczekiwane, prawdopodobnie funkcja zwróci wartości nieprawidłowe. W takim przypadku funkcja CVErr umożliwia wygenerowanie numeru błędu, informującego o tym, jakie należy podjąć działania.

Należy zauważyć, że zmiennych typu Error nie można poddać ukrytej konwersji. Na przykład, nie można bezpośrednio przypisać wartości zwracanej przez funkcję CVErr do zmiennej, która nie jest typu Variant. Można jednak dokonać jawnej konwersji wartości zwracanej przez funkcję CVErr (używając funkcji CInt, CDbl itp.) i przypisać tą wartość do zmiennej odpowiedniego typu danych.


Val - funkcja

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

Składnia

Val(ciąg)

Obowiązkowy argument ciąg jest dowolnym poprawnym wyrażeniem znakowym.

Użycie

Funkcja Val przerywa odczyt ciągu przy pierwszym znaku, który nie jest fragmentem liczby. Symbole i znaki, które często stanowią element wartości numerycznych, na przykład znak dolara czy przecinek, nie są rozpoznawane przez funkcję Val. Funkcja Val rozpoznaje jednak symbol podstawy &O (dla systemu ósemkowego) i &H (dla systemu szesnastkowego). Spacje, tabulatory i znaki wysuwu wiersza są pomijane.

W poniższym przykładzie funkcja zwraca wartość 1615198:

Val("    1615 198th Street N.E.")

W poniższym fragmencie kodu programu dla liczby szesnastkowej, będącej argumentem funkcji Val, zwracana jest liczba dziesiętna -1:

Val("&HFFFF")

Uwaga Jedynym separatorem dziesiętnym rozpoznawanym przez funkcję Val jest kropka (.). Jeżeli używany jest inny separator dziesiętny, na przykład w aplikacjach zlokalizowanych, to aby dokonać konwersji ciągu na liczbę, należy użyć funkcji CDbl.


Funkcje konwersji typu

Każda z funkcji wymusza konwersję wyrażenia na podany typ danych.

Składnia

CBool(wyrażenie)

CByte(wyrażenie)

CCur(wyrażenie)

CDate(wyrażenie)

CDbl(wyrażenie)

CDec(wyrażenie)

CInt(wyrażenie)

CLng(wyrażenie)

CSng(wyrażenie)

CVar(wyrażenie)

CStr(wyrażenie)

Obowiązkowy argument wyrażenie jest dowolnym wyrażeniem znakowym lub wyrażeniem numerycznym.

Typy zwracanych wartości

Nazwa funkcji implikuje typ zwracanej wartości, zgodnie z poniższą tabelą:

Funkcja	Typ zwracanej wartości	Przedział wartości dla argumentu expression
CBool	Boolean	Dowolny poprawny ciąg lub wyrażenie numeryczne.
CByte	Byte	Od 0 do 255.
CCur	Currency	Od -922 337 203 685 477,5808 do 922 337 203 685 477,5807.
CDate	Date	Dowolne wyrażenie oznaczające datę.
CDbl	Double	Od -1,79769313486232E308 do  -4,94065645841247E-324 dla wartości ujemnych; od 4,94065645841247E-324 do 1,79769313486232E308 dla wartości dodatnich.
CDec	Decimal	+/-79 228 162 514 264 337 593 543 950 335 dla liczb z zerową liczbą miejsc po przecinku. Dla liczb z 28 miejscami po przecinku, przedział wartości wynosi  +/-7,9228162514264337593543950335. Najmniejszą możliwą liczbą różną od zera jest 0,0000000000000000000000000001.
CInt	Integer	Od -32 768 do 32 767; część ułamkowa jest zaokrąglana.
CLng	Long	Od -2 147 483 648 do 2 147 483 647; część ułamkowa jest zaokrąglana.
CSng	Single	Od -3,402823E38 do -1,401298E-45 dla wartości ujemnych; od 1,401298E-45 do 3,402823E38 dla wartości dodatnich.
CVar	Variant	Dla wartości numerycznych: taki sam przedział wartości jak dla typu Double. Dla wartości nienumerycznych: taki sam przedział wartości jak dla typu String.
CStr	String	Wartości zwracane przez funkcję CStr zależą od argumentu wyrażenie.
Użycie

Jeśli wyrażenie przekazywane do funkcji wykracza poza przedział dopuszczalnych wartości dla typu danych, do którego dokonano konwersji, wystąpi błąd.

Funkcje konwersji typu danych można stosować, aby pokazać, że wyniki niektórych przekształceń powinny być wyrażone w postaci innego typu danych niż domyślny. Na przykład, do przeprowadzenia obliczeń na walutach, zamiast obliczeń pojedynczej precyzji, podwójnej precyzji lub obliczeń w dziedzinie liczb całkowitych należy użyć funkcji CCur.

Aby dokonać konwersji typów danych na inne typy danych z uwzględnieniem ustawień regionalnych należy zamiast funkcji Val użyć funkcji konwersji typów danych. Na przykład, użycie funkcji Ccur gwarantuje, że separatory dziesiętne, separatory tysięczne i waluty będą rozpoznawane zgodnie z ustawieniami lokalnymi komputera.

Jeśli część ułamkowa wynosi dokładnie 0,5, funkcje CInt i CLng zawsze zaokrągla część ułamkową do najbliższej parzystej liczby całkowitej. Na przykład, liczba 0,5 zostanie zaokrąglona do 0, a liczba 1,5 do 2. Funkcje CInt i CLng różnią się od funkcji Fix i Int tym, że funkcje Fix i Int obcinają część ułamkową liczby a nie zaokrąglają jej. Poza tym, funkcje Fix i Int zwracają wartość tego samego typu co typ argumentów wejściowych.

Aby określić, czy zmienna typu data ma zostać poddana konwersji na datę, czy konwersji na godzinę, należy użyć funkcji IsDate. Funkcja CDate rozpoznaje zarówno literały daty i literały określające godzinę, jak i liczby z przedziału dopuszczalnych wartości daty. Podczas konwersji liczby na datę, konwersji poddawane są wszystkie elementy liczby. Część ułamkowa liczby poddawana jest konwersji na godzinę, rozpoczynając od północy.

Funkcja CDate rozpoznaje format daty zgodnie z lokalnymi ustawieniami systemu użytkownika. Poprawny zapis dnia, miesiąca i roku w określonym porządku może nie zostać rozpoznany, jeśli jest przedstawiony w formacie innym niż ustawienia daty w systemie. Ponadto, jeśli długi format daty zawiera nazwę dnia tygodnia, również nie jest rozpoznawany.

Dla zachowania zgodności z poprzednią wersją języka Visual Basic nadal stosowana jest funkcja CVDate. Składnia funkcji CVDate jest identyczna jak składnia funkcji CDate, chociaż funkcja CVDate zamiast typu rzeczywistego Date zwraca wartość typu Variant o podtypie Date. W przypadku, gdy używany jest typ wewnętrzny Date, nie ma potrzeby stosowania funkcji CVDate. Wynik będzie taki sam, jeśli wyrażenie zostanie poddane konwersji na typ Date, a następnie przypisane do typu Variant. Ta technika jest spójna ze sposobem konwersji wszystkich typów wewnętrznych na odpowiadające im podtypy typu Variant.

Uwaga Funkcja CDec nie zwraca danych typu dyskretnego, zwraca natomiast wartość typu Variant, poddaną konwersji na podtyp typu Decimal.


Wartości zwracane przez funkcję CStr

Jeśli expression jest typu	... funkcja CStr zwraca
Boolean	ciąg składający się z wyrażenia True lub False
Date	ciąg daty zapisanej w skróconym formacie daty systemu użytkownika
Null	błąd wykonania
Empty	ciąg o długości zerowej ("")
Error	ciąg, w którym po słowie Error występuje numer błędu
Inne wartości numeryczne	ciąg będący liczbą


Boolean - typ danych

Zmienne typu Boolean są przechowywane jako liczby 16-bitowe (2-bajtowe), ale mogą przyjmować tylko wartości True lub False. Zmienne typu Boolean są wyświetlane jako True lub False (jeśli użyto instrukcji Print) lub #TRUE# lub #FALSE# (jeśli użyto instrukcji Write #). Aby nadać zmiennym typu Boolean jeden tych z dwóch stanów, należy użyć słowa kluczowego True i False.

Przy konwersji innych typów numerycznych do wartości typu Boolean, 0 przyjmuje wartość False, natomiast wszystkie inne wartości stają się równe True. Jeśli wartości typu Boolean są poddawane konwersji do innych typów danych, to False staje się 0, a True staje się -1.


Byte - typ danych

Zmienne typu Byte są przechowywane jako liczby bez znaku, 8-bitowe (1-bajtowe) w zakresie od 0 do 255.

Typ danych Byte nadaje się do przechowywania danych binarnych.


Currency - typ danych

Zmienne typu Currency są przechowywane jako liczby 64-bitowe (8-bajtowe) w formacie całkowitym, w skali 10 000, tak by otrzymać liczbę stałoprzecinkową z 15 cyframi przed przecinkiem dziesiętnym i 4 cyframi po. W tej reprezentacji zakres wynosi od 922 337 203 685 477,5808 do 922 337 203 685 477,5807. Znakiem deklaracji typu dla typu Currency jest symbol (@).

Typ danych Currency nadaje się do przeprowadzania obliczeń uwzględniających wartości pieniężne, oraz do obliczeń stałoprzecinkowych, w których szczególnie ważna jest dokładność.


Typy danych - podsumowanie

W następującej tabeli znajdują się dopuszczalne typy danych, włączając w to ich rozmiar oraz zakres.

Typ danych	Rozmiar	Zakres
Byte	1 bajt	Od 0 do 255
Boolean	2 bajty	True lub False
Integer	2 bajty	Od -32 768 do 32 767
Long (całkowity długi)	4 bajty	Od -2 147 483 648 do 2 147 483 647
Single  (zmiennoprzecinkowy pojedynczej precyzji)	4 bajty	Od -3,402823E38 do -1,401298E-45 dla wartości ujemnych; od 1,401298E-45 do 3,402823E38 dla wartości dodatnich
Double  (zmiennoprzecinkowy podwójnej precyzji)	8 bajtów	Od -1,797 693 134 862 32E308 do  -4,94065645841247E-324 dla wartości ujemnych; od 4,94065645841247E-324 do 1,79769313486232E308 dla wartości dodatnich
Currency (całkowity skalowany)	8 bajtów	Od -922 337 203 685 477,5808 to 922 337 203 685 477,5807
Decimal	14 bajtów	+/-79 228 162 514 264 337 593 543 950 335 bez przecinka dziesiętnego;  +/-7,9228162514264337593543950335 z 28 miejscami po przecinku; najmniejszą liczbą niezerową jest  +/-0,0000000000000000000000000001
Date	8 bajtów	Od 1 stycznia 100r. do 31 grudnia 9999r.
Object	4 bajty	Dowolne odesłanie do wartości typu Object
String (zmiennej długości)	10 bajtów + długość ciągu	Od 0 do około 2 miliardów
String (ustalonej długości)	Długość ciągu	Od 1 do około 65 400
Variant (z liczbami)	16 bajtów	Każda wartość numeryczna w zakresie typu Double
Variant (ze znakami)	22 bajty + długość ciągu	Taki sam zakres co dla zmiennej typu String zmiennej długości
Definiowany przez użytkownika (przy użyciu Type)	Liczba wymagana przez elementy	Zakres każdego elementu jest taki sam jak zakres typu danych tego elementu
Uwaga   Tablice dowolnego typu danych wymagają 20 bajtów pamięci plus 4 bajty na każdy wymiar tablicy plus liczba bajtów potrzebnych na jej dane. Pamięć zajmowaną przez dane można wyznaczyć, mnożąc liczbę elementów danych przez rozmiar każdego elementu. Przykładowo, dane w jednowymiarowej tablicy zawierającej 4 elementy danych typu Integer zajmujące po 2 bajty zajmują 8 bajtów. 8 bajtów potrzebne na dane oraz dodatkowe 24 bajty dają całkowity obszar o wielkości 32 bajtów, jakie są potrzebne do przechowywania tablicy.

Typ danych Variant zawierający tablicę wymaga o 12 bajtów pamięci więcej niż sama tablica.


Date - typ danych

Zmienne typu Date są przechowywane jako liczby zmiennoprzecinkowe 64-bitowe (8-bajtowe) zgodne z normą IEEE, przedstawiające daty w zakresie od 1 stycznia 100r. do 31 grudnia 9999r. oraz godziny od 0:00:00 do 23:59:59. Zmiennym typu Date można przypisywać dowolne literały daty. Literały daty muszą być ujęte w symbole (#), np. #1 stycznia 1993# lub #1 Sty 93#.

Zmienne typu Date wyświetlają daty zgodnie z krótkim formatem daty stosowanym w systemie. Godziny wyświetlane są zgodnie z formatem godziny (12-godzinnym albo 24-godzinnym), także stosowanym w danym systemie.

Kiedy przeprowadzana jest konwersja z innych typów numerycznych do typu Date, to wartości przed przecinkiem reprezentują informację o dacie, natomiast po przecinku reprezentują godzinę. Wartość 0 oznacza północ, a wartość 0,5 południe. Ujemne liczby całkowite reprezentują daty przed 30 grudnia 1899.


Decimal - typ danych

Zmienne typu Decimal są przechowywane jako liczby całkowite bez znaku, 96-bitowe (12-bajtowe), skalowane zmienną potęgą liczby 10. Potęga współczynnika skalującego określa liczbę cyfr przed przecinkiem i może przyjąć wartości od 0 do 28. Dla skali 0 (bez miejsc po przecinku) największą możliwą wartością jest +/-79 228 162 514 264 337 593 543 950 335. Dla 28 miejsc po przecinku największą wartością jest +/-7,9228162514264337593543950335, a najmniejszą niezerową wartością jest +/-0,0000000000000000000000000001.

Uwaga   W obecnej wersji systemu typ danych Decimal może być użyty tylko wewnątrz typu Variant, tzn. nie można zadeklarować zmiennej typu Decimal. Można jednak, używając funkcji CDec, utworzyć zmienną typu Variant, której podtypem jest Decimal.


Double - typ danych

Zmienne typu Double (wartości zmiennoprzecinkowe podwójnej precyzji) są przechowywane jako liczby zmiennoprzecinkowe 64-bitowe (8-bajtowe) zgodne z normą IEEE o zakresie wartości od -1,79769313486232E308 do -4,94065645841247E-324 dla wartości ujemnych i od 4,94065645841247E-324 do 1,79769313486232E308 dla wartości dodatnich. Znakiem deklaracji typu dla typu Double jest symbol numeru (#).


Integer - typ danych

Zmienne typu Integer są przechowywane jako liczby 16-bitowe (2-bajtowe) o zakresie wartości od -32 768 do 32 767. Znakiem deklaracji typu dla typu Integer jest symbol procentu (%).

Zmiennych typu Integer można także używać do reprezentowania wartości wyliczanych. Wartość wyliczana może zawierać skończony zbiór nie powtarzających się liczb całkowitych, z których każda ma specyficzne znaczenie dla danego kontekstu. Wartości wyliczane stanowią wygodny sposób do wyboru spośród znanej liczby możliwości, np. czarny = 0, biały = 1, itd. Dobrą i zalecaną praktyką programowania jest definiowanie stałych instrukcją Const dla każdej wartości wyliczanej.


Long - typ danych

Zmienne typu Long (wartości całkowite długie) są przechowywane jako liczby 32-bitowe ze znakiem (4-bajtowe) o zakresie wartości od - 2 147 483 648 do 2 147 483 647. Znakiem deklaracji typu dla typu Long jest symbol handlowego "i" (&).


Object - typ danych

Zmienne typu Object są przechowywane jako 32-bitowe (4-bajtowe) adresy, które wskazują na obiekty. Przy użyciu instrukcji Set można przypisać zmiennej zadeklarowanej jako Object dowolne odesłanie do obiektu.

Uwaga   Ponieważ zmienna typu Object jest wystarczająco elastyczna, aby zawierać odesłanie do dowolnego obiektu, więc wiązanie do wskazanego obiektu dokonywane po przez tę zmienną jest zawsze opóźnione (wiązanie w czasie wykonywania). Aby wymusić wiązanie wczesne (wiązanie w czasie kompilacji), należy przypisać odesłanie do obiektu do zmiennej zadeklarowanej z określoną nazwą klasy.


Single - typ danych

Zmienne typu Single (wartości zmiennoprzecinkowe pojedynczej precyzji) są przechowywane jako 32-bitowe (4-bajtowe) liczby zmiennoprzecinkowe, które mogą przyjmować wartości z zakresu od -3,402823E38 do -1,401298E-45 dla wartości ujemnych oraz wartości z zakresu od 1,401298E-45 do 3,402823E38 dla wartości dodatnich. Znakiem deklaracji typu dla typu Single jest wykrzyknik (!).


String - typ danych

Istnieją dwa rodzaje ciągów znaków: ciągi o zmiennej długości i ciągi o stałej długości.

•	Ciąg o zmiennej długości może zawierać do około 2 miliardów (2^31) znaków.

•	Ciąg o stałej długości może zawierać od 1 do około 64 KB (2^16) znaków.

Uwaga   Ciągu o stałej długości typu Public nie można użyć w module klasy.

Kody znaków dla typu String przyjmują wartości z zakresu od 0 do 255. Pierwsze 128 znaków (0-127) jest to zestaw znaków odpowiadający literom i symbolom standardowej klawiatury amerykańskiej. Są to te same znaki co znaki zdefiniowane w zestawie znaków ASCII. Pozostałe 128 znaków (128-255) są to znaki specjalne, takie jak litery alfabetów międzynarodowych, akcenty, symbole walut i ułamków. Znakiem deklaracji typu dla typu String jest symbol dolara ($).


Typ danych definiowany przez użytkownika

Jest to dowolny typ danych definiowany za pomocą instrukcji Type. Typy danych definiowane przez użytkownika mogą zawierać jeden lub więcej elementów standardowego typu danych, tablice lub uprzednio zdefiniowany przez użytkownika typ danych. Na przykład:

Type MojTyp

Imię As String	' Zmienna typu String na imię.

DataUrodzin As Date	' Zmienna typu Date na datę urodzin.

Płeć As Integer	' Zmienna typu Integer na płeć

End Type	' (0 to kobieta, 1 to mężczyzna)


Variant - typ danych

Typ Variant jest typem danych przeznaczonym dla wszystkich zmiennych, których nie zadeklarowano formalnie jako zmiennych określonego typu (za pomocą instrukcji takich jak: Dim, Private, Public lub Static). Typ danych Variant nie ma swojego znaku deklaracji typu.

Typ Variant jest specjalnym typem danych, który może zawierać każde dane z wyjątkiem danych typu String o stałej długości i danych typu zdefiniowanego przez użytkownika. Zmienne typu Variant mogą także zawierać wartości specjalne, takie jak Empty, Error, Nothing i Null. Można określić, jakiemu typowi danych mają odpowiadać dane zawarte w zmiennej typu Variant, używając funkcji VarType lub funkcji TypeName.

Dane numeryczne mogą przyjmować wartości całkowite lub rzeczywiste z zakresu od -1,797693134862315E308 do -4,94066E-324 dla wartości ujemnych i od 4,94066E-324 do 1.797693134862315E308. Ogólnie, dane numeryczne typu Variant są utrzymywane wewnątrz typu Variant jako dane oryginalnego typu. Na przykład, jeśli zmiennej typu Variant przypisze się wartość typu Integer, to następne operacje na zmiennej typu Variant są wykonywane jak na zmiennej typu Integer. Jeśli jednak w wyniku operacji arytmetycznej na zmiennej typu Variant zawierającej wartość typu Byte, Integer, Long lub Single zostanie przekroczony zakres dla danych tego typu, to wynik umieszczony w zmiennej typu Variant będzie przypisany do typu o zakresie większym od zakresu poprzedniego typu. Zgodnie z tą zasadą, typem następnym po Byte jest Integer, następnym po Integer jest Long, a następnym po Long i Single jest Double. Jeśli zmienne Variant zawierają wartości typu Currency, Decimal albo Double i wartość przekroczy ich zakres, to wystąpi błąd.

Typu danych Variant można używać zamiast dowolnego typu, co umożliwia bardziej elastyczne operowanie danymi. Jeśli zawartością zmiennej typu Variant są cyfry, to może być użyta, w zależności od kontekstu, reprezentacja tych cyfr jako ciągu znaków albo ich wartość liczbowa, np.:

Dim MojaTablica As Variant

MojaTablica = 98052

W powyższym przykładzie zmienna MojaTablica zawiera reprezentację numeryczną wartości 98052. Operacje arytmetyczne mogą działać na zmiennych typu Variant zawierających wartości numeryczne lub na ciągach znaków, które mogą być interpretowane jako liczby. Jeśli użyje się operatora +, aby dodać zmienną do innej zmiennej typu Variant zawierającej liczbę lub do zmiennej typu numerycznego, to wynikiem jest suma arytmetyczna.

Wartość Empty oznacza, że zmienna typu Variant nie była jeszcze inicjowana (nie przypisano jej wartości początkowej). Zmienna zawierająca wartość Empty wynosi 0, jeśli używa się jej do działań numerycznych, natomiast dla operacji na ciągach odpowiada ciągowi o zerowej długości ("").

Nie należy mylić wartości Empty z wartością Null. Wartość Null oznacza, że zmienna typu Variant nie zawiera poprawnych danych.

Wartość Error zmiennej typu Variant jest specjalną wartością używaną w celu oznaczenia, że w procedurze został spełniony warunek błędu. W odróżnieniu jednak od innych rodzajów błędu, nie jest tu wywoływana normalna obsługa błędów aplikacji. Pozwala to na podjęcie alternatywnej akcji opartej na wartości tego błędu. Wartości Error tworzy się, zamieniając liczby rzeczywiste na wartości błędu za pomocą funkcji CVErr.


Funkcja Date - przykład

W tym przykładzie wykorzystano funkcję Date do pobrania bieżącej daty systemowej.

Dim MojaData

MojaData = Date	' MojaData zawiera bieżącą datę systemową.


Instrukcja Date - przykład

W tym przykładzie wykorzystano instrukcję Date do ustawienia daty systemowej komputera. W środowisku projektowania literał daty jest wyświetlany w krótkim formacie daty, zgodnie z ustawieniami regionalnymi obowiązującymi dla danego programu.

Dim MojaData

MojaData = #12 luty 1985#	' Przypisz datę.

Date = MojaData	' Zmień datę systemową.


Funkcja DateAdd - przykład

W tym przykładzie użytkownik wprowadza datę, po czym, przy użyciu funkcji DateAdd, wyświetlana jest data późniejsza od wprowadzonej o zadaną liczbę miesięcy.

Dim PierwszaData As Date	' Zadeklaruj zmienne.

Dim TypPrzedziału As String

Dim Liczba As Integer

Dim Kom

TypPrzedziału = "m"	' "m" oznacza, że odstęp zostanie podany w miesiącach.

PierwszaData = InputBox("Wprowadź datę")

Liczba = InputBox("Wprowadź liczbę miesięcy, która ma być dodana")

Kom = "Nowa data: " & DateAdd(TypPrzedziału, Liczba, PierwszaData)

MsgBox Kom


Funkcja DateDiff - przykład

W tym przykładzie wykorzystano funkcję DateDiff do wyświetlenia liczby dni między podaną datą a dniem bieżącym.

Dim PodanaData As Date	' Zadeklaruj zmienne.

Dim Kom

PodanaData = InputBox("Wprowadź datę")

Kom = "Liczba dni od dzisiaj: " & DateDiff("d", Now, PodanaData)

MsgBox Kom


Funkcja DatePart - przykład

W tym przykładzie użytkownik wprowadza datę, po czym, przy użyciu funkcji DatePart, wyświetlany jest numer kwartału, do którego należy podany dzień.

Dim PodanaData As Date	' Zadeklaruj zmienne.

Dim Kom

PodanaData = InputBox("Wprowadź datę:")

Kom = "Kwartał: " & DatePart("q", PodanaData)

MsgBox Kom


Funkcja DateSerial - przykład

W tym przykładzie wykorzystano funkcję DateSerial do wyznaczenia daty na podstawie wartości roku, miesiąca i dnia.

Dim MojaData

' MojaData zawiera wartość daty odpowiadającą dniu 12 lutego 1969.

MojaData = DateSerial(1969, 2, 12)	' Wyznacz datę.


Funkcja DateValue - przykład

W tym przykładzie wykorzystano funkcję DateValue do przekształcenia ciągu znaków na datę. Do bezpośredniego przypisania daty do zmiennej typu Variant lub Date można też użyć literału daty, na przykład MojaData = #12.02.69#.

Dim MojaData

MojaData = DateValue("12 luty 1969")	' Wyznacz datę.


Funkcja Day - przykład

W tym przykładzie wykorzystano funkcję Day do wydzielenia dnia miesiąca z określonej daty. W środowisku projektowania literał daty jest wyświetlany w krótkim formacie daty, zgodnie z ustawieniami regionalnymi obowiązującymi dla danego programu.

Dim MojaData, MójDzień

MojaData = #12 luty 1969#	' Przypisz datę.

MójDzień = Day(MojaData)	' MójDzień zawiera liczbę 12.


Funkcja Hour - przykład

W tym przykładzie wykorzystano funkcję Hour do wydzielenia godziny z podanego czasu dnia. W środowisku projektowania literał czasu dnia jest wyświetlany w krótkim formacie godziny, zgodnie z ustawieniami regionalnymi obowiązującymi dla danego programu.

Dim MójCzas, MojaGodzina

MójCzas = #16:35:17#	' Przypisz czas dnia.

MojaGodzina = Hour(MójCzas)	' MojaGodzina zawiera liczbę 16.


Funkcja Minute - przykład

W tym przykładzie wykorzystano funkcję Minute do wydzielenia minut z podanej godziny (czasu dnia). W środowisku projektowania literał czasu dnia jest wyświetlany w krótkim formacie godziny, zgodnie z ustawieniami regionalnymi obowiązującymi dla danego programu.

Dim MójCzas, MojeMinuty

MójCzas = #16:35:17#	' Przypisz czas dnia.

MojeMinuty = Minute(MójCzas)	' Zmienna MojeMinuty zawiera liczbę 35.


Funkcja Month - przykład

W tym przykładzie wykorzystano funkcję Month do wydzielenia numeru miesiąca z określonej daty. W środowisku projektowania literał daty jest wyświetlany w krótkim formacie daty, zgodnie z ustawieniami regionalnymi obowiązującymi dla danego programu.

Dim MojaData, MójMiesiąc

MojaData = #12 luty 1969#	' Przypisz datę.

MójMiesiąc = Month(MojaData)	' MójMiesiąc zawiera liczbę 2.


Funkcja Now - przykład

W tym przykładzie wykorzystano funkcję Now do pobrania bieżącej daty i godziny systemowej.

Dim Dzisiaj

Dzisiaj = Now	' Przypisz bieżącą datę i godzinę systemową.


Funkcja Second - przykład

W tym przykładzie wykorzystano funkcję Second do wydzielenia sekund z podanej godziny (czasu dnia). W środowisku projektowania literał czasu dnia jest wyświetlany w krótkim formacie godziny, zgodnie z ustawieniami regionalnymi obowiązującymi dla danego programu.

Dim MójCzas, MojeSekundy

MójCzas = #16:35:17#	' Przypisz czas dnia.

MojeSekundy = Second(MójCzas)	' Zmienna MojeSekundy zawiera liczbę 17.


Funkcja Time - przykład

W tym przykładzie wykorzystano funkcję Time do pobrania bieżącego czasu systemowego (godziny).

Dim MójCzas

MójCzas = Time	' Pobierz bieżący czas systemowy.


Instrukcja Time - przykład

W tym przykładzie wykorzystano instrukcję Time do ustawienia bieżącego czasu systemowego (godziny) na konkretną wartość.

Dim MójCzas

MójCzas = #16:35:17#	' Przypisz czas.

Time = MójCzas	' Ustaw czas systemowy na MójCzas.


Funkcja Timer - przykład

W tym przykładzie wykorzystano funkcję Timer do przerwania wykonywania aplikacji. W przykładzie użyto również instrukcji DoEvents, aby w trakcie przerwy mogły działać inne procesy.

Dim DługośćPrzerwy, Start, Koniec, CzasCałk

If (MsgBox("Naciśnij Tak, aby przerwać program na 5 sekund", 4)) = vbYes Then

DługośćPrzerwy = 5	' Ustaw długość przerwy.

Start = Timer	' Pobierz czas początku przerwy.

Do While Timer < Start + DługośćPrzerwy

DoEvents	' Pozwól działać innym procesom.

Loop

Koniec = Timer	' Pobierz czas zakończenia przerwy.

CzasCałk = Koniec - Start	' Oblicz czas całkowity.

MsgBox "Przerwa trwała " & CzasCałk & " sekund"

Else

End

End If


Funkcja TimeSerial - przykład

W tym przykładzie wykorzystano funkcję TimeSerial do wyznaczenia czasu dnia na podstawie podanej godziny, minuty i sekundy.

Dim MójCzas

MójCzas = TimeSerial(16, 35, 17)	' MójCzas zawiera porządkową

' reprezentację godziny 16:35:17.


Funkcja TimeValue - przykład

W tym przykładzie wykorzystano funkcję TimeValue do przekształcenia ciągu znaków na godzinę (czas dnia). Do bezpośredniego przypisania godziny do zmiennej typu Variant lub Date można też użyć literału daty, na przykład MójCzas = #16:35:17#.

Dim MójCzas

MójCzas = TimeValue("4:35:17 PM")	' Wyznacz czas dnia.


Funkcja Weekday - przykład

W tym przykładzie wykorzystano funkcję Weekday do wyznaczenia dnia tygodnia na podstawie podanej daty.

Dim MojaData, MójDzieńTygodnia

MojaData = #12 luty 1969#	' Przypisz datę.

MójDzieńTygodnia = Weekday(MojaData)	' MójDzieńTygodnia zawiera liczbę

' 4, ponieważ MojaData reprezentuje środę.


Funkcja Year - przykład

W tym przykładzie wykorzystano funkcję Year do wydzielenia roku z określonej daty. W środowisku projektowania literał daty jest wyświetlany w krótkim formacie daty, zgodnie z ustawieniami regionalnymi obowiązującymi dla danego programu.

Dim MojaData, MójRok

MojaData = #12 luty 1969#	' Przypisz datę.

MójRok = Year(MojaData)	' MójRok zawiera liczbę 1969.


Date - funkcja

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

Składnia

Date

Użycie

Do ustawienia daty systemowej służy instrukcja Date.


Date - instrukcja

Ustawia bieżącą datę systemową.

Składnia

Date = data

Dla systemów działających pod kontrolą Windows 95 wartość data musi określać datę z przedziału od 1 stycznia 1980 roku do 31 grudnia 2099 roku. Dla systemów działających pod kontrolą Windows NT wartość data musi określać datę z przedziału od 1 stycznia 1980 roku do 31 grudnia 2079 roku.


DateAdd - funkcja

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

Składnia

DateAdd(interval, number, date)

Funkcja DateAdd ma następujące nazwane argumenty:

Argument	Opis
interval	Argument obowiązkowy. Wyrażenie znakowe będące przedziałem czasu, który ma zostać dodany.
number	Argument obowiązkowy. Wyrażenie numeryczne będące liczbą przedziałów, które mają zostać dodane. Może być ono dodatnie (daje w wyniku daty z przyszłości) lub ujemne (daje w wyniku daty z przeszłości).
date	Argument obowiązkowy. Wartość typu Variant (Date) lub literał reprezentujący datę, do której dodawany jest przedział czasu.
Ustawienia

Argument interval ma następujące ustawienia:

Ustawienie	Opis
yyyy	Rok
q	Kwartał
m	Miesiąc
y	Dzień roku
d	Dzień
w	Dzień tygodnia
ww	Tydzień
h	Godzina
n	Minuta
s	Sekunda
Użycie

Funkcję DateAdd można zastosować w celu dodania lub odjęcia określonego przedziału czasu od daty. Na przykład, można się posłużyć funkcją DateAdd w celu wyliczenia daty, która nastąpi za 30 dni od dnia dzisiejszego lub w celu wyliczenia godziny, która nastąpi za 45 minut od chwili bieżącej.

W celu dodania dni do wyrażenia date można się posłużyć wartościami "Dzień roku" ("y"), "Dzień" ("d") lub "Dzień tygodnia" ("w").

Funkcja DateAdd nie może zwrócić niepoprawnej daty. Poniższy przykład przedstawia próbę dodania jednego miesiąca do daty 31 stycznia:

DateAdd("m", 1, "31-Sty-95")

W tym wypadku funkcja DateAdd zwróci wartość 28-Lut-95, a nie 31-Lut-95. Jeśli wartość argumentu date wynosi 31-Sty-96, zwrócona zostanie wartość 29-Lut-96, ponieważ rok 1996 jest rokiem przestępnym.

Jeśli wyliczana wartość miałaby poprzedzać rok 100 (czyli w przypadku odjęcia większej liczby lat niż zawiera data będąca wartością argumentu date), wystąpi błąd.

Jeśli wartość number nie jest liczbą typu Long, przed użyciem jest zaokrąglana do najbliższej wartości całkowitej.


DateDiff - funkcja

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

Składnia

DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])

Funkcja DateDiff ma następujące nazwane argumenty:

Argument	Opis
interval	Argument obowiązkowy. Jest to wyrażenie znakowe będące przedziałem czasu używanym do wyliczenia różnicy pomiędzy datami date1 i date2.
date1, date2	Argumenty obowiązkowe; Variant (Date). Są to dwie daty, które mają być użyte do obliczeń.
firstdayofweek	Argument nieobowiązkowy. Stała określająca pierwszy dzień tygodnia. Jeśli nie jest określona, przyjmuje się niedzielę.
firstweekofyear	Argument nieobowiązkowy. Stała określająca pierwszy tydzień roku. Jeśli nie jest określona, przyjmuje się tydzień zawierający dzień 1 stycznia.
Ustawienia

Argument interval ma następujące ustawienia:

Ustawienia	Opis
yyyy	Rok
q	Kwartał
m	Miesiąc
y	Dzień roku
d	Dzień
w	Dzień tygodnia
ww	Tydzień
h	Godzina
n	Minuta
s	Sekunda
Argument firstdayofweek ma następujące ustawienia:

Stała	Wartość	Opis
vbUseSystem	0	Używa ustawienia NLS API.
vbSunday	1	Niedziela (domyślnie)
vbMonday	2	Poniedziałek
vbTuesday	3	Wtorek
vbWednesday	4	Środa
vbThursday	5	Czwartek
vbFriday	6	Piątek
vbSaturday	7	Sobota
Argument firstweekofyear ma następujące ustawienia:

Stała	Wartość	Opis
vbUseSystem	0	Używa ustawienia NLS API.
vbFirstJan1	1	Rozpoczyna liczenie od tygodnia zawierającego dzień 1 stycznia (domyślnie).
vbFirstFourDays	2	Rozpoczyna liczenie od tygodnia zawierającego co najmniej cztery dni nowego roku.
VbFirstFullWeek	3	Rozpoczyna liczenie od pierwszego pełnego tygodnia nowego roku.
Użycie

Funkcja DateDiff służy do sprawdzenia liczby określonych przedziałów czasu istniejących pomiędzy dwoma datami. Na przykład, za pomocą funkcji DateDiff można obliczyć liczbę dni pomiędzy dwoma datami lub liczbę tygodni dzielącą dzień bieżący od końca roku.

W celu obliczenia liczby dni pomiędzy datami date1 i date2 można zastosować albo wartość "Dzień roku" ("y"), albo "Dzień" ("d"). Jeśli wartość interval jest dniem tygodnia ("w"), funkcja DateDiff zwraca liczbę tygodni pomiędzy dwoma podanymi datami. Jeśli data date1 przypada w poniedziałek, funkcja DateDiff obliczy liczbę poniedziałków, które wystąpią do daty date2. Funkcja uwzględnia datę date2, ale nie uwzględnia daty date1. Jeśli wartość interval zostanie określona jako tydzień ("ww"), funkcja DateDiff zwraca liczbę tygodni kalendarzowych pomiędzy dwoma datami. Funkcja oblicza liczbę niedziel pomiędzy datami date1 i date2. DateDiff bierze pod uwagę datę date2., jeśli przypada ona w niedzielę, jednak nie bierze pod uwagę daty date1, nawet jeśli ta przypada w niedzielę.

Jeśli data date1 odnosi się do momentu późniejszego niż date2, funkcja DateDiff zwraca wartość ujemną.

Argument firstdayofweek ma wpływ na obliczenia dokonywane przy wykorzystaniu symboli przedziału czasu "w" i "ww".

Jeśli date1 lub date2 jest określona litarałem daty, określony rok staje się stałą częścią daty. Jednak jeśli data jest ujęta w cudzysłów (""), a rok zostanie pominięty, przy każdym użyciu tej daty date1 lub date2 w kodzie zostanie wstawiony bieżący rok. Umożliwia to stosowanie tego samego kodu w różnych latach.

Przy porównywaniu 31 grudnia jednego roku z 1 stycznia następnego roku, funkcja DateDiff dla przedziału "Rok" ("yyyy") zwraca wartość 1, mimo że w rzeczywistości daty te dzieli tylko jeden dzień.


DatePart - funkcja

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

Składnia

DatePart(interval, date[,firstdayofweek[, firstweekofyear]])

Składnia funkcji DatePart ma następujące nazwane argumenty:

Argument	Opis
interval	Argument obowiązkowy. Wyrażenie znakowe, będące przedziałem czasu, który ma zostać zwrócony.
date	Argument obowiązkowy. Wartość typu Variant (Date), która ma zostać wyliczona.
firstdayofweek	Argument nieobowiązkowy. Stała określająca pierwszy dzień tygodnia. Jeśli nie jest określona, przyjmuje się niedzielę.
firstweekofyear	Argument nieobowiązkowy. Stała określająca pierwszy tydzień roku. Jeśli nie jest określona, przyjmuje się tydzień zawierający dzień 1 stycznia.
Ustawienia

Argument interval ma następujące ustawienia:

Ustawienia	Opis
yyyy	Rok
q	Kwartał
m	Miesiąc
y	Dzień roku
d	Dzień
w	Dzień tygodnia
ww	Tydzień
h	Godzina
n	Minuta
s	Sekunda
Argument firstdayofweek ma następujące ustawienia:

Stała	Wartość	Opis
vbUseSystem	0	Używa ustawienia NLS API.
vbSunday	1	Niedziela (domyślnie)
vbMonday	2	Poniedziałek
vbTuesday	3	Wtorek
vbWednesday	4	Środa
vbThursday	5	Czwartek
vbFriday	6	Piątek
vbSaturday	7	Sobota
Argument firstweekofyear ma następujące ustawienia:

Stała	Wartość	Opis
vbUseSystem	0	Używa ustawienia NLS API.
vbFirstJan1	1	Rozpoczyna liczenie od tygodnia zawierającego dzień 1 stycznia (domyślnie).
vbFirstFourDays	2	Rozpoczyna liczenie od tygodnia zawierającego co najmniej cztery dni nowego roku.
VbFirstFullWeek	3	Rozpoczyna liczenie od pierwszego pełnego tygodnia nowego roku.
Użycie

Funkcja DatePart służy do wydzielenia z daty określonego przedziału czasu. Na przykład, za pomocą funkcji DatePart można wyznaczyć dzień tygodnia lub bieżącą godzinę.

Argument firstdayofweek ma wpływ na obliczenia dokonywane przy wykorzystaniu symboli przedziału czasu "w" i "ww".

Jeśli data jest określona literałem daty, określony rok staje się stałą częścią daty. Jednak jeśli data jest ujęta w cudzysłów (""), a rok zostanie pominięty, przy każdym użyciu tej daty w kodzie zostanie wstawiony bieżący rok. Umożliwia to stosowanie tego samego kodu w różnych latach.


DateSerial - funkcja

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

Składnia

DateSerial(year, month, day)

Funkcja DateSerial ma następujące nazwane argumenty:

Argument	Opis
year	Argument obowiązkowy; Integer. Jest to liczba z przedziału od 100 do 9999 włącznie lub wyrażenie numeryczne.
month	Argument obowiązkowy; Integer. Jest to dowolne wyrażenie numeryczne.
day	Argument obowiązkowy; Integer. Jest to dowolne wyrażenie numeryczne.
Użycie

Dla określenia daty, na przykład 31 grudnia 1991, zakres liczb dla każdego argumentu wyrażenia DateSerial powinien zawierać się w dopuszczalnym zakresie dla danego elementu, czyli 1–31 dla dnia i 1–12 dla miesiąca. Istnieje też możliwość określenia dla każdego argumentu względnych dat przy użyciu dowolnego wyrażenia numerycznego, które przedstawia pewną liczbę dni, miesięcy lub lat po albo przed określoną datą.

W poniższym przykładzie zastosowano wyrażenia numeryczne zamiast zwykłych elementów daty. Funkcja DateSerial zwraca tu datę, którą jest jeden dzień przed dniem pierwszym (1 - 1), dwa miesiące przed sierpniem (8 - 2), 10 lat przed rokiem 1990 (1990 - 10); innymi słowy, funkcja zwraca wartość odpowiadającą dacie 31 maja 1980.

DateSerial(1990 - 10, 8 - 2, 1 - 1)

Dla argumentu year wartości w zakresie od 0 do 99 włącznie są interpretowane jako lata z przedziału 1900–1999. Dla wszystkich innych wartości argumentu year należy stosować format czterocyfrowy (na przykład 1800).

Jeśli wartość jednego z argumentów przekracza dopuszczalny zakres wartości dla danego typu argumentu, zwiększana jest wartość kolejnej jednostki nadrzędnej. Na przykład, liczba 35 dni zostanie rozpoznana jako jeden miesiąc i kilka dni, zależnie od tego, do którego miesiąca odnosi się podana data. Jeśli któryś z argumentów wykracza poza zakres od -32 768 do 32 768, wystąpi błąd. Jeśli data określona przez trzy argumenty wykracza poza możliwy zakres dat, również wystąpi błąd.


DateValue - funkcja

Zwraca wartość typu Variant (Date).

Składnia

DateValue(data)

Obowiązkowy argument data jest zwykle wyrażeniem znakowym przedstawiającym datę z zakresu od 1 stycznia 100 roku do 31 grudnia 9999 roku. Element data może też być dowolnym wyrażeniem reprezentującym datę, godzinę lub obie te wartości we wspomnianym zakresie.

Użycie

Jeśli data jest ciągiem znaków zawierającym wyłącznie liczby oddzielone odpowiednimi separatorami daty, funkcja DateValue rozpoznaje położenie miesiąca, dnia i roku na podstawie krótkiego formatu daty określonego w systemie. Funkcja DateValue rozpoznaje też jednoznaczne daty zawierające nazwy miesięcy zapisane w pełnej lub skróconej formie. Na przykład, oprócz formatu 30.12.1991 i 30.12.91, funkcja DateValue rozpoznaje również datę w formacie 30 grudnia 1991 i 30-gru-1991.

Jeśli część elementu data oznaczająca rok zostanie pominięta, funkcja DateValue wstawi rok bieżący, biorąc go z aktualnej daty systemowej.

Jeśli element data zawiera informacje dotyczące godziny, funkcja DateValue nie zwraca ich; jednak jeśli informacje te są błędne (na przykład godzina "89:98"), wystąpi błąd.


Day - funkcja

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.

Składnia

Day(data)

Obowiązkowy argument data jest typu Variant, wyrażeniem numerycznym, wyrażeniem znakowym lub ich dowolną kombinacją, która może określać datę. Jeśli data zawiera wartość Null, zwracana jest wartość Null.


Hour - funkcja

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

Składnia

Hour(godzina)

Obowiązkowy argument godzina jest typu Variant, wyrażeniem numerycznym, wyrażeniem znakowym lub ich dowolną kombinacją, która może określać godzinę. Jeśli godzina zawiera wartość Null, zwracana jest wartość Null.


Minute - funkcja

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

Składnia

Minute(godzina)

Obowiązkowy argument godzina jest typu Variant, wyrażeniem numerycznym, wyrażeniem znakowym lub ich dowolną kombinacją, która może określać godzinę. Jeśli godzina zawiera wartość Null, zwracana jest wartość Null.


Month - funkcja

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.

Składnia

Month(data)

Obowiązkowy argument data jest typu Variant, wyrażeniem numerycznym, wyrażeniem znakowym lub ich dowolną kombinacją, która może określać datę. Jeśli data zawiera wartość Null, zwracana jest wartość Null.


Now - funkcja

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

Składnia

Now


Second - funkcja

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

Składnia

Second(godzina)

Obowiązkowy argument godzina jest typu Variant, wyrażeniem numerycznym, wyrażeniem znakowym lub ich dowolną kombinacją, która może określać godzinę. Jeśli godzina zawiera wartość Null, zwracana jest wartość Null.


Time - funkcja

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

Składnia

Time

Użycie

Do ustawienia godziny systemowej służy instrukcja Time.


Time - instrukcja

Ustawia godzinę systemową.

Składnia

Time = godzina

Obowiązkowy argument godzina jest dowolnym wyrażeniem numerycznym, wyrażeniem znakowym lub ich dowolną kombinacją, która może określać godzinę.

Użycie

Jeśli element godzina jest ciągiem znaków, instrukcja Time próbuje przeprowadzić konwersję elementu przy wykorzystaniu separatorów godziny określonych w używanym systemie. Jeśli w wyniku konwersji miałaby zostać utworzona niepoprawna godzina, wystąpi błąd.


Timer - funkcja

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

Składnia

Timer


TimeSerial - funkcja

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

Składnia

TimeSerial(hour, minute, second)

Funkcja TimeSerial ma następujące nazwane argumenty:

Argument	Opis
hour	Argument obowiązkowy typu Variant (Integer). Jest to liczba z zakresu od 0 (00:00) do 23 (23:00) włącznie lub wyrażenie numeryczne.
minute	Argument obowiązkowy typu Variant (Integer). Jest to dowolne wyrażenie numeryczne.
second	Argument obowiązkowy typu Variant (Integer). Jest to dowolne wyrażenie numeryczne.
Użycie

W celu określenia godziny, na przykład 11:59:59, zakres liczb dla każdego argumentu funkcji TimeSerial powinien się zawierać w zakresie dopuszczalnym dla danego elementu, czyli 0–23 dla godzin oraz 0–59 dla minut i sekund. Istnieje też możliwość ustawienia relatywnego określenia czasu względnego dla każdego argumentu przy użyciu dowolnego wyrażenia numerycznego, które reprezentuje pewną liczbę godzin, minut lub sekund przed albo po określonej godzinie. W poniższym przykładzie zastosowano wyrażenia zamiast wartości bezpośrednich. Funkcja TimeSerial zwraca określenie czasu odpowiadającego 15 minutom (-15) i sześciu godzinom poprzedzającym południe (12 - 6) lub, inaczej mówiąc, godzinę 5:45:00.

TimeSerial(12 - 6, -15, 0)

Jeśli wartość jednego z argumentów przekracza dopuszczalny zakres wartości dla danego typu argumentu, zwiększana jest wartość kolejnej jednostki nadrzędnej. Na przykład, liczba 75 minut zostanie rozpoznana jako jedna godzina i 15 minut. Jeśli któryś z argumentów wykracza poza zakres od -32 768 do 32 768, wystąpi błąd. Jeśli godzina określona przez trzy argumenty wykracza poza dopuszczalny zakres dat, również wystąpi błąd.


TimeValue - funkcja

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

Składnia

TimeValue(godzina)

Obowiązkowy argument godzina jest zwykle wyrażeniem znakowym przedstawiającym godzinę z zakresu od 0:00:00 do 23:59:59 włącznie. Element godzina może też być dowolnym wyrażeniem określającym godzinę w podanym zakresie. Jeśli element godzina zawiera wartość Null, zwracana jest wartość Null.

Użycie

Poprawne określenia czasu można wprowadzać zarówno przy użyciu systemu dwunasto- jak i dwudziestoczterogodzinnego. Na przykład, oba określenia: "2:24PM" i "14:24" są poprawnymi elementami godzina.

Jeśli element godzina zawiera informacje odnoszące się do daty, funkcja TimeValue nie zwraca ich; jednak jeśli informacje te nie są poprawne, występuje błąd.


Weekday - funkcja

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

Składnia

Weekday(data, [firstdayofweek])

Funkcja Weekday ma następujące nazwane argumenty:

Argument	Opis
date	Argument obowiązkowy. Jest on typu Variant, albo jest wyrażeniem numerycznym, wyrażeniem znakowym lub ich dowolną kombinacją określającą datę. Jeśli argument date zawiera wartość Null, zwracana jest wartość Null.
firstdayofweek	Argument nieobowiązkowy. Jest to stała określająca pierwszy dzień tygodnia. Jeśli nie jest podana, wstawiana jest wartość vbSunday.
Ustawienia

Argument firstdayofweek ma następujące ustawienia:

Stała	Wartość	Opis
vbUseSystem	0	Używa ustawienia NLS API.
vbSunday	1	Niedziela (domyślnie)
vbMonday	2	Poniedziałek
vbTuesday	3	Wtorek
vbWednesday	4	Środa
vbThursday	5	Czwartek
vbFriday	6	Piątek
vbSaturday	7	Sobota
Wartości zwracane

Funkcja Weekday może zwrócić następujące wartości:

Stała	Wartość	Opis
vbSunday	1	Niedziela
vbMonday	2	Poniedziałek
vbTuesday	3	Wtorek
vbWednesday	4	Środa
vbThursday	5	Czwartek
vbFriday	6	Piątek
vbSaturday	7	Sobota


Year - funkcja

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

Składnia

Year(data)

Obowiązkowy argument data jest dowolną wartością typu Variant, wyrażeniem numerycznym, wyrażeniem znakowym lub ich dowolną kombinacją, która może określać datę. Jeśli element data zawiera wartość Null, zwracana jest wartość Null.


Funkcja Array - przykład

W tym przykładzie wykorzystano funkcję Array do umieszczenia tablicy w zmiennej typu Variant.

Dim MójTydzień, MójDzień

MójTydzień = Array("Pon", "Wt", "Śr", "Czw", "Pt", "Sob", "Niedz")

' Zakładamy, że indeks pierwszego elementu tablicy jest ustawiony na 1

' (za pomocą instrukcji Option Base).

MójDzień = MójTydzień(2)	' MójDzień zawiera "Wt".

MójDzień = MójTydzień(4)	' MójDzień zawiera "Czw".


Instrukcja Const - przykład

W tym przykładzie wykorzystano instrukcję Const do zadeklarowania stałych, które mogą być używane zamiast wartości literalnych. Stałe publiczne (Public) występują w sekcji Ogólne modułu standardowego, a nie modułu klasy. Stałe prywatne (Private) mogą znaleźć się w sekcji Ogólne modułu dowolnego typu.

' Domyślnie wszystkie stałe są prywatne.

Const MojaZmienna = 459

' Zadeklaruj stałą publiczną.

Public Const MójCiągZn = "POMOC"

' Zadeklaruj stałą prywatną typu Integer.

Private Const MójInt As Integer = 5

' Zadeklaruj wiele stałych w tym samym wierszu.

Const MójCiąg = "Cześć", MójDouble As Double = 3.4567


Funkcja CreateObject - przykład

W tym przykładzie wykorzystano funkcję CreateObject do ustawienia odwołania (xlApp) do aplikacji Microsoft Excel. Odwołanie to służy do uzyskania dostępu do właściwości Visible aplikacji Microsoft Excel, a następnie za pomocą metody Quit aplikacji Microsoft Excel aplikacja ta jest zamykana. Na koniec odwołanie zostaje zwolnione.

Dim xlApp As Object	' Zadeklaruj zmienną przeznaczoną na odwołanie.

Set xlApp = CreateObject("excel.application")

' Jeżeli aplikacja ma być widoczna,

' właściwość Visible musi zostać ustawiona na True.

xlApp.Visible = True

' Użyj zmiennej xlApp w celu uzyskania dostępu

' do innych obiektów aplikacji Microsoft Excel.

xlApp.Quit	' Na koniec użyj metody Quit, aby zamknąć

Set xlApp = Nothing	' aplikację, a następnie zwolnij odwołanie.


Instrukcja Declare - przykład

W tym przykładzie pokazano, w jaki sposób na poziomie modułu w module standardowym można użyć instrukcji Declare, aby zadeklarować odwołanie do zewnętrznej procedury, znajdującej się w bibliotece dołączanej dynamicznie (DLL) lub w zasobach programowych komputera Macintosh. Jeżeli instrukcje Declare są prywatne, wówczas można je umieszczać w modułach klas.

' W systemie Microsoft Windows (16-bitowym):

Declare Sub MessageBeep Lib "User" (ByVal N As Integer)

' Przyjmijmy, że Pisk stanowi alias nazwy procedury.

Declare Sub MessageBeep Lib "User" Alias "Pisk"(ByVal N As Integer)

' Aby wywołać GetWinFlags, użyjemy we frazie Alias liczby porządkowej.

Declare Function GetWinFlags Lib "Kernel" Alias "#132"() As Long

' W 32-bitowych systemach Microsoft Windows należy podać bibliotekę USER32.DLL,

' zamiast USER.DLL. Aby utworzyć program, który będzie działał zarówno w systemie 32-bitowym,

' jak i 16-bitowym, można wykorzystać kompilację warunkową.

#If Win32 Then

Declare Sub MessageBeep Lib "User32" (ByVal N As Long)

#Else

Declare Sub MessageBeep Lib "User" (ByVal N As Integer)

#End If

' Dla komputera Macintosh:

Declare Sub MessageAlert Lib "MyHd:MyAlert" Alias "MyAlert" (ByVal N _

As Integer)

' We frazie Alias podajemy zasób programowy.

Declare Sub MessageAlert Lib "MyHd:MyAlert" Alias "XTST$MyAlert" _

(ByVal N As Integer)

' Jeżeli specyfikator typu zasobu programowego składa się jedynie z 3 znaków, należy koniecznie

' umieścić spację w miejscu, gdzie normalnie znajdowałby się ostatni znak.

Declare Sub MessageAlert Lib "MyHd:AnAlert" Alias "COD $AnAlert" _

(ByVal N As Integer)


Instrukcja Deftype - przykład

W tym przykładzie pokazano różne sposoby użycia instrukcji Deftyp do ustawiania domyślnych typów danych tych zmiennych i procedur typu Function, których nazwy zaczynają się od określonych znaków. Domyślny typ danych może być zmieniony tylko przez jawne przypisanie z użyciem instrukcji Dim. Instrukcje Deftyp mogą być stosowane wyłącznie na poziomie modułu (to znaczy nie wewnątrz procedur).

' Typ danych zmiennych, których nazwy zaczynają się literami od A do K, ustaw domyślnie na Integer.

DefInt A-K

' Typ danych zmiennych, których nazwy zaczynają się literami od L do Z, ustaw domyślnie na String.

DefStr L-Z

CałkIlość = 4	' Zainicjuj zmienną typu Integer.

Napis = "Cześć wam"	' Zainicjuj zmienną typu String.

DowolnaZm = "Cześć" 	' Powoduje błąd "Niezgodność typów".

Dim Całk As Double	' Ustaw jawnie typ na Double.

Całk = 2.3455	' Przypisz wartość typu Double.

' Instrukcje Deftyp mają zastosowanie również do procedur typu Function.

CałkLiczba = FunkcjaTestowa(4)	' Wywołaj funkcję zdefiniowaną przez użytkownika.

' Definicja procedury typu Function o nazwie FunkcjaTestowa.

Function FunkcjaTestowa(CLiczba)

FunkcjaTestowa = CLiczba * 2	' Wartość zwracana jest liczbą całkowitą.

End Function


Instrukcja Dim - przykład

W tym przykładzie pokazano różne sposoby użycia instrukcji Dim do deklarowania zmiennych. Pokazano również możliwość wykorzystania instrukcji Dim do deklarowania tablic. Domyślnie, dolna granica zakresu indeksów tablicy jest ustawiona na 0 i może być zmieniona na poziomie modułu za pomocą instrukcji Option Base.

' DowolnaZm i MojaZm są domyślnie deklarowane jako zmienne typu Variant o wartościach

' ustawionych na Empty.

Dim DowolnaZm, MojaZm

' Jawnie deklarujemy zmienną typu Integer.

Dim Liczba As Integer

' Wiele deklaracji w jednym wierszu. Zmienna NastępnaZm jest typu Variant,

' gdyż jej typ został pominięty.

Dim NastępnaZm, Wybór As Boolean, DataUr As Date

' TablDni jest tablicą 51 elementów typu Variant, o indeksach od

' 0 do 50, przy założeniu, że dla bieżącego modułu wartość Option Base jest ustawiona na 0 (wartość domyślna).

Dim TablDni(50)

' Zmienna Macierz jest dwuwymiarową tablicą liczb całkowitych.

Dim Macierz(3, 4) As Integer

' MojaMacierz jest trójwymiarową tablicą liczb typu Double

' o jawnie podanych zakresach indeksów.

Dim MojaMacierz(1 To 5,  4 To 9,  3 To 5) As Double

' Zmienna Urodziny jest tablicą dat o indeksach od 1 do 10.

Dim Urodziny(1 To 10) As Date

' MojaTabl jest dynamiczną tablicą elementów typu Variant.

Dim MojaTabl()


Instrukcja Erase - przykład

W tym przykładzie wykorzystano instrukcję Erase do ponownego zainicjowania elementów tablicy o stałych rozmiarach i do zwolnienia obszaru pamięci zajmowanego przez tablicę dynamiczną.

' Zadeklaruj zmienne tablicowe.

Dim TablLicz(10) As Integer	' Tablica liczb całkowitych.

Dim TablZmCiągów(10) As String	' Tablica ciągów znaków o zmiennej długości.

Dim TablStCiągów(10) As String * 10	' Tablica ciągów znaków o stałej długości.

Dim TablVar(10) As Variant	' Tablica o elementach typu Variant.

Dim TablDyn() As Integer	' Tablica dynamiczna.

ReDim TablDyn(10)	' Przydziel obszar pamięci.

Erase TablLicz	' Każdy element ustawiany jest na 0.

Erase TablZmCiągów	' Każdy element jest ciągiem

' o długości zerowej ("").

Erase TablStCiągów	' Każdy element ustawiany jest na 0.

Erase TablVar	' Każdy element ustawiany jest na wartość Empty.

Erase TablDyn	' Zwolnij pamięć zajmowaną przez tablicę.


Instrukcja Function - przykład

W poniższych przykładach wykorzystano instrukcję Function do zadeklarowania nazwy, argumentów i kodu programu, które tworzą procedurę typu Function. W ostatnim przykładzie zastosowano wpisane na stałe, zainicjowane argumenty nieobowiązkowe (Optional).

' Poniższa funkcja zdefiniowana przez użytkownika zwraca pierwiastek kwadratowy

' przekazanego do niej argumentu.

Function ObliczPierwKwadr(ArgLicz As Double) As Double

If ArgLicz < 0 Then	' Sprawdź wartość argumentu.

Exit Function	' Wróć do procedury wołającej.

Else

ObliczPierwKwadr = Sqr(ArgLicz)	' Zwróć pierwiastek kwadratowy.

End If

End Function

Użycie słowa kluczowego ParamArray sprawia, że funkcja akceptuje zmienną liczbę argumentów. W poniższej definicji zaznaczono, że argument PierwszyArg jest przekazywany przez wartość.

Function ObliczSumę(ByVal PierwszyArg As Integer, ParamArray InneArg())

Dim WartZwracana

' Jeżeli funkcja zostanie wywołana w poniższy sposób:

WartZwracana = ObliczSumę(4, 3 ,2 ,1)

' to zmiennym lokalnym zostaną przypisane następujące wartości: PierwszyArg = 4,

' InneArg(1) = 3, InneArg(2) = 2 i tak dalej, przy założeniu, że obowiązuje domyślna dolna

' granica zakresu indeksów tablicy = 1.

Argumenty nieobowiązkowe (Optional) mogą mieć teraz domyślne wartości i typy inne niż Variant.

' Jeżeli argumenty funkcji są zdefiniowane w następujący sposób:

Function MojaFunkcja(MójCiąg As String, Optional MójArg1 As _ Integer = 5, Optional MójArg2 = “Lala”)

Dim WartośćZwrac

' to funkcja może być wywoływana tak jak poniżej:

WartośćZwrac = MojaFunkcja("Cześć", 2, "ludzie")	' Wszystkie 3 argumenty zostały podane.

WartośćZwrac = MojaFunkcja("Test", , 5)	' Drugi argument został pominięty.

' Argumenty pierwszy i trzeci jako argumenty nazwane:

WartośćZwrac = MojaFunkcja(MójCiąg:="Cześć ", MójArg2:=7)


Funkcja GetObject - przykład

W tym przykładzie wykorzystano funkcję GetObject do pobrania odwołania do określonego arkusza programu Microsoft Excel (MójXL). W przykładzie użyto właściwości Application tego arkusza, aby aplikacja Microsoft Excel stała się widoczna, aby ją zamknąć i do innych operacji. Za pomcą dwóch wywołań biblioteki API procedura Sub o nazwie WykryjExcel próbuje odszukać program MS Excel i jeśli jest on aktualnie wykonywany, wpisuje odpowiednią pozycję do tabeli uruchomionych obiektów. Pierwsze wywołanie funkcji GetObject spowoduje błąd, jeżeli aplikacja Microsoft Excel jeszcze nie działa. W poniższym przykładzie wystąpienie tego błędu sprawia, że znacznik ExcelNieDziałał jest ustawiany na wartość True. Przy drugim wywołaniu funkcji GetObject określony zostaje plik, który ma być otwarty. Jeżeli aplikacja Microsoft Excel jeszcze nie działa, drugie wywołanie uruchamia ją i zwraca odwołanie do arkusza reprezentowanego przez wymieniony plik. Plik ten, w przykładzie noszący nazwę mójtest.xls, musi istnieć we wskazanym położeniu, w przeciwnym razie wystąpi w systemie Visual Basic błąd automatyzacji. Następnie przykładowy program powoduje, że widoczna staje się zarówno aplikacja Microsoft Excel, jak i okno zawierające wskazany arkusz. Na koniec, o ile nie działała wcześniejsza wersja aplikacji Microsoft Excel, program używa metody Quit obiektu Application, aby zamknąć tę aplikację. Jeżeli aplikacja ta działała już wcześniej, nie podejmuje się próby jej zamknięcia. Odwołanie zostaje zwolnione przez ustawienie jego wartości na Nothing.

' Zadeklaruj potrzebne funkcje API:

Declare Function FindWindow Lib "user32" Alias _

"FindWindowA" (ByVal lpClassName as String, _

ByVal lpWindowName As Long) As Long

Declare Function SendMessage Lib "user32" Alias _

"SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long _

ByVal wParam as Long _

ByVal lParam As Long) As Long

Sub PobierzExcel()

Dim MójXL As Object	' Zmienna przeznaczona na odwołanie

' do aplikacji Microsoft Excel.

Dim ExcelNieDziałał As Boolean	' Znacznik wskazujący, czy na końcu zamknąć aplikację.

' Sprawdź, czy działa już jakaś kopia aplikacji Microsoft Excel.

On Error Resume Next	' Odłóż przechwytywanie błędów.

' Funkcja Getobject wywołana bez pierwszego argumentu zwraca

' odwołanie do egzemplarza aplikacji. Jeżeli aplikacja nie działa,

' wystąpi błąd. Zwróćmy uwagę na przecinek użyty w miejscu pierwszego

' argumentu.

Set MójXL = Getobject(, "Excel.Application")

If Err.Number <> 0 Then ExcelNieDziałał = True

Err.Clear	' Wyczyść obiekt Err w przypadku, gdy wystąpił błąd.

' Sprawdź czy program Excel aktualnie działa. Jeśli

' tak, wpisz odpowiadającą mu pozycję do tabeli

' uruchomionych obiektów.

DetectExcel

' Ustaw zmienną obiektową na odwołanie do pliku, który ma być pokazany.

Set MójXL = Getobject("c:\vb4\MÓJTEST.XLS")

' Pokaż aplikację Microsoft Excel za pośrednictwem jej właściwości Application. Następnie

' pokaż właściwe okno zawierające wybrany plik, używając kolekcji Windows

' wchodzącej w skład odwołania do obiektu MójXL.

MójXL.Application.Visible = True

MójXL.Parent.Windows(1).Visible = True

' Tutaj należy umieścić operacje

' wykonywane na wybranym pliku.

' ...

' Jeżeli ta kopia aplikacji Microsoft Excel nie działała, kiedy

' program został uruchomiony, zamknij ją za pomocą  metody Quit właściwości Application.

' Należy zauważyć, że przy próbie zamknięcia aplikacji Microsoft Excel, pasek tytułu

' tej aplikacji miga oraz wyświetlony zostaje komunikat z zapytaniem,

' czy zapisać któryś z załadowanych plików.

If ExcelNieDziałał = True Then

MójXL.Application.Quit

End If

Set MójXL = Nothing	' Zwolnij odwołanie do

' aplikacji i arkusza.

End Sub

Sub WykryjExcel()

' Procedura wykrywa działanie programu Excel i

' rejestruje go.

Const WM_USER = 1024

Dim hWnd As Long

' Jeśli Excel jest uruchomiony, to wywołanie API zwraca

' jego dojście.

hWnd = FindWindow("XLMAIN", 0)

If hWnd = 0 Then	' 0 oznacza, że Excel działa.

Exit Sub

Else

' Excel działa, może użyj funkcji API o nazwie

' SendMessage w celu wpisania odpowiedniej pozycji

' do tabeli uruchomionych obiektów.

SendMessage hWnd, WM_USER + 18, 0, 0

End If

End Sub


Funkcja LBound - przykład

W tym przykładzie wykorzystano funkcję LBound do ustalenia najmniejszego indeksu dozwolonego we wskazanym wymiarze tablicy. Aby zmienić bazową wartość indeksu tablicy, domyślnie równą 0, należy użyć instrukcji Option Base.

Dim Dolny

Dim MojaTabl(1 To 10, 5 To 15, 10 To 20) 	' Zadeklaruj zmienne tablicowe.

Dim DowolnaTabl(10)

Dolny = Lbound(MojaTabl, 1) 	' Zwraca 1.

Dolny = Lbound(MojaTabl, 3)	' Zwraca 10.

Dolny = Lbound(DowolnaTabl)	' Zwraca 0 lub 1, zależnie od ustawienia

' Option Base.


Instrukcja Let - przykład

W tym przykładzie wartości wyrażeń są przypisywane zmiennym przy użyciu zarówno jawnej, jak i niejawnej instrukcji Let.

Dim MójCiąg, MójInt

' W poniższych przypisaniach wykorzystano instrukcję Let.

Let MójCiąg = "Pozdrawiam wszystkich"

Let MójInt = 5

Poniżej znajdują się te same przypisania bez instrukcji Let.

Dim MójCiąg, MójInt

MójCiąg = "Pozdrawiam wszystkich"

MójInt = 5


Instrukcja Option Base - przykład

W tym przykładzie wykorzystano instrukcję Option Base do zmiany domyślnej wartości bazowej indeksu tablicy, równej 0. Najmniejszy indeks dozwolony we wskazanym wymiarze tablicy zwraca funkcja LBound. Instrukcja Option Base jest używana tylko na poziomie modułu.

Option Base 1	' Ustaw najmniejszy indeks tablic na 1.

Dim Dolny

Dim MojaTabl(20), TablDwuWym(3, 4)	' Zadeklaruj zmienne tablicowe.

Dim TablOdZera(0 To 5)	' Ustaw najmniejszy indeks inny niż domyślny.

' Użyj funkcji LBound do sprawdzenia dolnej granicy zakresu indeksów w poszczególnych tablicach.

Dolny = LBound(MojaTabl)	' Zwraca 1.

Dolny = LBound(TablDwuWym, 2)	' Zwraca 1.

Dolny = LBound(TablOdZera)	' Zwraca 0.


Instrukcja Option Compare - przykład

W tym przykładzie wykorzystano instrukcję Option Compare do ustawienia domyślnej metody porównywania ciągów znaków. Instrukcja Option Compare jest używana tylko na poziomie modułu.

' Ustaw metodę porównywania ciągów znaków na Binary.

Option Compare Binary 	' To znaczy, że "AAA" jest mniejsze niż "aaa"

' Ustaw metodę porównywania ciągów znaków na Text.

Option Compare Text	' To znaczy, że "AAA" jest równe "aaa".


Instrukcja Option Explicit - przykład

W tym przykładzie wykorzystano instrukcję Option Explicit, aby zmusić użytkownika do jawnego deklarowania wszystkich zmiennych. Próba użycia nie zadeklarowanej zmiennej spowoduje wystąpienie błędu w czasie kompilacji. Instrukcja Option Explicit jest używana tylko na poziomie modułu.

Option Explicit	' Wymuś jawne deklarowanie zmiennych.

Dim MojaZmienna	' Zadeklaruj zmienną.

MójInt = 10	' Nie zadeklarowana zmienna wywoła błąd.

MojaZmienna = 10	' Zadeklarowana zmienna nie wywoła błędu.


Instrukcja Option Private - przykład

Ten przykład prezentuje działanie instrukcji Option Private, której używa się na poziomie modułu do zaznaczenia, że cały moduł jest prywatny. Po zastosowaniu instrukcji Option Private Module symbole z poziomu modułu nie zadeklarowane jako Private są nadal dostępne dla innych modułów projektu, ale nie dla innych projektów czy aplikacji.

Option Private Module	' Zaznacz, że moduł jest prywatny.


Instrukcja Private - przykład

W tym przykładzie pokazano zastosowanie instrukcji Private do zadeklarowania zmiennych prywatnych na poziomie modułu; oznacza to, że zmienne te są dostępne tylko w tym module, w którym zostały zadeklarowane.

Private Liczba As Integer	' Prywatna zmienna typu Integer.

Private TablicaNazw(1 To 5) As String	' Prywatna zmienna tablicowa.

' Deklaracja wielu zmiennych, dwóch typu Variant i jednej typu Integer, z których wszystkie są prywatne.

Private MojaZmienna, TwojaZmienna, TaZmienna As Integer


Instrukcja Property Get - przykład

W tym przykładzie wykorzystano instrukcję Property Get do zdefiniowania procedury związanej z pewną właściwością i służącej do pobierania wartości tej właściwości. Właściwość ta podaje, w postaci ciągu znaków, bieżący kolor pióra z pakietu graficznego.

Dim BieżącyKolor As Integer

Const CZARNY = 0, CZERW = 1, ZIEL = 2, NIEB = 3

' Zwraca bieżący kolor pióra w postaci ciągu znaków.

Property Get KolorPióra() As String

Select Case BieżącyKolor

Case CZERW

KolorPióra = "Czerwony"

Case ZIEL

KolorPióra = "Zielony"

Case NIEB

KolorPióra = "Niebieski"

End Select

End Property

' Poniższy wiersz programu pobiera kolor pióra,

' wywołując procedurę Property Get.

NazwaKoloru = KolorPióra


Instrukcja Property Let - przykład

W tym przykładzie wykorzystano instrukcję Property Let do zdefiniowania procedury, która właściwości przypisuje wartość. Właściwość ta określa kolor pióra w pakiecie graficznym.

Dim BieżącyKolor As Integer

Const CZARNY = 0, CZERW = 1, ZIEL = 2, NIEB = 3

' Ustaw właściwość opisującą kolor pióra w pakiecie graficznym.

' Zmienna BieżącyKolor z poziomu modułu jest ustawiona

' na wartość numeryczną, która identyfikuje kolor stosowany do rysowania.

Property Let KolorPióra(NazwaKoloru As String)

Select Case NazwaKoloru	' Sprawdź ciąg znaków oznaczający nazwę koloru.

Case "Czerwony"

BieżącyKolor = CZERW	' Przypisz wartość odpowiadającą kolorowi czerwonemu.

Case "Zielony"

BieżącyKolor = ZIEL	' Przypisz wartość odpowiadającą kolorowi zielonemu.

Case "Niebieski"

BieżącyKolor = NIEB	' Przypisz wartość odpowiadającą kolorowi niebieskiemu.

Case Else

BieżącyKolor = CZARNY	' Przypisz wartość domyślną.

End Select

End Property

' Poniższy wiersz programu ustawia właściwość KolorPióra pakietu graficznego

' wywołując procedurę Property let.

KolorPióra = "Czerwony"


Instrukcja Property Set - przykład

W tym przykładzie wykorzystano instrukcję Property Set do zdefiniowania procedury związanej z pewną właściwością i służącej do ustawienia odwołania do obiektu.

' Właściwość Pióro może zostać ustawiona na inną implementację pióra.

Property Set Pióro(P As Object)

Set BieżącePióro = P	' Przypisz podany obiekt do właściwości Pióro.

End Property


Instrukcja Public - przykład

W tym przykładzie wykorzystano instrukcję Public na poziomie modułu (sekcja Ogólne) w module standardowym, aby jawnie zadeklarować zmienne publiczne; oznacza to, że zmienne te są dostępne dla wszystkich procedur we wszystkich modułach i aplikacjach, chyba że zastosowano instrukcję Option Private Module.

Public Liczba As Integer	' Zmienna publiczna typu Integer.

Public TablicaNazw(1 To 5) As String	' Publiczna zmienna tablicowa.

' Deklaracja wielu zmiennych, dwóch typu Variant i jednej typu Integer, z których wszystkie są publiczne.

Public MojaZmienna, TwojaZmienna, TaZmienna As Integer


Instrukcja ReDim - przykład

W tym przykładzie wykorzystano instrukcję ReDim do przydzielenia obszaru pamięci dla tablicy dynamicznej, a także do zmiany wielkości tego obszaru. Zakłada się, że wartość indeksów ustawiana instrukcją Option Base wynosi 1.

Dim MojaTabl() As Integer	' Zadeklaruj tablicę dynamiczną.

ReDim MojaTabl(5)	' Przydziel pamięć dla 5 elementów.

For I = 1 To 5	' Powtórz 5 razy.

MojaTabl(I) = I	' Zainicjuj tablicę.

Next I

Następna instrukcja zmienia rozmiar tablicy i usuwa jej elementy.

ReDim MojaTabl(10)	' Zmień rozmiar na 10 elementów.

For I = 1 To 10	' Powtórz 10 razy.

MojaTabl(I) = I	' Zainicjuj tablicę.

Next I

Następna instrukcja zmienia rozmiar tablicy, ale nie usuwa jej elementów.

ReDim Preserve MojaTabl(15)	' Zmień rozmiar na 15 elementów.


Instrukcja Rem - przykład

W tym przykładzie pokazano różne postacie instrukcji Rem, która służy do umieszczania w programie objaśnień.

Rem To jest pierwsza postać składni.

Poniżej pokazano drugą postać składni.

Dim MójCiąg1, MójCiąg2

MójCiąg1 = "Cześć": Rem Komentarz po instrukcji, oddzielony dwukropkiem.

MójCiąg2 = "Żegnaj" 	' To także jest komentarz; dwukropek nie jest potrzebny.


Instrukcja Set - przykład

W tym przykładzie wykorzystano instrukcję Set do przypisania zmiennym odwołań do obiektów. Zakładamy, że TwójObiekt jest prawidłowym obiektem i posiada właściwość Text.

Dim TwójObiekt, MójObiekt, MójCiąg

Set MójObiekt = TwójObiekt	' Przypisz odwołanie do obiektu.

' MójObiekt i TwójObiekt odwołują się do tego samego obiektu.

TwójObiekt.Text = "Pozdrawiam wszystkich"	' Zainicjuj właściwość.

MójCiąg = MójObiekt.Text	' Zwraca " Pozdrawiam wszystkich".

' Przerwij powiązanie. MójObiekt nie będzie się już odwoływać do obiektu TwójObiekt.

Set MójObiekt = Nothing	' Zwolnij obiekt.


Instrukcja Static - przykład

W tym przykładzie wykorzystano instrukcję Static do zachowywania wartości zmiennej tak długo, jak działa program danego modułu.

' Definicja funkcji.

Function ZachowajSumę(Liczba)

' Tylko zmienna Suma zachowuje swoją wartość między wywołaniami.

Static Suma

Suma = Suma + Liczba

ZachowajSumę = Suma

End Function

' Definicja funkcji Static.

Static Function MojaFunkcja (Arg1, Arg2, Arg3)

' Wszystkie zmienne lokalne zachowują swoje wartości między wywołaniami funkcji.

Suma = Arg1 + Arg2 + Arg3

Połowa = Suma / 2

MojaFunkcja = Połowa

End Function


Instrukcja Sub - przykład

W tym przykładzie wykorzystano instrukcję Sub do zadeklarowania nazwy, argumentów i kodu programu, które tworzą procedurę typu Sub.

' Definicja procedury typu Sub.

' Procedura typu Sub z dwoma argumentami.

Sub SubObliczPole(Długość, Szerokość)

Dim Pole As Double	' Zadeklaruj zmienną lokalną.

If Długość = 0 Or Szerokość = 0 Then

' Jeżeli któryś z argumentów = 0,

Exit Sub	' opuść natychmiast procedurę.

End If

Pole = Długość * Szerokość	' Oblicz pole prostokąta.

Debug.Print Pole	' Wypisz Pole w oknie Analiza programu.

End Sub


Instrukcja Type - przykład

W tym przykładzie wykorzystano instrukcję Type do zdefiniowania nowego typu. Instrukcja Type jest używana tylko na poziomie modułu. Jeżeli występuje ona w module klasy, musi poprzedzać ją słowo kluczowe Private.

Type RekordPracownika	' Utwórz typ definiowany przez użytkownika.

ID As Integer	' Zdefiniuj elementy typu danych.

Nazwisko As String * 20

Adres As String * 30

Telefon As Long

DataZatr As Date

End Type

Sub UtwórzRekord()

Dim MójRekord As RekordPracownika	' Zadeklaruj zmienną.

' Przypisanie do zmiennej typu RekordPracownika musi wystąpić w procedurze.

MójRekord.ID = 12003	' Przypisz wartość składowej rekordu.

End Sub


Funkcja UBound - przykład

W tym przykładzie wykorzystano funkcję UBound do ustalenia największego indeksu dozwolonego we wskazanym wymiarze tablicy.

Dim Górny

Dim MojaTabl(1 To 10, 5 To 15, 10 To 20)	' Zadeklaruj zmienne tablicowe.

Dim DowolnaTabl(10)

Górny = UBound(MojaTabl, 1)	' Zwraca 10.

Górny = UBound(MojaTabl, 3)	' Zwraca 20.

Górny = UBound(DowolnaTabl)	' Zwraca 10.


Array - funkcja

Zwraca wartość typu Variant zawierającą tablicę.

Składnia

Array(lista_argumentów)

Argument obowiązkowy lista_argumentów jest listą wartości rozdzielonych przecinkami. Wartości te są przypisywane elementom tablicy zawartej w zmiennej typu Variant. Jeżeli nie podano żadnych argumentów, tworzona jest tablica o długości zerowej.

Użycie

Notacja wykorzystywana do odwoływania się do elementu tablicy składa się z nazwy zmiennej, po której następuje umieszczony w nawiasach numer indeksu wskazujący żądany element. W przedstawionym poniżej przykładzie pierwsza instrukcja powoduje utworzenie zmiennej typu Variant o nazwie A. Następna instrukcja powoduje przypisanie do zmiennej A tablicy. Ostatnia instrukcja powoduje przypisanie wartości drugiego elementu tablicy do innej zmiennej.

Dim A As Variant

A = Array(10,20,30)

B = A(2)

Dolne ograniczenie indeksu tablicy tworzonej za pomocą funkcji Array wynosi zawsze zero. W odróżnieniu od innych typów tablicowych, nie jest ono uzależnione od dolnego ograniczenia określonego w instrukcji Option Base.

Uwaga   Zmienna typu Variant, która nie została zadeklarowana jako tablica, może jednak zawierać tablicę. Zmienna typu Variant może zawierać tablicę dowolnego typu, z wyjątkiem ciągów o stałej długości i tablic typu zdefiniowanego przez użytkownika. Chociaż zmienna typu Variant zawierająca tablicę różni się koncepcyjnie od tablicy zawierającej elementy typu Variant, to w obu przypadkach dostęp do elementów tablicy realizowany jest w ten sam sposób.


Const - instrukcja

Deklaruje stałe, które mogą być używane zamiast wartości literalnych.

Składnia

[Public | Private] Const nazwa_stałej [As typ] = wyrażenie

Składnia instrukcji Const zawiera następujące elementy:

Element	Opis
Public	Element nieobowiązkowy. Słowo kluczowe wykorzystywane na poziomie modułu do deklaracji stałych dostępnych we wszystkich procedurach wszystkich modułów. Stosowanie go w procedurach jest niedozwolone.
Private	Element nieobowiązkowy. Słowo kluczowe wykorzystywane na poziomie modułów do deklaracji stałych dostępnych tylko wewnątrz modułu zawierającego deklaracje. Stosowanie go w procedurach jest niedozwolone.
nazwa_ stałej	Element obowiązkowy. Nazwa stałej podana zgodnie ze standardowymi konwencjami nazewnictwa zmiennych.
typ	Element nieobowiązkowy. Typ stałej, mogący przyjąć następujące postaci: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (obecnie nie obsługiwany), Date, String lub Variant. Dla każdej deklarowanej stałej należy zastosować oddzielną klauzulę As typ.
wyrażenie	Element obowiązkowy. Literał, inna stała lub kombinacja zawierająca dowolne operatory arytmetyczne lub logiczne z wyjątkiem Is.
Użycie

Stałe mają domyślnie zasięg “prywatny”. Wewnątrz procedur, stałe są zawsze prywatne i ich zasięg widoczności nie może być zmieniany. W modułach standardowych, domyślny zasięg stałych na poziomie modułów może być zmieniony za pomocą słowa kluczowego Public. Jednak w modułach klas stałe mogą mieć tylko zasięg prywatny i nie można go zmienić za pomocą słowa kluczowego Public.

Aby umieścić kilka deklaracji stałych w tym samym wierszu, należy każde przypisanie do stałej oddzielić przecinkiem. Jeżeli deklaracje stałych umieszczone zostaną w ten sposób, wówczas użycie słowa kluczowego Public lub Private ma zastosowanie do wszystkich deklaracji w wierszu.

W wyrażeniach przypisywanych stałym nie można używać zmiennych, funkcji zdefiniowanych przez użytkownika lub wewnętrznych funkcji języka Visual Basic (takich jak Chr).

Uwaga   Wykorzystanie stałych umożliwia tworzenie programów samodokumentujących i łatwych do modyfikacji. W odróżnieniu od zmiennych, stałe nie mogą ulegać zmianom w trakcie wykonywania programu.

Jeżeli stała nie zostanie zadeklarowana z wykorzystaniem klauzuli As typ, będzie miała typ najbardziej odpowiadający wyrażeniu.

Stałe zadeklarowane w procedurze typu Sub, Function lub Property mają zasięg lokalny w stosunku do tej procedury. Stała zadeklarowana poza procedurą jest widoczna wewnątrz całego modułu, w którym została zadeklarowana. Stałe można wykorzystywać wszędzie tam, gdzie można użyć wyrażenia.


CreateObject - funkcja

Tworzy i zwraca odwołanie do obiektu typu ActiveX.

Składnia

CreateObject(klasa)

Argument klasa wykorzystuje składnię nazwa_aplikacji.typ_obiektu i składa się z następujących elementów:

Element	Opis
nazwa_ aplikacji	Element obowiązkowy typu Variant (String). Nazwa aplikacji udostępniającej obiekt.
typ_ obiektu	Element obowiązkowy typu Variant (String). Typ lub klasa tworzonego obiektu.
Użycie

Każda aplikacja obsługująca automatyzację udostępnia co najmniej jeden typ obiektów. Na przykład edytor tekstu może oferować obiekt typu Application, obiekt typu Document i obiekt typu Toolbar.

Aby utworzyć obiekt ActiveX, należy obiekt zwrócony przez funkcję CreateObject przypisać do zmiennej obiektowej:

‘ Deklaracja zmiennej obiektowej zawierającej

‘ odwołanie do obiektu.

‘ Składnia Dim as Object powoduje dowiązywanie opóźnione.

Dim Arkusz_Excel As Object

Set Arkusz_Excel = CreateObject("Excel.Sheet")

Powyższy kod programu uruchamia aplikację, tworząc jednocześnie obiekt, w tym przypadku arkusz Microsoft Excel. Po utworzeniu obiektu można w kodzie programu odwoływać się do niego za pomocą zdefiniowanej wcześniej zmiennej obiektowej. Poniższy przykład ilustruje dostęp do właściwości i metod nowego obiektu za pomocą zmiennej obiektowej Arkusz_Excel oraz dostęp do innych obiektów programu Microsoft Excel, łącznie z obiektem typu Application i kolekcją Cells.

' Uaktywnienie programu Excel poprzez

' obiekt Application

Arkusz_Excel.Application.Visible = True

' Umieszczenie dowolnego tekstu w pierwszej

' komórce arkusza

Arkusz_Excel.Cells(1, 1).Value = "Współrzędne: kolumna A, wiersz 1"

' Zapisanie arkusza jako C:\test.doc

Arkusz_Excel.SaveAs "C:\ TEST.DOC"

' Zamknięcie programu Excel za pomocą metody Quit

' obiektu Application

Arkusz_Excel.Application.Quit

' Zwolnienie zmiennej obiektowej

Set Arkusz_Excel = Nothing

Deklaracja zmiennej obiektowej za pomocą klauzuli As Object powoduje utworzenie zmiennej zawierającej odwołanie do dowolnego typu obiektu. Jednak dostęp do obiektu poprzez taką zmienną jest realizowany w sposób opóźniony, czyli przez dowiązywanie odbywające się w trakcie wykonywania programu. Aby utworzyć zmienną obiektową z dowiązywaniem wczesnym, czyli dokonywanym w trakcie kompilacji programu, należy zadeklarować zmienną obiektową z określonym identyfikatorem klasy. Na przykład, można zadeklarować i utworzyć następujące odwołania do programu Microsoft Excel:

Dim xl_Aplikacja As Excel.Application

Dim xl_Skoroszyt As Excel.Workbook

Dim xl_Arkusz As Excel.WorkSheet

Set xl_Aplikacja = CreateObject("Excel.Application")

Set xl_Skoroszyt = xl_Aplikacja.Workbooks.Add

Set xl_Arkusz = xl_Skoroszyt.Worksheets(1)

Odwołanie poprzez dowiązywanie wczesne może być efektywniejsze, ale może zawierać jedynie odwołania do klas określonych w deklaracjach.

Obiekt zwrócony przez funkcję CreateObject można przekazywać do funkcji spodziewającej się obiektu jako argumentu. Na przykład, poniższy kod programu tworzy i przekazuje odwołanie do obiektu Excel.Application:

Call Mój_podprogram (CreateObject("Excel.Application"))

Uwaga   Funkcji CreateObject należy używać tylko wtedy, gdy nie istnieje jeszcze wystąpienie obiektu. Jeżeli wystąpienie obiektu jest już aktywne, uaktywniane jest nowe wystąpienie i tworzony jest obiekt określonego typu. Aby wykorzystać bieżące wystąpienie obiektu lub aby uruchomić aplikację, tak by wczytała plik, należy użyć funkcji GetObject.

Jeżeli obiekt zarejestrował się sam jako obiekt o jednokrotnym wystąpieniu, tworzone jest tylko jedno jego wystąpienie, niezależnie od tego, ile razy wywoływana jest funkcja CreateObject.


Declare - instrukcja

Wykorzystywana na poziomie modułu do deklarowania odwołań do procedur zewnętrznych zawartych w bibliotekach dołączanych dynamicznie (w pliku DLL).

Składnia 1.

[Public | Private] Declare Sub nazwa Lib "nazwa_biblioteki" [Alias "alias"] [([lista_argumentów])]

Składnia 2.

[Public | Private] Declare Function nazwa Lib "nazwa_biblioteki" [Alias "alias"] [([lista_argumentów])] [As typ]

Instrukcja Declare składa się z następujących elementów:

Element	Opis
Public	Element nieobowiązkowy. Używany do deklarowania procedur dostępnych we wszystkich procedurach wszystkich modułów.
Private	Element nieobowiązkowy. Używany do deklarowania procedur dostępnych tylko wewnątrz modułu, w którym występuje deklaracja.
Sub	Element nieobowiązkowy (jeden z elementów: Sub lub Function, musi wystąpić). Wskazuje, że procedura nie zwraca żadnej wartości.
Function	Element nieobowiązkowy (jeden z elementów: Sub lub Function, musi wystąpić). Wskazuje, że procedura zwraca wartość, która może być wykorzystana w wyrażeniu.
nazwa	Element obowiązkowy. Dowolna poprawna nazwa procedury. Należy pamiętać, że pozycje w bibliotece DLL uwzględniają wielkość liter.
Lib	Element obowiązkowy. Wskazuje, że deklarowana procedura zawarta jest w pliku z kodem programu lub w bibliotece DLL. Klauzula Lib jest wymagana dla wszystkich deklaracji.
nazwa_ biblioteki	Element obowiązkowy. Nazwa biblioteki DLL lub pliku z kodem programu, który zawiera deklarowaną procedurę.
Alias	Element nieobowiązkowy. Wskazuje, że wołana procedura ma w bibliotece DLL inną nazwę. Jest to szczególnie przydatne wtedy, gdy nazwa procedury zewnętrznej jest taka sama jak słowo kluczowe. Element Alias można wykorzystywać również wtedy, gdy procedura z biblioteki DLL ma taką samą nazwę jak zmienna publiczna, stała lub dowolna inna procedura w tym samym zakresie. Alias jest również przydatny wtedy, gdy w nazwie procedury w bibliotece DLL występują jakiekolwiek znaki, które nie są zgodne z konwencją nazewnictwa przyjętą dla bibliotek DLL.
alias	Element nieobowiązkowy. Nazwa procedury w bibliotece DLL lub w pliku z kodem programu. Jeżeli pierwszy znak nie jest znakiem numeru (#), alias jest nazwą punktu wejścia do procedury w bibliotece DLL. Jeżeli pierwszym znakiem jest znak (#), wszystkie następujące po nim znaki muszą wskazywać numer porządkowy punktu wejścia do procedury.
lista_ argumentów	Element nieobowiązkowy. Lista zmiennych reprezentujących argumenty przekazywane do procedury podczas jej wywołania.
typ	Element nieobowiązkowy. Typ wartości zwracanej przez procedurę typu Function, mogący przyjąć następujące postaci: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (obecnie nie obsługiwany), Date, String (tylko o zmiennej długości), Variant, typ zdefiniowany przez użytkownika lub typ obiektu.
Argument lista_argumentów składa się z następujących elementów o poniższej składni:

[Optional] [ByVal | ByRef] [ParamArray] nazwa_zmiennej [( )] [As typ]

Element	Opis
Optional	Element nieobowiązkowy. Wskazuje, że argument nie jest wymagany. Jeżeli element ten zostanie użyty, wszystkie następne argumenty na liście_argumentów muszą być również nieobowiązkowe i zadeklarowane z wykorzystaniem słowa kluczowego Optional. Element Optional nie może zostać użyty w stosunku do żadnego argumentu, jeżeli podano element ParamArray.
ByVal	Element nieobowiązkowy. Wskazuje, że argument przekazywany jest przez wartość.
ByRef	Wskazuje, że argument przekazywany jest przez odwołanie. W języku Visual Basic ByRef jest ustawieniem domyślnym.
ParamArray	Element nieobowiązkowy. Wykorzystywany jest tylko jako ostatni argument na liście_argumentów wskazując, że ostatnim argumentem jest tablica typu Optional zawierająca elementy typu Variant. Słowo kluczowe ParamArray pozwala na podanie dowolnej liczby argumentów. Element ParamArray nie może być używany razem z elementami ByVal, ByRef lub Optional.
nazwa_ zmiennej	Element obowiązkowy. Nazwa zmiennej reprezentującej przekazywany do procedury argument. Musi być zgodna ze standardowymi konwencjami nazewnictwa zmiennych.
( )	Element obowiązkowy dla zmiennych tablicowych. Oznacza, że nazwa_zmiennej jest tablicą.
typ	Element nieobowiązkowy. Typ argumentu przekazywanego do procedury, mogący przyjmować następujące postaci: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (obecnie nie obsługiwany), Date, String (tylko o zmiennej długości), Object, Variant, typ zdefiniowany przez użytkownika lub typ obiektowy.
Użycie

W przypadku procedur typu Function, typ procedury ściśle określa typ zwracanych danych. Aby określić jawnie typ zwracanych przez funkcję danych, należy użyć klauzuli As następującej po liście_argumentów. Wewnątrz listy_argumentów klauzuli As można używać do określania typu każdego przekazywanego do procedury argumentu. Dodatkowo, oprócz możliwości określenia typów standardowych, można na liście_argumentów umieścić klauzulę As Any, co blokuje kontrolę zgodności typów i umożliwia przekazywanie do procedury danych dowolnego typu.

Puste nawiasy wskazują, że procedura typu Sub lub Function nie ma żadnych argumentów oraz że system Visual Basic powinien sprawdzać, czy faktycznie żaden argument nie jest przekazywany do procedury. W poniższym przykładzie, procedura Pierwsza nie pobiera żadnych argumentów. Przy wywołaniu procedury Pierwsza z dowolnym argumentem wystąpi błąd:

Declare Sub Pierwsza Lib "Moja_biblioteka" ()

Jeżeli do deklaracji dołączona zostanie lista argumentów, przy każdym wywołaniu procedury sprawdzana jest liczba i typ argumentów. W poniższym przykładzie procedura Pierwsza wymaga jednego argumentu typu Long:

Declare Sub Pierwsza Lib "Moja_biblioteka" (X As Long)

Uwaga   Na liście argumentów instrukcji Declare nie można umieszczać ciągów o stałej długości. Do procedur mogą być przekazywane jedynie ciągi o zmiennej długości. Ciągi o stałej długości mogą występować jako argumenty procedury, ale przed przekazaniem ich do procedury są zamieniane na ciągi o zmiennej długości.

Uwaga   Przy wywoływaniu procedur zewnętrznych wymagających ciągu o wartości zerowej, wykorzystywana jest stała vbNullString. Ciąg o wartości zerowej nie jest jednak tym samym co ciąg o długości zerowej ("").


Deftype - instrukcje

Wykorzystywane na poziomie modułu do ustawiania domyślnych typów danych dla zmiennych, argumentów przekazywanych do procedur i typów zwracanych przez procedury typu Function i Property Get, których nazwy zaczynają się określonym znakiem.

Składnia

DefBool zakres_liter [, zakres_liter] . . .

DefByte zakres_liter[, zakres_liter] . . .

DefInt zakres_liter[, zakres_liter] . . .

DefLng zakres_liter[, zakres_liter] . . .

DefCur zakres_liter[, zakres_liter] . . .

DefSng zakres_liter[, zakres_liter] . . .

DefDbl zakres_liter[, zakres_liter] . . .

DefDec zakres_liter[, zakres_liter] . . .

DefDate zakres_liter[, zakres_liter] . . .

DefStr zakres_liter[, zakres_liter] . . .

DefObj zakres_liter[, zakres_liter] . . .

DefVar zakres_liter[, zakres_liter] . . .

Argument obowiązkowy zakres_liter ma następującą składnię:

litera_1[-litera_2]

Argumenty litera_1 i litera_2 określają zakres nazw, dla których można ustawić domyślny typ danych. Każdy argument reprezentuje pierwszą literę nazwy zmiennej, argumentu, procedury typu Function lub procedury typu Property Get i może być dowolną literą alfabetu. Wielkość liter w argumencie zakres_liter nie jest istotna.

Użycie

Nazwa instrukcji ściśle określa typ danych:

Instrukcja	Typ danych
DefBool	Boolean
DefByte	Byte
DefInt	Integer
DefLng	Long
DefCur	Currency
DefSng	Single
DefDbl	Double
DefDec	Decimal (obecnie nie obsługiwany)
DefDate	Date
DefStr	String
DefObj	Object
DefVar	Variant
Na przykład, w poniższym fragmencie programu zmienna Komunikat jest zmienną znakową:

DefStr A-Q

. . .

Komunikat = "Brak miejsca na stosie."

Instrukcja Deftyp dotyczy tylko modułu, w którym została użyta. Na przykład, instrukcja DefInt w jednym module dotyczy domyślnych typów danych dla zmiennych, argumentów przekazywanych do procedur i typów zwracanych przez procedury typu Function i Property Get zadeklarowanych tylko w tym module. Instrukcja ta nie ma wpływu na domyślne typy zmiennych, argumentów i zwracanych typów w innych modułach. Jeżeli typ nie został jawnie zadeklarowany za pomocą instrukcji Deftyp, to domyślny typ dla wszystkich zmiennych, wszystkich argumentów, wszystkich procedur typu Function i procedur typu Property Get to typ Variant.

Określenie zakresu liter definiuje zwykle typ zmiennych, których nazwa rozpoczyna się od jednego z pierwszych 128 znaków całego zestawu znaków. Jednak jeśli zakres liter określony zostanie jako A – Z, ustawiony zostanie typ domyślny dla wszystkich zmiennych, łącznie z tymi, których nazwy rozpoczynają się od znaków międzynarodowych z rozszerzonej części zestawu znaków (128 – 255).

Jeżeli określony został zakres A – Z, to nie można już później za pomocą instrukcji Deftyp ponownie definiować podzakresów zmiennych. Jeżeli określony zostaje zakres zawierający literę zdefiniowaną wcześniej za pomocą innej instrukcji Deftyp, wystąpi błąd. Jednak zawsze można jawnie określić typ danej dowolnej zdefiniowanej lub nie zdefiniowanej zmiennej za pomocą instrukcji Dim z klauzulą As typ. Na przykład, aby zdefiniować zmienną jako zmienną typu Double, pomimo że domyślnym typem jest Integer, można na poziomie modułu zastosować poniższy kod programu:

DefInt A-Z

Dim Stawka_podatku As Double

Instrukcja Deftyp nie ma wpływu na elementy typu zdefiniowanego przez użytkownika, ponieważ elementy takie muszą być jawnie zadeklarowane.


Dim - instrukcja

Deklaruje zmienną i przydziela pamięć.

Składnia

Dim [WithEvents] nazwa_zmiennej [([indeksy])] [As [New] typ] [, [WithEvents] nazwa_zmiennej [([indeksy])] [As [New] typ]] . . .

Składnia instrukcji Dim zawiera następujące elementy:

Element	Opis
WithEvents	Element nieobowiązkowy. Słowo kluczowe wskazujące, że nazwa_zmiennej oznacza zmienną obiektową wykorzystywaną do obsługi zdarzeń wyzwalanych przez obiekt typu ActiveX. Element dopuszczalny tylko w module klasy. Za pomocą elementu WithEvents można zadeklarować dowolną liczbę pojedynczych zmiennych, ale nie można tworzyć tablic. Słowa kluczowego WithEvents nie można używać łącznie ze słowem New.
nazwa_ zmiennej	Element obowiązkowy. Nazwa zmiennej podana zgodnie ze standardowymi konwencjami nazewnictwa zmiennych.
indeksy	Element nieobowiązkowy. Wymiary zmiennej tablicowej. Zadeklarować można do 60 wymiarów. Argument indeksy ma następującą składnię:
	[indeks_dolny To] indeks_górny [, [indeks_dolny To] indeks_górny] . . .
	Jeżeli element indeks_dolny nie określa tego jawnie, zakres indeksów tablicy jest ograniczany od dołu przez instrukcję Option Base. Jeżeli instrukcja Option Base nie występuje, to dolne ograniczenie zakresu indeksów tablicy wynosi zero.
New	Element nieobowiązkowy. Słowo kluczowe umożliwiające niejawne utworzenie obiektu. Jeżeli w deklaracji zmiennej obiektowej użyty zostanie element New, to przy pierwszym odwołaniu do takiego obiektu tworzone jest jego wystąpienie. W takim przypadku do przypisania odwołania do obiektu nie trzeba wykorzystywać instrukcji Set. Słowa kluczowego New nie można wykorzystywać do deklarowania zmiennych dowolnego wewnętrznego typu danych i do deklarowania wystąpień obiektów zależnych. Nie można go również wykorzystywać łącznie ze słowem kluczowym WithEvents.
typ	Element nieobowiązkowy. Typ zmiennej, mogący przyjąć następujące postaci: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (obecnie nie obsługiwany), Date, String (dla ciągów o zmiennej długości), String * długość (dla ciągów o stałej długości), Obiekt, Variant, typ zdefiniowany przez użytkownika lub typ obiektu. Dla każdej deklarowanej zmiennej należy zastosować oddzielną klauzulę As typ.
Użycie

Zmienne zadeklarowane za pomocą instrukcji Dim na poziomie modułu są dostępne we wszystkich procedurach wewnątrz modułu. Na poziomie procedury, zmienne dostępne są tylko wewnątrz procedury.

Aby zadeklarować typ zmiennej, należy wykorzystać instrukcję Dim na poziomie modułu lub procedury. Na przykład, poniższa instrukcja deklaruje zmienną typu Integer:

Dim Liczba_zatrudnionych As Integer

Instrukcję Dim można wykorzystać do zadeklarowania zmiennej obiektowej. Poniższa instrukcja deklaruje zmienną dla nowego wystąpienia arkusza:

Dim X As New Worksheet

Jeżeli przy deklaracji zmiennej obiektowej pominięto słowo kluczowe New, zmienna odwołująca się do obiektu musi zostać przed użyciem przypisana do istniejącego obiektu za pomocą instrukcji Set. Zanim zadeklarowana zmienna zostanie przypisana do obiektu, przyjmuje wartość specjalną Nothing, co oznacza, że zmienna nie odwołuje się do żadnego określonego wystąpienia obiektu.

Instrukcję Dim z pustymi nawiasami można wykorzystać do deklaracji tablicy dynamicznej. Po zadeklarowaniu takiej tablicy, do określenia liczby wymiarów i liczby elementów tablicy należy wewnątrz procedury użyć instrukcji ReDim. Przy próbie ponownej deklaracji wymiaru tablicy o rozmiarze jawnie określonym za pomocą instrukcji Private, Public lub Dim wystąpi błąd.

Jeżeli nie zostanie określony typ danych lub typ obiektu, a w module nie występuje również instrukcja Deftyp, jako domyślny przyjmowany jest typ Variant.

Podczas inicjowania zmiennych zmienna numeryczna przyjmuje wartość 0, ciąg o zmiennej długości przyjmuje wartość ciągu o długości zerowej (""), a ciąg o stałej długości jest wypełniany zerami. Zmienne typu Variant są inicjowane wartością Empty. Każdy element zmiennej typu zdefiniowanego przez użytkownika jest inicjowany tak, jakby był oddzielną zmienną.

Uwaga   Jeżeli instrukcja Dim występuje w procedurze, zwykle umieszczana jest na początku procedury.


Erase - instrukcja

Dokonuje ponownego zainicjowania elementów tablicy o stałym rozmiarze i zwalnia pamięć przydzieloną tablicy dynamicznej.

Składnia

Erase lista_tablic

Argument obowiązkowy lista_tablic jedną zmienną tablicową lub rozdzieloną przecinkami listą wielu zmiennych tablicowych, które mają ulec wymazaniu.

Użycie

Instrukcja Erase zachowuje się różnie, w zależności od tego, czy tablica ma stały rozmiar (tablica zwykła), czy też jest dynamiczna. Instrukcja Erase nie odzyskuje zawartości pamięci w przypadku stosowania jej do tablic o stałym rozmiarze. Instrukcja Erase nadaje wartości elementom tablicy o stałym rozmiarze w następujący sposób:

Rodzaj tablicy	Efekt instrukcji Erase dla tablic o stałej długości
Stała tablica numeryczna	Ustawia wszystkie elementy na zero.
Stała tablica ciągów (o zmiennej długości)	Ustawia każdy element na ciąg o długości zerowej ("").
Stała tablica ciągów (o stałej długości)	Ustawia wszystkie elementy na zero.
Stała tablica z elementami typu Variant	Ustawia każdy element na wartość Empty.
Tablica z elementami typu zdefiniowanego przez użytkownika	Ustawia każdy element tak, jakby był oddzielną zmienną.
Tablica obiektów	Ustawia każdy element na wartość specjalną Nothing.
Instrukcja Erase zwalnia pamięć zajętą przez tablice dynamiczne. Zanim program będzie się mógł ponownie odwołać do tablicy dynamicznej, należy za pomocą instrukcji ReDim jeszcze raz zadeklarować wymiary zmiennej tablicowej.


Function - instrukcja

Deklaruje nazwę, argumenty i kod składający się na procedurę typu Function.

Składnia

[Public | Private] [Static] Function nazwa [(lista_argumentów)] [As typ]
[instrukcje]
[nazwa = wyrażenie]
[Exit Function]
[instrukcje]
[nazwa = wyrażenie]

End Function

Składnia instrukcji Function zawiera następujące elementy:

Element	Opis
Public	Element nieobowiązkowy. Wskazuje, że procedura typu Function jest dostępna dla wszystkich innych procedur we wszystkich modułach. Jeżeli element ten zostanie zastosowany w module zawierającym instrukcję Option Private, to procedura jest niedostępna poza projektem.
Private	Element nieobowiązkowy. Wskazuje, że procedura typu Function jest dostępna dla innych procedur tylko wewnątrz modułu, w którym została zadeklarowana.
Static	Element nieobowiązkowy. Wskazuje, że wartości zmiennych lokalnych procedury typu Function są zachowywane między wywołaniami procedury. Atrybut Static nie ma wpływu na wartości zmiennych zadeklarowanych poza procedurą typu Function, nawet jeżeli są one wykorzystywane wewnątrz tej procedury.
nazwa	Element obowiązkowy. Nazwa procedury typu Function podana zgodnie ze standardowymi konwencjami nazewnictwa zmiennych.
lista_ argumentów	Element nieobowiązkowy. Lista zmiennych reprezentujących argumenty przekazywane do procedury typu Function w trakcie jej wywoływania. Jeżeli występuje wiele zmiennych, to są one rozdzielone przecinkami.
typ	Element nieobowiązkowy. Typ wartości zwracanej przez procedurę typu Function, mogący przyjąć następujące postaci: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (obecnie nie obsługiwany), Date, String (z wyjątkiem ciągów o stałej długości), Obiekt, Variant lub dowolny typ zdefiniowany przez użytkownika. Wprawdzie tablice nie mogą być zwracane przez tę procedurę, to jednak wartości typu Variant zawierające tablicę - mogą.
instrukcje	Element nieobowiązkowy. Dowolny blok instrukcji, które mają być wykonane wewnątrz procedury typu Function.
wyrażenie	Element nieobowiązkowy. Wartość zwracana przez procedurę typu Function.
Argument lista_argumentów składa się z następujących elementów o poniższej składni:

[Optional] [ByVal | ByRef] [ParamArray] nazwa_zmiennej [( )] [As typ] [= wartość_domyślna]

Element	Opis
Optional	Element nieobowiązkowy. Wskazuje, że argument nie jest wymagany. Jeżeli element ten zostanie użyty, wszystkie następne argumenty zawarte na liście_argumentów muszą być również nieobowiązkowe i zadeklarowane z wykorzystaniem słowa kluczowego Optional. Element Optional nie może zostać użyty w stosunku do żadnego argumentu, jeżeli występuje element ParamArray.
ByVal	Element nieobowiązkowy. Wskazuje, że argument przekazywany jest przez wartość.
ByRef	Element nieobowiązkowy. Wskazuje, że argument przekazywany jest przez odwołanie. W języku Visual Basic ByRef jest ustawieniem domyślnym.
ParamArray	Element nieobowiązkowy. Wykorzystywany jest tylko jako ostatni argument na liście_argumentów wskazując, że ostatnim argumentem jest tablica typu Optional zawierająca elementy typu Variant. Słowo kluczowe ParamArray pozwala na podanie dowolnej liczby argumentów. Element ParamArray nie może być używany razem z elementami ByVal, ByRef lub Optional.
nazwa_ zmiennej	Element obowiązkowy. Nazwa zmiennej reprezentującej przekazywany do procedury argument. Musi być zgodna ze standardowymi konwencjami nazewnictwa zmiennych.
typ	Element nieobowiązkowy. Typ argumentu przekazywanego do procedury; dopuszczalne typy to Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (obecnie nie obsługiwany), Date, String (tylko o zmiennej długości), Object, Variant. Jeżeli parametr nie jest typu Optional, dopuszczalne są również typy zdefiniowane przez użytkownika i typy obiektów.
wartość_ domyślna	Element nieobowiązkowy. Dowolna stała lub wyrażenie stałe. Element dozwolony tylko dla parametrów typu Optional. Jeżeli parametr jest typu Object, jawnie podana wartość domyślna może być równa tylko Nothing.
Użycie

Jeżeli nie zostało to jawnie określone za pomocą słowa kluczowego Public lub Private, procedury typu Function są domyślnie publiczne. Jeżeli pominięto słowo kluczowe Static, wartości przechowywane w zmiennych lokalnych nie są zachowywane między wywołaniami procedury.

Ostrzeżenie   Procedury typu Function mogą być rekursywne, tzn. aby wykonać określone zadanie, mogą wywoływać same siebie. Należy jednak pamiętać, że rekursja może doprowadzić do przepełnienia stosu. W przypadku korzystania z mechanizmu rekursji w procedurach typu Function, w deklaracji zwykle nie stosuje się zwykle słowa kluczowego Static.

Cały wykonywalny kod musi znajdować się wewnątrz procedur. Nie można zdefiniować procedury typu Function wewnątrz innej procedury typu Function, Sub lub Property.

Instrukcja Exit Function powoduje natychmiastowe opuszczenie procedury typu Function. Wykonywanie programu wznawiane jest od instrukcji następującej bezpośrednio po wywołaniu procedury. W procedurze typu Function może wystąpić dowolna liczba instrukcji Exit Function, które mogą znajdować się w dowolnych miejscach tej procedury.

Podobnie jak procedura typu Sub, procedura typu Function jest oddzielną procedurą, mogącą pobierać argumenty, wykonywać szereg instrukcji i zmieniać wartości swoich argumentów. Jednak w odróżnieniu od procedury typu Sub, jeżeli wartość zwracana przez procedurę typu Function ma być wykorzystana, to wywołanie takiej procedury można umieścić po prawej stronie wyrażenia w taki sam sposób, w jaki wykorzystuje się dowolne funkcje wewnętrzne, takie jak Sqr, Cos lub Chr.

Wywołanie procedury typu Function w wyrażeniu następuje przez podanie nazwy funkcji poprzedzającej umieszczoną w nawiasach listę argumentów. Szczegółowe informacje na temat wywoływania procedur typu Function podano w opisie instrukcji Call.

Aby funkcja zwracała wartość, należy do nazwy funkcji przypisać jakąś wartość. Wewnątrz procedury można wielokrotnie dokonywać takich przypisań. Jeżeli do nazwy nie została przypisana żadna wartość, funkcja zwraca wartość domyślną: funkcja numeryczna - wartość 0, funkcja operująca na ciągach - ciąg o długości zerowej ("") a funkcja typu Variant - wartość Empty. Funkcja, która zwraca odwołanie do obiektu, zwraca wartość Nothing, jeżeli wewnątrz funkcji nie zostało przypisane nazwie (za pomocą instrukcji Set) odwołanie do obiektu.

Poniższy przykład ilustruje sposób, w jaki należy funkcji o nazwie Szukanie_binarne przypisać zwracaną wartość. W tym przypadku do nazwy przypisywana jest wartość False, jeśli określony element nie został odnaleziony.

Function Szukanie_binarne(. . .) As Boolean

. . .

' Element nie odnaleziony. Zwróć wartość False.

If dolny > górny Then

Szukanie_binarne = False

Exit Function

End If

. . .

End Function

Zmienne wykorzystywane w procedurach typu Function dzielą się na dwie kategorie: jawnie i niejawnie zadeklarowane wewnątrz procedury. Zmienne zadeklarowane w procedurze w sposób jawny (za pomocą instrukcji Dim lub podobnej) są zawsze zmiennymi lokalnymi procedury. Zmienne wykorzystywane, ale nie zadeklarowane w procedurze w sposób jawny, są także lokalne, pod warunkiem, że nie są jawnie zadeklarowane na dowolnym wyższym poziomie poza procedurą.

Ostrzeżenie   Procedura może wykorzystywać zmienną, która nie jest jawnie zadeklarowana w procedurze, ale istnieje niebezpieczeństwo wystąpienia konfliktu nazw, jeżeli jakakolwiek inna zmienna zadeklarowana na poziomie modułu ma tę samą nazwę. Jeżeli procedura odwołuje się do nie zadeklarowanej zmiennej, która ma taką samą nazwę jak inna procedura, stała lub zmienna, przyjmuje się, że odwołanie to odnosi się do nazwy elementu zadeklarowanego na poziomie modułu. Aby uniknąć konfliktu tego rodzaju, należy deklarować zmienne w sposób jawny. Aby wymusić jawne deklarowanie zmiennych, można wykorzystać instrukcję Option Explicit.

Ostrzeżenie   W celu optymalizacji obliczeń systemu Visual Basic może dokonywać zmian w postaci wyrażeń arytmetycznych. Należy unikać stosowania procedur typu Function w wyrażeniach arytmetycznych, jeżeli funkcja zmienia wartość zmiennych występujących w tym samym wyrażeniu.


GetObject - funkcja

Zwraca odwołanie do obiektu typu ActiveX pochodzącego z pliku.

Składnia

GetObject([pathname] [, class])

Funkcja GetObject ma następujące nazwane argumenty:

Element	Opis
pathname	Argument nieobowiązkowy typu Variant (String). Pełna ścieżka dostępu i nazwa pliku zawierającego obiekt pobierany. Jeżeli argument pathname zostanie pominięty, argument class jest obowiązkowy.
class	Argument nieobowiązkowy typu Variant (String). Ciąg znaków reprezentujący klasę obiektu.
Argument class ma składnię nazwa_aplikacji.typ_obiektu i składa się z następujących elementów:

Element	Opis
nazwa_ aplikacji	Element obowiązkowy typu Variant (String). Nazwa aplikacji udostępniającej obiekt.
typ_ obiektu	Element obowiązkowy typu Variant (String). Typ lub klasa tworzonego obiektu.
Użycie

Funkcję GetObject wykorzystuje się do uzyskania dostępu do obiektu ActiveX znajdującego się w pliku i przypisania go zmiennej obiektowej. Aby zwrócony przez funkcję GetObject obiekt przypisać zmiennej obiektowej, należy wykorzystać instrukcję Set. Na przykład:

Dim Obiekt_CAD As Object

Set Obiekt_CAD = GetObject("C:\CAD\SCHEMAT.CAD")

Efektem wykonania powyższego fragmentu kodu programu jest uruchomienie aplikacji związanej ze ścieżką atphname i aktywacja obiektu w określonym pliku.

Jeżeli argument pathname jest ciągiem o długości zerowej (""), funkcja GetObject zwraca nowe wystąpienie obiektu określonego typu. Jeżeli argument atphname zostanie pominięty, funkcja GetObject zwraca aktualnie aktywny obiekt podanego typu. Jeżeli nie istnieje żaden obiekt podanego typu, wystąpi błąd.

Niektóre aplikacje umożliwiają aktywację tylko części pliku. Aby tego dokonać, należy do końca nazwy pliku dołączyć znak wykrzyknika (!) oraz ciąg określający część pliku, która ma zostać uaktywniona. Więcej informacji o tym, w jaki sposób tworzyć taki ciąg, można znaleźć w dokumentacji aplikacji, która utworzyła obiekt.

Na przykład, w aplikacji do rysowania, rysunek zapisany w pliku może składać się z wielu warstw. W takim przypadku uaktywnienie dowolnej warstwy rysunku o nazwie SCHEMAT.CAD można przeprowadzić poniższym kodem programu:

Set Obiekt_warstwowy = GetObject("C:\CAD\SCHEMAT.CAD!Layer3")

Jeżeli nie zostanie określony argumentem class, czyli klasa obiektu, proces automatyzacji w oparciu o podaną nazwę pliku wyznaczy aplikację, która ma zostać uruchomiona, oraz obiekt, który ma zostać uaktywniony. Jednak niektóre pliki mogą obsługiwać więcej niż jedną klasę obiektów. Na przykład, rysunek może obsługiwać trzy różne typy obiektów: obiekt typu Application, obiekt typu Drawing i obiekt typu Toolbar, które wszystkie są częścią tego samego pliku. Aby określić, który obiekt z pliku ma zostać uaktywniony, należy wykorzystać argument nieobowiązkowy class. Na przykład:

Dim Mój_obiekt As Object

Set Mój_obiekt = GetObject("C:\RYSUNKI\PRÓBKA.DRW", "FIGMENT.DRAWING")

W przedstawionym powyżej przykładzie FIGMENT jest nazwą aplikacji do rysowania, a DRAWING jest jednym z obsługiwanych przez tę aplikację typów obiektów.

Po uaktywnieniu obiektu można się do niego odwoływać w kodzie programu za pomocą zdefiniowanych wcześniej zmiennych obiektowych. Kontynuując poprzedni przykład, dostęp do właściwości i metod nowego obiektu możliwy jest za pomocą zmiennej obiektowej Mój_obiekt. Na przykład:

Mój_obiekt.Line 9, 90

Mój_obiekt.InsertText 9, 100, "Pozdrawiam wszystkich"

Mój_obiekt.SaveAs "C:\RYSUNKI\PRÓBKA.DRW"

Uwaga Funkcji GetObject należy używać wtedy, gdy istnieje bieżące wystąpienie obiektu lub jeśli trzeba utworzyć obiekt z już załadowanego pliku. Jeżeli bieżące wystąpienie nie istnieje i nie istnieje konieczność uruchomienia obiektu w sytuacji z już załadowanym plikiem, należy użyć funkcji CreateObject.

Jeżeli obiekt zarejestrował się sam jako obiekt o pojedynczym wystąpieniu, tworzone jest tylko jedno jego wystąpienie, niezależnie od liczby wywołań funkcji CreateObject. W przypadku obiektu o pojedynczym wystąpieniu, funkcja GetObject wywołana z ciągiem o długości zerowej zwraca zawsze to samo wystąpienie, a wywołana z pominięciem argumentu pathname powoduje błąd. Nie można używać funkcji GetObject do uzyskania odwołania do klasy utworzonej w języku Visual Basic.


LBound - funkcja

Zwraca wartość typu Long zawierającą najniższy dopuszczalny indeks wskazanego wymiaru tablicy.

Składnia

LBound(nazwa_tablicy [, wymiar])

Składnia funkcji LBound składa się z następujących elementów:

Element	Opis
nazwa_ tablicy	Element obowiązkowy. Nazwa zmiennej tablicowej, zgodna ze standardowymi konwencjami nazewnictwa zmiennych.
wymiar	Element nieobowiązkowy typu Variant (Long). Pełen numer określający wymiar, którego najniższy indeks ma być zwrócony. 1 oznacza pierwszy wymiar, 2 - drugi itd. Jeżeli element wymiar zostanie pominięty, domyślnie przyjmowana jest wartość 1.
Użycie

Funkcja LBound w powiązaniu z funkcją UBound wykorzystywana jest do wyznaczenia rozmiaru tablicy. Aby wyznaczyć górny zakres wymiaru tablicy, należy użyć funkcji UBound.

Funkcja LBound dla przedstawionej tablicy z określonymi poniżej wymiarami zwraca wartości przedstawione w tabeli:

Dim A(1 To 100, 0 To 3, -3 To 4)

Instrukcja	Zwracana wartość
LBound(A, 1)	1
LBound(A, 2)	0
LBound(A, 3)	-3
Domyślny indeks dolny dla dowolnego wymiaru równa się 0 lub 1, w zależności od ustawień określonych instrukcją Option Base. Dolne ograniczenie tablicy utworzonej za pomocą funkcji Array wynosi zero i nie ma na nie wpływu instrukcja Option Base.

Tablice, których wymiary zostały określone za pomocą klauzuli To instrukcji Dim, Private, Public, ReDim lub Static, mogą jako najniższy indeks dolny przyjmować dowolną wartość całkowitą.


Let - instrukcja

Przypisuje wartość wyrażenia do zmiennej lub do właściwości.

Składnia

[Let] nazwa_zmiennej = wyrażenie

Składnia instrukcji Let zawiera następujące elementy:

Element	Opis
Let	Element nieobowiązkowy. Jawne użycie słowa kluczowego Let jest kwestią stylu programowania, ale zwykle element ten jest pomijany.
nazwa_ zmiennej	Element obowiązkowy. Nazwa zmiennej lub właściwości, podana zgodnie ze standardowymi konwencjami nazewnictwa zmiennych.
wyrażenie	Element obowiązkowy. Wartość przypisywana zmiennej lub właściwości.
Użycie

Wartość wyrażenia może być przypisana do zmiennej lub do właściwości tylko wtedy, gdy jest ono tego samego typu co zmienna. Nie można przypisywać wyrażenia znakowego do zmiennych numerycznych i na odwrót: nie można przypisywać wyrażenia numerycznego do zmiennych reprezentujących ciągi. Takie przypisanie spowoduje zasygnalizowanie błędu w czasie kompilacji.

Do zmiennych typu Variant mogą być przypisywane ciągi lub wyrażenia numeryczne, jednak przypisanie odwrotne nie zawsze jest dopuszczalne. Dowolna wartość typu Variant z wyjątkiem wartości Null może być przypisana do zmiennej znakowej, ale do zmiennej numerycznej może być przypisana tylko taka wartość typu Variant, która może być zinterpretowana jako liczba. Aby określić, czy wartość typu Variant może być przekształcona na liczbę, należy użyć funkcji IsNumeric.

Ostrzeżenie   Przypisanie wyrażenia jednego typu numerycznego do zmiennej innego typu numerycznego wymusza konwersje typu wyrażenia do typu zmiennej wynikowej.

Instrukcje Let mogą być wykorzystywane do przypisywania jednej zmiennej rekordowej do innej tylko wtedy, gdy obie zmienne są tego samego typu zdefiniowanego przez użytkownika. Aby przypisywać zmienne rekordowe o różnych typach, zdefiniowanych przez użytkownika należy używać instrukcji LSet. Do przypisywania zmiennym odwołań do obiektów należy używać instrukcji Set.


Option Base - instrukcja

Wykorzystywana na poziomie modułu do deklaracji domyślnego dolnego ograniczenia indeksów tablicy.

Składnia

Option Base {0 | 1}

Użycie

Instrukcja Option Base nigdy nie jest koniecznie wymagana, ponieważ domyślną wartością bazową jest wartość 0. W przypadku użycia, instrukcja ta musi wystąpić w module przed wszystkimi procedurami. Instrukcja Option Base może wystąpić w module tylko raz i musi poprzedzać deklaracje tablic z podanymi wymiarami.

Uwaga   Większą elastyczność określania zakresu indeksów tablicy zapewnia klauzula To w instrukcjach Dim, Private, Public, ReDim oraz Static. Jednak jeżeli dolne ograniczenie nie zostanie jawnie określone za pomocą klauzuli To, można wykorzystać instrukcję Option Base w celu zmiany domyślnego dolnego ograniczenia na wartość 1. Wartość bazowa tablicy tworzonej za pomocą funkcji Array lub słowa kluczowego ParamArray równa jest zero; instrukcja Option Base nie ma wpływu na funkcję Array i słowo kluczowe ParamArray.

Instrukcja Option Base ma wpływ tylko na dolne ograniczenie tablic umieszczonych w module, w którym ta instrukcja wystąpiła.


Option Compare - instrukcja

Wykorzystywana na poziomie modułu do deklaracji domyślnej metody porównywania ciągów.

Składnia

Option Compare {Binary | Text | Database}

Użycie

W przypadku użycia, instrukcja Option Compare musi wystąpić w module przed wszystkimi procedurami.

Instrukcja Option Compare określa metodę porównania ciągów znaków dla danego modułu (dopuszczalne metody to: Binary, Text lub Database). Jeżeli moduł nie zawiera instrukcji Option Compare, domyślną metodą porównywania jest Binary.

Instrukcja Option Compare Binary powoduje, że ciągi będą porównywane w oparciu o porządek sortowania określony na podstawie wewnętrznej, binarnej reprezentacji znaków. W systemie Microsoft Windows kolejność sortowania określona jest przez stronę kodową. Typowa kolejność sortowania w trybie Binary przedstawiona została poniżej:

A < B < E < Z < a < b < e < z < Ŕ < Ę < Ř < ŕ < ę < ř

Instrukcja Option Compare Text powoduje, że ciągi będą porównywane w oparciu o ignorującą wielkość liter kolejność sortowania określoną przez zapisane w systemie ustawienia regionalne. Jeżeli te same co poprzednio znaki zostaną posortowane z wykorzystaniem instrukcji Option Compare Text, to kolejność sortowania wyglądać będzie następująco:

(A=a) < ( Ŕ=ŕ) < (B=b) < (E=e) < (Ę=ę) < (Z=z) < (Ř=ř)

Instrukcja Option Compare Database może być wykorzystywana tylko w ramach programu Microsoft Access. Określa ona, że porównywanie ciągów oparte jest na kolejności sortowania określonej przez identyfikator ustawień regionalnych bazy danych, w której porównywane są ciągi.


Option Explicit - instrukcja

Wykorzystywana na poziomie modułu w celu wymuszenia jawnego deklarowania wszystkich zmiennych w danym module.

Składnia

Option Explicit

Użycie

W przypadku użycia, instrukcja Option Explicit musi wystąpić w module przed wszystkimi procedurami.

Jeżeli w module wystąpi instrukcja Option Explicit, wszystkie zmienne muszą być deklarowane jawnie za pomocą instrukcji Dim, Private, Public, ReDim lub Static. Przy próbie użycia nie zadeklarowanej zmiennej, w czasie kompilacji wystąpi błąd.

Jeżeli instrukcja Option Explicit nie zostanie użyta, wszystkie nie zadeklarowane zmienne przyjmują typ Variant, chyba że domyślny typ jest określony inaczej za pomocą instrukcji Deftyp.

Uwaga Instrukcja Option Explicit pomaga unikać błędów spowodowanych błędnym zapisaniem nazwy istniejącej zmiennej lub błędów spowodowanych niejasno określonym zakresem zmiennych.


Option Private - instrukcja

W przypadku użycia w aplikacji głównej umożliwiającej stosowanie odwołań pomiędzy wieloma projektami, instrukcja Option Private Module zapobiega odwołaniom do zawartości modułu dokonywanym spoza projektu. W aplikacjach głównych, które nie umożliwiają takich odwołań, na przykład samodzielnej wersji systemu Visual Basic, zastosowanie instrukcji Option Private nie ma żadnych efektów.

Składnia

Option Private Module

Użycie

W przypadku użycia, instrukcja Option Private musi wystąpić na poziomie modułu przed wszystkimi procedurami.

Jeżeli w module umieszczona jest instrukcja Option Private Module, elementy publiczne, na przykład zmienne, obiekty czy typy zdefiniowane przez użytkownika zadeklarowane na poziomie modułu, są dostępne wewnątrz projektu zawierającego moduł, ale nie są dostępne dla innych aplikacji lub projektów.

Uwaga   Instrukcja Option Private jest przydatna jedynie dla aplikacji głównych, które obsługują równoczesne ładowanie wielu projektów i pozwalają na stosowanie odwołań pomiędzy załadowanymi projektami. Na przykład, program Microsoft Excel pozwala na załadowanie wielu projektów, a instrukcja Option Private Module może zostać użyta do ograniczania widoczności elementów pomiędzy projektami. Pomimo że system Visual Basic dopuszcza ładowanie wielu projektów, to odwołania pomiędzy projektami są w tym systemie niedozwolone.


Private - instrukcja

Stosowana na poziomie modułu do deklaracji zmiennych prywatnych oraz do przydziału pamięci.

Składnia

Private [WithEvents] nazwa_zmiennej [([indeksy])] [As [New] typ] [,[WithEvents] nazwa_zmiennej[([indeksy])] [As [New] typ]] . . .

Składnia instrukcji Private zawiera następujące elementy:

Element	Opis
WithEvents	Element nieobowiązkowy. Słowo kluczowe wskazujące, że nazwa_zmiennej jest zmienną obiektową wykorzystywaną do obsługi zdarzeń wyzwalanych przez obiekty typu ActiveX. Element dopuszczalny tylko w module klasy. Za pomocą elementu WithEvents można zadeklarować dowolną liczbę pojedynczych zmiennych, ale nie można tworzyć tablic. Słowa kluczowego WithEvents nie można używać łącznie ze słowem kluczowym New.
nazwa_ zmiennej	Element obowiązkowy. Nazwa zmiennej podana zgodnie ze standardowymi konwencjami nazewnictwa zmiennych.
indeksy	Element nieobowiązkowy. Wymiary zmiennej tablicowej. Zadeklarować można do 60 wymiarów. Argument indeksy ma następującą składnię:
	[indeks_dolny To] indeks_górny [, [indeks_dolny To] indeks_górny] . . .
	Jeżeli element indeks_dolny nie określa tego jawnie, zakres indeksów tablicy jest ograniczany od dołu przez instrukcję Option Base. Jeżeli instrukcja Option Base nie występuje, to dolne ograniczenie zakresu indeksów tablicy wynosi zero.
New	Element nieobowiązkowy. Słowo kluczowe umożliwiające niejawne utworzenie obiektu. Jeżeli w deklaracji zmiennej obiektowej użyty zostanie element New, przy pierwszym odwołaniu do takiego obiektu tworzone jest wystąpienie obiektu. W takim przypadku do przypisania odwołania do obiektu nie trzeba używać instrukcji Set. Słowa kluczowego New nie można wykorzystywać do deklarowania zmiennych dowolnego wewnętrznego typu danych i do deklarowania wystąpień obiektów zależnych. Nie można go również wykorzystywać łącznie ze słowem kluczowym WithEvents
typ	Element nieobowiązkowy. Typ zmiennej, mogący przyjąć następujące postaci: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (obecnie nie obsługiwany), Date, String (dla ciągów o zmiennej długości), String * długość (dla ciągów o stałej długości), Obiekt, Variant, typ zdefiniowany przez użytkownika lub typ obiektu. Dla każdej definiowanej zmiennej należy zastosować oddzielną klauzulę As typ.
Użycie

Zmienne deklarowane instrukcją Private są dostępne tylko w module, w którym zostały zadeklarowane.

Za pomocą instrukcji Private można zadeklarować typ zmiennej. Na przykład, przedstawiona poniżej instrukcja powoduje zadeklarowanie zmiennej typu Integer:

Private Liczba_zatrudnionych As Integer

Instrukcji Private można również użyć do zadeklarowania zmiennej typu obiektowego. Przedstawiona poniżej instrukcja powoduje zadeklarowanie zmiennej dla nowego wystąpienia arkusza.

Private X As New Worksheet

Jeżeli przy deklaracji zmiennej obiektowej pominięto słowo kluczowe New, należy do zmiennej odwołującej się do obiektu przed jej użyciem przypisać za pomocą instrukcji Set istniejący obiekt. Zanim zadeklarowanej zmiennej zostanie przypisany obiekt, przyjmuje ona wartość specjalną Nothing, co oznacza, że nie odwołuje się do żadnego określonego wystąpienia obiektu.

Jeżeli nie zostanie określony typ danych lub typ obiektu, a w module nie występuje instrukcja Deftyp, jako domyślny przyjmowany jest typ Variant.

Instrukcję Private z pustymi nawiasami można wykorzystać do deklaracji tablicy dynamicznej. Po zadeklarowaniu takiej tablicy należy wewnątrz procedury użyć instrukcji ReDim do określenia liczby wymiarów i liczby elementów tablicy. Przy próbie ponownej deklaracji wymiaru tablicy o rozmiarze jawnie określonym za pomocą instrukcji Private, Public lub Dim wystąpi błąd.

Podczas inicjowania zmiennych, zmienna numeryczna przyjmuje wartość 0, ciąg o zmiennej długości przyjmuje wartość ciągu o długości zerowej (""), a ciąg o stałej długości jest wypełniany zerami. Zmienne typu Variant są inicjowane wartością Empty. Każdy element zmiennej typu zdefiniowanego przez użytkownika jest inicjowany tak, jakby był oddzielną zmienną.

Uwaga   Jeżeli instrukcja Private występuje w procedurze, zwykle umieszczana jest na początku procedury.


Property Get - instrukcja

Deklaruje nazwę, argumenty i kod składający się na procedurę typu Property, pobierającą wartości włściwości.

Składnia

[Public | Private] [Static] Property Get nazwa [(lista_argumentów)] [As typ]
[instrukcje]
[nazwa = wyrażenie]
[Exit Property]
[instrukcje]
[nazwa = wyrażenie]

End Property

Składnia instrukcji Property Get zawiera następujące elementy:

Element	Opis
Public	Element nieobowiązkowy. Wskazuje, że procedura typu Property Get jest dostępna dla wszystkich innych procedur we wszystkich modułach. Jeżeli element ten zostanie zastosowany w module zawierającym instrukcję Option Private, to procedura jest niedostępna poza projektem.
Private	Element nieobowiązkowy. Wskazuje, że procedura typu Property Get jest dostępna dla innych procedur tylko wewnątrz modułu, w którym została zadeklarowana.
Static	Element nieobowiązkowy. Wskazuje, że wartości zmiennych lokalnych procedury typu Property Get są zachowywane między wywołaniami procedury. Atrybut Static nie ma wpływu na wartości zmiennych zadeklarowanych poza procedurą typu Property Get, nawet jeżeli są one wykorzystywane wewnątrz tej procedury.
nazwa	Element obowiązkowy. Nazwa procedury typu Property Get, podana zgodnie ze standardowymi konwencjami nazewnictwa zmiennych, z jednym wyjątkiem: nazwa procedury może być tak sama jak nazwa procedury typu Property Let lub Property Set znajdującej się w tym samym module.
lista_ argumentów	Element nieobowiązkowy. Lista zmiennych reprezentujących argumenty przekazywane do procedury typu Property Get w trakcie jej wywoływania. Jeżeli występuje wiele zmiennych, to są one rozdzielone przecinkami. Nazwa i typ każdego argumentu procedury typu Property Get muszą być takie same jak odpowiadającego argumentu procedury typu Property Let (jeżeli taka istnieje).
typ	Element nieobowiązkowy. Typ wartości zwracanej przez procedurę typu Property Get mogący przyjąć następujące postaci: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (obecnie nie obsługiwany), Date, String (z wyjątkiem ciągów o stałej długości), Obiekt, Variant lub typ zdefiniowany przez użytkownika. Wprawdzie tablice nie mogą być zwracane przez tę procedurę, to jednak wartości typu Variant zawierające tablicę - mogą. Zwracany przez procedurę typu Property Get typ musi być taki sam jak ostatni (albo jedyny) argument w odpowiadającej procedurze typu Property Let (jeśli taka istnieje), który określa wartość przypisywaną właściwości znajdującej się po prawej stronie wyrażenia.
instrukcje	Element nieobowiązkowy. Dowolny blok instrukcji, które mają być wykonane wewnątrz procedury typu Property Get.
wyrażenie	Element nieobowiązkowy. Wartość właściwości zwracana przez procedurę typu Property Get.
Argument lista_argumentów składa się z następujących elementów o poniższej składni:

[Optional] [ByVal | ByRef] nazwa_zmiennej [( )] [As typ] [= wartość_domyślna]

Element	Opis
Optional	Element nieobowiązkowy. Wskazuje, że argument nie jest wymagany. Jeżeli element ten zostanie użyty, wszystkie następne argumenty zawarte na liście_argumentów muszą być również nieobowiązkowe i zadeklarowane z wykorzystaniem słowa kluczowego Optional.
ByVal	Element nieobowiązkowy. Wskazuje, że argument przekazywany jest przez wartość.
ByRef	Element nieobowiązkowy. Wskazuje, że argument przekazywany jest przez odwołanie. W języku Visual Basic ByRef jest ustawieniem domyślnym.
ParamArray	Element nieobowiązkowy. Używany jest tylko jako ostatni argument na liście_argumentów wskazując, że ostatnim argumentem jest tablica typu Optional zawierająca elementy typu Variant. Słowo kluczowe ParamArray pozwala na podanie dowolnej liczby argumentów. Element ParamArray nie może być używany razem z elementami ByVal, ByRef lub Optional.
nazwa_ zmiennej	Element obowiązkowy. Nazwa zmiennej reprezentującej przekazywany do procedury argument. Musi być zgodna ze standardowymi konwencjami nazewnictwa zmiennych.
typ	Element nieobowiązkowy. Typ argumentu przekazywanego do procedury. Dopuszczalne typy to Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (obecnie nie obsługiwany), Date, String (tylko o zmiennej długości), Object, Variant. Jeżeli parametr nie jest typu Optional, dopuszczalne są również typy zdefiniowane przez użytkownika i typy obiektu.
wartość_ domyślna	Element nieobowiązkowy. Dowolna stała lub wyrażenie stałe. Element dozwolony tylko dla parametrów typu Optional. Jeżeli parametr jest typu Object, jawna wartość domyślna może być równe tylko Nothing.
Użycie

Jeżeli nie zostało to jawnie określone za pomocą słowa kluczowego Public lub Private, procedury typu Property są domyślnie publiczne. Jeżeli pominięto słowo kluczowe Static, wartości przechowywane w zmiennych lokalnych nie są zachowywane między wywołaniami procedury.

Cały wykonywalny kod musi znajdować się wewnątrz procedur. Nie można zdefiniować procedury typu Property Get wewnątrz innej procedury typu Property, Sub lub Function.

Instrukcja Exit Property powoduje natychmiastowe opuszczenie procedury typu Property Get. Wykonywanie programu wznawiane jest od instrukcji następującej bezpośrednio po wywołaniu tej procedury. W procedurze typu Property Get może wystąpić dowolna liczba instrukcji Exit Property, które mogą znajdować się w dowolnych miejscach tej procedury.

Podobnie jak procedura typu Sub lub Property Let, procedura typu Property Get jest oddzielną procedurą, mogącą pobierać argumenty, wykonywać szereg instrukcji i zmieniać wartości swoich argumentów. Jednak w odróżnieniu od procedury typu Sub lub Property Let, jeżeli przez procedurę typu Property Get ma być zwracana wartość właściwości, to wywołanie takiej procedury można umieścić po prawej stronie wyrażenia, w taki sam sposób, w jaki wykorzystuje się procedury typu Function lub nazwy właściwości.


Property Let - instrukcja

Deklaruje nazwę, argumenty i kod składający się na procedurę typu Property Let przypisującą wartość do właściwości.

Składnia

[Public | Private] [Static] Property Let nazwa ([lista_argumentów,] wartość)
[instrukcje]
[Exit Property]
[instrukcje]

End Property

Składnia instrukcji Property Let zawiera następujące elementy:

Element	Opis
Public	Element nieobowiązkowy. Wskazuje, że procedura typu Property Let jest dostępna dla wszystkich innych procedur we wszystkich modułach. Jeżeli element ten zostanie zastosowany w module zawierającym instrukcję Option Private, to procedura jest niedostępna poza projektem.
Private	Element nieobowiązkowy. Wskazuje, że procedura typu Property Let jest dostępna dla innych procedur tylko wewnątrz modułu, w którym została zadeklarowana.
Static	Element nieobowiązkowy. Wskazuje, że wartości zmiennych lokalnych procedury typu Property Let są zachowywane między wywołaniami procedury. Atrybut Static nie ma wpływu na wartości zmiennych zadeklarowanych poza procedurą typu Property Let, nawet jeżeli są one wykorzystywane wewnątrz tej procedury.
nazwa	Element obowiązkowy. Nazwa procedury typu Property Let, określona zgodnie ze standardowymi konwencjami nazewnictwa zmiennych, z jednym wyjątkiem: nazwa procedury może być tak sama jak nazwa procedury typu Property Get lub Property Set znajdującej się w tym samym module.
lista_ argumentów	Element obowiązkowy. Lista zmiennych reprezentujących argumenty przekazywane do procedury typu Property Let w trakcie jej wywoływania. Jeżeli występuje wiele zmiennych, to są one rozdzielone przecinkami. Nazwa i typ każdego argumentu procedury typu Property Let (z wyjątkiem ostatniego) muszą być takie same, jak odpowiadającego argumentu w procedurze typu Property Get.
wartość	Element obowiązkowy. Zmienna zawierająca wartość, która ma zostać przypisana do właściwości. W trakcie wywoływania procedury ten argument pojawia się po prawej stronie wyrażenia wywołującego. Typ danych elementu wartość musi być taki sam, jak typ zwracany przez odpowiednią procedurę Property Get.
instrukcje	Element nieobowiązkowy. Dowolny blok instrukcji, które mają być wykonane wewnątrz procedury typu Property Let.
Argument lista_argumentów składa się z następujących elementów o poniższej składni:

[Optional] [ByVal | ByRef] [ParamArray] nazwa_zmiennej [( )] [As typ] [= wartość_domyślna]

Element	Opis
Optional	Element nieobowiązkowy. Wskazuje, że argument nie jest wymagany. Jeżeli element ten zostanie użyty, wszystkie następne argumenty zawarte na liście_argumentów muszą być również nieobowiązkowe i zadeklarowane z wykorzystaniem słowa kluczowego Optional. Należy pamiętać, że prawa strona wyrażenia Property Let nie może być typu Optional.
ByVal	Element nieobowiązkowy. Wskazuje, że argument przekazywany jest przez wartość.
ByRef	Element nieobowiązkowy. Wskazuje, że argument przekazywany jest przez odwołanie. W języku Visual Basic ByRef jest ustawieniem domyślnym.
ParamArray	Element nieobowiązkowy. Występuje tylko jako ostatni argument na liście_argumentów wskazując, że ostatnim argumentem jest tablica typu Optional zawierająca elementy typu Variant. Słowo kluczowe ParamArray pozwala na podanie dowolnej liczby argumentów. Element ParamArray nie może być używany razem z kwalifikatorami ByVal, ByRef lub Optional.
nazwa_ zmiennej	Element obowiązkowy. Nazwa zmiennej reprezentującej przekazywany do procedury argument. Musi być zgodna ze standardowymi konwencjami nazewnictwa zmiennych.
typ	Element nieobowiązkowy. Typ argumentu przekazywanego do procedury, mogący przyjąć następujące postaci: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (obecnie nie obsługiwany), Date, String (tylko o zmiennej długości), Obiekt, Variant. Jeżeli parametr nie jest typu Optional, dopuszczalne są również typy zdefiniowane przez użytkownika i typy obiektu.
wartość_ domyślna	Element nieobowiązkowy. Dowolna stała lub wyrażenie stałe. Element dozwolony tylko dla parametrów typu Optional. Jeżeli parametr jest typu Object, jawna wartość domyślna może być równa tylko Nothing.
Uwaga   Każda instrukcja Property Let musi definiować co najmniej jeden argument dla definiowanej procedury. Argument ten (lub ostatni argument, jeżeli jest ich więcej) zawiera faktyczną wartość, która ma być przypisana do właściwości podczas wywołania zdefiniowanej przez instrukcję Property Let procedury. W powyższej definicji składni ten argument jest oznaczony jako wartość.

Użycie

Jeżeli nie zostało to jawnie określone za pomocą słowa kluczowego Public lub Private, procedury typu Property są domyślnie publiczne. Jeżeli pominięto słowo kluczowe Static, wartości przechowywane w zmiennych lokalnych nie są zachowywane między wywołaniami procedury.

Cały kod musi znajdować się wewnątrz procedur. Nie można zdefiniować procedury typu Property Let wewnątrz innej procedury typu Property, Sub lub Function.

Instrukcja Exit Property powoduje natychmiastowe opuszczenie procedury typu Property Let. Wykonywanie programu wznawiane jest od instrukcji następującej bezpośrednio po wywołaniu tej procedury. W procedurze typu Property Let może wystąpić dowolna liczba instrukcji Exit Property, które mogą znajdować się w dowolnych miejscach tej procedury.

Podobnie jak procedura typu Function lub Property Get, procedura typu Property Let jest oddzielną procedurą, mogącą pobierać argumenty, wykonywać szereg instrukcji i zmieniać wartości swoich argumentów. Jednak w odróżnieniu od procedury typu Function lub Property Get, które zwracają wartości, procedury typu Property Let można używać tylko po lewej stronie wyrażenia przypisującego wartości właściwości lub instrukcji Let.


Property Set - instrukcja

Deklaruje nazwę, argumenty i kod składający się na procedurę typu Property, ustawiającą odwołanie do obiektu.

Składnia

[Public | Private] [Static] Property Set nazwa ([lista_argumentów,] odwołanie)
[instrukcje]
[Exit Property]
[instrukcje]

End Property

Składnia instrukcji Property Set zawiera następujące elementy:

Element	Opis
Public	Element nieobowiązkowy. Wskazuje, że procedura typu Property Set jest dostępna dla wszystkich innych procedur we wszystkich modułach. Jeżeli element ten zostanie zastosowany w module zawierającym instrukcję Option Private, to procedura jest niedostępna poza projektem.
Private	Element nieobowiązkowy. Wskazuje, że procedura typu Property Set jest dostępna dla innych procedur tylko wewnątrz modułu, w którym została zadeklarowana.
Static	Element nieobowiązkowy. Wskazuje, że wartości zmiennych lokalnych procedury typu Property Set są zachowywane między wywołaniami procedury. Atrybut Static nie ma wpływu na wartości zmiennych zadeklarowanych poza procedurą typu Property Set, nawet jeżeli są one wykorzystywane wewnątrz tej procedury.
nazwa	Element obowiązkowy. Nazwa procedury typu Property Set, określona zgodnie ze standardowymi konwencjami nazewnictwa zmiennych, z jednym wyjątkiem: nazwa procedury może być tak sama jak nazwa procedury typu Property Get lub Property Let znajdującej się w tym samym module.
lista_ argumentów	Element obowiązkowy. Lista zmiennych reprezentujących argumenty przekazywane do procedury typu Property Set w trakcie jej wywoływania. Jeżeli występuje wiele argumentów, to są one rozdzielone przecinkami.
odwołanie	Element obowiązkowy. Zmienna zawierająca odwołanie do obiektu użyta po prawej stronie instrukcji przypisania odwołania do obiektu.
instrukcje	Element nieobowiązkowy. Dowolny blok instrukcji, które mają być wykonane wewnątrz procedury typu Property Set.
Argument lista_argumentów składa się z następujących elementów o poniższej składni:

[Optional] [ByVal | ByRef] [ParamArray] nazwa_zmiennej [( )] [As typ] [= wartość_domyślna]

Element	Opis
Optional	Element nieobowiązkowy. Wskazuje, że argument nie jest wymagany. Jeżeli element ten zostanie użyty, wszystkie następne argumenty zawarte na liście_argumentów muszą być również nieobowiązkowe i zadeklarowane z wykorzystaniem słowa kluczowego Optional. Należy pamiętać, że prawa strona wyrażenia Property Set nie może być typu Optional.
ByVal	Element nieobowiązkowy. Wskazuje, że argument przekazywany jest przez wartość.
ByRef	Element nieobowiązkowy. Wskazuje, że argument przekazywany jest przez odwołanie. W języku Visual Basic ByRef jest ustawieniem domyślnym.
ParamArray	Element nieobowiązkowy. Występuje tylko jako ostatni argument na liście_argumentów wskazując, że ostatnim argumentem jest tablica typu Optional zawierająca elementy typu Variant. Słowo kluczowe ParamArray pozwala na podanie dowolnej liczby argumentów. Element ParamArray nie może być używany razem z kwalifikatorami ByVal, ByRef lub Optional.
nazwa_ zmiennej	Element obowiązkowy. Nazwa zmiennej reprezentującej przekazywany do procedury argument. Musi być zgodna ze standardowymi konwencjami nazewnictwa zmiennych.
typ	Element nieobowiązkowy. Typ argumentu przekazywanego do procedury, mogący przyjąć następujące postaci: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (obecnie nie obsługiwany), Date, String (tylko o zmiennej długości), Obiekt, Variant. Jeżeli parametr nie jest typu Optional, dopuszczalne są również typy zdefiniowane przez użytkownika i typy obiektu.
wartość_ domyślna	Element nieobowiązkowy. Dowolna stała lub wyrażenie stałe. Element dozwolony tylko dla parametrów typu Optional. Jeżeli parametr jest typu Object, jawna wartość domyślna może być równa tylko Nothing.
Uwaga   Każda instrukcja Property Set musi definiować co najmniej jeden argument dla definiowanej procedury. Argument ten (lub ostatni argument, jeżeli jest ich więcej) zawiera faktyczne odwołanie do obiektu dla właściwości używane podczas wywołania zdefiniowanej przez instrukcję Property Set procedury. W powyższej definicji składni ten argument jest oznaczony jako odwołanie. Argument ten nie może być typu Optional.

Użycie

Jeżeli nie zostało to jawnie określone za pomocą słowa kluczowego Public lub Private, procedury typu Property są domyślnie publiczne. Jeżeli pominięto słowo kluczowe Static, wartości przechowywane w zmiennych lokalnych nie są zachowywane między wywołaniami procedury.

Cały kod musi znajdować się wewnątrz procedur. Nie można zdefiniować procedury typu Property Set wewnątrz innej procedury typu Property, Sub lub Function.

Instrukcja Exit Property powoduje natychmiastowe opuszczenie procedury typu Property Set. Wykonywanie programu wznawiane jest od instrukcji następującej bezpośrednio po wywołaniu tej procedury. W procedurze typu Property Set może wystąpić dowolna liczba instrukcji Exit Property, które mogą znajdować się w dowolnych miejscach tej procedury.

Podobnie jak procedura typu Function lub Property Get, procedura typu Property Set jest oddzielną procedurą, mogącą pobierać argumenty, wykonywać szereg instrukcji i zmieniać wartości swoich argumentów. Jednak w odróżnieniu od procedury typu Function lub Property Get, które zwracają wartości, procedury typu Property Set można używać tylko po lewej stronie przypisania odwołania do obiektu (instrukcja Set).


Public - instrukcja

Wykorzystywana na poziomie modułu do deklaracji zmiennych publicznych i do przydziału pamięci.

Składnia

Public [WithEvents] nazwa_zmiennej [([indeksy])] [As [New] typ] [,[WithEvents] nazwa_zmiennej [([indeksy])] [As [New] typ]] . . .

Składnia instrukcji Public zawiera następujące elementy:

Element	Opis
WithEvents	Element nieobowiązkowy. Słowo kluczowe wskazujące, że nazwa_zmiennej jest zmienną obiektową wykorzystywaną do obsługi zdarzeń wyzwalanych przez obiekty typu ActiveX. Element dopuszczalny tylko w module klasy. Za pomocą elementu WithEvents można zadeklarować dowolną liczbę pojedynczych zmiennych, ale nie można tworzyć tablic. Słowa kluczowego WithEvents nie można używać łącznie ze słowem kluczowym New.
nazwa_ zmiennej	Element obowiązkowy. Nazwa zmiennej podana zgodnie ze standardowymi konwencjami nazewnictwa zmiennych.
indeksy	Element nieobowiązkowy. Wymiary zmiennej tablicowej. Zadeklarować można do 60 wymiarów. Argument indeksy ma następującą składnię:
	[indeks_dolny To] indeks_górny [, [indeks_dolny To] indeks_górny] . . .
	Jeżeli element indeks_dolny nie określa tego jawnie, zakres indeksów tablicy jest ograniczany od dołu przez instrukcję Option Base. Jeżeli instrukcja Option Base nie występuje, to dolne ograniczenie zakresu indeksów tablicy wynosi zero.
New	Element nieobowiązkowy. Słowo kluczowe umożliwiające niejawne utworzenie obiektu. Jeżeli w deklaracji zmiennej obiektowej użyty zostanie element New, przy pierwszym odwołaniu do takiego obiektu tworzone jest wystąpienie obiektu. W takim przypadku do przypisania odwołania do obiektu nie trzeba wykorzystywać instrukcji Set. Słowa kluczowego New nie można używać do deklarowania zmiennych dowolnego wewnętrznego typu danych, do deklarowania wystąpień obiektów zależnych, a także nie może być stosowane łącznie ze słowem kluczowym WithEvents.
typ	Element nieobowiązkowy. Typ zmiennej, mogący przyjąć następujące postaci: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (obecnie nie obsługiwany), Date, String (dla ciągów o zmiennej długości), String * długość (dla ciągów o stałej długości), Obiekt, Variant, typ zdefiniowany przez użytkownika lub typ obiektu. Dla każdej definiowanej zmiennej należy zastosować oddzielną klauzulę As typ.
Użycie

Zmienne zadeklarowane za pomocą instrukcji Public są dostępne dla wszystkich procedur we wszystkich modułach wszystkich projektów, pod warunkiem, że nie występuje instrukcja Option Private Module. W takim przypadku zmienne są publiczne tylko wewnątrz projektu, w którym występują.

Ostrzeżenie   W module klasy, instrukcji Public nie można używać do deklaracji zmiennych reprezentujących ciągi o stałej długości.

Za pomocą instrukcji Public można zadeklarować typ zmiennej. Na przykład, przedstawiona poniżej instrukcja powoduje zadeklarowanie zmiennej typu Integer:

Public Liczba_zatrudnionych As Integer

Instrukcji Public można również użyć do zadeklarowania zmiennej typu obiektowego. Przedstawiona poniżej instrukcja powoduje zadeklarowanie zmiennej dla nowego wystąpienia arkusza.

Public X As New Worksheet

Jeżeli przy deklaracji zmiennej obiektowej pominięto słowo kluczowe New, należy do zmiennej odwołującej się do obiektu przed jej użyciem przypisać za pomocą instrukcji Set istniejący obiekt. Zanim zadeklarowanej zmiennej zostanie przypisany obiekt, przyjmuje ona wartość specjalną Nothing, co oznacza, że zmienna nie odwołuje się do żadnego określonego wystąpienia obiektu.

Instrukcję Public z pustymi nawiasami można wykorzystać do deklaracji tablicy dynamicznej. Po zadeklarowaniu takiej tablicy do określenia liczby wymiarów i liczby elementów tablicy należy wewnątrz procedury użyć instrukcji ReDim. Przy próbie ponownej deklaracji wymiaru tablicy o rozmiarze jawnie określonym za pomocą instrukcji Private, Public lub Dim wystąpi błąd.

Jeżeli nie zostanie określony typ danych lub typ obiektu, a w module nie występuje instrukcja Deftyp, jako domyślny przyjmowany jest typ Variant.

Podczas inicjowania zmiennych, zmienna numeryczna przyjmuje wartość 0, ciąg o zmiennej długości przyjmuje wartość ciągu o długości zerowej (""), a ciąg o stałej długości jest wypełniany zerami. Zmienne typu Variant są inicjowane wartością Empty. Każdy element zmiennej typu zdefiniowanego przez użytkownika jest inicjowany tak, jakby był oddzielną zmienną.


ReDim - instrukcja

Wykorzystywana na poziomie procedury do ponownego przydziału pamięci dla zmiennych reprezentujących tablice dynamiczne.

Składnia

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

Składnia instrukcji ReDim zawiera następujące elementy:

Element	Opis
Preserve	Element nieobowiązkowy. Słowo kluczowe powodujące zachowanie danych istniejącej tablicy w przypadku zmiany jej ostatniego wymiaru.
nazwa_ zmiennej	Element obowiązkowy. Nazwa zmiennej podana zgodnie ze standardowymi konwencjami nazewnictwa zmiennych.
indeksy	Element nieobowiązkowy. Wymiary zmiennej tablicowej. Zadeklarować można do 60 wymiarów. Argument indeksy ma następującą składnię:
	[indeks_dolny To] indeks_górny [, [indeks_dolny To] indeks_górny] . . .
	Jeżeli element indeks_dolny nie określa tego jawnie, zakres indeksów tablicy jest ograniczany od dołu przez instrukcję Option Base. Jeżeli instrukcja Option Base nie występuje, to dolne ograniczenie zakresu indeksów tablicy wynosi zero.
type	Element nieobowiązkowy. Typ zmiennej, mogący przyjąć następujące postaci: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (obecnie nie obsługiwany), Date, String (dla ciągów o zmiennej długości), String * długość (dla ciągów o stałej długości), Obiekt, Variant, typ zdefiniowany przez użytkownika lub typ obiektu. Dla każdej definiowanej zmiennej należy zastosować oddzielną klauzulę As typ. W przypadku zmiennej typu Variant zawierającej tablicę, typ nie powoduje zmiany typu Variant na inny ale określa typ każdego elementu tablicy.
Użycie

Instrukcja ReDim służy do określenia lub zmiany rozmiaru tablicy dynamicznej, formalnie zadeklarowanej wcześniej za pomocą instrukcji Private, Public lub Dim z pustymi nawiasami (bez indeksów wymiarów).

Instrukcję ReDim można wykorzystywać wielokrotnie do zmiany liczby elementów i wymiarów tablicy. Za pomocą instrukcji ReDim nie można jednak zadeklarować tablicy jednego typu i potem zmienić jej typ na inny, chyba że tablica zawarta jest w zmiennej typu Variant. W takim przypadku typ elementów tablicy może być zmieniony za pomocą klauzuli As typ. Nie dotyczy to sytuacji, gdy użyte zostało słowo kluczowe Preserve; wtedy żadne zmiany typu nie są dozwolone.

Jeżeli użyte zostanie słowo kluczowe Preserve, zmianie może ulegać tylko ostatni wymiar tablicy, natomiast liczba wymiarów musi pozostać stała. Na przykład, jeśli tablica jest jednowymiarowa, wielkość tego wymiaru można zmieniać, ponieważ jest to jedyny i ostatni wymiar. Jednak jeżeli tablica jest dwu- lub więcej wymiarowa, a zawartość tablicy ma pozostać nie zmieniona, zmieniać można tylko ostatni wymiar. Poniższy przykład ilustruje sposób, w jaki można zwiększyć rozmiar ostatniego wymiaru tablicy dynamicznej bez niszczenia jej zawartości.

ReDim X(10, 10, 10)

. . .

ReDim Preserve X(10, 10, 15)

Podobnie, jeśli występuje słowo kluczowe Preserve, można zmieniać rozmiar tablicy tylko poprzez zmianę górnego ograniczenia. Zmiana dolnego ograniczenia spowoduje wystąpienie błędu.

Jeżeli rozmiar tablicy zostanie zmniejszony, dane znajdujące się w usuwanych elementach zostaną utracone. Jeżeli tablica przekazywana jest do procedury przez odwołanie, to wewnątrz tej procedury nie można zmieniać jej wymiarów.

Podczas inicjowania zmiennych zmienna numeryczna przyjmuje wartość 0, ciąg o zmiennej długości przyjmuje wartość ciągu o długości zerowej (""), a ciąg o stałej długości jest wypełniany zerami. Zmienne typu Variant są inicjowane wartością Empty. Każdy element zmiennej typu zdefiniowanego przez użytkownika jest inicjowany tak, jakby był oddzielną zmienną. Zmiennej odwołującej się do obiektu należy przed użyciem przypisać istniejący obiekt za pomocą instrukcji Set. Przed przypisaniem obiektu do zadeklarowanej zmiennej obiektowej, przyjmuje ona wartość specjalną Nothing, co oznacza, że zmienna nie odwołuje się do żadnego określonego wystąpienia obiektu.

Ostrzeżenie   Jeżeli deklarowana zmienna nie istnieje na poziomie modułu lub poziomie procedury, to instrukcja ReDim pełni rolę instrukcji deklarującej. Jeśli później, nawet w węższym zakresie, zadeklarowana zostanie zmienna o tej samej nazwie, instrukcja ReDim będzie odnosić się do tej późniejszej zmiennej, i nie musi to spowodować błędu kompilacji, nawet gdy została użyta instrukcja Option Explicit. Aby uniknąć takich nieprawidłowości, instrukcji ReDim nie powinno się używać jako instrukcji deklarującej, a jedynie jako instrukcji zmieniającej rozmiar tablicy.

Uwaga   Aby zmienić rozmiar tablicy zawartej w zmiennej typu Variant, należy przed zmianą rozmiaru tablicy jawnie zadeklarować tę zmienną typu Variant.


Rem - instrukcja

Wykorzystywana do umieszczania w programie objaśniających komentarzy.

Składnia

Rem komentarz

Stosować można również następującą składnię:

' komentarz

Nieobowiązkowy argument komentarz zawiera treść dowolnego komentarza, który ma zostać umieszczony w tekście źródłowym programu. Między słowem kluczowym Rem a argumentem komentarz wymagana jest spacja.

Użycie

Jeżeli stosowane są numery wierszy lub etykiety wierszy, to instrukcje GoTo lub GoSub mogą przekazywać sterowanie do wiersza zawierającego instrukcję Rem. Wykonywanie programu kontynuowane jest od pierwszej instrukcji wykonywalnej następującej po instrukcji Rem. Jeżeli słowo kluczowe Rem następuje po innych instrukcjach w wierszu, musi być od nich oddzielone dwukropkiem (:).

Zamiast słowa kluczowego Rem, można użyć apostrofu ('). Jeżeli zastosowano apostrof, dwukropek oddzielający komentarz od innych instrukcji nie jest już potrzebny.


Set - instrukcja

Przypisuje zmiennej lub właściwości odwołanie do obiektu.

Składnia

Set zmienna_obiektowa = {[New] wyrażenie_obiektowe | Nothing}

Składnia instrukcji Set zawiera następujące elementy:

Element	Opis
zmienna_ obiektowa	Element obowiązkowy. Nazwa zmiennej określona zgodnie ze standardowymi konwencjami nazewnictwa zmiennych.
New	Element nieobowiązkowy. Element New wykorzystywany jest do niejawnego tworzenia obiektu. Jeżeli w instrukcji Set użyte jest słowo kluczowe New, powoduje to utworzenie nowego wystąpienia klasy. Jeżeli zmienna_obiektowa zawierała odwołanie do obiektu, to podczas tworzenia nowego odwołania poprzednie odwołanie jest zwalniane. Słowa kluczowego New nie można stosować do deklarowania zmiennych dowolnego wewnętrznego typu danych i do deklarowania wystąpień obiektów zależnych.
wyrażenie_ obiektowe	Element obowiązkowy. Wyrażenie składające się z nazwy obiektu, innej zadeklarowanej zmiennej tego samego typu albo funkcji lub metody zwracającej obiekt tego samego typu.
Nothing	Element nieobowiązkowy. Przerywa powiązanie między zmienną_obiektową a konkretnym obiektem Jeżeli żadna inna zmienna nie odwołuje się do tego obiektu, to przypisanie tej zmiennej wartości Nothing powoduje zwolnienie całej pamięci i wszystkich zasobów systemowych przydzielonych obiektowi, którego dotyczyło poprzednie odwołanie.
Użycie

Typ zmiennej_obiektowej musi być spójny z typem przypisywanego do niej obiektu.

Instrukcje Dim, Private, Public, ReDim i Static tylko deklarują zmienną, która odwołuje się do obiektu. Dopóki nie zastosowana zostanie instrukcja Set przypisująca obiekt do zmiennej, ta zmienna nie odwołuje się do żadnego obiektu.

Poniższy przykład ilustruje sposób, w jaki instrukcja Dim jest używana do deklaracji tablicy typu Form1. Zauważmy, że na razie nie istnieje żadne wystąpienie typu Form1. Instrukcja Set powoduje przypisanie do zmiennej mojeFormularze odwołań do nowych wystąpień typu Form1. Przedstawiony kod programu mógłby być wykorzystany do tworzenia formularzy potomnych w aplikacji MDI.

Dim mojeFormularze(1 to 4) As Form1

Set mojeFormularze(1) = New Form1

Set mojeFormularze(2) = New Form1

Set mojeFormularze(3) = New Form1

Set mojeFormularze(4) = New Form1

W ogólności, użycie instrukcji Set do przypisywania zmiennej odwołania do obiektu nie powoduje utworzenia specjalnej kopii obiektu dla tej zmiennej. Zamiast tego tworzone jest odwołanie do obiektu. Do tego samego obiektu może się odwoływać wiele zmiennych obiektowych. Ponieważ takie zmienne są odwołaniami do obiektów, a nie kopiami obiektów, dowolna zmiana w obiekcie jest odzwierciedlana we wszystkich zmiennych, które się do niego odwołują. Jednak w przypadku użycia w instrukcji Set słowa kluczowego New, w rzeczywistości tworzone jest nowe wystąpienie obiektu.


Static - instrukcja

Wykorzystywana na poziomie procedury do deklaracji zmiennych i przydziału pamięci. Zmienne zadeklarowane za pomocą instrukcji Static zachowują swoje wartości podczas wykonywania programu.

Składnia

Static nazwa_zmiennej[([indeksy])] [As [New] typ] [, nazwa_zmiennej[([indeksy])] [As [New] typ]] . . .

Składnia instrukcji Static zawiera następujące elementy:

Element	Opis
nazwa_ zmiennej	Element obowiązkowy. Nazwa zmiennej określona zgodnie ze standardowymi konwencjami nazewnictwa zmiennych.
indeksy	Element nieobowiązkowy. Wymiary zmiennej tablicy. Zadeklarować można do 60 wymiarów. Argument indeksy ma następującą składnię:
	[indeks_dolny To] indeks_górny [, [indeks_dolny To] indeks_górny] . . .
	Jeżeli element indeks_dolny nie określa tego jawnie, zakres indeksów tablicy jest ograniczany od dołu przez instrukcję Option Base. Jeżeli instrukcja Option Base nie występuje, to dolne ograniczenie zakresu indeksów tablicy wynosi zero.
New	Element nieobowiązkowy. Słowo kluczowe umożliwiające niejawne utworzenie obiektu. Jeżeli w deklaracji zmiennej obiektowej użyte zostanie słowo kluczowe New, przy pierwszym odwołaniu do takiego obiektu tworzone jest jego wystąpienie. W takim przypadku do przypisania odwołania do obiektu nie trzeba wykorzystywać instrukcji Set. Słowa kluczowego New nie można wykorzystywać do deklarowania zmiennych dowolnego wewnętrznego typu danych i do deklarowania wystąpień obiektów zależnych.
typ	Element nieobowiązkowy. Typ zmiennej, mogący przyjąć następujące postaci: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (obecnie nie obsługiwany), Date, String (dla ciągów o zmiennej długości), String * długość (dla ciągów o stałej długości), Obiekt, Variant, typ zdefiniowany przez użytkownika lub typ obiektu. Dla każdej definiowanej zmiennej należy użyć oddzielnej klauzuli As typ.
Użycie

W trakcie wykonywania kodu modułu, zmienne zadeklarowane z użyciem instrukcji Static zachowują swoje wartości do momentu zresetowania modułu lub jego ponownego uruchomienia. Instrukcji Static należy również użyć w procedurze innej niż statyczna, aby jawnie zadeklarować zmienne widoczne tylko wewnątrz procedury, ale których czas życia jest taki sam jak modułu, w którym zadeklarowana jest ta procedura.

Aby zadeklarować typ zmiennej, która zachowuje swoją wartość między wywołaniami procedury, należy wewnątrz procedury użyć instrukcji Static. Na przykład, poniższa instrukcja deklaruje tablicę o stałym rozmiarze zawierającą liczby całkowite:

Static Liczba_zatrudnionych (200) As Integer

Poniższa instrukcja deklaruje zmienną dla nowego wystąpienia arkusza:

Static X As New Worksheet

Jeżeli przy deklaracji zmiennej obiektowej pominięte zostało słowo kluczowe New, zmiennej odwołującej się do obiektu należy przed jej użyciem przypisać istniejący obiekt za pomocą instrukcji Set. Przed przypisaniem obiektu do zadeklarowanej zmiennej, przyjmuje ona wartość specjalną Nothing, co oznacza, że zmienna nie odwołuje się do żadnego konkretnego wystąpienia obiektu. Jeżeli słowo kluczowe New zostanie użyte w deklaracji, to przy pierwszym odwołaniu do obiektu tworzone jest jego wystąpienie.

Jeżeli nie zostanie określony typ danych lub typ obiektu, a w module nie występuje również instrukcja Deftyp, jako domyślny przyjmowany jest typ Variant.

Uwaga   Instrukcja Static i słowo kluczowe Static są do siebie podobne, ale używane są w innym celu. Jeżeli procedura zostanie zadeklarowana z użyciem słowa kluczowego Static (na przykład: Static Sub Oblicz_pensje ()), pamięć dla wszystkich zmiennych lokalnych wewnątrz procedury jest przydzielana tylko raz, a wartości zmiennych zachowywane są przez cały czas wykonywania programu. W przypadku procedur, które nie są statyczne, pamięć dla zmiennych przydzielana jest przy każdym wywołaniu i zwalniana przy wyjściu z procedury. Instrukcja Static używana jest do deklarowania wewnątrz procedur, które nie są statyczne, konkretnych zmiennych, których wartości mają być zachowywane przez cały czas wykonywania programu.

Podczas inicjowania zmiennych zmienna numeryczna przyjmuje wartość 0, ciąg o zmiennej długości przyjmuje wartość ciągu o długości zerowej (""), a ciąg o stałej długości jest wypełniany zerami. Zmienne typu Variant są inicjowane wartością Empty. Każdy element zmiennej typu zdefiniowanego przez użytkownika jest inicjowany tak, jakby był oddzielną zmienną.

Uwaga   Jeżeli wewnątrz procedury występują instrukcje Static, należy je umieścić na początku procedury, razem z innymi instrukcjami deklaracji, takimi jak Dim.


Sub - instrukcja

Deklaruje nazwę, argumenty i kod składający się na procedurę typu Sub.

Składnia

[Private | Public] [Static] Sub nazwa [(lista_argumentów)]
[instrukcje]
[Exit Sub]
[instrukcje]

End Sub

Składnia instrukcji Sub zawiera następujące elementy:

Element	Opis
Public	Element nieobowiązkowy. Wskazuje, że procedura typu Sub jest dostępna dla wszystkich innych procedur we wszystkich modułach. Jeżeli element ten zostanie zastosowany w module zawierającym instrukcję Option Private, to procedura jest niedostępna poza projektem.
Private	Element nieobowiązkowy. Wskazuje, że procedura typu Sub jest dostępna dla innych procedur tylko wewnątrz modułu, w którym została zadeklarowana.
Static	Element nieobowiązkowy. Wskazuje, że wartości zmiennych lokalnych procedury typu Sub są zachowywane między wywołaniami procedury. Atrybut Static nie ma wpływu na wartości zmiennych zadeklarowanych poza procedurą typu Sub, nawet jeżeli są one wykorzystywane wewnątrz tej procedury.
nazwa	Element obowiązkowy. Nazwa procedury typu Sub, zgodna ze standardowymi konwencjami nazewnictwa zmiennych.
lista_ argumentów	Element nieobowiązkowy. Lista zmiennych reprezentujących argumenty przekazywane do procedury typu Sub w trakcie jej wywoływania. Jeżeli występuje wiele zmiennych, to są one rozdzielone przecinkami.
instrukcje	Element nieobowiązkowy. Dowolny blok instrukcji, które mają być wykonane wewnątrz procedury typu Sub.
Argument lista_argumentów składa się z następujących elementów o poniższej składni:

[Optional] [ByVal | ByRef] [ParamArray] nazwa_zmiennej[( )] [As typ] [= wartość_domyślna]

Element	Opis
Optional	Element nieobowiązkowy. Słowo kluczowe wskazujące, że argument nie jest wymagany. Jeżeli element ten zostanie użyty, wszystkie następne argumenty zawarte na liście_argumentów muszą być również nieobowiązkowe i zadeklarowane z wykorzystaniem słowa kluczowego Optional. Element Optional nie może zostać użyty w stosunku do żadnego argumentu, jeżeli wstępuje element ParamArray.
ByVal	Element nieobowiązkowy. Wskazuje, że argument przekazywany jest przez wartość.
ByRef	Element nieobowiązkowy. Wskazuje, że argument przekazywany jest przez odwołanie. W języku Visual Basic ByRef jest ustawieniem domyślnym.
ParamArray	Element nieobowiązkowy. Wykorzystywany jest tylko jako ostatni argument na liście_argumentów wskazując, że ostatnim argumentem jest tablica typu Optional zawierająca elementy typu Variant. Słowo kluczowe ParamArray pozwala na podanie dowolnej liczby argumentów. Element ParamArray nie może być używany razem z elementami ByVal, ByRef lub Optional.
nazwa_ zmiennej	Element obowiązkowy. Nazwa zmiennej reprezentującej przekazywany do procedury argument. Musi być zgodna ze standardowymi konwencjami nazewnictwa zmiennych.
typ	Element nieobowiązkowy. Typ argumentu przekazywanego do procedury, mogący przyjąć następujące postaci: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (obecnie nie obsługiwany), Date, String (dla ciągów o zmiennej długości), String * długość (dla ciągów o stałej długości), Obiekt, Variant. Jeżeli parametr nie jest typu Optional, dozwolone są także typy zdefiniowane przez użytkownika i typy obiektu.
wartość_ domyślna	Element obowiązkowy. Dowolna stała lub wyrażenie stałe. Element dozwolony tylko dla parametrów typu Optional. Jeżeli typem jest Object, jawnie określona wartość domyślna może być równa tylko Nothing.
Użycie

Jeżeli nie zostało to jawnie określone za pomocą słowa kluczowego Public lub Private, procedury typu Sub są domyślnie publiczne. Jeżeli pominięto słowo kluczowe Static, wartości przechowywane w zmiennych lokalnych nie są zachowywane między wywołaniami procedury.

Ostrzeżenie   Procedury typu Sub mogą być rekursywne, tzn. aby wykonać określone zadanie, mogą wywoływać same siebie. Należy jednak pamiętać, że rekursja może doprowadzić do przepełnienia stosu. W przypadku korzystania w procedurach typu Sub z mechanizmu rekursji, w deklaracji zwykle nie stosuje się słowa kluczowego Static.

Cały kod musi znajdować się wewnątrz procedur. Nie można zdefiniować procedury typu Sub wewnątrz innej procedury typu Sub, Function lub Property.

Instrukcja Exit Sub powoduje natychmiastowe opuszczenie procedury typu Sub. Wykonywanie programu wznawiane jest od instrukcji następującej bezpośrednio po wywołaniu procedury. W procedurze typu Sub może wystąpić dowolna liczba instrukcji Exit Sub, które mogą znajdować się w dowolnych miejscach tej procedury.

Podobnie jak procedura typu Function, procedura typu Sub jest oddzielną procedurą, mogącą pobierać argumenty, wykonywać szereg instrukcji i zmieniać wartości swoich argumentów. Jednak w odróżnieniu od procedury typu Function, która zwraca wartość, procedura typu Sub nie może być wykorzystywana w wyrażeniach.

Wywołanie procedury typu Sub następuje przez podanie nazwy procedury, a po niej umieszczonej w nawiasach listy argumentów. Szczegółowe informacje na temat wywoływania procedur typu Sub można znaleźć w opisie instrukcji Call.

Zmienne wykorzystywane w procedurach typu Sub dzielą się na dwie kategorie: jawnie i niejawnie zadeklarowane wewnątrz procedury. Zmienne zadeklarowane w procedurze w sposób jawny (za pomocą instrukcji Dim lub podobnej) są zawsze zmiennymi lokalnymi procedury. Zmienne wykorzystywane, ale nie zadeklarowane w procedurze w sposób jawny, są także lokalne, pod warunkiem, że nie są jawnie zadeklarowane na dowolnym wyższym poziomie poza procedurą.

Ostrzeżenie   Procedura może wykorzystywać zmienną, która nie jest jawnie zadeklarowana w procedurze, ale istnieje niebezpieczeństwo wystąpienia konfliktu nazw, jeżeli jakakolwiek inna zmienna zadeklarowana na poziomie modułu ma tę samą nazwę. Jeżeli procedura odwołuje się do nie zadeklarowanej zmiennej, która ma taką samą nazwę jak inna procedura, stała lub zmienna, przyjmuje się, że odwołanie to odnosi się do nazwy elementu zadeklarowanego na poziomie modułu. Aby uniknąć konfliktu tego rodzaju, należy deklarować zmienne w sposób jawny. Aby wymusić jawne deklarowanie zmiennych, można wykorzystać instrukcję Option Explicit.

Uwaga   Do wejścia lub wyjścia z procedury typu Sub nie można używać instrukcji GoSub, GoTo lub Return.


Type - instrukcja

Wykorzystywana na poziomie modułu do definiowania niestandardowego typu danych, zawierającego jeden lub więcej elementów.

Składnia

[Private | Public] Type nazwa_zmiennej
 nazwa_elementu [([indeksy])] As typ
[nazwa_elementu[([indeksy])] As typ]
. . .

End Type

Składnia instrukcji Type zawiera następujące elementy:

Element	Opis
Public	Element nieobowiązkowy. Wykorzystywany do deklarowania typów zdefiniowanych przez użytkownika dostępnych we wszystkich procedurach we wszystkich modułach wszystkich projektów.
Private	Element nieobowiązkowy. Wykorzystywany do deklarowania typu definiowanego przez użytkownika dostępnego tylko wewnątrz modułu, w którym wystąpiła deklaracja.
nazwa_ zmiennej	Element obowiązkowy. Nazwa typu definiowanego przez użytkownika, podana zgodnie ze standardowymi konwencjami nazewnictwa zmiennych.
nazwa elementu	Element obowiązkowy. Nazwa elementu typu definiowanego przez użytkownika. Nazwy elementów muszą być również zgodne ze standardowymi konwencjami nazewnictwa zmiennych, z wyjątkiem możliwości użycia tu słowa kluczowego.
indeksy	Element nieobowiązkowy. Wymiary elementu będącego tablicą. Do deklaracji tablicy, której rozmiar może się zmieniać, należy użyć samych nawiasów. Argument indeksy ma następującą składnię:
	[indeks_dolny To] indeks_górny [, [indeks_dolny To] indeks_górny] . . .
	Jeżeli element indeks_dolny nie określa tego jawnie, zakres indeksów tablicy jest ograniczany od dołu przez instrukcję Option Base. Jeżeli instrukcja Option Base nie występuje, to dolne ograniczenie zakresu indeksów tablicy wynosi zero.
typ	Element obowiązkowy. Typ elementu, mogący przyjąć następujące postaci: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (obecnie nie obsługiwany), Date, String (dla ciągów o zmiennej długości), String * długość (dla ciągów o stałej długości), Obiekt, Variant, inny typ zdefiniowany przez użytkownika lub typ obiektu.
Użycie

Instrukcja Type może być stosowana tylko na poziomie modułu. Po zadeklarowaniu typu definiowanego przez użytkownika za pomocą instrukcji Type, zmienną tego typu można zadeklarować w dowolnym miejscu zakresu deklaracji. Aby zadeklarować zmienną typu zdefiniowanego przez użytkownika, należy użyć instrukcji Dim, Private, Public, ReDim lub Static.

W modułach standardowych, typy zdefiniowane przez użytkownika są domyślnie publiczne. Zakres widoczności można zmienić za pomocą słowa kluczowego Private. Jednak w modułach klas typy zdefiniowane przez użytkownika mogą być tylko prywatne i nie można za pomocą słowa kluczowego Public zmienić zakresu ich widoczności.

W blokach ograniczonych instrukcjami Type...End Type stosowanie numerów wierszy i etykiet wierszy jest niedozwolone.

Typy zdefiniowane przez użytkownika są często używane w połączeniu z rekordami danych, które składają się z kilku powiązanych ze sobą logicznie elementów różnych typów.

Poniższy przykład ilustruje użycie w typie definiowanym przez użytkownika tablic o stałym rozmiarze:

Type Dane_o_województwie

Kod_miasta (1 To 100) As Integer	' Deklaracja tablicy statycznej.

Gmina As String * 30

End Type

Dim Warszawskie(1 To 100) As Dane_o_województwie

W powyższym przykładzie typ Dane_o_województwie zawiera tablicę statyczną Kod_miasta, a rekord Warszawskie ma taką samą strukturę jak typ Dane_o_województwie.

W deklaracji tablicy o stałym rozmiarze zawartej w deklaracji typu definiowanego przez użytkownika jej wymiary muszą być podane za pomocą literałów numerycznych lub stałych, a nie za pośrednictwem zmiennych.

Ustawienie instrukcji Option Base określa dolne ograniczenie tablic umieszczonych wewnątrz typów zdefiniowanych przez użytkownika.


UBound - funkcja

Zwraca wartość typu Long zawierającą najwyższy dopuszczalny indeks wskazanego wymiaru tablicy.

Składnia

UBound(nazwa_tablicy[, wymiar])

Składnia funkcji UBound zawiera następujące elementy:

Element	Opis
nazwa_ tablicy	Element obowiązkowy. Nazwa zmiennej tablicowej, zgodna ze standardowymi konwencjami nazewnictwa zmiennych.
wymiar	Element nieobowiązkowy typu Variant (Long). Pełen numer określający wymiar, którego najwyższy indeks ma być zwrócony. 1 oznacza pierwszy wymiar, 2 - drugi itd. Jeżeli element wymiar zostanie pominięty, domyślnie przyjmowana jest wartość 1.
Użycie

Funkcja UBound w powiązaniu z funkcją LBound wykorzystywana jest do określenia rozmiaru tablicy. Aby określić dolny zakres wymiaru tablicy, należy użyć funkcji LBound.

Funkcja UBound dla tablicy z określonymi poniżej wymiarami zwraca wartości przedstawione w tabeli:

Dim A(1 To 100, 0 To 3, -3 To 4)

Instrukcja	Zwracana wartość
UBound(A, 1)	100
UBound(A, 2)	3
UBound(A, 3)	4


As

Słowo kluczowe As jest używane w następujących kontekstach:

Const - instrukcja

Declare - instrukcja

Dim - instrukcja

Function - instrukcja

Name - instrukcja

Open - instrukcja

Private - instrukcja

Property Get - instrukcja

Property Let - instrukcja

Property Set - instrukcja

Public - instrukcja

ReDim - instrukcja

Static - instrukcja

Sub - instrukcja

Type - instrukcja


Binary

Słowo kluczowe Binary jest używane w następujących kontekstach:

Open - instrukcja

Option Compare - instrukcja


ByRef

Słowo kluczowe ByRef jest używane w następujących kontekstach:

Call - instrukcja

Declare - instrukcja

Function - instrukcja

Property Get - instrukcja

Property Let - instrukcja

Property Set - instrukcja

Sub - instrukcja


ByVal

Słowo kluczowe ByVal jest używane w następujących kontekstach:

Call - instrukcja

Declare - instrukcja

Function - instrukcja

Property Get - instrukcja

Property Let - instrukcja

Property Set - instrukcja

Sub - instrukcja


Date

Słowo kluczowe Date jest używane w następujących kontekstach:

Date - typ danych

Date - funkcja

Date - instrukcja


Else

Słowo kluczowe Else jest używane w następujących kontekstach:

If...Then...Else - instrukcja

Select Case - instrukcja


Error

Słowo kluczowe Error jest używane w następujących kontekstach:

Error - funkcja

Error - instrukcja

On Error - instrukcja


For

Słowo kluczowe For jest używane w następujących kontekstach:

For...Next - instrukcja

For Each...Next - instrukcja

Open - instrukcja


Get

Słowo kluczowe Get jest używane w następujących kontekstach:

Get - instrukcja

Property Get - instrukcja


Input

Słowo kluczowe Input jest używane w następujących kontekstach:

Input - funkcja

Input # - instrukcja

Line Input # - instrukcja

Open - instrukcja


Is

Słowo kluczowe Is jest używane w następujących kontekstach:

If...Then...Else - instrukcja

Is (operator)

Select Case - instrukcja


Len

Słowo kluczowe Len jest używane w następujących kontekstach:

Len - funkcja

Open - instrukcja


Let

Słowo kluczowe Let jest używane w następujących kontekstach:

Let - instrukcja

Property Let - instrukcja


Lock

Słowo kluczowe Lock jest używane w następujących kontekstach:

Lock, Unlock - instrukcje

Open - instrukcja


Mid

Słowo kluczowe Mid jest używane w następujących kontekstach:

Mid - funkcja

Mid - instrukcja


New

Słowo kluczowe New jest używane w następujących kontekstach:

Dim - instrukcja

Private - instrukcja

Public - instrukcja

Set - instrukcja

Static - instrukcja


Next

Słowo kluczowe Next jest używane w następujących kontekstach:

For...Next - instrukcja

For Each...Next - instrukcja

On Error - instrukcja

Resume - instrukcja


On

Słowo kluczowe On jest używane w następujących kontekstach:

On Error - instrukcja

On...GoSub - instrukcja

On...GoTo - instrukcja


Option

Słowo kluczowe Option jest używane w następujących kontekstach:

Option Base - instrukcja

Option Compare - instrukcja

Option Explicit - instrukcja

Option Private - instrukcja


Optional

Słowo kluczowe Optional jest używane w następujących kontekstach:

Declare - instrukcja

Function - instrukcja

Property Get - instrukcja

Property Let - instrukcja

Property Set - instrukcja

Sub - instrukcja


ParamArray

Słowo kluczowe ParamArray jest używane w następujących kontekstach:

Declare - instrukcja

Function - instrukcja

Sub - instrukcja


Print

Słowo kluczowe Print jest używane w następujących kontekstach:

Print - metoda

Print # - instrukcja


Private

Słowo kluczowe Private jest używane w następujących kontekstach:

Const - instrukcja

Declare - instrukcja

Function - instrukcja

Option Private - instrukcja

Private - instrukcja

Property Get - instrukcja

Property Let - instrukcja

Property Set - instrukcja

Sub - instrukcja

Type - instrukcja


Property

Słowo kluczowe Property jest używane w następujących kontekstach:

Property Get - instrukcja

Property Let - instrukcja

Property Set - instrukcja


Public

Słowo kluczowe Public jest używane w następujących kontekstach:

Const - instrukcja

Declare - instrukcja

Function - instrukcja

Property Get - instrukcja

Property Let - instrukcja

Property Set - instrukcja

Public - instrukcja

Sub - instrukcja

Type - instrukcja


Resume

Słowo kluczowe Resume jest używane w następujących kontekstach:

On Error - instrukcja

Resume - instrukcja


Seek

Słowo kluczowe Seek jest używane w następujących kontekstach:

Seek - funkcja

Seek - instrukcja


Set

Słowo kluczowe Set jest używane w następujących kontekstach:

Set - instrukcja

Property Set - instrukcja


Static

Słowo kluczowe Static jest używane w następujących kontekstach:

Function - instrukcja

Property Get - instrukcja

Property Let - instrukcja

Property Set - instrukcja

Static - instrukcja

Sub - instrukcja


Step

Słowo kluczowe Step jest używane w następujących kontekstach:

For...Next - instrukcja

For Each...Next - instrukcja


String

Słowo kluczowe String jest używane w następujących kontekstach:

String - typ danych

String - funkcja


Then

Słowo kluczowe Then jest używane w następujących kontekstach:

#If...Then...#Else - dyrektywa

If...Then...Else - instrukcja


Time

Słowo kluczowe Time jest używane w następujących kontekstach:

Time - funkcja

Time - instrukcja


To

Słowo kluczowe To jest używane w następujących kontekstach:

Dim - instrukcja

For...Next - instrukcja

Lock, Unlock - instrukcje

Private - instrukcja

Public - instrukcja

ReDim - instrukcja

Select Case - instrukcja

Static - instrukcja

Type - instrukcja


WithEvents

Słowo kluczowe WithEvents jest używane w następujących kontekstach:

Dim - instrukcja

Private - instrukcja

Public - instrukcja


Konwencje przyjęte w dokumentacji

W dokumentacji systemu Visual Basic stosowane są następujące konwencje typograficzne.

Konwencja	Opis
Sub, If, ChDir, Print, True, Debug	Pogrubione słowa zaczynające się dużą literą są słowami kluczowymi specyficznymi dla języka programowania.
setup	Słowa, które powinny zostać wpisane przez użytkownika, są pogrubione.
obiekt, nazwa_zmiennej, lista_argumentów	Słowa pisane małymi literami, kursywą wskazują miejsca na informacje podawane przez użytkownika.
pathname, filenumber	Słowa pisane małymi literami, pogrubioną kursywą wskazują miejsca na argumenty, dla których można stosować składnię pozycyjną lub nazwane argumenty.
[lista_wyrażeń]	W opisie składni elementy ujęte w nawiasy są opcjonalne.
{While | Until}	W opisie składni nawiasy klamrowe i kreska pionowa oznaczają konieczność dokonania wyboru spośród dwóch lub więcej elementów. Należy wybrać jeden z tych elementów, o ile wszystkie elementy nie są ponadto ujęte w nawiasy kwadratowe. Na przykład:
	[{Ten | LubTamten}]
ESC, ENTER	Słowa pisane kapitalikami oznaczają nazwy klawiszy i kombinacje klawiszy.
ALT+F1, CTRL+R	Znak plus (+) między nazwami klawiszy oznacza kombinację klawiszy. Na przykład ALT+F1 oznacza, że należy wcisnąć klawisz ALT i nacisnąć klawisz F1.
Konwencje stosowane w kodzie programu

W kodzie programu stosowane są następujące konwencje:

Przykładowy kod programu	Opis
MójCiąg = "Pozdrawiam wszystkich!"	Ta czcionka jest używana do oznaczania kodu programu, zmiennych i komunikatów o błędach.
' To jest komentarz.	Znak apostrofu (') oznacza początek komentarza.
MojaZmienna = "To jest " _ & "przykład " _ & "kontynuowania wiersza " _ & "kodu programu."	Odstęp i podkreślenie ( _) oznacza kontynuację wiersza kodu.


Caption Property


Enabled Property


Height Property


HelpContextID Property


Hide Method


Left Property


Move Method


Name Property


PrintForm Method


Show Method


StartUpPosition Method


Tag Property


Top Property


Visible Property


WhatsThisButton Property


WhatsThisHelp Property


WhatsThisMode Method


Width Property


Ambiguous selection

Either you have not selected a keyword or you have requested Help on a component of the integrated development environment (IDE). If you were trying to select a keyword, try reselecting a single keyword.  If you were trying to get information on the IDE, click one of the following:

Code or Module Window

Immediate Window or Pane

Locals Windows or pane

Object Browser

Watch Window or Pane


Funkcja Error - przykład

W tym przykładzie wykorzystano funkcję Error do drukowania komunikatów o błędach. Komunikaty te odpowiadają określonym numerom błędów.

Dim NumerBłędu

For NumerBłędu = 61 To 64	' Przebiegnij numery od 61 do 64.

Debug.Print Error(NumerBłędu)	' Wydrukuj komunikat o błędzie w oknie Analiza programu.

Next NumerBłędu


Instrukcja Error - przykład

W tym przykładzie wykorzystano instrukcję Error do symulacji wystąpienia błędu o numerze 11.

On Error Resume Next	' Odłóż obsługę błędów.

Error 11	' Symuluj wystąpienie błędu "Dzielenie przez zero".


Instrukcja On Error - przykład

W tym przykładzie najpierw zastosowano instrukcję On Error GoTo do określenia miejsca w procedurze, gdzie znajduje się obsługa błędów. Przez próbę usunięcia otwartego pliku, prezentowany fragment programu powoduje wystąpienie błędu o numerze 55. Błąd ten jest obsługiwany przez podprogram obsługi błędów, a następnie sterowanie powraca do instrukcji, która błąd ten spowodowała. Instrukcja On Error GoTo 0 wyłącza przechwytywanie błędów. Następnie zastosowano instrukcję On Error Resume Next, która odkłada przechwycenie błędu, dzięki czemu kontekst sytuacji błędnej spowodowanej kolejną instrukcją może być w pełni znany. Zwróćmy uwagę na użycie metody Err.Clear, która po obsłudze błędu czyści właściwości obiektu Err.

Sub OnErrorDemo()

On Error GoTo ErrorHandler	' Uaktywnij podprogram obsługi błędów.

Open "TESTFILE" For Output As #1	' Otwórz plik w trybie do zapisu.

Kill "TESTFILE"	' Spróbuj usunąć otwarty plik.

On Error Goto 0	' Wyłącz przechwytywanie błędów.

On Error Resume Next	' Odłóż przechwytywanie błędów.

ObjectRef = GetObject("MyWord.Basic")	' Spróbuj pobrać nie istniejący

'obiekt, po czym sprawdź przypuszczalne

'błędy automatyzacji.

If Err.Number = 440 Or Err.Number = 432 Then

' Poinformuj użytkownika o błędzie.

' Potem wyczyść obiekt Err.

Kom = "Błąd przy próbie otwarcia obiektu automatyzacji!"

MsgBox Kom, , "Sprawdzanie błędów odłożone"

Err.Clear	' Wyczyść pola obiektu Err

End If

Exit Sub	' Wyjdź z procedury, aby nie wejść do

' podprogramu obsługi błędów.

ErrorHandler:	' Podprogram obsługi błędów.

Select Case Err.Number	' Sprawdź numer błędu.

Case 55	' Błąd "Plik już otwarty".

Close #1	' Zamknij otwarty plik.

Case Else

' Tutaj obsłuż inne sytuacje...

End Select

Resume	' Wznów wykonywanie programu od wiersza,

' w którym wystąpił błąd.

End Sub


Instrukcja Resume - przykład

W tym przykładzie wykorzystano instrukcję Resume do zakończenia wykonywania podprogramu obsługi błędów, a następnie wznowienia wykonywania programu od instrukcji, która spowodowała błąd. Aby pokazać działanie instrukcji Resume, w przykładzie generowany jest błąd numer 55.

Sub ResumeDemo()

On Error GoTo ErrorHandler	' Uaktywnij podprogram obsługi błędów.

Open "TESTFILE" For Output As #1	' Otwórz plik w trybie do zapisu.

Kill "TESTFILE"	' Spróbuj usunąć otwarty plik.

Exit Sub	' Wyjdź z procedury, aby nie wejść do

' podprogramu obsługi błędów.

ErrorHandler:	' Podprogram obsługi błędów.

Select Case Err.Number	' Sprawdź numer błędu.

Case 55	' Błąd "Plik już otwarty".

Close #1	' Zamknij otwarty plik.

Case Else

' Tutaj obsłuż inne sytuacje...

End Select

Resume	' Wznów wykonywanie programu od wiersza,

' w którym wystąpił błąd.

End Sub


Error - funkcja

Zwraca komunikat błędu odpowiadający danemu numerowi błędu.

Składnia

Error[(numer_błędu)]

Nieobowiązkowy argument numer_błędu może przyjmować dowolną poprawną wartość numeru błędu. Jeżeli argument numer_błędu przyjmuje poprawną, ale nie zdefiniowaną wartość numeru błędu, funkcja Error zwraca ciąg "Błąd zdefiniowany w obiekcie lub aplikacji." Jeżeli wartość argumentu numer_błędu jest nieprawidłowa, wystąpi błąd. Jeżeli argument numer_błędu zostanie pominięty, zwracany jest komunikat związany z ostatnim błędem wykonania. Jeżeli żaden błąd wykonania wcześniej nie wystąpił lub argument numer_błędu równy jest 0, funkcja Error zwraca ciąg zerowej długości ("").

Użycie

Aby określić ostatni błąd wykonania, należy sprawdzić właściwości obiektu Err. Zwracana przez funkcję Error wartość odpowiada właściwości Description obiektu Err.


Error - instrukcja

Symuluje wystąpienie błędu.

Składnia

Error numer_błędu

Obowiązkowy argument numer_błędu może przyjmować dowolną poprawną wartość numeru błedu.

Użycie

Instrukcja Error umożliwia zachowanie zgodności z wcześniejszymi wersjami programu. W obecnej wersji, w kodzie programu, a szczególnie przy tworzeniu obiektów, do generowania błędów wykonania należy używać metody Raise obiektu Err.

Jeżeli argument numer_błędu jest podany, po przypisaniu przedstawionych poniżej wartości domyślnych do właściwości obiektu Err instrukcja Error wywołuje program obsługi błędów.

Właściwość	Wartość
Number	Wartość określona jako argument dla instrukcji Error. Może przyjmować dowolne poprawne wartości numeru błędu.
Source	Nazwa bieżącego projektu.
Description	Jest to wyrażenie znakowe odpowiadające zwróconej przez funkcję Error wartości dla określonej właściwości Number. Jeżeli ciąg ten nie istnieje, Description zawiera ciąg zerowej długości ("").
HelpFile	W pełni określony dysk, ścieżka i nazwa odpowiedniego pliku Pomocy systemu Visual Basic.
HelpContext	Identyfikator Pomocy systemu Visual Basic dla błędu odpowiadającego właściwości Number.
LastDLLError	Zero.
Jeżeli nie istnieje żaden program obsługi błędów lub jeśli żaden z nich nie jest włączony, komunikat o błędzie tworzony jest i wyświetlany na podstawie właściwości obiektu Err.

Uwaga   Nie wszystkie aplikacje główne Visual Basic mogą tworzyć obiekty. Aby ustalić, czy mogą one tworzyć klasy i obiekty, należy zajrzeć do dokumentacji aplikacji.


On Error - instrukcja

Włącza program obsługi błędów i określa jego położenie wewnątrz procedury. Instrukcję tę można też wykorzystać do wyłączenia programu obsługi błędów.

Składnia

On Error GoTo wiersz

On Error Resume Next

On Error GoTo 0

Składnia instrukcji On Error może przyjąć jedną z następujących form:

Instrukcja	Opis
On Error GoTo wiersz	Włącza program obsługi błędów rozpoczynający się od wiersza podanego jako obowiązkowy argument wiersz. Argument wiersz jest dowolną etykietą wiersza lub numerem wiersza. Jeżeli wystąpi błąd wykonania, sterowanie przechodzi do podanego wiersza, uaktywniając program obsługi błędów. Określony wiersz musi występować w tej samej procedurze co instrukcja On Error, w przeciwnym przypadku wystąpi błąd w czasie kompilacji.
On Error Resume Next	Powoduje, że jeżeli wystąpi błąd, sterowanie przechodzi do instrukcji znajdującej się bezpośrednio po instrukcji, wykonanie której spowodowało błąd. W przypadku używania obiektów należy korzystać raczej z tej instrukcji, a nie On Error GoTo.
On Error GoTo 0	Wyłącza wszystkie włączone programy obsługi błędów w bieżącej procedurze.
Użycie

Jeżeli instrukcja On Error nie jest wykorzystywana, dowolny błąd wykonania, jeśli wystąpi, jest błędem fatalnym. Oznacza to, że wyświetlony zostaje komunikat o błędzie, a wykonywanie programu jest zatrzymywane.

“Włączony” program obsługi błędów to taki, który został włączony przez instrukcję On Error; "aktywny" program obsługi błędów to włączony program obsługi błędów aktualnie obsługujący błąd. Jeżeli błąd wystąpi w chwili, gdy program obsługi błędów jest aktywny (między miejscem wystąpienia błędu a instrukcjami Resume, Exit Sub, Exit Function lub Exit Property), program obsługi błędów w bieżącej procedurze nie obsłuży tego błędu. Sterowanie przekazane zostanie z powrotem do procedury wołającej. Jeżeli procedura wołająca ma włączony program obsługi błędów, jest on uaktywniany w celu obsługi tego błędu. Jeżeli program obsługi błędów procedury wołającej również jest aktywny, sterowanie powraca poprzez poprzednie procedury wołające aż do momentu, gdy znaleziony zostanie włączony, ale nie aktywny program obsługi błędów. Jeżeli nie zostanie znaleziony taki program obsługi błędów, błąd w miejscu jego wystąpienia staje się błędem fatalnym Za każdym razem, gdy program obsługi błędów przekazuje sterowanie wstecz do procedury wołającej, procedura ta staje się procedurą aktywną. Kiedy błąd zostanie obsłużony przez program obsługi w dowolnej procedurze, wykonywanie programu jest kontynuowane w bieżącej procedurze, od miejsca określonego przez instrukcję Resume.

Uwaga   Program obsługi błędów nie jest procedurą typu Sub ani Function. Jest to fragment kodu programu oznaczonego etykietą wiersza lub numerem wiersza.

Programy obsługi błędów wykorzystują w celu wyznaczenia przyczyny błędu właściwość Number obiektu Err. Program obsługi błędów powinien sprawdzać lub zapisywać niezbędne właściwości w obiekcie Err, zanim wystąpi jakikolwiek inny błąd lub zanim zostanie wywołana procedura, która może być źródłem błędu. Wartości właściwości obiektu Err dotyczą tylko ostatniego błędu. Komunikat o błędzie związanym z wartością właściwości Err.Number zawarty jest we właściwości Err.Description.

Instrukcja On Error Resume Next powoduje wznowienie wykonywania programu od instrukcji znajdującej się bezpośrednio za instrukcją, która spowodowała błąd lub od instrukcji znajdującej się bezpośrednio za wywołaniem procedury zawierającej instrukcję On Error Resume Next. Instrukcja ta umożliwia kontynuowanie wykonywania programu, pomimo wystąpienia błędu wykonania. Zamiast przekazywania sterowania w inne miejsce wewnątrz procedury, można umieścić program obsługi błędów w miejscu, gdzie możliwe jest wystąpienie błędu. Instrukcja On Error Resume Next staje się nieaktywna w momencie wywołania innej procedury. W związku z tym, jeżeli obsługa błędów ma być wbudowana w daną procedurę, to instrukcję On Error Resume Next należy umieścić w każdej wołanej procedurze.

Uwaga   Stosowanie konstrukcji On Error Resume Next może być korzystniejsze niż stosowanie konstrukcji On Error GoTo w przypadku obsługi błędów występujących podczas dostępu do innych obiektów. Sprawdzanie obiektu Err po każdej interakcji między obiektami usuwa możliwość niejednoznacznego określenia obiektu osiąganego przez kod programu. Podobnie jak można określić, który obiekt umieścił kod błędu we właściwości Err.Number, można również określić obiekt, który jako pierwszy spowodował błąd (obiekt określony we właściwości Err.Source).

Instrukcja On Error GoTo 0 wyłącza obsługę błędów w bieżącej procedurze. Konstrukcja ta nie określa wiersza o numerze 0 jako początek kodu programu obsługi błędów, nawet jeżeli procedura zawiera wiersz o numerze 0. Jeśli instrukcja On Error GoTo 0 zostanie pominięta, program obsługi błędów jest automatycznie wyłączany po zakończeniu działania procedury.

Aby uniknąć wykonania kodu obsługi błędów w przypadku, gdy żaden błąd nie wystąpił, należy umieścić instrukcję Exit Sub, Exit Function lub Exit Property bezpośrednio przed fragmentem procedury obsługującym błędy, tak jak w poniższym fragmencie:

Sub InicjujMacierz (Var1, Var2, Var3, Var4)

On Error GoTo ErrorHandler

. . .

Exit Sub

ErrorHandler:

. . .

Resume Next

End Sub

W przedstawionym przykładzie kod obsługi błędów występuje po instrukcji Exit Sub i poprzedza instrukcję End Sub, co oznacza wydzielenie go z przebiegu procedury. Kod obsługi błędów może być umieszczony w dowolnym miejscu procedury.

Nie obsłużone w obiektach błędy są przekazywane do aplikacji sterującej w momencie, kiedy obiekt uruchamiany jest jako plik wykonywalny. Wewnątrz środowiska programowania nie obsłużone błędy są przekazywane do aplikacji sterującej tylko wtedy, jeżeli ustawione są odpowiednie opcje. Warto zajrzeć do dokumentacji aplikacji głównej , aby dowiedzieć się, jakie opcje powinny być ustawione w trakcie analizy błędów, jak je ustawić oraz czy aplikacja może tworzyć klasy.

Jeżeli utworzony zostanie obiekt, który ma dostęp do innych obiektów, należy spróbować obsłużyć błędy przekazane, ale nie obsłużone przez te obiekty. Jeżeli obsługa takich błędów jest niemożliwa, należy przekształcić kod błędu znajdujący się we właściwości Err.Number na jeden z własnych błędów i przekazać błędy z powrotem do procesu, który wywołał obiekt. Własny błąd należy określić poprzez dodanie wartości kodu błędu do stałej vbObjectError. Na przykład, jeżeli kod błędu ma wartość 1052, to można mu przypisać nową wartość w poniższy sposób:

Err.Number = vbObjectError + 1052

Uwaga   Błędy systemowe występujące podczas odwołań do biblioteki dołączanej dynamicznie (DLL) nie generują wyjątków i nie mogą być przechwytywane przez Visual Basic. Podczas wołania funkcji z biblioteki DLL należy sprawdzić poprawność każdej zwracanej wartości (zgodnie ze specyfikacjami funkcji API), a w przypadku, gdy jest ona błędna, należy dodatkowo sprawdzić wartość właściwości LastDLLError obiektu Err.


Resume - instrukcja

Wznawia wykonywanie programu po zakończeniu działania programu obsługującego błąd.

Składnia

Resume [0]

Resume Next

Resume wiersz

Składnia instrukcji Resume może przyjąć jedną z następujących form:

Instrukcja	Opis
Resume	Jeżeli błąd wystąpił w tej samej procedurze, w której znajduje się program obsługi błędów, wykonywanie wznawiane jest od instrukcji, która spowodowała błąd. Jeżeli błąd wystąpił w procedurze wywołanej, wykonywanie wznawiane jest od instrukcji, która ostatnio wywołała procedurę zawierającą program obsługi błędów.
Resume Next	Jeżeli błąd wystąpił w tej samej procedurze, w której znajduje się program obsługi błędów, wykonywanie wznawiane jest od instrukcji znajdującej się bezpośrednio po instrukcji, która spowodowała błąd. Jeżeli błąd wystąpił w procedurze wywołanej, wykonywanie wznawiane jest od instrukcji znajdującej się bezpośrednio za instrukcją, która ostatnio wywołała procedurę zawierającą program obsługi błędów (lub od instrukcji On Error Resume Next).
Resume wiersz	Wykonywanie wznawiane jest od wiersza określonego w obowiązkowym argumencie wiersz. Argument wiersz jest etykietą wiersza lub numerem wiersza i musi wyznaczać wiersz w tej samej procedurze co program obsługi błędów.
Użycie

Wykorzystanie instrukcji Resume w dowolnym miejscu poza programem obsługi błędów spowoduje błąd.


Klauzula #Else musi być poprzedzona klauzulą #If.

#Else jest dyrektywą kompilacji warunkowej. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Wykryto klauzulę #Else nie poprzedzoną klauzulą #If lub #ElseIf.

Sprawdź, czy między poprzedzającą klauzulą #If a bieżącą klauzulą #Else nie występuje klauzula #End If. Należy zauważyć, że w każdym bloku #If dozwolona jest tylko jedna klauzula #Else, tak więc dwie kolejne klauzule #Else powodują błąd.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Klauzule #Else If, #Else lub #End If muszą być poprzedzone klauzulą #If.

#Else If, #Else i #End If są dyrektywami kompilacji warunkowej. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Napotkano na klauzulę #Else If, #Else lub #End If nie poprzedzoną klauzulą #If.

Sprawdź, czy klauzula #If jest oddzielona blokiem instrukcji od klauzuli powodującej błąd, lub też czy klauzula #If jest poprzedzona znakiem numeru (#). Jeśli nie ma innych błędów, umieść klauzulę #If na właściwym miejscu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Klauzula #ElseIf musi być poprzedzona klauzulą #If lub #ElseIf, a po niej musi wystąpić klauzula #Else lub #EndIf.

#ElseIf jest dyrektywą kompilacji warunkowej. Ten błąd ma następujące przyczyny i rozwiązania:

•	Wykryto klauzulę #ElseIf nie poprzedzoną klauzulą #If lub #ElseIf.

Umieść dyrektywę #If przed dyrektywą #ElseIf lub usuń umieszczoną w niewłaściwym miejscu dyrektywę poprzedzającą dyrektywę #End If.

•	Wykryto dyrektywę #ElseIf poprzedzoną dyrektywą #Else lub #End If.

Zakończ blok #If w prawidłowy sposób lub zmień poprzedzającą dyrektywę #Else na #ElseIf.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Zgodny składnik ActiveX musi być plikiem wykonywalnym Visual Basic lub biblioteką DLL.

Zgodny składnik ActiveX jest składnikiem określonym jako zgodny składnik ActiveX. Ten błąd ma następującą przyczynę i rozwiązanie:

•	System Visual Basic usiłował uzyskać dostęp do obiektu, który został określony jako zgodny składnik ActiveX, lecz wskazany plik nie jest utworzonym przez system Visual Basic plikiem wykonywalnym ani biblioteką dołączaną dynamicznie.

Jedynie pliki exe i DLL utworzone przez system Visual Basic są prawidłowymi elementami w polu Zgodny składnik ActiveX okna dialogowego Właściwości projektu dostępnego z menu Projekt. Jeśli jest to możliwe, załaduj projekt do systemu Visual Basic i wybierz polecenie Make Project.exe File z menu Plik w celu utworzenia pliku wykonywalnego systemu Visual Basic. Jeśli plik jest plikiem wykonywalnym, który nie został utworzony przez system Visual Basic, sprawdź w dokumentacji pliku, czy plik może zostać zamieniony na plik wykonywalny systemu Visual Basic, lub czy producent oprogramowania może dostarczyć plik wykonywalny wytworzony przez system Visual Basic.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Dodatki nie mogą odwoływać się do projektu.

Projekty są dynamiczne, natomiast dodatki są statyczne. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Usiłowano utworzyć dodatek z projektu, który odwołuje się do innego projektu.

Semantyka projektów może zmieniać się tak, że wpływa to na odwołujące się do niego projekty i dodatki. Z tego powodu nie można utworzyć dodatku z projektu odwołującego się do innych projektów.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Moduł nie jest prawidłowego typu.

Moduł standardowy nie reprezentuje klasy i nie można utworzyć jego wystąpienia w postaci zmiennej. Ten błąd ma następującą przyczynę i rozwiązanie:

•	W deklaracji Dim lub Set użyto nazwy standardowego modułu.

Sprawdź pisownię nazwy modułu i upewnij się, że odpowiada ona formularzowi, formularzowi typu MDI lub modułowi klasy.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Procedura z argumentem ParamArray nie może być wywoływana z argumentami nazwanymi.

Wszystkie argumenty wywołania procedury zdefiniowane przy użyciu kwalifikatora ParamArray muszą być pozycyjne. Ten błąd ma następującą przyczynę i rozwiązanie:

•	W wywołaniu procedury użyto konstrukcji składniowej nazwanego argumentu.

Składnia wywołania z użyciem argumentów nazwanych nie może być stosowana w wywołaniu procedury zawierającej parametr typu ParamArray. Aby przekazać jedynie niektóre elementy argumentu typu ParamArray, należy użyć przecinków zamiast elementów, które mają być pominięte. Na przykład, jeśli w następującym przykładzie argumenty ParamArray rozpoczynają się po argumencie Arg2, zostanie przekazana wyłącznie wartość pierwsza, trzecia i szósta argumentu ParamArray:

MojaProc Arg1, Arg2, 7,, 44,,,3

Uwaga Elementy typu ParamArray zawsze zajmują ostatnie pozycje na liście argumentów.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Wykryto niejednoznaczną nazwę.

Identyfikator koliduje z innym identyfikatorem lub wymaga kwalifikatora. Ten błąd ma następujące przyczyny i rozwiązania:

•	Więcej niż jeden obiekt w tym samym zakresie ma elementy o tej samej nazwie.

Należy dodać kwalifikator do elementu, dołączając nazwę obiektu i kropkę. Na przykład:

obiekt.właściwość

Identyfikatory poziomu modułu i identyfikatory na poziomie projektu (nazwy modułów i nazwy projektów wskazywanych) mogą zostać ponownie użyte w procedurze, lecz utrudnia to utrzymywanie i analizę programów. Jeśli jednak w jednej procedurze występuje odwołanie do obu elementów, to element o większym zasięgu musi być kwalifikowany. Na przykład, jeśli MójIdentyfikator jest zadeklarowany na poziomie modułu MójModuł, a następnie w module zadeklarowano zmienną poziomu procedury o takiej samej nazwie, to odwołania do zmiennej na poziomie modułu muszą być opatrzone kwalifikatorem:

Dim MójIdentyfikator As String

Sub MojaProcedura

MójModuł.MójIdentyfikator = "To jest zmienna na poziomie modułu "

Dim MójIdentyfikator As String

MójIdentyfikator = "To jest zmienna na poziomie procedury "

Debug.Print MójIdentyfikator

Debug.Print MójModuł.MójIdentyfikator

End Sub

•	Wystąpił konflikt między identyfikatorem zadeklarowanym na poziomie modułu a nazwą procedury. Ten błąd wystąpi na przykład wtedy, jeśli zmienna MójIdentyfikator została zadeklarowana na poziomie modułu, a następnie zdefiniowano procedurę o tej samej nazwie:

Public MójIdentyfikator

Sub MójIdentyfikator

. . .

End Sub

W tym przypadku należy zmienić jedną z nazw, gdyż użycie tu kwalifikatora będącego nazwą modułu nie rozwiąże niejednoznaczności. Nazwy procedur są tu domyślnie typu Public. Z kolei nazwy zmiennych są typu Private, jeśli nie określono jawnie ich typu jako Public.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Błąd skryptu AppleScript

Podczas przetwarzania skryptu wystąpił błąd. Ten błąd ma następujące przyczyny i rozwiązania:

•	Błąd może mieć źródło w aplikacji docelowej.

Sprawdź, czy identyfikatory w skrypcie odpowiadają identyfikatorom w aplikacji.

•	Błąd może mieć źródło w skrypcie AppleScript.

Upewnij się, że skrypt nie zawiera błędów składniowych.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Błąd zdefiniowany w obiekcie lub aplikacji

Ten komunikat jest wyświetlany, jeśli błąd wygenerowany przez metodę Raise lub instrukcję Error nie odpowiada błędowi zdefiniowanemu przez system Visual Basic for Applications. Jest również zwracany przez funkcję Error dla argumentów nie odpowiadających błędom zdefiniowanym w systemie Visual Basic for Applications. Może to być błąd zdefiniowany przez użytkownika lub też przez obiekt, w tym również przez aplikację główną, takie jak Microsoft Excel, Visual Basic itp. Na przykład, formularze Visual Basic generują własne błędy, które nie mogą być wygenerowane przez kod programu w zwykły sposób, to jest przez podanie liczby jako argumentu metody Raise lub instrukcji Error. Ten komunikat ma następujące przyczyny i rozwiązania:

•	Aplikacja wykonała instrukcję Err.Raise n lub Error n, lecz liczba n nie jest zdefiniowana w systemie Visual Basic for Applications.

Jeśli takie działanie było zamierzone, należy użyć instrukcji Err.Raise i podać dodatkowe argumenty tak, by użytkownik mógł zrozumieć przyczynę błędu. Na przykład, można dołączyć ciąg znaków zawierający opis błędu, źródło i informacje Pomocy. Jeżeli chcemy przywrócić przechwycony błąd, to opisane postępowanie spełni ten cel, o ile przed przywróceniem błędu nie zostanie wykonana instrukcja Err.Clear. Jeśli instrukcja Err.Clear zostanie jednak wykonana jako pierwsza, należy zastosować dodatkowe argumenty metody Raise. Należy zwrócić uwagę na kontekst wystąpienia błędu i upewnić się, że jest przywracany ten sam błąd.

•	Podczas korzystania z obiektów należących do innych aplikacji wystąpił błąd przeniesiony wzdłuż łańcucha wywołań, dla którego nie można znaleźć odpowiednika wśród błędów systemu Visual Basic.

Sprawdź w dokumentacji opisy wszystkich używanych obiektów. Właściwość Source obiektu Err powinna zawierać programowy identyfikator aplikacji lub obiektu generującego ten błąd. Aby zrozumieć kontekst błędu zwróconego przez obiekt, może okazać się konieczne użycie w programie korzystającym z obiektów instrukcji On Error Resume Next zamiast instrukcji On Error GoTo wiersz.

Uwaga   W przeszłości programiści często używali pętli do drukowania listy wszystkich komunikatów o przechwytywanych błędach. Do tego celu często wykorzystywano kod programu podobny do poniższego:

For indeks = 1 to 500

Debug.Print Error$(indeks)

Next indeks

Powoduje to wyświetlenie wszystkich komunikatów o błędach systemu Visual Basic for Applications, lecz dla błędów zdefiniowanych w aplikacji głównej wyświetlany jest komunikat "Błąd zdefiniowany w obiekcie lub aplikacji ". Dzieje się tak na przykład dla tych błędów systemu Visual Basic, które odnoszą się do formularzy, formantów itp. Wiele z tych błędów to przechwytywalne błędy wykonania. Listę przechwytywalnych błędów specyficznych dla aplikacji głównej można znaleźć w oknie dialogowym Szukaj w Pomocy. Kliknij przycisk Szukaj w pierwszym polu tekstowym wpisz Przechwytywalne, a następnie kliknij przycisk Pokaż tematy. W polu listy u dołu zaznacz Błędy przechwytywalne i kliknij przycisk Idź do.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Dla procedury Property Let lub Property Set wymagany jest argument.

Zadaniem procedur Property Let i Property Set jest nadanie nowej wartości właściwości. Ten błąd ma następujące przyczyny i rozwiązania:

•	Podczas ustawiania właściwości wartość nie znajduje się na prawidłowym miejscu.

Umieść wartość, która ma być nadana właściwości, po prawej stronie wyrażenia nadającego wartość właściwości.

•	W definicji procedury nie istnieje lub znajduje się w niewłaściwym miejscu parametr zdefiniowany jako służący do otrzymywania wartości przekazywanej po prawej stronie wyrażenia.

W definicji procedury określ ten parametr na liście argumentów. Jeśli procedura zawiera więcej niż jeden argument, parametr przekazujący wartość właściwości musi być ostatni na liście.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Wymiary tablicy zostały już określone.

Dla tablicy statycznej można tylko raz określić wymiary. Ten błąd ma następujące przyczyny i rozwiązania:

•	Usiłowano zmienić wymiary tablicy statycznej za pomocą instrukcji ReDim; można zmienić wymiary tylko dla tablicy dynamicznej.

Zrezygnuj ze zmiany wymiarów lub użyj tablicy dynamicznej. Aby zdefiniować tablicę dynamiczną, należy użyć instrukcji Dim, Public, Private lub Static z pustymi nawiasami. Na przykład:

Dim MojaTablica()

W procedurze można zdefiniować tablicę dynamiczną za pomocą instrukcji ReDim lub Static, używając zmiennej do określenia liczby elementów:

ReDim MojaTablica(n)

•	Po ustaleniu wymiarów tablicy wystąpiła instrukcja Option Base.

Upewnij się, że instrukcja Option Base poprzedza wszystkie deklaracje tablic.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Argument typu Array musi być przekazywany przez odwołanie (ByRef).

Tablice zadeklarowane za pomocą instrukcji Dim, ReDim lub Static nie mogą być przekazywane przez wartość (ByVal). Ten błąd ma następującą przyczynę i rozwiązanie:

•	Usiłowano przekazać całą tablicę przez wartość (ByVal).

Pojedyncze elementy tablicy mogą być przekazywane przez wartość (ByVal), lecz cała tablica musi być przekazywana przez odwołanie (ByRef). Trzeba pamiętać, że ByRef jest ustawieniem domyślnym. Jeśli tablica musi być przekazana przez wartość (ByVal) w celu zapobieżenia przekazania do procedury wywołującej zmian dokonanych w elementach tablicy, można przekazać argument będący tablicą w odpowiednich nawiasach lub umieścić tablicę w zmiennej typu Variant, a następnie przekazać tę zmienną typu Variant przez wartość (ByVal). Na przykład:

Dim MojaZmienna As Variant

MojaZmienna = StaraTablica()

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Osiągnięto początek przeszukiwanego zasięgu. Czy kontynuować przeszukiwanie od końca?

Poszukiwanie zakończyło się niepowodzeniem. Ten warunek ma następującą przyczynę i rozwiązanie:

•	Podczas przeszukiwania w górę (wstecz) osiągnięto początek podanego zasięgu.

Można kontynuować przeszukiwanie od końca zasięgu przeszukiwania lub anulować operację i zmienić zasięg przeszukiwania.


Blok instrukcji If bez instrukcji End If

Wystąpił błąd spowodowany nie zakończoną (niepełną) instrukcją. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Użyto instrukcji If bez odpowiadającej jej instrukcji End If.

Wielowierszowa instrukcja If musi kończyć się instrukcją End If. W przypadku zagnieżdżonych instrukcji If...End If, należy się upewnić, że wewnątrz każdej zewnętrznej struktury If...End If znajduje się prawidłowa struktura If...End If.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Punkt przerwania w tym wierszu nie jest dozwolony.

Punkty przerwania mogą być umieszczane tylko w określonych miejscach instrukcji. Ten błąd ma następujące przyczyny:

•	Usiłowano umieścić punkt przerwania w wierszu, w którym jest to niedozwolone. Przykładami takich wierszy są:

•	Wiersz zawierający wyłącznie komentarz.

•	Wiersz zawierający wyłącznie etykietę wiersza.

•	Wiersz zawierający wyłącznie deklarację (Const, Dim, Static, Type itp.).

•	Dowolny wiersz znajdujący się w module ukrytym.

•	Dowolny wiersz znajdujący się w oknie Instrukcje bezpośrednie.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Niezgodność typów argumentu ByRef

Argument przekazany przez odwołanie (ByRef), co jest ustawieniem domyślnym, musi być dokładnie takiego samego typu, jak argument oczekiwany przez procedurę. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Przekazano argument o typie, który nie może zostać przekształcony na typ oczekiwany.

Na przykład, ten błąd wystąpi, gdy przekazany argument jest typu Integer, podczas gdy oczekiwano typu Long. Jeśli chcemy wymusić zmianę typu, godząc się na utratę dokładności, możemy przekazać argument w nawiasach. Na przykład, w celu przekazania argumentu MojaZmienna typu Variant do procedury oczekującej argumentu typu Integer, można użyć następującego wywołania:

Dim MojaZmienna

MojaZmienna = 3.1415

Call MojaProcedura((MojaZmienna))

Sub MojaProcedura (MojaLiczba As Integer)

MojaLiczba = MojaLiczba + MojaLiczba

End Sub

Umieszczenie argumentu w nawiasach wymusza obliczenie jego wartości tak, jak by to było wyrażenie. Podczas obliczania wartości dokonuje się zaokrąglenia (ale nie obcięcia) ułamkowej części liczby w celu dopasowania do oczekiwanego typu argumentu. Wynik tej operacji jest umieszczany w zmiennej tymczasowej, a do procedury jest przekazywane odwołanie do tej właśnie zmiennej. W ten sposób zmienna MojaZmienna zachowuje swą wartość.

Uwaga   Jeśli nie określono typu zmiennej, zmienna przyjmuje typ domyślny Variant. Nie zawsze jest to oczywiste. Na przykład, w następującym fragmencie programu zadeklarowano dwie zmienne, z których pierwsza, MojaZmienna, jest typu Variant, a druga, InnaZmienna, jest typu Integer.

Dim MojaZmienna, InnaZmienna As Integer

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Konwencja wywołania nie uwzględniana przez język Visual Basic.

Język Visual Basic nie uwzględnia wszystkich konwencji wywołań procedury, określających kolejność przekazywanych argumentów i sposób specyfikowania każdego argumentu. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Wywołano procedurę, używając konwencji wywołania nie uwzględnianej przez język Visual Basic. Na przykład, język Visual Basic nie obsługuje konwencji wywołania przyjętej w języku Pascal dla 16-bitowej wersji środowiska Microsoft Windows.

Jeśli dana konwencja wywołania nie jest uwzględniana przez Visual Basic, to procedura nie może być wywołana z programu napisanego w języku Visual Basic. Sprawdź w dokumentacji obiektu, czy przewidziano alternatywne rozwiązanie.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można dodać odwołania do podanego pliku.

Nie wszystkie biblioteki obiektowe lub biblioteki typów są dostępne z systemu Visual Basic. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Za pomocą okna dialogowego Dodaj odwołania usiłowano dodać odwołanie do biblioteki typów lub biblioteki obiektów, które nie mogą być wykorzystane w systemie Visual Basic.

Sprawdź w dokumentacji obiektu reprezentowanego przez bibliotekę, czy jest on dostępny w innej postaci, która może być użyta przez program Visual Basic.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można przypisać ani dokonać konwersji do typu Variant tablicy ciągów o stałej długości lub typu zdefiniowanego przez
Nie można przypisać ani dokonać konwersji do typu Variant tablicy ciągów o stałej długości lub typu zdefiniowanego przez użytkownika.

Do typu Variant można przypisać jedynie dane, dla których funkcja VarType zwraca poprawną wartość. Ten błąd ma następujące przyczyny i rozwiązania:

•	Usiłowano przekazać tablicę ciągów o stałej długości. Po przypisaniu ciągu o stałej długości do zmiennej typu Variant jest on zamieniany na ciąg o zmiennej długości, lecz operacji tej nie można przeprowadzić dla tablicy ciągów o stałej długości.

Jeśli konieczne jest przekazanie tablicy, należy użyć pętli do przypisania kolejnych elementów tablicy do elementów tymczasowej tablicy ciągów o zmiennej długości. Następnie można przypisać tę drugą tablicę do zmiennej typu Variant i użyć instrukcji Erase do usunięcia jej z pamięci. Za pomocą instrukcji Erase nie można usunąć tablicy ciągów o stałej długości.

•	Usiłowano przekazać ciąg o stałej długości lub typ zdefiniowany przez użytkownika do funkcji VarType lub funkcji TypeName.

Argument przekazywany do funkcji VarType lub TypeName musi być poprawnego typu Variant.

•	Usiłowano przypisać typ zdefiniowany przez użytkownika do zmiennej typu Variant.

Aczkolwiek nie można bezpośrednio dokonać przypisania całej zmiennej typu zdefiniowanego przez użytkownika do zmiennej typu Variant, to można użyć funkcji Array do przypisania poszczególnych elementów zmiennej typu zdefiniowanego przez użytkownika do zmiennej typu Variant. W ten sposób jest tworzona zmienna typu Variant zawierająca tablicę wariantów. Wartość funkcji VarType dla każdego elementu tej tablicy wariantów odpowiada oryginalnemu typowi każdego elementu typu zdefiniowanego przez użytkownika.

•	Jako argument wywołania procedury, w którym wymagany jest argument typu Variant, usiłowano przekazać tablicę ciągów stałej długości lub typów zdefiniowanych przez użytkownika. Należy zauważyć, że za każdym razem, gdy dla procedury stosowane jest wiązanie opóźnione, czyli gdy wywołanie musi być skonstruowane w czasie wykonywania, to wszystkie argumenty muszą być przekazywane w postaci typów Variant. Na przykład, następujący fragment kodu programu spowoduje ten błąd:

Dim MójFormularz As Object	' MójFormularz jest obiektem, dlatego następuje wiązanie opóźnione.

Set MójFormularz = New Formularz1

Dim TablicaCiągów(10) As String * 12

' Następny wiersz powoduje błąd.

MójFormularz.MojaProcedura TablicaCiągów

W przypadku tablicy ciągów należy użyć pętli do przypisania poszczególnych elementów tablicy do tymczasowej tablicy ciągów o zmiennej długości. Następnie można przypisać tę tablicę do zmiennej typu Variant w celu przekazania jej do procedury. W przypadku tablicy typów zdefiniowanych przez użytkownika można użyć funkcji Array do przypisania poszczególnych elementów zmiennej typu zdefiniowanego przez użytkownika do zmiennej typu Variant. W ten sposób jest tworzona zmienna typu Variant zawierająca tablicę wariantów. Wartość funkcji VarType dla każdego elementu tablicy wariantów odpowiada oryginalnemu typowi każdego elementu typu zdefiniowanego przez użytkownika.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można wykonać przypisania do tablicy.

Do każdego elementu tablicy należy oddzielnie przypisać wartość. Ten błąd ma następujące przyczyny i rozwiązania:

•	Nieumyślnie usiłowano przypisać pojedynczą wartość do tablicy zmiennych bez podania elementu, do którego wartość powinna być przypisana.

Aby przypisać pojedynczą wartość do elementu tablicy, należy określić element za pomocą indeksu. Na przykład, jeśli MojaTablica jest tablicą liczb całkowitych, to wyrażenie MojaTablica = 5 jest niepoprawne, w przeciwieństwie do następującego wyrażenia:

MojaTablica(UBound(MojaTablica)) = 5

•	Usiłowano przypisać całą tablicę do innej tablicy. Na przykład, jeśli Tabl1 i Tabl2 są różnymi tablicami, to następujące dwa przypisania są niepoprawne:

Tabl1 = Tabl2	' Nieprawidłowe przypisanie.

Tabl1() = Tabl2()	' Nieprawidłowe przypisanie.

W celu przypisania jednej tablicy do drugiej należy po kolei przypisać poszczególne elementy. Na przykład:

For licz = LBound(Tabl2) to UBound(Tabl2)

Tabl1(licz) = Tabl2(licz)

Next licz

Należy zauważyć, że można umieścić całą tablicę w zmiennej typu Variant, co prowadzi do powstania jednej zmiennej wariantowej zawierającej całą tablicę:

Dim MojaTablica As Variant

MojaZmienna = Tabl2()

Można odwoływać się do elementów tablicy zawartej w zmiennej wariantowej stosując tę samą notację indeksową, jak w przypadku zwykłej tablicy. Na przykład:

MojaZmienna(3) = MojaZmienna(1) + MojaZmienna(5)

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Dla elementów tablicy nie można zmieniać typów danych.

Instrukcja ReDim może być użyta jedynie do zmiany liczby elementów tablicy. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Usiłowano ponownie zadeklarować typ tablicy, używając instrukcji ReDim.

Zadeklaruj nową tablicę wybranego typu, a następnie użyj funkcji konwersji do przypisania każdego elementu starej tablicy do odpowiedniego elementu nowej tablicy.

Można również umieścić tablicę w zmiennej typu Variant. Do tego celu wystarczy proste przypisanie:

Dim MojaZmienna As Variant

MojaZmienna = MojaTablicaCałkowita()

W ten sposób zostaje utworzona zmienna typu Variant zawierająca tablicę oznaczoną typem tablicy oryginalnej. Można teraz przypisywać zmienną o poprawnej wartości funkcji VarType do elementów tablicy zawartej w zmiennej typu Variant.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


W module obiektu nie można zdefiniować typu o zasięgu Public.

Typ zdefiniowany przez użytkownika znajdujący się w module obiektu nie może być opatrzony kwalifikatorem Public. Ten błąd ma następującą przyczynę i rozwiązanie:

•	W module obiektu usiłowano określić typ zdefiniowany przez użytkownika jako Public.

Przenieś definicję tego typu do modułu standardowego, a następnie zadeklaruj zmienne odpowiednich typów w module obiektu lub w innych modułach. Jeśli typ ma być dostępny wyłącznie w swoim module, można umieścić jego definicję Type...End Type w module obiektu i poprzedzić ją słowem kluczowym Private.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można wyświetlić ukrytej procedury.

Cała zawartość ukrytego modułu jest ukryta. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Usiłowano obejrzeć procedurę znajdującą się w ukrytym module.

Aby obejrzeć procedurę, należy odkryć ten moduł. Aby obejrzeć wiersz będący źródłem błędu, uruchom ponownie kod programu po odkryciu modułu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można dokonać edycji modułu.

Moduły oznaczone jako chronione mogą być oglądane, lecz nie można ich poddawać edycji. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Usiłowano dokonać edycji modułu chronionego.

Usuń ochronę z modułu i następnie spróbuj ponownie dokonać edycji.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Teraz nie można wprowadzić programu w tryb przerwania.

Tryb przerwania jest stanem, w którym program jest uruchomiony, lecz zawieszony. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Usiłowano wejść w tryb przerwania przez naciśnięcie klawiszy CTRL+BREAK, przycisku Przerwij na pasku narzędzi standardowych lub na pasku narzędzi do analizy programu, lub też przez wykonanie punktu przerwania w wykonywanym kodzie programu.

Dokonano programowej zmiany w projekcie przy zastosowaniu rozszerzonego (przez dodatki) modelu obiektów. Uniemożliwia to zawieszenie wykonywania działania programu. Można kontynuować wykonywanie programu lub je zakończyć, lecz nie można programu zawiesić.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


W trybie projektowania nie można wykonywać instrukcji bezpośrednich.

Czas projektowania jest to czas, w którym kod programu nie jest wykonywany, lub też jest zawieszony i oczekuje na podjęcie wykonywania. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Usiłowano wykonać instrukcję w oknie Instrukcje bezpośrednie, lecz program nie znajduje się w trybie wykonywania.

Rozpocznij wykonywanie programu, po czym go zawieś. Następnie możesz przystąpić do wykonywania kodu programu w oknie Instrukcje bezpośrednie.

W celu uzyskania dodatkowych informacji umieść kursor w oknie Instrukcje bezpośrednie i naciśnij klawisz F1.


Nie można odnaleźć projektu lub biblioteki.

Nie można uruchomić kodu programu, dopóki nie zostaną ustalone wszystkie odwołania. Ten błąd ma następujące przyczyny i rozwiązania:

•	Nie można znaleźć projektu wskazywanego lub wskazywanej biblioteki obiektowej, odpowiadających językowi projektu.

Nie ustalone odwołania są w oknie dialogowym Odwołania poprzedzone słowem BRAKUJE. Zaznacz brakujące odwołanie w celu wyświetlenia ścieżki i języka brakującego projektu lub biblioteki. W celu ustalenia odwołania lub odwołań należy wykonać następujące kroki:

Aby ustalić odwołania:

1	Wyświetl okno dialogowe Odwołania.

2	Zaznacz brakujące odwołanie.

3	Uruchom Przeglądarkę obiektów.

4	Użyj okna dialogowego Przeglądaj w celu znalezienia brakującego odwołania.

5	Kliknij przycisk OK.

6	Powtórz poprzednie kroki w celu ustalenia pozostałych brakujących odwołań.

Po znalezieniu brakującego elementu słowo BRAKUJE znika, co świadczy, że ponownie nawiązano połączenie. Jeśli uległa zmianie nazwa pliku ze wskazywanym projektem, zostaje dodane nowe odwołanie, a stare odwołanie musi zostać usunięte.

W celu usunięcia niepotrzebnego odwołania wystarczy wyczyścić pole wyboru znajdujące się obok niego. Zauważmy, że nie można usunąć odwołań do biblioteki obiektów systemu Visual Basic i do biblioteki obiektów aplikacji głównej.

Aplikacje mogą obsługiwać rozmaite wersje językowe swych bibliotek obiektów. Aby dowiedzieć się, jaka wersja językowa jest wymagana, należy kliknąć odwołanie i sprawdzić, jaki język jest wymieniony u dołu okna dialogowego.

Biblioteki obiektów mogą być samodzielnymi plikami o rozszerzeniu OLB lub też mogą wchodzić w skład biblioteki dołączanej dynamicznie. Mogą istnieć różne wersje bibliotek dla różnych platform. Dlatego też przy przenoszeniu projektu na inną platformę, na przykład z systemu Macintosh do systemu Microsoft Windows, należy sprawdzić w dokumentacji aplikacji, czy dla docelowej platformy istnieją prawidłowe wersje językowe wskazywanej biblioteki.

Nazwy plików bibliotek obiektów są zazwyczaj tworzone w następujący sposób:

•	Windows (wersja 3.1 i starsze): Kod aplikacji + Kod języka + [Wersja].OLB. Na przykład:

Biblioteka obiektów dla francuskiej wersji programu Visual Basic for Applications, wersja 2, nosi nazwę vafr2.olb.

Biblioteka obiektów dla francuskiej wersji programu Microsoft Excel 5.0 nosi nazwę xlfr50.olb.

•	Macintosh: Nazwa aplikacji Kod języka [Wersja] OLB. Na przykład:

Biblioteka obiektów dla francuskiej wersji systemu Visual Basic for Applications, wersja 2, nosi nazwę VA FR 2 OLB.

Biblioteka obiektów dla francuskiej wersji programu Microsoft Excel 5.0 nosi nazwę MS Excel FR 50 OLB.

Jeżeli w systemie nie można znaleźć wskazywanego projektu lub biblioteki, należy skontaktować się z autorem projektu wskazującego. Jeśli brakującą biblioteką jest biblioteka obiektów aplikacji firmy Microsoft, można uzyskać ją w następujący sposób:

•	Jeśli masz dostęp do elektronicznego serwisu technicznego firmy Microsoft, przeczytaj punkt poświęcony obsłudze technicznej znajdujący się w tym pliku Pomocy. Znajdują się tam instrukcje, w jaki sposób skorzystać z właściwych opcji tego serwisu.

•	Jeśli nie masz dostępu do elektronicznego serwisu technicznego firmy Microsoft, można od firmy Microsoft otrzymać na żądanie biblioteki obiektów w postaci not aplikacyjnych. Informacje o sposobie nawiązania kontaktu z lokalnym przedstawicielstwem firmy Microsoft również można znaleźć w punkcie poświęconym obsłudze technicznej w tym pliku Pomocy.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można wykonać instrukcji Get lub Put na zmiennej obiektowej lub zmiennej typu zdefiniowanego przez użytkownika zawierającej
Nie można wykonać instrukcji Get lub Put na zmiennej obiektowej lub zmiennej typu zdefiniowanego przez użytkownika zawierającej odwołanie do obiektu.

Odwołanie do obiektu jest tymczasowe i może stać się nieaktualne między otwarciem a zamknięciem pliku. Ten błąd ma następujące przyczyny i rozwiązania:

•	Zmienna w instrukcji Get lub Put zawiera odwołanie do obiektu lub jest zadeklarowana jako mogąca zawierać takie odwołanie.

Jeśli zmienna zawiera odwołanie do obiektu, to nie może być użyta w instrukcjach Get i Put. Aby umieścić w pliku wartość jednej lub kilku właściwości obiektu, należy oddzielnie określić każdą właściwość.

•	Zmienna typu zdefiniowanego przez użytkownika w instrukcji Get lub Put zawiera element będący odwołaniem do obiektu.

Jeśli instrukcja Type dla zmiennej zawiera element reprezentujący obiekt (na przykład zdefiniowany w module klasy, typu Obiekt, będący formularzem lub formantem itp.), należy usunąć go z definicji lub zdefiniować nowy typ dopuszczalny przez instrukcje Get i Put, nie zawierający w swej definicji elementu typu Object.

Jeśli zdefiniowany przez użytkownika typ zawiera elementy typu Variant, upewnij się, że do tych elementów nie przypisano żadnych odwołań do obiektu. Element typu Variant dopuszcza takie przypisanie, lecz jeśli typ zdefiniowany przez użytkownika zostanie użyty w instrukcjach Get lub Put, to wystąpi ten błąd.

Zauważmy, że do zapisu na dysku domyślnych właściwości obiektu można użyć instrukcji Input #, Line Input #, Print # lub Write #.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można załadować modułu; format jest nieprawidłowy.

Moduł musi być w formacie tekstowym. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Jako moduł usiłowano załadować plik w formacie binarnym.

Niektóre wersje systemu Visual Basic umożliwiają zapisanie kodu programu zarówno w formacie binarnym, jak i tekstowym. Jeśli jest to możliwe, załaduj na nowo pliki w aplikacji, przez którą były zapisane, i zapisz je w formacie tekstowym.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można dokonać przypisania do właściwości przeznaczonej tylko do odczytu.

Nie można przypisywać wartości do niektórych właściwości. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Usiłowano przypisać wartość do właściwości, która nie dopuszcza operacji przypisania.

W niektórych przypadkach można dokonać przypisania do właściwości tylko w określonych okolicznościach. Na przykład, właściwość może akceptować przypisanie wyłącznie w czasie projektowania, lecz nie w czasie wykonywania. Sprawdź w temacie Pomocy dotyczącym konkretnej właściwości, czy i kiedy można przypisać do niej wartość.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można wykonać żądanej operacji, gdyż moduł jest ukryty.

Ten błąd odnosi się do rozszerzonego (przez dodatki) modelu obiektów. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Moduł jest ukryty. Nie można modyfikować ukrytego modułu lub pobierać od niego informacji.

Odkryj moduł i wykonaj ponownie operację.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można ustawić warunkowego punktu przerwania w tablicy.

Tablica nie ma pojedynczej wartości. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Usiłowano ustawić warunkowy punkt przerwania (czasami zwany punktem czujki), który zawiesiłby wykonywanie programu po zmianie zawartości całej tablicy.

Ustaw warunkowy punkt przerwania na konkretnym elemencie tablicy.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można rejestrować do uruchomionego modułu.

W celu rozpoczęcia rejestracji należy zakończyć wykonywanie programu. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Usiłowano zarejestrować makro podczas wykonywania kodu modułu.

Przerwij wykonywanie lub naciśnij klawisze CTRL+BREAK, a następnie włącz rejestrację.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można usunąć odwołania domyślnego.

Odwołanie domyślne istnieje zawsze. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Usiłowano usunąć odwołanie, które musi być zawsze dostępne, jak na przykład odwołanie do biblioteki typów lub biblioteki obiektowej.

Nie należy podejmować próby usunięcia tych odwołań.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Instrukcja Case Else poza blokiem Select Case.

Instrukcja Case Else może wystąpić wyłącznie między odpowiadającą sobie parą instrukcji Select Case i End Select. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Instrukcja Case Else została umieszczona poza blokiem Select Case...End Select.

Przenieś instrukcję Case Else do wnętrza bloku Select Case...End Select.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Instrukcja Case bez instrukcji Select Case.

Instrukcja Case może wystąpić wyłącznie między odpowiadającą sobie parą instrukcji Select Case i End Select. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Nie można znaleźć instrukcji Select Case odpowiadającej instrukcji Case.

Sprawdź, czy inne instrukcje sterujące znajdujące się wewnątrz struktury Select Case...Case posiadają odpowiadające sobie elementy. Ten błąd może być na przykład spowodowany zawartą w strukturze Select Case...End Select instrukcją If pozbawioną odpowiadającej jej instrukcji End If.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Cykliczne zależności między modułami.

Niedozwolone są cykliczne zależności między modułami, stałymi i typami zdefiniowanymi przez użytkownika. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Typ lub stała zdefiniowana przez użytkownika w jednym module odwołują się do znajdującego się w innym module zdefiniowanego przez użytkownika typu lub stałej, które z kolei odwołują się do innego zdefiniowanego przez użytkownika typu lub stałej znajdujących się w pierwszym module.

Usuń wzajemnie od siebie zależne odwołania.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Klasa musi implementować wszystkie procedury interfejsu.

Interfejs jest kolekcją nie zaimplementowanych prototypów procedur. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Za pomocą instrukcji Implements określono interfejs, lecz nie dodano kodu do wszystkich procedur interfejsu.

Dla wszystkich procedur określonych w interfejsie należy napisać kod programu. Pusta procedura nie jest wystarczająca. Można uniknąć tego błędu, umieszczając komentarze w procedurze; procedura powinna implementować wymagane działanie.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Wykonywanie kodu programu zostało przerwane.

W razie potrzeby wykonanie kodu programu może zostać przerwane. Ten warunek ma następującą przyczynę i rozwiązanie:

•	Naciśnięto klawisze CTRL+BREAK (Microsoft Windows), ESC (Microsoft Excel) lub COMMAND+KROPKA (Macintosh).

W oknie dialogowym z komunikatem o błędzie kliknij przycisk Analiza programu w celu przejścia do trybu przerwania, przycisk Kontynuuj w celu ponownego uruchomienia programu, lub przycisk Zakończ w celu zakończenia wykonywania programu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Błąd kompilacji w ukrytym module: <nazwa modułu>.

Chroniony moduł nie może być wyświetlany. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Wystąpił błąd kompilacji w kodzie określonego modułu, lecz nie może on zostać wyświetlony, gdyż projekt jest chroniony.

Usuń ochronę z projektu i następnie uruchom ponownie kod programu w celu obejrzenia informacji o błędzie.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Wymagane jest wyrażenie stałe.

Stała musi być zainicjowana. Ten błąd ma następujące przyczyny i rozwiązania:

•	Usiłowano zainicjować stałą, używając do tego zmiennej, wystąpienia typu zdefiniowanego przez użytkownika, obiektu lub wartości zwracanej przez funkcję.

Wartość stała powinna być zainicjowana przez literały, uprzednio zadeklarowane wartości stałe, lub też literały i wartości stałe połączone operatorami (z wyjątkiem operatora logicznego Is).

•	Usiłowano zadeklarować tablicę, używając zmiennej do deklaracji liczby elementów.

W celu zadeklarowania w procedurze tablicy dynamicznej należy zadeklarować tablicę instrukcją ReDim i określić liczbę elementów za pomocą zmiennej.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Stałe, ciągi o stałej długości, tablice i instrukcje Declare nie są dozwolone jako składowe publiczne modułów obiektu.

Nie wszystkie zmienne w module obiektu mogą być zadeklarowane jako Public. Jednak procedury są domyślnie deklarowane jako Public, a procedury typu Property mogą być używane do symulacji zmiennych (pozwala na to składnia). Ten błąd ma następujące przyczyny i rozwiązania:

•	W module obiektu zadeklarowano stałą jako Public.

Aczkolwiek w module obiektu nie można zadeklarować wyrażenia stałego jako Public, to można utworzyć procedurę Property Get o tej samej nazwie. Jeśli nie utworzono procedur Property Let lub Property Set o tej samej nazwie, praktycznie utworzono właściwość przeznaczoną tylko do odczytu, która może być używana tak samo, jak wyrażenie stałe.

•	W module obiektu zadeklarowano ciąg o stałej długości jako Public.

Można symulować ciągi o stałej długości, używając do tego celu zestawu procedur Property, które albo obcinają ciąg danych, gdy przekroczy on dozwoloną długość, albo informują użytkownika o przekroczeniu tej długości.

•	W module obiektu zadeklarowano tablicę jako Public.

Procedura nie może zwracać tablicy, może jednak zwrócić zmienną typu Variant zawierającą tablicę. Aby zasymulować tablicę Public w module klasy, należy użyć zestawu procedur Property przyjmujących i zwracających zmienną typu Variant zawierającą tablicę.

•	W module obiektu umieszczono instrukcję Declare.

Instrukcje Declare są domyślnie publiczne. Poprzedź instrukcję Declare słowem kluczowym Private.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Bieżący moduł nie obsługuje metody Print.

Nie wszystkie metody i właściwości mogą występować we wszystkich modułach. Ten błąd ma następujące przyczyny i rozwiązania:

•	Usiłowano użyć metody Print w stosunku do obiektu, który nic nie wyświetla. Na przykład, w module standardowym. nie można użyć metody Print bez kwalifikatora

Usuń odwołanie do metody Print lub też użyj odpowiedniego obiektu jako kwalifikatora. Na przykład, można użyć obiektu Debug jako kwalifikatora, który wyświetli swe argumenty w oknie bezpośrednim podczas analizy programu.

•	Usiłowano użyć metod Line, Circle, PSet lub Scale w stosunku do obiektu, który ich nie akceptuje. Na przykład, te metody nie mogą występować bez kwalifikatorów w module standardowym lub w module klasy automatyzacji.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Cykliczne odwołania do projektów nie są dozwolone.

Nie są dozwolone cykliczne odwołania do projektu. Na przykład, jeśli projekt MójProj odwołuje się do projektu TwójProj, wtedy projekt TwójProj (lub projekt odwołujący się do projektu TwójProj) nie może odwoływać się do projektu MójProj. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Usiłowano dodać odwołanie do projektu, który jest już częścią projektu.

Usuń odwołanie lub odwołania cykliczne.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Definicje procedur właściwości dla tej samej właściwości są niespójne bądź zawierają parametry nieobowiązkowe lub typu
Definicje procedur właściwości dla tej samej właściwości są niespójne bądź zawierają parametry nieobowiązkowe lub typu ParamArray.

Parametry procedur Property Get, Property Let i Property Set dla tej samej właściwości muszą dokładnie sobie odpowiadać, z wyjątkiem procedury Property Let posiadającej jeden dodatkowy parametr, którego typ musi odpowiadać typowi zwracanemu przez odpowiednią procedurę Property Get, oraz procedury Property Set, która ma o jeden parametr więcej niż odpowiednia procedura Property Get i którego typem jest Variant, Object, nazwa klasy lub typ biblioteki obiektów określony w bibliotece obiektowej. Ten błąd ma następujące przyczyny i rozwiązania:

•	Liczba parametrów procedury Property Get nie jest mniejsza o jeden od liczby parametrów w odpowiadających jej procedurach Property Let lub Property Set.

Dodaj parametr do procedur Property Let lub Property Set albo usuń parametr z procedury Property Get.

•	Typy parametrów procedury Property Get muszą dokładnie się zgadzać z odpowiadającymi im parametrami procedur Property Let lub Property Set, z wyjątkiem dodatkowego parametru w procedurze Property Set.

Zmodyfikuj deklarację parametrów w procedurach tak, by były ze sobą zgodne.

•	Typ dodatkowego parametru procedury Property Let musi zgadzać się z typem zwracanym przez odpowiednią procedurę Property Get.

Zmodyfikuj deklarację dodatkowego parametru w procedurze Property Let lub typ parametru zwracanego przez odpowiednią procedurę Property Get. Te parametry muszą być ze sobą zgodne.

•	Typ dodatkowego parametru procedury Property Set może się różnić od typu zwracanego przez odpowiednią procedurę Property Get, lecz musi być to typ Variant, Object, nazwa klasy lub poprawny typ biblioteki obiektowej.

Upewnij się, że dodatkowy parametr procedury Property Set jest typu Variant, Object, nazwą klasy lub biblioteką obiektów.

•	Zdefiniowano procedurę Property z parametrem określonym jako Optional lub ParamArray.

Parametry określone jako ParamArray i Optional nie są dozwolone w procedurach Property. Zmień tak definicje procedur, by nie wystąpiły te słowa kluczowe.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Deklaracje muszą być poprzedzone instrukcjami Deftyp.

Do instrukcji Deftyp zaliczane są instrukcje DefInt, DefDbl, DefCur itp. Ten błąd ma następujące przyczyny i rozwiązania:

•	Na poziomie modułu deklaracja zmiennej poprzedza instrukcję Deftyp.

Przenieś instrukcję Deftyp przed wszystkie deklaracje zmiennych.

•	Instrukcja Deftyp znajduje się w procedurze.

Przenieś instrukcję Deftyp na poziom modułu w ten sposób, by poprzedzała wszystkie deklaracje zmiennych.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Etykieta docelowa znajduje się zbyt daleko; pętla, blok Select Case lub blok If są zbyt duże.

Procedury mogą osiągać rozmiar 64 KB, lecz ponieważ mogą występować w nich rozgałęzienia w tył i w przód, zasięg takiego rozgałęzienia jest ograniczony do 32 767 bajtów w każdym kierunku. Ten błąd ma następujące przyczyny i rozwiązania:

•	W procedurze istnieje instrukcja rozgałęziająca (GoTo, GoSub) przenosząca sterowanie dalej niż o 32 767 bajtów od miejsca wystąpienia tej instrukcji.

Przenieś bliżej etykietę lub zmniejsz procedurę.

•	W procedurze istnieje bardzo duża struktura pętli zajmująca więcej niż 32 KB pamięci.

Zmniejsz pętlę.

•	W procedurze istnieje bardzo duży blok struktury If zawierający klauzulę Then lub Else zajmującą więcej niż 32 KB pamięci.

Zmniejsz rozmiar tej części struktury, która powoduje błąd.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Instrukcja Do bez instrukcji Loop.

Po każdej instrukcji Do musi następować kończąca ją instrukcja Loop. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Użyto instrukcji Do bez kończącej ją instrukcji Loop.

Sprawdź, czy inne struktury sterowania znajdujące się wewnątrz struktury Do...Loop są prawidłowo zakończone. Na przykład, powodem tego błędu może być blok If bez kończącej go instrukcji End If umieszczony wewnątrz struktury Do...Loop.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Deklaracja powtórzona w bieżącym zasięgu.

Podana nazwa jest już używana na tym poziomie zakresu. Na przykład, dwie zmienne mogą mieć tę samą nazwę, jeśli są zdefiniowane w różnych procedurach, lecz nie wtedy, gdy są zdefiniowane w tej samej procedurze. Ten błąd ma następujące przyczyny i rozwiązania:

•	Nowa zmienna lub procedura ma taką samą nazwę, jak już istniejąca zmienna lub procedura. Na przykład:

Sub MojaProcedura()

Dim A As Integer

Dim A As Variant

. . .	' Tu w kodzie procedury następują inne deklaracje.

End Sub

Sprawdź bieżącą procedurę, moduł lub projekt i usuń powtarzające się deklaracje.

•	W instrukcji Const użyto tej samej nazwy, co istniejąca zmienna lub procedura.

Usuń lub zmień nazwę stałej.

•	Zadeklarowano stałą tablicę więcej niż raz.

Usuń lub zmień nazwę jednej z tablic.

Trzeba poszukać powtarzających się nazw. Przy określaniu poszukiwanej nazwy należy opuszczać wszystkie znaki deklaracji typu, gdyż konflikt występuje także wtedy, gdy nazwy są takie same, a różne są znaki deklaracji typu.

Zauważmy, że zmienna poziomu modułu może mieć taką samą nazwę jak zmienna zadeklarowana w procedurze, lecz gdy chcemy odwołać się z wnętrza procedury do zmiennej z poziomu modułu, to musimy opatrzyć nazwę kwalifikatorem nazwy modułu. Nazwy modułów i nazwy projektów wskazywanych mogą być ponownie używane jako nazwy zmiennych w procedurach i mogą również być opatrywane kwalifikatorami.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Powtórzona definicja.

Zdefiniowana warunkowa stała kompilatora może mieć tylko jedną wartość. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Określono dwie różne wartości dla tej samej warunkowej stałej kompilacji, na przykład:

#Const Mac = 0

#Const Mac = 1

Usuń jedną z tych definicji.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Powtórzona instrukcja Deftyp.

Instrukcje Deftyp znajdujące się w tym samym zakresie muszą określać unikatowe zakresy liter. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Część lub cały zakres liter tej instrukcji Deftyp występuje już w innej instrukcji Deftyp.

Przepisz instrukcję tak, by zakresy liter nie zachodziły na siebie.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Powtórne użycie instrukcji Option.

W każdym module może znajdować się tylko jedna instrukcja Option każdego rodzaju. Ten błąd ma następującą przyczynę i rozwiązanie:

•	W tym module zdefiniowano więcej niż jedną instrukcję Option Base, Option Compare, Option Explicit lub Option Private.

Usuń z modułu powtórzone definicje.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Edycji nie można cofnąć. Czy mimo to kontynuować?

Po dokonaniu edycji nie będzie można wybrać polecenia Cofnij w celu przywrócenia bieżącego stanu. Ta sytuacja ma następującą przyczynę i rozwiązanie:

•	Przypuszczalnie zmiany są zbyt duże, by móc je zapamiętać.

Spróbuj dokonać serii mniejszych zmian.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Instrukcja Else bez instrukcji If.

Instrukcja Else musi być poprzedzona instrukcją If. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Użyto instrukcji Else bez odpowiadającej jej instrukcji If.

Sprawdź, czy inne struktury sterowania zawarte wewnątrz struktury If...End If są prawidłowo zakończone. Sprawdź również, czy blok If jest prawidłowo sformatowany.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Pusty typ Enum nie jest dozwolony.

Typ Enum określa nazwę i elementy wyliczenia. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Nadano nazwę wyliczeniu w bloku Enum…End Enum, lecz nie określono jego elementów.

Dodaj co najmniej jeden element do bloku Enum…End Enum.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Puste wyrażenie czujki

W oknie dialogowym Dodaj czujkę należy podać wyrażenie. Ten błąd ma następującą przyczynę i rozwiązanie:

•	W oknie dialogowym Dodaj czujkę nie podano wyrażenia czujki.

Podaj wyrażenie w oknie dialogowym Dodaj czujkę lub naciśnij klawisz ESC.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Instrukcja End If bez bloku If.

Instrukcja End If musi być poprzedzona instrukcją If. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Pominięto klauzulę If lub jest ona oddzielona od instrukcji End If.

Sprawdź, czy inne struktury sterowania zawarte wewnątrz struktury If...End If są prawidłowo zakończone. Sprawdź również, czy blok If jest prawidłowo sformatowany.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Osiągnięto koniec przeszukiwanego zasięgu. Czy kontynuować poszukiwanie od początku?

Poszukiwanie zakończyło się niepowodzeniem. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Podczas poszukiwania w dół (w przód) osiągnięto koniec podanego zasięgu.

Można kontynuować poszukiwanie od początku zasięgu przeszukiwania lub anulować operację i zmienić zasięg poszukiwania.


Instrukcja End Select bez instrukcji Select Case.

Instrukcja End Select musi być poprzedzona instrukcją Select Case. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Użyto instrukcji End Select bez odpowiadającej jej instrukcji Select Case.

Ten błąd jest spowodowany najczęściej wystąpieniem dodatkowej instrukcji End Select za instrukcją Select Case lub też pozostawieniem instrukcji End Select podczas kopiowania bloku Select Case z jednej procedury do innej. Sprawdź, czy każda instrukcja End Select kończy jakąś strukturę Select Case.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Instrukcja End With bez instrukcji With.

Instrukcja End With musi być poprzedzona instrukcją With. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Użyto instrukcji End With bez odpowiadającej jej instrukcji With.

Sprawdź, czy inne struktury sterowania zawarte wewnątrz struktury With...End With są prawidłowo zakończone. Na przykład, przyczyną tego błędu może być znajdująca się wewnątrz struktury With...End With instrukcja If bez odpowiadającej jej instrukcji End If.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Błąd przy próbie dostępu do rejestru systemu.

Niektóre operacje wymagają dostępu do rejestracyjnej bazy danych systemu. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Rejestracyjna baza danych systemu jest uszkodzona.

Uruchom ponownie program instalacyjny aplikacji głównej.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowa procedura obsługi zdarzeń

Lista parametrów procedury obsługi zdarzeń musi dokładnie odpowiadać deklaracji zdarzenia. Ten błąd ma następujące przyczyny i rozwiązania:

•	Procedura obsługi zdarzeń ma nieprawidłową liczbę parametrów.

Usuń zbędne parametry lub dodaj brakujące.

•	Jeden lub kilka parametrów procedury obsługi zdarzeń ma nieprawidłowe typy danych.

Upewnij się, że typy parametrów odpowiadają definicji zdarzenia.

•	Procedura obsługi zdarzenia jest typu Function, a nie Sub.

Zmień typ procedury na Sub. Procedura obsługi zdarzeń nie może zwracać wartości.

•	Inna biblioteka typów używa nazwy zdarzenia jako nazwy własnego typu.

W celu uniknięcia niejednoznaczności dokonaj kwalifikacji nazwy za pomocą nazwy odpowiedniej biblioteki typów.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Deklaracja procedury obsługi zdarzeń nie jest zgodna z opisem zdarzenia o tej samej nazwie.

W module klasy znajduje się procedura o nazwie powodującej konflikt z nazwą zdarzenia. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Procedura ma taką samą nazwę, jak zdarzenie, lecz nie ma tej samej sygnatury (to znaczy liczby i typów parametrów). Może to wystąpić, jeśli do procedury obsługi zdarzeń dodano nowy parametr. Na przykład, jeśli zmodyfikowano definicję procedury obsługi zdarzenia Form_Load dla formularza w sposób zaprezentowany poniżej, to wystąpi ten błąd:

Sub Form_Load (MójParametr As Integer)

. . .

End Sub

.

Jeśli procedura nie jest procedurą obsługi zdarzeń odpowiadającą temu zdarzeniu, zmień jej nazwę. Jeśli procedura odpowiada temu zdarzeniu, upewnij się, że lista parametrów odpowiada parametrom wymaganym przez to zdarzenie (jeśli jakiekolwiek parametry są wymagane).

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Instrukcja Exit Do poza blokiem Do...Loop.

Instrukcja Exit Do może wystąpić wyłącznie wewnątrz instrukcji Do...Loop. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Użyto instrukcji Exit Do poza instrukcją Do...Loop.

Upewnij się, że przed instrukcją Exit Do występuje poprawna instrukcja Do.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Instrukcja Exit For poza blokiem For...Next.

Instrukcja Exit For może wystąpić wyłącznie wewnątrz instrukcji For...Next. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Użyto instrukcji Exit For poza instrukcją For...Next.

Upewnij się, że przed instrukcją Exit For występuje poprawna instrukcja For.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Stosowanie instrukcji Exit Function wewnątrz procedur Sub lub Property jest niedozwolone.

Instrukcja Exit musi odpowiadać rodzajowi procedury, w której występuje. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Użyto instrukcji Exit Function w procedurze Sub lub Property.

Dla tego rodzaju procedur używaj instrukcji Exit Sub lub Exit Property.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Stosowanie instrukcji Exit Property wewnątrz procedur Function lub Sub jest niedozwolone.

Instrukcja Exit musi odpowiadać rodzajowi procedury, w której występuje. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Użyto instrukcji Exit Property w procedurze Sub lub Property.

Dla tego rodzaju procedur używaj instrukcji Exit.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Stosowanie instrukcji Exit Sub wewnątrz procedur Function lub Property jest niedozwolone.

Instrukcja Exit musi odpowiadać rodzajowi procedury, w której występuje. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Użyto instrukcji Exit Sub w procedurze Function lub Property.

Dla tego rodzajowi procedur używaj instrukcji Exit.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Oczekiwano tablicy.

Nazwa zmiennej z indeksem wskazuje, że zmienna jest tablicą. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Podana przez użytkownika składnia jest właściwa dla tablicy, lecz w zakresie nie ma tablicy o tej nazwie.

Sprawdź, czy pisownia nazwy tablicy jest poprawna. Jeśli moduł nie zawiera instrukcji Option Explicit, to zmienna jest tworzona po napotkaniu jej nazwy. Jeśli nieprawidłowo napisano nazwę zmiennej tablicowej, to zostanie utworzona zmienna nie będąca tablicą.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Oczekiwano instrukcji End Function.

Instrukcja End procedura musi odpowiadać rodzajowi procedury, w której występuje. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Do zakończenia procedury Function użyto instrukcji End Property lub End Sub.

Dla tego rodzaju procedur używaj instrukcji End Function.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Oczekiwano instrukcji End Property.

Instrukcja End procedura musi odpowiadać rodzajowi procedury, w której występuje. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Do zakończenia procedury Property użyto instrukcji End Function lub End Sub.

Dla tego rodzaju procedury używaj instrukcji End Property.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Oczekiwano instrukcji End Sub.

Instrukcja End procedura musi odpowiadać rodzajowi procedury, w której występuje. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Do zakończenia procedury Sub użyto instrukcji End Function lub End Property.

Dla tego rodzaju procedur używaj instrukcji End Sub.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Oczekiwano instrukcji End With.

Blok With musi być prawidłowo zakończony. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Blok With nie jest prawidłowo zakończony.

Umieść instrukcję End With na końcu bloku.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Oczekiwano procedury Function lub zmiennej.

Składnia instrukcji wskazuje na użycie zmiennej lub wywołania funkcji. Ten błąd ma następujące przyczyny i rozwiązania:

•	Podana nazwa nie jest znaną zmienną lub procedurą Function.

Sprawdź pisownię nazwy. Upewnij się, że zmienna lub funkcja o tej nazwie jest widoczna w tym miejscu programu, w którym jej użyto. Na przykład, jeśli funkcja jest zdefiniowana jako Private lub zmienna nie jest zdefiniowana jako Public, to są one widoczne jedynie w swoim module.

•	Usiłowano w nieprawidłowy sposób przypisać wartość do nazwy procedury. Na przykład, jeśli MojaProcedura jest procedurą typu Sub, to poniższy kod wygeneruje ten błąd:

MojaProcedura = 237	' Powoduje błąd "Oczekiwano funkcji lub zmiennej"

Chociaż jest możliwe użycie składni instrukcji przypisania z procedurą Property Let lub też z procedurą typu Function zwracającą obiekt lub zmienną typu Variant zawierającą obiekt, to nie można stosować składni instrukcji przypisania z procedurami Sub, Property Get i Property Set.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Oczekiwano procedury, a nie modułu.

W bieżącym zakresie nie ma procedury o tej nazwie, lecz jest tak samo nazywający się moduł. Można wywołać procedurę, ale nie moduł. Ten błąd ma następujące przyczyny i rozwiązania:

•	Jako wywołanie procedury użyto nazwy modułu.

Sprawdź pisownię nazwy procedury i upewnij się, że wywoływana procedura nie jest prywatną procedurą innego modułu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Oczekiwano procedury, a nie projektu lub biblioteki.

W bieżącym zakresie nie ma procedury o tej nazwie, lecz jest tak samo nazywający się projekt. Można wywołać procedurę, ale nie projekt. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Jako wywołanie procedury użyto nazwy projektu.

Sprawdź pisownię nazwy procedury i upewnij się, że wywoływana procedura nie jest prywatną procedurą innego modułu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Oczekiwano procedury, a nie typu zdefiniowanego przez użytkownika.

W bieżącym zakresie nie ma procedury o tej nazwie, lecz jest tak samo nazywający się typ zdefiniowany przez użytkownika. Można wywołać procedurę, ale nie typ zdefiniowany przez użytkownika. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Jako wywołanie procedury użyto nazwy typu zdefiniowanego przez użytkownika.

Sprawdź pisownię nazwy procedury i upewnij się, że wywoływana procedura nie jest prywatną procedurą innego modułu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Oczekiwano procedury, a nie zmiennej.

W bieżącym zakresie nie ma procedury o tej nazwie, lecz jest tak samo nazywająca się zmienna. Można wywołać procedurę, ale nie zmienną. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Jako wywołanie procedury użyto nazwy zmiennej.

Ten błąd może być też spowodowany niepoprawną pisownią nazwy istniejącej procedury, co mogło spowodować utworzenie niejawnie definiowanej zmiennej. Sprawdź poprawność pisowni nazwy procedury i upewnij się, że wywoływana procedura nie jest prywatną procedurą innego modułu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Oczekiwano instrukcji Sub, Function lub Property.

Składnia instrukcji wskazuje na wywołanie procedury Sub, Function lub Property. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Podana nazwa nie jest nazwą procedury Sub, Function lub Property będącej w zakresie tej części programu.

Sprawdź pisownię nazwy. Zauważmy, że jeśli procedura jest zdefiniowana jako Private, to może być wywoływana wyłącznie ze swego modułu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Oczekiwano typu zdefiniowanego przez użytkownika, a nie projektu.

W bieżącym zakresie nie ma typu zdefiniowanego przez użytkownika o tej nazwie, lecz jest tak samo nazywający się projekt. Można zdefiniować zmienną typu zdefiniowanego przez użytkownika, lecz nie typu projekt. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Nazwa projektu jest używana jako typ zdefiniowany przez użytkownika.

Sprawdź pisownię nazwy typu zdefiniowanego przez użytkownika i upewnij się, że ten typ nie jest typem prywatnym w innym module.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Oczekiwano zmiennej lub procedury, a nie typu Enum.

Nazwa typu Enum występuje tylko w instrukcji deklarującej wyliczenie typu lub jako kwalifikator. Ten błąd ma następujące przyczyny i rozwiązania:

•	Użyto nazwy typu Enum zamiast nazwy zmiennej wyliczeniowej tego typu.

Zadeklaruj zmienną typu Enum lub znajdź poprzednią deklarację w bieżącym zakresie i użyj tej zmiennej.

•	Użyto nazwy typu Enum zamiast nazwy zmiennej lub procedury.

Sprawdź pisownię identyfikatora powodującego błąd. Użyj nazwy zmiennej lub procedury, dla których określono typ Enum.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Oczekiwano zmiennej lub procedury, a nie modułu.

W bieżącym zakresie nie ma zmiennej lub procedury o tej nazwie, lecz jest tak samo nazywający się moduł. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Nazwa modułu została użyta jako zmienna lub procedura.

Sprawdź pisownię nazwy zmiennej lub procedury i upewnij się, że nazwa, do której nastąpiło odwołanie, nie jest prywatna w innym module. Nazwa modułu może służyć jako kwalifikator, lecz nie może występować samodzielnie.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Oczekiwano zmiennej lub procedury, a nie projektu.

W bieżącym zakresie nie ma zmiennej lub procedury o tej nazwie, lecz jest tak samo nazywający się projekt. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Nazwa projektu została użyta jako zmienna lub procedura.

Sprawdź pisownię nazwy zmiennej lub procedury i upewnij się, że nazwa, do której nastąpiło odwołanie, nie jest prywatna w innym module. Nazwa projektu może służyć jako kwalifikator, lecz nie może występować samodzielnie.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Oczekiwano: <różne>.

Nie znaleziono oczekiwanego elementu składni. Błąd występuje zazwyczaj na lewo od zaznaczonego elementu, lecz często nie jest to oczywiste. Na przykład, procedurę Sub można wywołać z użyciem słowa kluczowego Call lub bez niego. Jeśli słowo kluczowe Call zostanie użyte, lista argumentów musi być ujęta w nawiasy. Ten błąd ma następujące przyczyny i rozwiązania:

•	Expected: End of Statement. Nieprawidłowe użycie nawiasów w wywołaniu procedury:

X = Workbook.Add F:= 5	' Błąd spowodowany brakiem nawiasów.

Call MojaProcedura 5	' Błąd spowodowany brakiem nawiasów.

W wywołaniach funkcji z argumentami oraz w wywołaniach procedur Sub z użyciem słowa kluczowego Call należy używać nawiasów.

•	Expected: ). Nieprawidłowa składnia wywołania procedury. Na przykład wywołanie funkcji nie może występować samodzielnie, a w wywołaniu procedury Sub czasami wymagane jest słowo kluczowe Call, w zależności od sposobu specyfikacji argumentów.

Workbook.Add (X:=5, Y:=7)	' Wywołanie Function bez wyrażenia.

TwojaProcedura(5, 7)	' Wywołanie Sub bez instrukcji Call.

Wywołania funkcji muszą zawsze występować w wyrażeniach. Jeśli w wywołaniu procedury Sub występuje wiele argumentów ujętych w nawiasy, to należy użyć słowa kluczowego Call.

•	Expected: Expression. Przy wklejaniu kodu programu z Przeglądarki obiektów można zapomnieć o określeniu wartości nazwanego argumentu.

Workbook.Add (X:= )	' Błąd spowodowany brakiem przypisania wartości

' do nazwanego argumentu.

Należy podać wartość argumentu lub usunąć argument, jeśli jest on nieobowiązkowy.

•	Expected: Variable. Jako nazwy zmiennych mogły zostać użyte zastrzeżone słowo kluczowe. W następującym przykładzie instrukcja Input # jako swojego drugiego argumentu oczekuje zmiennej. Ponieważ Type jest zastrzeżonym słowem kluczowym, to nie może być użyte jako nazwa zmiennej.

Input # 1, Type	' Słowo kluczowe Type niepoprawnie użyte

' jako nazwa zmiennej.

Zmień nazwę zmiennej tak, by nie zachodził konflikt z zastrzeżonymi słowami kluczowymi.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nazwa zewnętrzna nie została zdefiniowana.

Do nazw zewnętrznych można się odwoływać, ujmując je w nawiasy kwadratowe ([ ]). Ten błąd ma następującą przyczynę i rozwiązanie:

•	Identyfikator ujęty w nawiasy kwadratowe nie ma znaczenia w aplikacji głównej.

Sprawdź pisownię nazwy, aby upewnić się, że jest ona taka, jak tego oczekuje aplikacja główna.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Ten format pliku nie jest już obsługiwany.

Nie wszystkie formaty plików są odczytywane w każdych okolicznościach. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Usiłowano załadować plik binarny utworzony za pomocą wcześniejszej wersji systemu Visual Basic.

Załaduj plik za pomocą wersji programu, przez którą został utworzony, zapisz go w formacie tekstowym i ponownie spróbuj go załadować.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Dane stałe lub statyczne mogą zajmować najwyżej 64 KB.

Do danych stałych i statycznych należą zmienne nieautomatyczne, ciągi o stałej długości i tablice o stałych wymiarach. Ten błąd ma następujące przyczyny i rozwiązania:

•	Usiłowano przydzielić więcej niż 64 KB danych na poziomie modułu.

Zmniejsz wielkość zadeklarowanych danych. Zauważmy, że chociaż wielkość danych na poziomie modułu jest ograniczona do 64 KB, to ciągi o zmiennej długości i tablice na poziomie modułu mogą przekraczać to ograniczenie.

•	Usiłowano przydzielić więcej niż 64 KB danych statycznych na poziomie procedury w module.

Zmniejsz wielkość zadeklarowanych danych. Całkowita wielkość danych statycznych we wszystkich procedurach w module nie może przekraczać 64 KB (ograniczenie to dotyczy wszystkich procedur, a nie jednej). Zauważmy, że statyczne ciągi o zmiennej długości i tablice mogą przekraczać to ograniczenie.

•	Rozmiar typu zdefiniowanego przez użytkownika przekracza 64 KB.

Zmniejsz wielkość typu zadeklarowanego przez użytkownika. Zazwyczaj rozmiar typu zadeklarowanego przez użytkownika równy jest sumie rozmiarów elementów składowych. Na niektórych platformach może być stosowane wypełnianie służące do wyrównywania danych do granicy słowa. Jeśli typy danych zdefiniowanych przez użytkownika są zagnieżdżone w sobie, to przy obliczaniu wielkości nowego typu musi być brany pod uwagę rozmiar typu zagnieżdżonego.

•	W procedurze usiłowano zadeklarować zmienną typu zdefiniowanego przez użytkownika, o rozmiarze przekraczającym 32 KB.

Aczkolwiek na poziomie modułu ograniczenie rozmiaru tego rodzaju zmiennej typu zdefiniowanego przez użytkownika wynosi 64 KB, to w procedurach zmienne tego rodzaju nie mogą przekraczać 32 KB. Zmniejsz rozmiar wymagany przez typ zdefiniowany przez użytkownika lub użyj zmiennej na poziomie modułu.

•	Zadeklarowany w procedurze rozmiar ciągu o stałej długości przekroczył 65 464.

Zmniejsz długość ciągu o stałej długości. Zauważmy, że ciągi o zmiennej długości mogą przekraczać to ograniczenie.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Zmienna sterująca For jest już wykorzystywana.

W przypadku zagnieżdżonych pętli For...Next należy w każdej pętli używać różnych zmiennych sterujących. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Wewnętrzna pętla For używa tego samego licznika, co otaczająca ją pętla For.

Sprawdź, czy w zagnieżdżonych pętlach nie występują powtórzenia. Na przykład, jeśli zewnętrzna pętla ma postać For Licz = 1 To 25, to wewnętrzna pętla nie może użyć zmiennej Licz jako zmiennej sterującej.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Zmienna sterująca pętli For Each musi być typu Variant lub Object.

Zmienna sterująca jest częścią element składni instrukcji For Each...Next. Ten błąd ma następujące przyczyny i rozwiązania:

•	Zmienna sterująca kolekcji nie jest typu Variant lub Object.

Upewnij się, że część element instrukcji For Each...Next jest typu Variant lub Object.

•	Zmienna sterująca tablicy nie jest typu Variant.

Upewnij się, że część element instrukcji For Each...Next jest typu Variant.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Zmienna sterująca pętli For Each działającej na tablicy musi być typu Variant.

Zmienna sterująca jest częścią element składni instrukcji For Each...Next. Ten błąd ma następujące przyczyny i rozwiązania:

•	Zmienna sterująca tablicy nie jest typu Variant.

Upewnij się, że część element instrukcji For Each...Next jest typu Variant.

•	W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Pętli For Each nie można stosować do tablic typu zdefiniowanego przez użytkownika ani do tablic ciągów o stałej długości.

Konstrukcje For Each mogą być stosowanie jedynie do kolekcji i tablic typów wbudowanych, w tym również do tablic obiektów. Również tablice ciągów o stałej długości mogą być literowane za pomocą instrukcji For Each. Ten błąd ma następujące przyczyny i rozwiązania:

•	Elementy tablicy w konstrukcji For Each są typu zdefiniowanego przez użytkownika.

Do iterowania elementów tej tablicy użyj zwykłej pętli For...Next.

•	Elementy tablicy w konstrukcji For Each są ciągami o stałej długości.

Do iterowania elementów tej tablicy użyj zwykłej pętli For...Next.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Pętla For Each może operować tylko na obiekcie typu kolekcja lub na tablicy.

Konstrukcja For Each może być stosowana jedynie do kolekcji i tablic. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Jako element grupa składni instrukcji For Each określono obiekt, który nie jest kolekcją ani tablicą.

Sprawdź pisownię elementu, który ma podlegać iteracji, i upewnij się, że odpowiada on kolekcji lub tablicy w zakresie tej części kodu programu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Instrukcja For bez instrukcji Next.

Każda instrukcja For musi mieć odpowiadającą jej instrukcję Next. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Użyto instrukcji For bez odpowiadającej jej instrukcji Next.

Sprawdź, czy w zewnętrznej strukturze For...Next istnieją nieprawidłowo skonstruowane struktury For...Next.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Odwołanie w przód do typu zdefiniowanego przez użytkownika.

Typ zdefiniowany przez użytkownika musi być zdefiniowany, zanim wystąpi odwołanie do niego. Ten błąd ma następujące przyczyny i rozwiązania:

•	Zadeklarowano zmienną o typie definiowanym przez użytkownika przed zdefiniowaniem samego typu. W następującym przykładzie zmienna InnaZmienna jest zadeklarowana, zanim znany jest jej typ (InnyTyp):

Type MyType

InnaZmienna As InnyTyp

End Type

Type InnyTyp

ZmiennaCałkowita As Integer

ZmiennaRzeczywista As Double

End Type

Umieść definicję typu w takim miejscu, aby nie występowało odwołanie w przód.

•	Typ zdefiniowany przez użytkownika jest zagnieżdżony sam w sobie.

Type MyType

MojaZmienna As Integer

InnaZmienna As MyType

End Type

Usuń odwołujący się do siebie zagnieżdżony typ. Błąd ten może nastąpić pośrednio, gdy jeden typ jest zagnieżdżony w drugim, w którym jest już użyty ten pierwszy typ. Sprawdź, czy w definicjach każdego zagnieżdżonego typu nie występują podobne powtórzenia.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Wywołanie funkcji po lewej stronie przypisania musi zwracać zmienną typu Variant lub Object.

Wywołanie funkcji może występować po lewej stronie przypisania, lecz tylko wtedy, gdy wartość zwracana przez funkcję jest typu Object lub Variant. Ten błąd ma następujące przyczyny i rozwiązania:

•	Wartość zwracana przez funkcję po lewej stronie przypisania nie jest typu Variant lub Object.

Zmień typ zwracany przez funkcję. Zauważmy, że jeśli wartość zwracana jest obiektem lub zmienną typu Variant zawierającą obiekt, to przypisanie następuje do domyślnej właściwości obiektu. Jeśli zwracana zmienna typu Variant nie jest obiektem, to przypisanie nie zachodzi.

•	Wywołanie jest poprawne, lecz nie może być wykonane. Na przykład, podjęto próbę ustawienia właściwości, która może być ustawiana tylko w czasie projektowania.

Przejdź do trybu projektowania i ustaw właściwość w oknie dialogowym Właściwość. Usuń fragment kodu programu usiłujący programowo ustawić tę właściwość.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Funkcja jest oznaczona jako ograniczona lub wykorzystuje typ nie obsługiwany przez system Visual Basic.

Nie każda procedura istniejąca w bibliotece typów lub bibliotece obiektowej może być dostępna w każdym języku programowania. Twórca biblioteki typów lub obiektów może zaprojektować funkcje tak, by ograniczyć możliwość korzystania z nich przez języki makr. Ten błąd ma następujące przyczyny i rozwiązania:

•	Usiłowano użyć funkcji o ograniczonym zakresie stosowania.

Nie możesz użyć tej funkcji w programie. Jeśli masz dostęp do dokumentacji obiektu reprezentowanego w bibliotece, sprawdź, czy istnieje metoda wypełniająca tę samą funkcję.

•	Usiłowano użyć funkcji wymagającej typu parametru lub typu zwracanego, który nie jest dostępny w języku Visual Basic.

Czasami można symulować zwracany typ, używając równoważnych typów języka Visual Basic. Sprawdź możliwość stosowania podtypów Variant. Ta metoda może być skuteczna również w przypadku typów parametrów niedostępnych w języku Visual Basic, które są przekazywany przez odwołania. Nie można jednak przekazać typu danych Variant przez wartość w celu symulacji typu niedostępnego w języku Visual Basic.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Zbyt długi identyfikator

Długość identyfikatora nie może przekraczać 255 znaków. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Długość identyfikatora przekracza 255 znaków.

Zmniejsz długość identyfikatora.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Identyfikator pod kursorem nie jest nazwą procedury.

Usiłowano obejrzeć procedurę, lecz identyfikator w punkcie wstawiania nie jest nazwą procedury. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Identyfikator nie jest nazwą procedury.

Sprawdź pisownię identyfikatora.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Niewłaściwa wersja biblioteki DLL

Każda wersja systemu Visual Basic pracuje wyłącznie z odpowiednią wersją biblioteki dołączanej dynamicznie (DLL). Ten błąd ma następującą przyczynę i rozwiązanie:

•	Używana wersja biblioteki dołączanej dynamicznie nie odpowiada wersji wymaganej przez aplikację główną. Program usiłuje wywołać procedurę DLL, lecz wersja biblioteki jest niezgodna z systemem Visual Basic lub z aplikacją główną.

Uzyskaj właściwą wersję biblioteki i upewnij się, że na ścieżce wyszukiwania wcześniejszej wersje nie poprzedzają wersji nowej.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Niewłaściwa wersja ActiveX

Używana wersja biblioteki dołączanej dynamicznie dla ActiveX nie odpowiada wersji wymaganej przez aplikację główną. W systemie Microsoft Windows aplikacja szuka plików DLL w bieżącym katalogu, potem na ścieżkach przeszukiwania, a następnie w katalogu WINDOWS\SYSTEM. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Napotkano na wcześniejszą wersję plików DLL dla ActiveX niż wersja wymagana przez aplikację główną.

Nie powinno się używać jednocześnie obu wersji plików DLL.

Zauważmy, że w systemie Macintosh pliki ActiveX znajdują się zazwyczaj w folderze Extensions, co czyni mało prawdopodobnym wystąpienie tego błędu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Za mało pamięci w oknie instrukcji bezpośrednich do utworzenia zmiennej

Pamięć w oknie Instrukcje bezpośrednie jest ograniczona. Ten błąd ma następującą przyczynę i rozwiązanie:

•	W oknie Instrukcje bezpośrednie określono zmienną, dla której należy utworzyć wystąpienie, gdyż nie została ona utworzona w kontekście kodu programu.

Z okna Instrukcje bezpośrednie usuń odwołanie do tej zmiennej lub zadeklaruj zmienną w kontekście kodu programu, tak by nie musiała być tworzona w oknie Instrukcje bezpośrednie.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Za mało pamięci do zapisania informacji potrzebnych do cofnięcia operacji

Po dokonaniu edycji nie będzie można wybrać polecenia Cofnij w celu przywrócenia bieżącego stanu. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Zmiany są zbyt duże, by móc je zapamiętać w celu przyszłego wycofania.

Spróbuj dokonać serii mniejszych zmian.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Za mało informacji o projekcie uniemożliwia załadowanie projektu na aktualnie używaną platformę lub wersję systemu.

Podczas zapisywania projektu zapisywane są również dodatkowe informacje umożliwiające ładowanie projektu przez inną wersję systemu lub na inną platformę. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Podczas zapisywania projektu pojawił się komunikat o błędzie wskazujący, że za mało jest wystarczającej pamięci do zapisania całej informacji, która może być niezbędna do załadowania projektu przez inną wersję systemu lub na inną platformę.

Załaduj plik, używając tej wersji systemu Visual Basic, przez którą plik został zapisany, lub używając platformy, na której został zapisany, a następnie zapisz go ponownie. Jeśli nie pojawi się żaden komunikat o błędzie, to powinno być możliwe załadowanie pliku przez nową wersję systemu lub na inną platformę.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można zaimplementować interfejsu.

W języku Visual Basic nie wszystkie interfejsy mogą być implementowane. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Interfejs zawiera niektóre elementy, które nie są uwzględniane w języku Visual Basic. Na przykład, w języku Visual Basic nie ma odpowiednika typu długiej liczby całkowitej bez znaku, jak również nie można w tym języku określić parametru procedury jako "tylko wyjściowy." Chociaż Visual Basic pozwala na użycie znaku podkreślenia (_) w identyfikatorze, to przy implementacji interfejsu nie można użyć znaku podkreślenia w nazwach jego składowych.

Nie można zaimplementować tego interfejsu w języku Visual Basic.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowy tryb dostępu

W instrukcji Open określono tryb dostępu, który jest nieprawidłowy dla podanego typu pliku. Ten błąd ma następujące przyczyny i rozwiązania:

•	Usiłowano otworzyć plik do operacji Input, lecz określono niewłaściwy tryb dostępu.

Przy otwieraniu pliku do czytania można nie określać trybu dostępu, lecz jeśli zostanie określony, to musi tu być tryb Read. Tryby Write i Read Write są niedozwolone dla pliku otwieranego do operacji Input.

•	Usiłowano otworzyć plik do operacji Append, lecz określono niewłaściwy tryb dostępu.

Przy otwieraniu pliku do dołączania można nie określać trybu dostępu, lecz jeśli zostanie określony, to musi to być tryb Write. Tryby Read i Read Write są niedozwolone dla pliku otwieranego do operacji Append.

•	Usiłowano otworzyć plik do operacji Output, lecz określono niewłaściwy tryb dostępu.

Przy otwieraniu pliku do pisania można nie określać trybu dostępu, lecz jeśli zostanie określony, to musi to być tryb Write. Tryby Read i Read Write są niedozwolone dla pliku otwieranego do operacji Output.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowy atrybut w procedurze Sub, Function lub Property

Niektóre atrybuty są niedozwolone w procedurze. Ten błąd ma następującą przyczynę i rozwiązanie:

•	W treści definicji procedury znajdują się atrybuty Public lub Private.

Usuń te atrybuty z procedury. Aby nadać zmiennej większy zakres, przenieś deklarację na poziom modułu. Zmienne zadeklarowane w procedurze mają zawsze atrybut Private.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowy znak

Znak nie może być użyty w bieżącym kontekście. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Prawdopodobnie w nazwie zmiennej użyto niedozwolonego znaku, takiego jak nawias kwadratowy lub łącznik.

Porównaj pisownię nazwy zmiennej z jej deklaracją.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowy format danych

Dane odczytane z pliku mają nieprawidłowy format. Ten błąd ma następujące przyczyny i rozwiązania:

•	Plik projektu lub plik biblioteki obiektowej jest uszkodzony lub jest w nie rozpoznanym formacie.

Użyj nowej wersji pliku projektu lub pliku biblioteki obiektów.

•	Usiłowano załadować do modułu plik exe.

Załaduj plik z kodem źródłowym programu.

•	Za pomocą okna dialogowego Odwołania i Przeglądarka obiektów dodano odwołanie do pliku, który nie jest prawidłową biblioteką obiektów lub zawiera projekt systemu Visual Basic w formacie nie obsługiwanym przez aplikację główną. Na przykład, program Microsoft Excel może nie obsługiwać plików bas lub frm, jak również plików programu Microsoft Project zawierających kod w języku Visual Basic.

Załaduj sprawiający kłopoty plik do aplikacji, która go utworzyła, a następnie zapisz go we właściwym formacie. Na przykład, kod źródłowy biblioteki obiektów może być przetworzony przez funkcję MkTypLib; kod programów napisanych w języku QuickBasic i Visual Basic może być zapisany w formacie tekstowym itd.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowy typ danych dla stałej

Nie wszystkie typy danych mogą być przypisywane do stałej. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Usiłowano zadeklarować typ stałej będący typem zdefiniowanym przez użytkownika, obiektem lub tablicą.

Usuń deklarację lub zmień ją na deklarację zmiennej.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Niedopuszczalne w oknie instrukcji bezpośrednich

Nie wszystkie instrukcje są dopuszczalne w oknie Instrukcje bezpośrednie. Ten błąd ma następujące przyczyny i rozwiązania:

•	Użyto instrukcji deklaracji. Na przykład, w oknie Instrukcje bezpośrednie nie są dopuszczalne instrukcje Const, Declare, Deftype, Dim, Function, Option Base, Option Explicit, Option Compare, Option Private, Private, Public, instrukcje deklaracji procedur właściwości (Property Let, Property Set, i Property Get), ReDim, Static, Sub i Type.

Usuń instrukcje deklaracji z okna Instrukcje bezpośrednie.

•	Użyto instrukcji sterujących, na przykład Sub, Function, Property, GoSub, GoTo, Return i Resume.

Usuń te instrukcje z okna Instrukcje bezpośrednie.

•	Brak logicznego związku między różnymi wierszami w oknie Instrukcje bezpośrednie, co uniemożliwia poprawne wykonanie instrukcji zajmującej kilka wierszy, takiej jak instrukcja blokowa If.

Takie bloki mogą być wpisane w jednym wierszu, z instrukcjami oddzielonymi dwukropkiem (:). I odwrotnie, w oknie Instrukcje bezpośrednie można umieścić pojedynczą instrukcję w wielu wierszach, stosując w tym celu znak kontynuacji wiersza, to jest odstępu i podkreślenia ( _).

•	W oknie Instrukcje bezpośrednie usiłowano wykonać kod programu, który niszczy bieżący stan programu, powodując konieczność ponownego uruchomienia programu.

Usuń ten kod programu z okna Instrukcje bezpośrednie.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Niedopuszczalne wewnątrz procedury

Podana instrukcja nie może wystąpić w procedurze Sub lub Function. Ten błąd ma następującą przyczynę i rozwiązanie:

•	W procedurze znajduje się jedna z następujących instrukcji: Declare, Deftyp, Private, Public, Option Base, Option Compare, Option Explicit, Option Private lub Type.

Usuń tę instrukcję z procedury. Wymienione instrukcje mogą zostać umieszczone na poziomie modułu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowa długość ciągu o stałej długości

Ten błąd ma następujące przyczyny i rozwiązania:

•	Zadeklarowano ciąg o stałej długości, przypisując mu długość zero.

Ciąg o stałej długości musi zawierać co najmniej jeden znak.

•	Długość ciągu o stałej długości przekroczyła 65 526 znaków.

Zmniejsz długość określoną dla ciągu o stałej długości.

Uwaga   Ciągi o zmiennej długości nie podlegają tym ograniczeniom; mogą mieć długość zerową lub przekraczającą 65 526 znaków.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Błędne odwołanie do zmiennej sterującej Next

Zmienna numeryczna w części Next pętli For...Next musi odpowiadać zmiennej w części For. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Zmienna w części Next pętli For...Next różni się od zmiennej w części For. Na przykład:

For Licznik = 1 To 10

MojaZmienna = Licznik

Next Licz

Sprawdź pisownię zmiennej w części Next, czy odpowiada ona części For. Sprawdź również, czy przypadkowo nie usunięto części zamykającej pętli, w której używana jest ta zmienna.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowe odwołanie lub w odwołaniu brak kwalifikatora

Identyfikator rozpoczynający się od kropki jest dopuszczalny tylko wewnątrz bloku With. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Identyfikator rozpoczyna się od kropki.

Dokończ kwalifikator identyfikatora lub usuń kropkę.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Niedopuszczalne poza procedurą

Podana instrukcja musi znajdować się wewnątrz procedury Sub, Function lub procedury właściwości (Property Get, Property Let, Property Set). Ten błąd ma następującą przyczynę i rozwiązanie:

•	Na poziomie modułu znajduje się instrukcja wykonywalna, Static lub ReDim.

Instrukcja Static nie jest konieczna na poziomie modułu, gdyż wszystkie zmienne na poziomie modułu są statyczne. Na poziomie modułu zamiast instrukcji ReDim należy stosować instrukcję Dim. Aby utworzyć tablicę dynamiczną na poziomie modułu, należy ją zadeklarować za pomocą słowa kluczowego Dim, używając pustych nawiasów.

Uwaga   Na poziomie modułu można umieszczać jedynie komentarze oraz instrukcje deklaracji, takie jak Const, Declare, Deftyp, Dim, Option Base, Option Compare, Option Explicit, Option Private, Private, Public i Type. Instrukcje Sub, Function i Property występują poza ciałem swych procedur, lecz wewnątrz deklaracji procedury.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Niedozwolone użycie ParamArray

Parametr zdefiniowany jako ParamArray został użyty w procedurze w sposób niedozwolony. Ten błąd ma następujące przyczyny i rozwiązania:

•	Usiłowano przekazać ParamArray jako argument do innej procedury oczekującej jako argumentu tablicy lub zmiennej typu Variant przekazywanej przez odwołanie (ByRef).

Przypisz parametr ParamArray do zmiennej typu Variant, a następnie przekaż ją jako argument.

•	Wewnątrz procedury usiłowano użyć instrukcji Erase lub ReDim w stosunku do parametru ParamArray tej procedury.

Usuń instrukcję Erase lub ReDim. Nie można wykonywać tych operacji na parametrze ParamArray.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowa nazwa procedury.
Nieprawidłowa nazwa procedury

Ograniczenia narzucone na nazwy procedur są ostrzejsze niż ograniczenia na nazwy identyfikatora. Ten błąd ma następujące przyczyny i rozwiązania:

•	Usiłowano zdefiniować procedurę, lecz wybrana dla niej nazwa jest nieprawidłowa, gdyż aplikacja główna wykorzystuje ją w innym celu. Na przykład, jeśli aplikacja główna jest program Microsoft Excel, to nie można zdefiniować procedury o nazwie R1C1, gdyż ten identyfikator jest już używany przez program Microsoft Excel.

Wybierz inną nazwę dla procedury.

•	Nazwa procedury jest zastrzeżonym słowem kluczowym, długość nazwy przekracza 255 znaków lub pierwszy znak nazwy nie jest literą.

Wybierz inną nazwę dla procedury.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowy kwalifikator

Kwalifikatory służą do uniknięcia niejednoznaczności. Ten błąd ma następującą przyczynę i rozwiązanie:

•	W bieżącym zakresie kwalifikator nie identyfikuje projektu, modułu, obiektu lub zmiennej typu zdefiniowanego przez użytkownika.

Sprawdź pisownię kwalifikatora. Upewnij się, że identyfikator kwalifikujący znajduje się w bieżącym zasięgu. Na przykład zmienna typu zdefiniowanego przez użytkownika w module typu Private jest widoczna jedynie wewnątrz tego modułu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Niedozwolone użycie instrukcji ReDim

Nie dla wszystkich tablic można zmieniać wymiary. Ten błąd ma następujące przyczyny i rozwiązania:

•	Zmienna została niejawnie zadeklarowana jako Variant, po czym użyto instrukcji ReDim do przekształcenia jej w tablicę.

Zmienna typu Variant może zawierać tablicę, lecz jeżeli nie jest to jawnie zadeklarowane, nie można użyć instrukcji ReDim do przekształcenia jej w tablicę. Przed użyciem instrukcji ReDim zadeklaruj zmienną typu Variant, określając liczbę jej elementów. Na przykład, w następującym przykładowym kodzie programu instrukcja ReDim ZmiennaA(10) powoduje błąd niedozwolonego użycia instrukcji ReDim, lecz instrukcja ReDim ZmiennaB(10) jest poprawna:

ZmiennaA = 1	' Niejawna deklaracja zmiennej ZmiennaA.

ReDim ZmiennaA(10)	' Powoduje błąd "Niedozwolone użycie instrukcji ReDim".

.

.

.

Dim ZmiennaB	' Jawna deklaracja zmiennej ZmiennaB.

ReDim ZmiennaB(10)	' Błąd nie występuje.

•	Usiłowano użyć instrukcji ReDim do zmiany więcej niż jednego wymiaru tablicy zawartej w zmiennej typu Variant.

Instrukcja ReDim może być użyta do zmiany ostatniego wymiaru tablicy zawartej w zmiennej typu Variant. Tablica wielowymiarowa, której wymiary mogą być zmieniane, nie może być zawarta w zmiennej typu Variant i należy ją zadeklarować w zwykły sposób.

•	Instrukcja ReDim służy wyłącznie do zmiany liczby elementów w zwykłej tablicy, a nie do zmiany typów tych elementów.

Jeśli chcemy zmienić typ elementów tablicy, to należy użyć tablicy zawartej w zmiennej typu Variant. Jeśli wpierw zadeklarowano tablicę, to zmiana typów i liczby elementów może zostać przeprowadzona w następujący sposób:

Dim MojaZmienna As Variant	' Zadeklaruj zmienną.

ReDim MojaZmienna(10) As String	' Przekształć ją instrukcją ReDim w tablicę podtypów String.

ReDim MojaZmienna(20) As Integer	' Przekształć ją instrukcją ReDim w tablicę podtypów Integer.

ReDim MojaZmienna(5) As Variant	' Przekształć ją instrukcją ReDim w tablicę podtypów Variant.

•	Usiłowano użyć instrukcji ReDim w stosunku do tablicy będącej składową obiektu automatyzacji.

Usuń instrukcję ReDim.

Uwaga   Jeśli nie określono typu zmiennej, to przyjmuje ona typ domyślny, Variant. Nie zawsze jest to oczywiste. Na przykład w następującym fragmencie kodu programu zadeklarowano dwie zmienne, z których pierwsza, MojaZmienna, jest typu Variant, zaś druga, InnaZmienna, jest typu Integer.

Dim MojaZmienna, InnaZmienna As Integer

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowa składnia deklaracji stałych kompilacji warunkowej

Wprowadzanie w oknie dialogowym Opcje warunkowej stałej kompilatora różni się od deklarowania stałej w kodzie programu. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Podczas wprowadzania deklaracji stałych w oknie dialogowym Opcje użyto niepoprawnej składni.

Jedyną dopuszczalną składnią jest proste przypisanie wartości całkowitej do identyfikatora. Upewnij się, że element ma tekst jest wprowadzony zgodnie z następującą składnią, przy czym stałe są oddzielane od siebie dwukropkami (:):

nazwa_stałej = [{+ | – }]wartość_całkowita : [{+ | – }] nazwa_stałej = wartość_całkowita [...]

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowy znak deklaracji typu

Używanie znaku deklaracji typu jest dozwolone, lecz nie są one określone dla wszystkich typów danych; w pewnych sytuacjach stosowanie ich jest niedozwolone. Ten błąd ma następujące przyczyny i rozwiązania:

•	Znak deklaracji typu jest dołączany do zmiennej zadeklarowanej w instrukcji Private, Public lub Static z użyciem klauzuli As.

Usuń znak deklaracji typu.

•	Znak deklaracji typu został dołączony do literału o niezgodnym typie. Na przykład, ponieważ znak handlowego "i" (&) jest znakiem deklaracji typu dla liczb całkowitych typu Long, to dołączenie go do literału innego typu spowoduje błąd:

10.253&

Usuń znak deklaracji typu lub zastąp go prawidłowym znakiem.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowe użycie operatora AddressOf

Operator AddressOf dokonuje modyfikacji argumentu w celu przekazania adresu funkcji, a nie wyniku wywołania funkcji. Ten błąd ma następujące przyczyny i rozwiązania:

•	Usiłowano użyć operatora AddressOf w stosunku do nazwy metody klasy.

Za pomocą operatora AddressOf mogą być modyfikowane jedynie procedury języka Visual Basic znajdujące się w modułach bas. Nie można go zastosować do metody klasy.

•	Nazwa procedury zmodyfikowanej przez operator AddressOf jest zdefiniowana w module innego projektu.

•	Usiłowano zmodyfikować operatorem AddressOf nazwę funkcji z biblioteki DLL lub funkcji zdefiniowanej w bibliotece typów.

•	Funkcje z biblioteki DLL i bibliotek typów nie mogą być modyfikowane operatorem AddressOf.

Definicja procedury musi znajdować się w module bieżącego projektu. Przenieś definicję do modułu należącego do tego projektu lub dołącz do projektu jej moduł.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Niepoprawne użycie słowa kluczowego Me

Słowo kluczowe Me może występować w module klasy. Ten błąd ma następujące przyczyny i rozwiązania:

•	Słowo kluczowe Me wystąpiło w module standardowym.

Słowo kluczowe Me nie może występować w module standardowym, ponieważ moduł standardowy nie reprezentuje obiektu. Jeśli kod, w którym wystąpił błąd, został skopiowany z modułu klasy, należy zastąpić słowo kluczowe Me konkretną nazwą obiektu lub formularza w celu zachowania oryginalnej wartości odwołania.

•	Słowo kluczowe Me wystąpiło po lewej stronie przypisania Set, na przykład:

Set Me = MójObiekt	' Powoduje błąd "Błędne użycie słowa kluczowego Me".

Usuń przypisanie Set.

Uwaga   Słowo kluczowe Me może występować po lewej stronie przypisania Let, w którym to przypadku ustawiana jest domyślna właściwość obiektu reprezentowanego przez słowo Me. Na przykład:

Let Me = MójObiekt	' Prawidłowe przypisanie z jawnym użyciem instrukcji Let.

Me = MójObiekt	' Prawidłowe przypisanie z niejawnym użyciem instrukcji Let.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowe użycie słowa kluczowego New

Słowo kluczowe New może być stosowane wyłącznie do takich obiektów, które można utworzyć (wystąpienie klasy lub obiektu automatyzacji). Ten błąd ma następujące przyczyny i rozwiązania:

•	Usiłowano utworzyć nowe wystąpienie elementu, który może mieć tylko jedno wystąpienie. Na przykład, usiłowano utworzyć nowe wystąpienie modułu, podając Module1 w następującej instrukcji:

Dim MyMod As New Module1

Nie można utworzyć nowego wystąpienia, gdyż moduł może mieć tylko jedno wystąpienie.

•	Usiłowano utworzyć nowe wystąpienie obiektu Automatyzacji, którego nie można utworzyć. Na przykład, usiłowano utworzyć nowe wystąpienie pola listy, określając zmienną typu ListBox (jak w poniższym przykładzie):

' Prawidłowa składnia tworzenia zmiennej.

Dim MojePoleListy As ListBox

Dim MójFormularzInst As Form

' Nieprawidłowa składnia tworzenia obiektu.

Set MójFormularzInst = New Form

Set MojePoleListy = New ListBox

ListBox i Form są nazwami klas, a nie nazwami konkretnych obiektów. Można ich używać w celu określenia, że zmienna będzie odwołaniem do pewnego typu obiektu, tak jak w powyższym przykładzie z właściwie zastosowanymi instrukcjami Dim. Nie można jednak używać tych klas do tworzenia obiektów w instrukcji Set. Należy określić konkretny obiekt, a nie generyczną nazwę klasy, tak jak w następującej instrukcji Set:

' Prawidłowa składnia tworzenia instancji formularza lub pola listy.

Set MójFormularzInst = New Form1

Set MojePoleListy = New List1

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowe użycie obiektu

Usiłowano użyć obiektu w nieprawidłowy sposób. Ten błąd ma następujące przyczyny i rozwiązania:

•	Usiłowano zlikwidować odwołanie do obiektu, przypisując mu wartość Nothing, lecz pomijając przy tym słowo kluczowe Set:

MójObiekt = Nothing

Użyj instrukcji Set w celu przypisania wartości Nothing do obiektu. Zakładając, że MójObiekt jest obiektem, przypisanie wartości Nothing musi być dokonane za pomocą następującej instrukcji Set:

Set MójObiekt = Nothing

Opuszczenie słowa kluczowego Set powoduje domyślne użycie słowa kluczowego Let, co powoduje próbę przypisania wartości, a nie przypisania odwołania. Słowo kluczowe Nothing nie może być używane w przypisywaniu wartości.

•	Usiłowano użyć słowa kluczowego Nothing w wyrażeniu.

Przepisz wyrażenie, nie używając wartości Nothing.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowe użycie procedury Property

Zastosowano jeden rodzaj procedury Property, podczas gdy oczekiwany jest inny rodzaj. Ten błąd ma następujące przyczyny i rozwiązania:

•	Usiłowano zapisać wartość do właściwości, która jest przeznaczona tylko do odczytu.

Jeśli jedyną procedurą Property zdefiniowaną dla tej właściwości jest Property Get, to niemożliwe jest przypisanie wartości do właściwości. Należy albo napisać odpowiednią procedurę Property Let, albo nie próbować dokonywać zapisu do właściwości.

•	Usiłowano odczytać właściwość, która jest przeznaczona tylko do zapisu.

Jeśli jedyną procedurą Property zdefiniowaną dla tej właściwości jest Property Let, to niemożliwe jest odczytanie wartości właściwości. Należy albo napisać odpowiednią procedurę Property Get, albo nie próbować odczytywać właściwości.

•	Usiłowano ustawić odwołanie, lecz dla właściwości zdefiniowano wyłącznie procedury Property Get lub Property Let.

Albo napisz procedurę Property Set dla tej właściwości, albo nie próbuj ustawiać odwołania do niej.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowe wyrażenie czujki

Podane wyrażenie czujki nie jest poprawnym wyrażeniem. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Składnia wyrażenia czujki jest nieprawidłowa.

Sprawdź składnię wszystkich składników wyrażenia. Zwróć uwagę, czy składnia wyrażenia czujki odpowiada ustawieniom regionalnym projektu, w którym zdefiniowano śledzone wyrażenie.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie zdefiniowana etykieta

Ten błąd ma następującą przyczynę i rozwiązanie:

•	Etykieta wiersza lub numer wiersza występuje w odwołaniu (na przykład w instrukcji GoTo), lecz nie występuje w zakresie tego odwołania.

Etykieta musi się znajdować wewnątrz procedury zawierającej to odwołanie. Etykiety wierszy są widoczne tylko w swych własnych procedurach.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Ustawienia języka/kraju uległy zmianie.

Ten błąd ma następującą przyczynę i rozwiązanie:

•	W środowisku systemu Visual Basic zmieniono domyślne ustawienia języka/kraju.

Jest to działanie w pełni dozwolone, lecz może spowodować problemy.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Wiersz nie zawiera instrukcji wykonywalnej.

Deklaracja i komentarz nie są instrukcjami wykonywalnymi. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Wybrano polecenie Przejdź do kursora, lecz kursor znajdował się w wierszu nie zawierającym instrukcji wykonywalnej.

Umieść kursor w instrukcji wykonywalnej w pobliżu bieżącego wiersza.

W celu uzyskania dodatkowych informacji wybierz polecenie Przejdź do kursora z menu Uruchom i naciśnij klawisz F1.


Wiersz jest za długi.

Fizyczny wiersz kodu programu w języku Visual Basic może zawierać do 1023 znaków. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Wiersz zawiera zbyt wiele znaków.

Dłuższy wiersz logiczny można utworzyć, łącząc wiersze fizyczne za pomocą znaku kontynuacji wiersza, to jest odstępu i następującego po nim znaku podkreślenia ( _). Za pomocą takich znaków można połączyć do 10 wierszy fizycznych, tworząc jeden wiersz logiczny. W ten sposób wiersz logiczny może liczyć aż 10 230 znaków. Aby przekroczyć tę wartość, należy podzielić wiersz na pojedyncze instrukcje lub przypisać niektóre wyrażenia do zmiennych pośrednich.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Instrukcja Loop bez instrukcji Do.

Pętla Do musi rozpoczynać się od instrukcji Do. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Napotkano na nie zakończony blok pętli zagnieżdżony w innej pętli.

Sprawdź, czy użyto poprawnej składni instrukcji Do...Loop.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Instrukcja LSet może operować tylko na ciągach znaków lub typach zdefiniowanych przez użytkownika.

Instrukcja LSet służy do wyrównywania do lewej danych w ciągach i zmiennych typu zdefiniowanego przez użytkownika. Ten błąd ma następujące przyczyny i rozwiązania:

•	Podana zmienna nie jest ciągiem lub nie jest typu zdefiniowanego przez użytkownika.

Jeśli próbowano dokonać blokowego przypisania jednej tablicy do drugiej, to instrukcja LSet w takim zastosowaniu nie działa. Należy użyć pętli w celu przypisania kolejno wszystkich elementów.

•	Usiłowano użyć instrukcji LSet w stosunku do obiektu.

Instrukcja LSet może być również użyta do przypisania elementów typu zdefiniowanego przez użytkownika do elementów innego, zgodnego z nim typu zdefiniowanego przez użytkownika. Choć obiekty przypominają typy zdefiniowane przez użytkownika, nie można w stosunku do nich używać instrukcji LSet. Podobnie nie można stosować instrukcji LSet do zmiennych o typach zdefiniowanych przez użytkownika zawierających ciągi, obiekty lub warianty.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowe użycie instrukcji LSet

Instrukcja LSet służy do wyrównywania do lewej danych w ciągach i zmiennych typu zdefiniowanego przez użytkownika. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Usiłowano użyć instrukcji LSet w stosunku do typu zdefiniowanego przez użytkownika zawierającego ciągi, obiekty lub warianty.

Należy przypisać po kolei wszystkie elementy zmiennej tego typu do innej zmiennej.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Zdefiniowano już maksymalną liczbę wyrażeń czujki.

Liczba wyrażeń czujki, które mogą znajdować się w oknie Czujki, jest ograniczona. Ten błąd ma następującą przyczynę i rozwiązanie:

•	W oknie Czujki umieszczono już maksymalną liczbę wyrażeń czujki.

Usuń jedno z wyrażeń czujki i na jego miejsce wprowadź nowe lub wyrażenie, którego wartość chcesz poznać, wyświetl w oknie Instrukcje bezpośrednie.


Nie można odnaleźć metody lub składowej danych.

Kolekcja, obiekt lub typ zdefiniowany przez użytkownika nie zawiera wskazywanej składowej. Ten błąd ma następujące przyczyny i rozwiązania:

•	Podano niepoprawną nazwę obiektu lub nazwę składnika.

Sprawdź pisownię nazw i instrukcję Type lub zobacz w dokumentacji obiektu, jakie składniki są zawarte w obiekcie i jaka jest poprawna pisownia nazw obiektów lub nazw składowych.

•	Podano indeks kolekcji spoza zakresu.

Sprawdź właściwość Count w celu określenia, czy kolekcja zawiera przynajmniej jeden element. Zauważmy, że indeksy kolekcji zaczynają się od 1, a nie od zera, tak więc właściwość Count zwraca najwyższą dopuszczalną wartość indeksu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Identyfikator składowej istnieje już w module obiektu, z którego wywodzi się ten moduł obiektu.

Identyfikatory składowych modułu obiektu nie mogą kolidować z nazwami już używanymi w modułami obiektu, z którego są wywiedzione. Ten błąd ma następującą przyczynę i rozwiązanie:

•	W module obiektu procedura lub składowa danych używa identyfikatora już używanego w module, z którego zostały wywiedzione. Na przykład, formularz ma właściwość BackColor, tak więc następujący przykładowy kod programu spowoduje ten błąd:

' Formularz ma już właściwość BackColor.

Dim BackColor As Integer	' Generuje ten błąd.

Function BackColor()	' Generuje ten błąd.

End Function

Zmień identyfikator kolidujący z identyfikatorem składowej znajdującej się w module obiektu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Metoda nie jest poprawna bez odpowiedniego obiektu.

Nie wszystkie metody mogą być wykonane w stosunku do wszystkich obiektów. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Wywołano metodę, nie określając przy tym obiektu, zaś ta metoda nie jest poprawna dla obiektu niejawnego. Na przykład, nie można użyć metody Line w module standardowym bez prawidłowego kwalifikatora będącego obiektem, gdyż moduł standardowy nie może wyświetlić efektu wykonania metody Line.

Dokonaj jawnej kwalifikacji wywołania metody, używając obiektu, który akceptuje tę metodę. Na przykład, można użyć metody Line dla formularza lub pola rysunkowego.

Uwaga   Inne metody, które w module standardowym wymagają jawnego użycia obiektu jako kwalifikatora, to Circle, Print i PSet.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Brak końcowego nawiasu

Nawiasy klamrowe w instrukcjach muszą występować w parach. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Nawias otwierający nie ma odpowiadającego mu nawiasu zamykającego.

Umieść nawias zamykający na końcu tekstu, który ma być ujęty w nawiasy.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można odnaleźć modułu.

Moduły nie są ładowane po napotkaniu w kodzie programu odwołania — muszą stanowić część projektu. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Żądany moduł nie występuje w podanym projekcie. Na przykład, instrukcja MójModuł.PewnaZmienna = 5 spowoduje wygenerowanie tego błędu, jeśli moduł MójModuł nie jest widoczny w projekcie MójProjekt.

Poszukaj w dokumentacji aplikacji głównej informacji o dołączaniu modułów do projektu.


Moduł jest za duży.

Moduł zawiera kod programu należący do projektu. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Kod programu znajdujący się w module jest zbyt duży.

Utwórz nowy moduł i przenieś niektóre procedury z bieżącego do nowego modułu. Jeśli bieżący moduł zawiera deklaracje danych na poziomie modułu, które muszą być widoczne w procedurach należących do tego nowego modułu, to należy te dane zadeklarować jako Public.

Uwaga   komentarze nie są zaliczane do wierszy kodu programu. Z tego powodu usunięcie komentarzy nie zapobiega powstaniu tego błędu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Ta instrukcja musi być pierwszą instrukcją w wierszu.

Nie wszystkie słowa kluczowe mogą znajdować się na początku wiersza kodu programu. Ten błąd ma następujące przyczyny i rozwiązania:

•	Instrukcja Sub, Function lub Property została poprzedzona w tym samym wierszu inną instrukcją.

Instrukcja Sub, Function lub Property musi zawsze być pierwszą instrukcją w każdym wierszu, w którym występuje (jeśli nie jest poprzedzona słowem kluczowym Public, Private lub Static).

•	Instrukcja End If, Else lub ElseIf została poprzedzona w tym samym wierszu inną instrukcją.

Instrukcja End If, Else lub ElseIf (tylko wtedy, gdy występuje w strukturze bloku If) musi zawsze być pierwszą instrukcją w każdym wierszu, w którym występuje.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nazwa koliduje z nazwą istniejącego modułu, projektu lub biblioteki obiektów.

Moduły, biblioteki obiektowe i projekty wskazywane muszą mieć nazwy unikatowe w projekcie. Ten błąd ma następujące przyczyny i rozwiązania:

•	Istnieje moduł, projekt lub biblioteka obiektów o nazwie, do której następuje odwołanie w bieżącym projekcie. Rozszerzenie nazwy pliku nie jest uważane za część nazwy i dlatego różne rozszerzenia nie mogą służyć do rozróżniania nazw plików.

Zmień powtarzającą się nazwę występującą w odwołaniu do modułu, projektu lub biblioteki obiektów.

•	Usiłowano dodać odwołanie do projektu lub biblioteki obiektów znajdujących się w pliku, którego nazwa (bez rozszerzenia) jest taka sama, jak nazwa jednego z modułów bieżącego projektu.

Zmień nazwę modułu lub nazwę pliku, do którego nie można się było odwołać.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Argument nazwany został już podany.

Na liście argumentów każdego wywołania procedury można użyć tylko raz każdego nazwanego argumentu. Ten błąd ma następujące przyczyny i rozwiązania:

•	W wywołaniu podano więcej niż raz ten sam argument nazwany. Na przykład, jeżeli procedura MojaProc oczekuje argumentów nazwanych Arg1 i Arg2, to następujące wywołanie spowoduje ten błąd:

Call MojaProc(Arg1 := 3, Arg1 := 5)

Usuń jedną z powtarzających się specyfikacji.

•	Użyto takiego samego argumentu jako argumentu pozycyjnego i nazwanego; na przykład:

Call MojaProc(1, Arg1 := 3)

Usuń jedną z powtarzających się specyfikacji.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Argumenty nazwane nie są dozwolone.

Nazwane argumenty nie są dozwolone we wszystkich sytuacjach. Ten błąd ma następujące przyczyny i rozwiązania:

•	Usiłowano użyć argumentu nazwanego jako indeksu tablicy, na przykład:

MojaZmienna = MojaTablica(MójArgNazwany := 1)

Jako indeksu tablicy użyj zwykłej zmiennej lub wyrażenia stałego.

•	Usiłowano określić argument nazwany z obiektem, na przykład:

MojaZmienna = MójObiekt(MójArgNazwany := 1)

Jeśli obiekt wymaga argumentu, użyj zmiennej lub wyrażenia stałego. Na przykład, jeśli dla obiektu domyślna jest metoda, to nazwa obiektu reprezentuje tę domyślną metodę. Jeśli jest konieczne podanie argumentów, należy określić je pozycyjnie.

•	Usiłowano określić argumenty nazwane z nazwą zewnętrzną:

MojaZmienna = [MojaNazwa](MójArgNazwany := 1)

Jeśli nazwa zewnętrzna wymaga argumentu, użyj zmiennej lub wyrażenia stałego.

•	Usiłowano określić argument nazwany ze składową obiektu, na przykład:

MojaZmienna = [MójObiekt].MojaWłaściwość(MójArgNazwany := 1)

Jeśli składowa wymaga argumentu, należy użyć zmiennej lub wyrażenia stałego.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Instrukcja Next bez instrukcji For.

Instrukcja Next musi być poprzedzona odpowiadającą jej instrukcją For. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Użyto instrukcji Next bez odpowiadającej jej instrukcji For.

Sprawdź, czy inne struktury sterowania zawarte w strukturze For...Next są poprawne. Na przykład, ten błąd może być spowodowany przez znajdująca się wewnątrz struktury For...Next instrukcję If nie posiadającą odpowiadającej jej instrukcji End If.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie zaznaczono tekstu.

W celu wykonania tej operacji konieczne jest zaznaczenie tekstu. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Przez rozpoczęciem operacji Znajdź lub Zamień nie zaznaczono żadnego tekstu.

Podczas poszukiwania i zamiany tekstu niektóre aplikacje główne pozwalają użytkownikowi na określenie zakresu, nawet jeśli nie zaznaczono żadnego tekstu. Aby zaznaczyć tekst, umieść wskaźnik na początku wybranego obszaru, wciśnij klawisz SHIFT i użyj klawiszy strzałek lub kliknij koniec tekstu w celu zakończenia operacji zaznaczania. Jeśli nie chcesz przeszukiwać zaznaczonego tekstu, wyłącz opcję Zaznaczony tekst.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Brak pamięci do całkowitego zapisania projektu.

Podczas zapisywania projektu zapisywane są również dodatkowe informacje umożliwiające ładowanie projektu przez inną wersję systemu lub na inną platformę. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Brakuje wystarczającej ilości pamięci do zapisania wszystkich informacji, które mogą być niezbędne do załadowania projektu przez inną wersję systemu Visual Basic lub na inną platformę.

Jeśli ten projekt ma być otwierany przez późniejszą wersję systemu lub też na innej platformie, zamknij inne aplikacje i spróbuj ponownie zapisać projekt.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie wybrano wyrażenia czujki.

Do wykonania polecenia Szybka czujka konieczne jest zaznaczenie wyrażenia. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Przed wyborem polecenia Szybka czujka nie zaznaczono wyrażenia, którego wartość ma być śledzona.

Przed wyborem polecenia Szybka czujka zaznacz w oknie Kod programu wyrażenie czujki

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie obsługiwana własność biblioteki obiektów.

Może się zdarzyć, że pewne własności biblioteki obiektowej nie mają swych odpowiedników w systemie Visual Basic. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Usiłowano uzyskać dostęp do typu danych lub funkcji biblioteki obiektów, które nie są obsługiwane przez system Visual Basic.

Nawiąż kontakt z twórcą biblioteki obiektów w celu uzyskania dodatkowych informacji o sposobie korzystania z biblioteki i o służących do tego programach narzędziowych.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można odnaleźć biblioteki obiektów Visual Basic for Applications.

Biblioteka obiektowa systemu Visual Basic for Applications nie jest już samodzielnym plikiem; stała się częścią biblioteki dołączanej dynamicznie (DLL).

W pewnych szczególnych okolicznościach może zajść potrzeba skorzystania z poprzedniej wersji biblioteki obiektów (vaxxx.olb lub vaxxxx.olb) odpowiadającej językowi projektu. Poszukiwania tej biblioteki zakończyły się niepowodzeniem. Ten błąd ma następujące przyczyny i rozwiązania:

•	W systemie nie ma biblioteki obiektów, nie znajduje się ona w oczekiwanym katalogu lub ma nieprawidłową wersję.

Sprawdź, czy biblioteka obiektów znajduje się we właściwym katalogu, określonym w dokumentacji aplikacji głównej.

Jeśli brakująca biblioteka jest w wersji językowej instalowanej przez aplikację główną, może okazać się łatwiejsze ponowne uruchomienie programu instalacyjnego. Jeśli projekt wymaga innej wersji językowej biblioteki obiektów niż wersja dostarczona z aplikacją główną (na przykład jeśli projekt został utworzony na innym komputerze, skonfigurowanym dla innego języka), należy się upewnić, że prawidłowa wersja językowa biblioteki obiektów języka Visual Basic została dołączona do projektu i jest zainstalowana w prawidłowym miejscu.

Aplikacje mogą obsługiwać rozmaite wersje językowe swych bibliotek obiektów. Aby dowiedzieć się, jaka wersja językowa jest wymagana, należy wyświetlić okno dialogowe Odwołania i sprawdzić, jaki język jest wymieniony u dołu okna dialogowego.

Mogą istnieć różne wersje bibliotek dla różnych platform. Dlatego też przy przenoszeniu projektu na inną platformę, na przykład z systemu Macintosh do systemu Microsoft Windows, należy sprawdzić w dokumentacji aplikacji, czy dla docelowej platformy istnieją prawidłowe wersje językowe wskazywanej biblioteki. Zauważmy, że kody niektórych języków są dwuliterowe, zaś pozostałych - trzyliterowe.

Nazwy plików bibliotek obiektów są tworzone w następujący sposób:

•	Windows: Kod aplikacji + Kod języka + [Wersja].OLB. Na przykład:

Biblioteka obiektów dla francuskiej wersji programu Visual Basic for Applications, wersja 2, nosi nazwę vafr2.olb..

•	Macintosh: Nazwa aplikacji Kod języka [Wersja] OLB. Na przykład:

Biblioteka obiektów dla francuskiej wersji programu Visual Basic for Applications, wersja 2, nosi nazwę VA FR 2 OLB.

Jeżeli w systemie nie można odnaleźć projektu lub biblioteki, należy skontaktować się z autorem projektu wskazującego. Jeśli brakującą biblioteką jest biblioteka obiektów aplikacji firmy Microsoft, można uzyskać ją w następujący sposób:

•	Jeśli masz dostęp do elektronicznego serwisu technicznego firmy Microsoft, przeczytaj punkt poświęcony obsłudze technicznej znajdujący się w tym pliku Pomocy. Znajdują się tam instrukcje, w jaki sposób skorzystać z właściwych opcji tego serwisu.

•	Jeśli nie masz dostępu do elektronicznego serwisu technicznego firmy Microsoft, można od firmy Microsoft otrzymać na żądanie biblioteki obiektów w postaci not aplikacyjnych. Informacje o sposobie nawiązania kontaktu z lokalnym przedstawicielstwem firmy również można znaleźć w punkcie poświęconym obsłudze technicznej w tym pliku Pomocy.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Biblioteka obiektów nie jest zarejestrowana.

Biblioteka obiektowa systemu Visual Basic for Applications nie jest już samodzielnym plikiem; stała się częścią biblioteki dołączanej dynamicznie (DLL).

We wcześniejszych wersjach systemu pewne biblioteki obiektów były ładowane przy uruchamianiu aplikacji korzystającej z systemu Visual Basic for Applications. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Usiłowano załadować poprzednią wersję biblioteki obiektów systemu Visual Basic for Applications (vaxxx.olb) lub bibliotek obiektów aplikacji głównej, jednak w rejestrze systemu nie znaleziono poprawnej wersji językowej tych bibliotek obiektów.

Zarejestruj ponowne swą aplikację. W systemie Macintosh usuń z folderu Preferences plik vba.ini i ponownie uruchom aplikację.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Ustawienia językowe biblioteki obiektów są niezgodne z bieżącym projektem.

Nie można dodać odwołania. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Usiłowano dodać odwołanie do biblioteki obiektowej, której ustawienia regionalne nie jest zgodne z ustawieniami regionalnymi bieżącego projektu. Odwołanie nie zostało dodane. Aby użyć tej biblioteki obiektów, należy utworzyć projekt o zgodnych ustawieniach regionalnych.

Spróbuj zarejestrować dla danego języka zarówno system Visual Basic for Applications, jak i aplikację główną. W efekcie biblioteka obiektów stanie się dostępna w oknie dialogowym Odwołania.

Uwaga   Jeśli aplikacją główną jest program Visual Basic, to nie jest możliwa zmiana ustawień językowych projektu. Wszystkie używane biblioteki obiektów muszą być zgodne z ustawieniami angielskimi/amerykańskimi.


Ten typ nie występuje w języku Visual Basic.

Nie wszystkie typy występują w języku Visual Basic. Ten błąd ma następującą przyczynę i rozwiązanie:

•	W programie usiłowano użyć typu, który nie ma odpowiednika w języku Visual Basic for Applications. Na przykład, w języku Visual Basic nie ma typu wskaźnikowego lub typu liczby całkowitej bez znaku, tak więc przy próbie utworzenia zmiennej jednego z tych typów z biblioteki obiektowej wystąpi błąd. W następującym przykładzie, nawet jeśli Tęcza jest poprawną strukturą, to system Visual Basic nie może utworzyć zmiennej tego typu, jeśli zawiera on typ nie rozpoznawany przez język Visual Basic:

Dim MojaZmienna As Tęcza	' Powoduje błąd.

Jeśli typ jest poprawnym typem parametru funkcji z biblioteki obiektów, ten błąd oznacza jedynie, że nie można utworzyć zmiennej tego typu w kodzie programu. Chociaż nie zawsze można zadeklarować zmienne typu danych określonego w dokumentacji obiektu, to często istnieje ich odpowiednik w języku Visual Basic. No przykład, chociaż w języku Visual Basic nie ma typu wskaźnikowego, to można przekazać wskaźnik do funkcji jako parametr funkcji API, używając do tego celu operatora AddressOf. Należy również sprawdzić możliwości stosowania podtypów typu Variant. Często można użyć ich jako równoważników typów bezpośrednio niedostępnych w języku Visual Basic. W niektórych przypadkach brak jest jednak w języku takich odpowiedników. Na przykład, nie są dostępne wskaźniki do danych.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Po instrukcjach End Sub, End Function lub End Property mogą występować tylko komentarze.

Poza obszarem procedury dozwolone są wyłącznie komentarze, dyrektywy i deklaracje. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Poza obszarem procedury umieszczono wykonywalny kod programu.

Wszystkie znajdujące się poza procedurą wiersze nie zawierające deklaracji muszą zaczynać się od znaku początku komentarza ('). Instrukcje deklaracji muszą znajdować się przed pierwszą deklaracją procedury. Podczas wykonywania kodu programu komentarze są ignorowane.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Argument nieobowiązkowy musi być typu Variant.

Argumenty nieobowiązkowe mogą być wbudowanego typu, lecz musi to być typ z pojedynczą wartością domyślną. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Usiłowano określić jako Optional parametr bez wartości domyślnej, na przykład tablicę.

Upewnij się, że wszystkie argumenty określone jako Optional mają wartości domyślne.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Instrukcja Option Private Module nie jest dozwolona w module obiektu.

Instrukcja Option Private Module sprawia, że zawartość modułu staje się niedostępna dla innych projektów, jednocześnie pozostając dostępna dla bieżącego projektu. Ten błąd ma następującą przyczynę i rozwiązanie:

•	W module obiektu znajduje się instrukcja Option Private Module.

Usuń z modułu instrukcję Option Private Module. Moduły obiektu domyślnie są typu Option Private Module. Zmiana tego ustawienia nie może być dokonana z kodu programu. Poszukaj w dokumentacji aplikacji głównej informacji o sposobie nadania składowym modułu obiektu szerszego zasięgu widzialności.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Brak pamięci; niektóre czujki mogły zostać usunięte.

Jeśli w systemie zaczyna brakować pamięci, to w celu odzyskania części pamięci niezbędnej do zmiany tego stanu są usuwane wyrażenia czujki. Ten błąd ma następującą przyczynę i rozwiązanie:

•	W systemie załadowano za dużo aplikacji, projektów lub modułów.

W celu kontynuowania pracy należy usunąć z pamięci wszystkie zbędne elementy, w tym załadowane aplikacje, projekty lub moduły.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Brak zasobów

Pewne systemowe zasoby, zwane “dojściami”, są używane w wielu wewnętrznych operacjach systemu. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Kod programu wyczerpał zasoby.

Spróbuj zapisać, zamknąć lub ponownie załadować kod programu. Jeśli ten błąd pojawia się w dalszym ciągu, zmniejsz liczbę obiektów, do których występują odwołania w kodzie programu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Parametr typu ParamArray musi być zadeklarowany jako tablica zmiennych typu Variant.

Każdy argument w parametrze typu ParamArray może być innego typu danych. Stąd też sam parametr musi być zadeklarowany jako tablica zmiennych typu Variant. Można również podać dowolną liczbę argumentów dla parametru typu ParamArray. Podczas wywołania każdy argument podany w wywołaniu staje się odpowiednim elementem tablicy typu Variant. Na przykład:

Sub MojaProc(ParamArray VarArg())

. . .

End Sub

Call MojaProc ("Pierwszy arg", 2, 3.54)

Ten błąd ma następujące przyczyny i rozwiązania:

•	W definicji procedury parametr typu ParamArray jest zdefiniowany jako tablica zmiennych typu innego niż Variant.

Zadeklaruj parametr na nowo jako tablicę elementów typu Variant.

•	Dla parametru typu ParamArray nie określono typu danych, lecz definicja procedury znajduje się w zasięgu instrukcji Deftyp, tak więc parametr jest niejawnie zadeklarowany jako typu innego niż Variant.

W specyfikacji parametru typu ParamArray użyj jawnej klauzuli As Variant.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Dodatkowe informacje o tym błędzie podano w pliku informacji dodatkowych.

Niektóre funkcje tego programu zostały dodane już po zakończeniu pracy nad plikami Pomocy. Odpowiednie wyjaśnienia można znaleźć w pliku informacji dodatkowych aplikacji głównej.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Tylko publiczne typy Enum znajdujące się modułach klasy publicznej mogą być używane w procedurach publicznych jako parametry
Tylko publiczne typy Enum znajdujące się modułach klasy publicznej mogą być używane w procedurach publicznych jako parametry lub typy zwracane, albo jako publiczne składowe danych.

Procedura typu Public jest widoczna we wszystkich modułach projektów, podczas gdy typ Private Enum nie jest widoczny poza swym modułem. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Procedura typu Public znajduje się w klasie typu Public, lecz zwraca ona wartość lub posiada parametr zdefiniowany w module standardowym lub w klasie typu Private.

Zadeklaruj typ Enum jako Public. Musi się on znajdować w Nie znaleziono tłumaczenia.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Procedura jest za duża.

Podczas kompilacji kod procedury nie może przekraczać 64 KB. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Podczas kompilacji kod procedury przekroczył 64 KB.

Rozbij tę oraz inne duże procedury na kilka mniejszych procedur.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Projekt zawiera za dużo nazw procedur, zmiennych i stałych.

Nazwy procedur, zmiennych, stałych i parametrów projektu są przechowywane w tablicy nazw. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Liczba nazw w tablicy nazw projektu przekracza 32 768.

Tablica nazw może zawierać tymczasowe duplikaty. Można zmniejszyć rozmiar tablicy, zapisując projekt na dysku i następnie zamykając go. Jeśli problem pojawia się w dalszym ciągu, należy zmniejszyć liczbę nazw, wielokrotnie wykorzystując w różnych procedurach nazwy zmiennych lokalnych, a następnie ponownie zmniejszyć tablicę, zapisując projekt i ponownie otwierając go.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można odnaleźć projektu.

Nie odnaleziono projektu. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Podano nazwę projektu, którego nie można odnaleźć.

Sprawdź, czy nie popełniono błędu przy specyfikacji projektu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Kwalifikowana nazwa nie jest dozwolona w zasięgu modułu.

W niektórych okolicznościach pewne aplikacje główne nie pozwalają na wywołania procedury zawierającej kwalifikowane nazwy. Ten błąd ma następującą przyczynę i rozwiązanie:

•	W wywołaniu procedury określono nazwę modułu używając notacji kropkowej (kwalifikator.element).

Wystąpienie tego błędu może oznaczać, że aplikacja główna zna określony kwalifikator i w wywołaniu procedury niepotrzebna jest ta informacja. W takim przypadku można po prostu pominąć kwalifikator, a aplikacja główna poprawnie wywoła procedurę. Należy sprawdzić w dokumentacji aplikacji głównej, jakie mogą być przyczyny ograniczeń nakładanych na kwalifikowane nazwy.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Kwalifikator musi być kolekcją.

Użycie znaku wykrzyknika pomiędzy dwoma identyfikatorami jest typowe dla kolekcji. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Nazwa znajdująca się po lewej stronie znaku wykrzyknika (!) nie jest nazwą kolekcji.

Jeśli nazwa ma reprezentować kolekcję, to należy się upewnić, że jej pisownia jest poprawna. Zauważymy, że wykrzyknik jest również znakiem deklaracji typu dla danych typu Single. Jeśli budząca wątpliwości nazwa nie jest kolekcją, być może znak deklaracji typu ! zwykle dołączany do nazwy zmiennej został dopisany do innej nazwy.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie określono zakresu.

Istnieją pewne ograniczenia narzucone na sposób określania liczby elementów tablicy. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Nieprawidłowo określono granice tablicy. Na przykład, poniższe określenia zakresów są niepoprawne:

Dim MojaTablica(10 To -5)	' Porządek malejący jest niedozwolony.

Dim MojaTablica(0 To 0)	' Tablica nie zawiera elementów.

Sprawdź składnię instrukcji. Na przykład poniższe określenie zakresu jest poprawne:

Dim MojaTablica(-5 To 10)

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Instrukcja RSet jest dozwolona tylko dla ciągów znaków.

Instrukcja RSet służy do wyrównywania do prawej danych w ciągach o stałej i zmiennej długości. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Usiłowano użyć instrukcji RSet w stosunku do zmiennej, która nie jest ciągiem.

Jeśli jest to możliwe, należy spróbować dokonać konwersji zmiennej w ciąg. Jeśli nie jest to możliwe, nie należy używać instrukcji RSet.

Uwaga   Wprawdzie instrukcja RSet może być stosowana do przypisywania elementów zmiennej jednego typu zdefiniowanego przez użytkownika do elementów innego, zgodnego typu zdefiniowanego przez użytkownika, lecz takie przypisania nie są zalecane, gdyż mogą okazać się nieprzenośne.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Błąd wykonania <numer>:

Ten błąd jest zdefiniowany przez użytkownika; ma on następującą przyczynę i rozwiązanie:

•	Został wygenerowany błąd nie będący błędem systemu Visual Basic.

Należy obsłużyć błąd zgodnie ze wskazówkami zawartymi w dokumentacji obiektu lub bibliotece obiektowej, które spowodowały ten błąd.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Poszukiwany ciąg znaków jest za długi lub zbyt skomplikowany.

System Visual Basic posiada ograniczone możliwości rozpoznawania wzorców. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Poszukiwany ciąg jest za długi albo użyta kombinacja znaków wieloznacznych jest niezrozumiała.

Zmniejsz długość lub złożoność poszukiwanego ciągu i ponownie rozpocznij poszukiwanie.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Należy określić poszukiwany ciąg znaków.

Trzeba podać poszukiwany ciąg znaków. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Usiłowano wykonać operacje poszukiwania bez wyspecyfikowania poszukiwanego ciągu.

Należy określić poszukiwany ciąg. Aczkolwiek można określić ciąg o długości zerowej ("") jako ciąg zastępujący, to taki ciąg nie może zostać użyty jako ciąg poszukiwany.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można odnaleźć poszukiwanego tekstu.

Nie znaleziono poszukiwanego tekstu. Ten błąd ma następujące przyczyny i rozwiązania:

•	Między początkowym a końcowym punktem określonego zakresu nie znaleziono pasującego do wzorca tekstu.

Jeśli poszukiwanie ma być kontynuowane, należy poszerzyć zasięg poszukiwania.

•	W wyrażeniu określającym wzorzec brakuje nawiasu kwadratowego lewego.

Dopisz nawias kwadratowy lewy.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Błąd operacji Seek: nie można dokonać odczytu z dysku lub zapisu na dysk.

Instrukcje Seek działają bezpośrednio na dysku. Ten błąd ma następujące przyczyny i rozwiązania:

•	Usiłowano dokonać odczytu z dysku lub pliku, który jest chroniony przed zapisem, ma ustawiony atrybut tylko do odczytu lub jest zablokowany.

Usuń atrybut ochrony przed zapisem lub zmień atrybut tylko do odczytu lub usuń blokadę. Zauważmy, że jeśli plik jest blokowany przez inny proces, to nie można usunąć blokady.

•	Plik jest niedostępny, na przykład po zmianie dysku wymiennego.

Jeśli plik został przeniesiony na inny dysk, należy próbować uzyskać dostęp do tamtego dysku. W przeciwnym wypadku nie można uzyskać dostępu do pliku.

•	Usiłowano uzyskać dostęp do pliku projektu, biblioteki obiektowej lub biblioteki typów, lecz plik został uszkodzony.

Uzyskaj nową kopię pliku zawierającego bibliotekę lub projekt.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Instrukcja Select Case bez instrukcji End Select.

Każda konstrukcja Select Case musi być zakończona instrukcją End Select. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Użyto instrukcji Select Case bez odpowiadającej jej instrukcji End Select.

Sprawdź, czy wewnątrz zewnętrznej struktury Select Case...End Select znajduje się prawidłowa struktura Select Case...End Select. Jeśli instrukcje Select Case są zagnieżdżone, każda z nich musi mieć odpowiednią kończącą instrukcję End Select.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Zaznaczone wyrażenie czujki nie jest prawidłowe.

Nie każdy fragment kodu programu może być prawidłowym wyrażeniem czujki. Ten błąd ma następujące przyczyny i rozwiązania:

•	Wybrano polecenie Szybka czujka, lecz zaznaczone wyrażenie nie jest prawidłowym wyrażeniem. Na przykład, nie można ustawić czujki na komentarzu lub wywołaniu procedury Sub.

Zaznacz poprawne wyrażenie lub wybierz polecenie Dodaj czujkę i wpisz poprawne wyrażenie.

•	Wyrażenie czujki musi posiadać składnię odpowiadającą ustawieniom regionalnym projektu, w którym zdefiniowano wyrażenie, na którym ustawiono czujkę.

Przepisz wyrażenie tak, by odpowiadało ustawieniom regionalnym.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Polecenie "Ustaw następną instrukcję" może być stosowane tylko do wierszy wykonywalnych w ramach bieżącej procedury.

W celu wybrania miejsca, od którego powinno rozpocząć się wykonywanie zawieszonego programu, można wybrać polecenie Ustaw następną instrukcję. Ten błąd ma następujące przyczyny i rozwiązania:

•	W momencie wybrania tego polecenia kursor znajdował się w wierszu nie zawierającym instrukcji wykonywalnej.

Umieść kursor w wierszu zawierającym instrukcję wykonywalną i ponów operację. Deklaracja, etykieta wiersza i komentarz nie są instrukcjami wykonywalnymi, tak więc polecenie Ustaw następną instrukcję nie może dotyczyć wierszy zawierających wyłącznie deklaracje, etykiety i komentarze.

•	W momencie wybrania tego polecenia kursor znajdował się w wierszu znajdującym się poza aktualnie wykonywaną procedurą.

Umieść kursor w wierszu znajdującym się w aktualnie wykonywanej procedurze.


Wymagany jest program SHARE.EXE.

Program share.exe musi być uruchomiony przed uruchomieniem systemu Visual Basic. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Przed uruchomieniem systemu Visual Basic nie uruchomiono programu share.exe.

Zamknij aplikację, uruchom program share.exe, a następnie ponownie uruchom aplikację. Aby uniknąć pojawiania się tego problemu w przyszłości, umieść wywołanie programu share.exe w pliku autoexec.bat, tak by automatycznie uruchamiać ten program przy włączaniu komputera.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Odwołanie do podanej biblioteki lub projektu już istnieje.

W oknie dialogowym Dodaj odwołania są wyświetlane wskazywane biblioteki i projekty. Ten błąd ma następującą przyczynę i rozwiązanie:

•	W oknie dialogowym Dodaj odwołania wybrano przycisk Przeglądaj i następnie zaznaczono bibliotekę typów lub projekt, który już jest wymieniony w sekcji Dostępne odwołania w oknie dialogowym Dodaj odwołania.

Aby projekt lub biblioteka typów stały się częścią bieżącego projektu, należy wyświetlić okno dialogowe Odwołania i upewnić się, że nazwa biblioteki typów lub projektu jest zaznaczona.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Instrukcja nie może występować wewnątrz bloku Type.

Wewnątrz bloku instrukcji Type...End Type mogą znajdować się nazwy elementów, klauzule As typ i komentarze. Ten błąd ma następującą przyczynę i rozwiązanie:

•	W definicji typu zdefiniowanego przez użytkownika umieszczono nieprawidłową instrukcję.

Usuń wszystko prócz komentarza, nazwy elementu i klauzuli As typ.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Instrukcja nie może występować poza blokiem Type.

Składnia deklaracji zmiennej poza blokiem instrukcji Type...End Type różni się od składni deklaracji elementów typu zdefiniowanego przez użytkownika. Ten błąd ma następujące przyczyny i rozwiązania:

•	Usiłowano zadeklarować zmienną poza blokiem Type...End Type lub poza instrukcją.

Przy deklaracji zmiennej za pomocą klauzuli As poza blokiem Type...End Type należy użyć instrukcji deklaracji Dim, ReDim, Static, Public lub Private. Na przykład pierwsza deklaracja zmiennej MojaZmienna w następującym przykładzie kodu programu powoduje błąd; druga i trzecia deklaracja MojaZmienna są poprawne:

MojaZmienna As Double	' Niepoprawna składnia deklaracji.

Dim MojaZmienna As Double

Type ATyp

MojaZmienna As Double	' Jest to prawidłowa składnia deklaracji,

End Type	' gdyż znajduje się w bloku Type.

•	Użyto instrukcji End Type bez odpowiadającej jej instrukcji Type.

Poszukaj instrukcji End Type nie posiadającej pary i poprzedź jej blok instrukcją Type lub też usuń instrukcję End Type, jeśli nie jest potrzebna.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Instrukcja jest zbyt skomplikowana.

Kompilator języka Visual Basic nie może przeprowadzić analizy tej instrukcji. Ten błąd ma następujące przyczyny i rozwiązania:

•	Nie można dokonać analizy składniowej instrukcji, gdyż jest zbyt złożona.

Spróbuj rozbić instrukcję na szereg mniejszych lub zastąp złożone klauzule warunkowe przez kombinację operatorów logicznych i instrukcji If...Then...Else.

•	W instrukcji lub funkcji znajduje się zbyt dużo zagnieżdżonych wywołań funkcji.

Spróbuj przypisać wyniki wcześniejszych wywołań funkcji do określonych zmiennych, a następnie użyć tych zmiennych w instrukcjach powodujących ten błąd.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Błędne instrukcje i etykiety między instrukcją Select Case a pierwszą instrukcją Case.

Między instrukcją Select Case a pierwszą klauzulą Case może znajdować się jedynie komentarz. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Między instrukcją Select Case a pierwszą klauzulą Case umieszczono instrukcję. Na przykład:

Select Case PewnaZmienna

' Jest to poprawny komentarz.

Stop	' Nawet instrukcja Stop nie jest dozwolona w tym miejscu.

Case PewnaWartość

. . .

End Select

Bezpośrednio po instrukcji Select Case musi następować pierwsza instrukcja Case. Jeśli znajdujące się między nimi wyrażenie ma pełnić rolę komentarza, to musi zostać poprzedzone znakiem początku komentarza ('). W innym przypadku przenieś instrukcje we właściwe miejsce lub usuń je.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Błąd składniowy.

Nie można określić, jakie działanie na zostać podjęte przez system Visual Basic. Ten błąd ma następujące przyczyny i rozwiązania:

•	Nieprawidłowa pisownia słowa kluczowego lub argumentu.

Słowa kluczowe i nazwy nazwane argumenty muszą być takie same jak w specyfikacji składni. Sprawdź pisownię w Pomocy, a następnie popraw ją w kodzie programu.

•	Nieprawidłowe znaki przestankowe.

Na przykład, pominięty opcjonalny argument pozycyjny należy zastąpić przecinkiem (,).

•	Procedura nie jest zdefiniowana.

Sprawdź poprawność nazwy procedury.

•	Usiłowano określić w tej samej procedurze parametr typu Optional i ParamArray jednocześnie.

Argument typu ParamArray nie może być jednocześnie typu Optional. Wybierz jeden z typów i usuń drugi.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Ta operacja edycji może spowodować, że moduł obiektu utraci zgodność z poprzednio określonym zgodnym składnikiem ActiveX.

Jeżeli zgodny składnik ActiveX istnieje w postaci uprzednio rozpowszechnianego pliku wykonywalny lub biblioteki dołączanej dynamicznie (DLL), to nie należy zmieniać jego interfejsu. To ostrzeżenie ma następującą przyczynę i rozwiązanie:

•	Usiłowano dokonać edycji kodu modułu obiektu, który istnieje w systemie jako plik wykonywalny.

Po dokonaniu zmian wpływających na interfejs obiektu klasa utraci zgodność z poprzednią wersją i nie będzie możliwe zastąpienie starej wersji skompilowanego kodu programu przez nową wersję.

W systemie Visual Basic nazwy zgodnych składników ActiveX są wyświetlane w oknie dialogowym pojawiającym się po wybraniu z menu Narzędzia polecenia Opcje projektu.

Ważne   Aby zaakceptować rezultaty edycji, należy w oknie dialogowym komunikatu o błędzie kliknąć przycisk OK. Jeśli zmiany mają zostać cofnięte, należy kliknąć przycisk Anuluj.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Wyznaczony obszar został przeszukany.

Po kliknięciu w oknie dialogowym Zamień przycisków Znajdź następne i Zamień nie jest określana całkowita liczba zastąpień. Ten warunek ma następująca przyczynę i rozwiązanie:

•	Podczas wykonywania operacji poszukiwania i zastępowania można określić przeszukiwany region — zaznaczony obszar, procedurę, moduł lub projekt.

Jeśli zaznaczono obszar, to jest on domyślnym regionem poszukiwania. Jeśli nie zaznaczono obszaru, to domyślnym regionem poszukiwania staje się bieżący moduł. W celu zmiany zakresu poszukiwania należy w oknie dialogowym Zamień wybrać inną opcję.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Wyznaczony obszar został przeszukany. Liczba dokonanych zamian: 1.

Po kliknięciu w oknie dialogowym Zamień przycisku Zamień wszystko ten komunikat określa łączną liczbę zastąpień. Ten warunek ma następującą przyczynę i rozwiązanie:

•	Podczas wykonywania operacji poszukiwania i zamiany znaleziono tylko jedno wystąpienie podanego tekstu, który następnie został zastąpiony. Można określić region poszukiwania — zaznaczony obszar, procedurę, moduł lub projekt.

Jeśli zaznaczono obszar, to jest on domyślnym regionem poszukiwania. Jeśli nie zaznaczono obszaru, to domyślnym regionem poszukiwania staje się bieżący moduł. W celu zmiany zakresu poszukiwania należy w oknie dialogowym Zamień wybrać inną opcję.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Wyznaczony obszar został przeszukany i wykonane zostały zamiany.

Po kliknięciu w oknie dialogowym Zamień przycisku Zamień wszystko ten komunikat określa łączną liczbę zastąpień. Ten warunek ma następująca przyczynę i rozwiązanie:

•	Podczas wykonywania operacji poszukiwania i zastępowania można określić przeszukiwany region — zaznaczony obszar, procedurę, moduł lub projekt.

Jeśli zaznaczono obszar, to jest on domyślnym regionem poszukiwania. Jeśli nie zaznaczono obszaru, to domyślnym regionem poszukiwania staje się bieżący moduł. W celu zmiany zakresu poszukiwania należy w oknie dialogowym Zamień wybrać inną opcję.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Plik vbp tego projektu zawiera nieprawidłowe lub uszkodzone identyfikatory odwołań do biblioteki.

Podczas zapisywania projektu, dla którego zaznaczono odwołanie w oknie dialogowym Odwołania, w pliku .vbp projektu (którego odpowiednikiem we wcześniejszych wersjach systemu Visual Basic był plik .mak) umieszczana jest odpowiednia informacja. Przykładem informacji dla obiektu dostępu do danych jest:

Reference=*\G{00025E01-0000-0000-C000-000000000046}#0.0#0#C:\WINDOWS\SYSTEM\DAO2516.DLL#Microsoft

DAO 2.5 Object Library

Ten błąd występuje, gdy dokonano edycji odwołania lub uległo ono uszkodzeniu. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Odwołanie w pliku .vbp stało się nieprawidłowe.

Usuń niepoprawny wiersz z pliku .vbp i sprawdź właściwą bibliotekę obiektową w oknie dialogowym Odwołania dostępnym z menu Narzędzia. Następnie zapisz projekt, co spowoduje umieszczenie prawidłowej informacji w pliku .vbp.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Ten element nie generuje żadnego zdarzenia.

Procedura obsługi zdarzenia musi odpowiadać zdarzeniu generowanemu przez obiekt. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Napisano procedurę obsługi zdarzenia dla obiektu, który nie generuje zdarzeń.

Nie można tworzyć procedur obsługi, które nie odpowiadają żadnemu zdarzeniu.

•	Usiłowano użyć metody WithEvents w stosunku do klasy, która nie generuje zdarzeń.

Nie można używać metody WithEvents w stosunku do klasy, która nie generuje zdarzeń.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Za dużo argumentów.

Procedura nie może mieć więcej niż 60 argumentów. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Określono więcej niż 60 argumentów.

Jeśli konieczne jest określenie większej liczby argumentów, to należy zdefiniować typ zdefiniowany przez użytkownika w celu zebrania wielu elementów różnych typów lub też jako ostatni zastosować argument typu ParamArray i przekazać w nim wiele wartości. Można również przekazać wiele argumentów, umieszczając je w tablicy.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Za dużo wymiarów.

Tablice nie mogą mieć więcej niż 60 wymiarów. Ten błąd ma następujące przyczyny i rozwiązania:

•	Usiłowano zadeklarować tablicę o więcej niż 60 wymiarach.

Zmniejsz liczbę wymiarów.

•	Deklaracja tablicy spełnia ograniczenia, lecz nie ma dostatecznej ilości pamięci, aby utworzyć tablicę.

Udostępnij więcej pamięci lub zmniejsz liczbę wymiarów. Jeśli tablica jest typu Variant lub jest zawarta w elemencie typu Variant, to być może da się utworzyć tablicę o takiej samej liczbie wymiarów przez zmianę deklaracji typu danych jej elementów. Na przykład, jeśli tablica zawiera wyłącznie liczby całkowite, to jej deklaracja jako typu Integer spowoduje zmniejszenie zajmowanej pamięci w porównaniu z tablicą, której wszystkie elementy są typu Variant.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Za dużo kontynuacji wierszy.

Liczba wierszy połączonych za pomocą znaku kontynuacji wiersza jest ograniczona. Ten błąd ma następującą przyczynę i rozwiązanie:

•	W kodzie programu więcej niż 10 kolejnych wierszy jest połączonych ze sobą przy użyciu znaku kontynuacji wiersza.

Połącz ze sobą niektóre wiersze, uzyskując w ten sposób dłuższe wiersze fizyczne, lub też rozbij tę konstrukcję na kilka instrukcji.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Za dużo zmiennych lokalnych niestatycznych.

Lokalne, niestatyczne zmienne są zmiennymi zdefiniowanymi w procedurze, które są inicjowane na nowo po każdym wywołaniu procedury. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Łączna pamięć zajmowana przez lokalne niestatyczne zmienne procedury oraz zmienne tymczasowe generowane przez kompilator przekracza 32 KB.

Zadeklaruj niektóre ze zmiennych, używając słowa kluczowego Static, jeśli jest to właściwe. Zmienne typu Static zachowują swe wartości między kolejnymi wywołaniami procedur, gdyż są alokowane w innych obszarach pamięci niż zmienne niestatyczne.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Za dużo zmiennych poziomu modułu.

Zmienne poziomu modułu są zmiennymi zadeklarowanymi w sekcji deklaracji modułu, przed procedurą modułu. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Łączna pamięć zajmowana przez wszystkie zmienne poziomu modułu w tym module przekracza 64 KB.

Jest to ograniczenie dla tego modułu. Jeśli jest to możliwe, można zadeklarować niektóre ze zmiennych jako Public w innym module, lub jeśli niektóre ze zmiennych poziomu modułu są wykorzystywane tylko w jednej procedurze, to można je zadeklarować w tej procedurze. Jeśli zadeklarowano zmienne poziomu modułu w celu zachowania ich wartości pomiędzy kolejnymi wywołaniami procedury, to można zadeklarować je jako Static wewnątrz procedury, która odwołuje się do nich.

Uwaga   Ilość dostępnej pamięci może być różna w różnych systemach operacyjnych.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Znak deklaracji typu nie jest zgodny z deklarowanym typem danych.

Typ danych zmiennej nie może zostać zmieniony przez dołączenie znaku deklaracji typu właściwego dla innego typu. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Zadeklarowano zmienną określonego typu, odwołano się do zmiennej o tej samej nazwie w tym samym zakresie i następnie dołączono nieprawidłowy znak deklaracji typu.

Jeśli chcesz mieć możliwość zmiany typu danych przypisanych do zmiennej, zadeklaruj zmienną jako Variant. Jeśli po prostu dołączono nieprawidłowy znak deklaracji typu, zmień go lub usuń.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Znak deklaracji typu nie jest dozwolony.

W języku Visual Basic jest dozwolone używanie znaków deklaracji typu, lecz dla niektórych typów danych (w tym Byte, Boolean, Date, Object i Variant) nie ma odpowiednich znaków deklaracji typu. Ten błąd ma następujące przyczyny i rozwiązania:

•	Usiłowano użyć znaku deklaracji typu w deklaracji zmiennej, w której zastosowano klauzulę As, na przykład Dim, Static, Public itd.

Usuń znak deklaracji typu lub usuń klauzulę As.

•	Usiłowano użyć znaku deklaracji typu w odwołaniu do zmiennej, która była niejawnie zadeklarowana bez użycia znaku deklaracji typu:

MojaZmienna = 20	' Niejawna deklaracja.

MojaZmienna% = 25	' Błąd

Usuń znak deklaracji typu lub zadeklaruj ponownie zmienną.

Uwaga   Jeśli jawna deklaracja zmiennej zawiera znak deklaracji typu, to dołączenie znaku w późniejszych odwołaniach do niej jest opcjonalne. Na przykład:

Dim MójCiąg$

MójCiąg = "Deklaracja jest jawna, więc znak $ nie jest konieczny."

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Wymagany jest znak deklaracji typu.

To, czy użycie znaku deklaracji typu jest konieczne, zależy od deklaracji identyfikatora. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Wystąpiło odwołanie, w którym nie użyto znaku deklaracji typu, do zmiennej, która została niejawnie zadeklarowana z użyciem znaku deklaracji typu. Na przykład:

MójCiąg$ = "Niejawna deklaracja "

MójCiąg = "Próba wskazania na MójCiąg$; jest to błąd ," _

 & "gdyż użyto nazwy MójCiąg."

Użyj jawnej deklaracji lub dodaj znak deklaracji typu do późniejszych odwołań do zmiennej.

Uwaga   Jeśli jawna deklaracja zmiennej zawiera znak deklaracji typu, to dołączenie znaku w późniejszych odwołaniach do niej jest opcjonalne. Na przykład:

Dim MójCiąg$

MójCiąg = " Deklaracja jest jawna, więc znak $ nie jest konieczny."

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Niezgodność typów: oczekiwano tablicy lub typu zdefiniowanego przez użytkownika.

Typ argumentu lub parametru zawiera informację, czy jest to tablica lub typ zdefiniowany przez użytkownika. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Określono argument jako pojedynczy element tablicy lub typu zdefiniowanego przez użytkownika, albo prostą zmienną, literał lub stałą. Taki argument został przekazany w miejsce parametru, który określa całą tablicę lub typ zdefiniowany przez użytkownika.

Zmień argument albo zmień definicję parametru.

•	Argument jest określony jako tablica lub typ zdefiniowany przez użytkownika, lecz nie jest on takiego samego typu jak parametr.

Przekaż tablicę oczekiwanego typu albo zmień definicję parametru.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można dokonać odczytu z dysku.

Wystąpił problem przy odczycie z dysku. Ten błąd ma następujące przyczyny i rozwiązania:

•	Nie zamknięto stacji dysków.

Jeśli dysk jest wyjmowalny, sprawdź jego zamknięcie. Zamknij stację prawidłowo, jeśli jest to konieczne.

•	Dysk jest włożony w odwrotnej pozycji.

Włóż dysk w prawidłowej pozycji.

•	Dysk nie jest poprawnie sformatowany.

Sformatuj ponownie dysk, jeśli godzisz się na utratę znajdujących się na nim danych.

•	Wystąpił błąd w sieci.

Spróbuj ponownie uruchomić sieć.

•	Umieszczono dysk o pewnej gęstości w stacji, która nie może go odczytać.

Użyj innej stacji lub skopiuj interesujące dane na dysk, który można odczytać w używanej stacji.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można dokonać zapisu na dysk.

Wystąpił problem przy zapisie na dysk. Ten błąd ma następujące przyczyny i rozwiązania:

•	Nie zamknięto stacji dysków.

Jeśli dysk jest wyjmowalny, sprawdź jego zamknięcie. Zamknij stację prawidłowo, jeśli jest to konieczne.

•	Dysk jest włożony w odwrotnej pozycji.

Włóż dysk w prawidłowej pozycji.

•	Dysk może nie być poprawnie sformatowany.

Sformatuj ponownie dysk, jeśli godzisz się na utratę znajdujących się na nim danych.

•	Wystąpił błąd w sieci.

Spróbuj ponownie uruchomić sieć.

•	Umieszczono dysk o pewnej gęstości w stacji, która nie może na niego dokonać zapisu.

Użyj innej stacji lub skopiuj interesujące dane na dysk, który można zapisać w używanej stacji.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieoczekiwany błąd; należy skontaktować się z pomocą techniczną firmy Microsoft.

Ten błąd może być poważny lub nie. Ma on następującą przyczynę i rozwiązanie:

•	W aplikacji głównej lub w systemie Visual Basic wystąpił nieoczekiwany błąd.

Nie musi to być poważny błąd. Zanotuj jednak jego numer i zgłoś to wydarzenie obsłudze technicznej firmy Microsoft.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Brak zgodności nawiasów w poszukiwanym ciągu znaków.

Każdemu otwierającemu nawiasowi kwadratowemu musi odpowiadać taki sam nawias zamykający. Ten błąd ma następującą przyczynę i rozwiązanie:

•	W poszukiwanym ciągu otworzono nawias kwadratowy, lecz nie wpisano nawiasu zamykającego.

Umieść na właściwym miejscu nawias kwadratowy zamykający.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nierozpoznany język projektu.

Podane ustawienia regionalne kodu programu ładowanego projektu nie jest obsługiwane przez tę aplikację. Ten błąd ma następujące przyczyny i rozwiązania:

•	Projekt został utworzony w systemie obsługującym te ustawienia regionalne kodu programu, lecz następnie przeniesiono go do systemu, gdzie te ustawienia regionalne nie zostały rozpoznane. Na przykład, plik ole2nls.dll znajdujący się na tym komputerze może być w wersji nie rozpoznającej tych ustawień regionalnych.

Zainstaluj w swoim systemie poprawną bibliotekę dołączaną dynamicznie (DLL).

•	Nie znaleziono właściwej biblioteki obiektowej projektu.

Upewnij się, że są dostępne właściwe biblioteki obiektów. Sprawdź na przykład, czy ścieżka wyszukiwania zawiera katalogi, w których są umieszczone.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Typ zdefiniowany przez użytkownika nie może być przekazywany przez wartość.

Typy zdefiniowane przez użytkownika mogą być wyłącznie przekazywane przez odwołanie (ustawienie domyślne), a nie przez wartość. Ten błąd może się ujawnić dopiero przy wywoływaniu procedury. Ten błąd ma następującą przyczynę i rozwiązanie:

•	W definicji parametru reprezentującego typ zdefiniowany przez użytkownika umieszczono słowo kluczowe ByVal.

Usuń słowo kluczowe ByVal. W celu zapobieżenia przekazywania zmian z powrotem do procedury wywołującej utwórz za pomocą instrukcji Dim tymczasową zmienną odpowiedniego typu i przekaż do procedury tę zmienną.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Typy zdefiniowane przez użytkownika i ciągi o stałej długości nie są dozwolone jako typ publicznej składowej modułu obiektu;
Typy zdefiniowane przez użytkownika i ciągi o stałej długości nie są dozwolone jako typ publicznej składowej modułu obiektu; prywatne moduły obiektu nie są dozwolone jako typ publicznej składowej publicznego modułu obiektu.

Nie można tworzyć składowych typu Public dla typu zdefiniowanego przez użytkownika określonych jako Private. Ten błąd ma następujące przyczyny i rozwiązania:

•	W module obiektu zadeklarowano zmienną Public z nazwą typu zdefiniowanego przez użytkownika określonego jako Private.

Zadeklaruj zmienną jako Private, przenieś instrukcję Type...End Type definiującą typ użytkownika do moduł standardowy lub usuń wszystkie deklaracje.

•	W module obiektu usiłowano zdefiniować procedurę Public z typem wartości zwracanej lub typem parametru będącym typem zdefiniowanym przez użytkownika.

Zadeklaruj procedurę jako Private.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie zdefiniowano typu użytkownika.

W języku Visual Basic można tworzyć własne typy danych, lecz muszą one zostać uprzednio zdefiniowane instrukcją Type...End Type lub też we właściwie zarejestrowanej bibliotece obiektowej lub bibliotece typów. Ten błąd ma następujące przyczyny i rozwiązania:

•	Usiłowano zadeklarować zmienną lub argument o niezdefiniowanym typie danych albo określono nieznaną nazwę klasy lub obiektu.

Użyj w moduł instrukcji Type w celu zdefiniowania nowego typu danych. Jeśli ma zostać utworzone odwołanie do klasy, to ta klasa musi być widoczna w projekcie. Jeśli w programie występuje odwołanie do klasy, w projekcie musi istnieć moduł klasy o tej nazwie. Sprawdź pisownię nazwy typu lub nazwy obiektu.

•	Typ, który ma zostać zadeklarowany, znajduje się w innym module, lecz został zadeklarowany jako Private.

Przenieś definicję typu do modułu standardowego, w którym może być określony jako Public.

•	Typ jest prawidłowy, lecz biblioteka obiektów lub biblioteka typów, w której jest zdefiniowany, nie jest zarejestrowana w systemie Visual Basic.

Wyświetl okno dialogowe Odwołania i następnie zaznacz odpowiednią bibliotekę obiektów lub bibliotekę typów. Na przykład, jeśli nie zaznaczono pola Data Access Object w oknie dialogowym Odwołania, typy takie jak Database, Recordset i TableDef nie są rozpoznawane i występujące w kodzie programu odwołania do nich spowodują błąd.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Typ zdefiniowany przez użytkownika musi mieć składowe.

Typy zdefiniowane przez użytkownika muszą mieć co najmniej jeden element. Ten błąd ma następującą przyczynę i rozwiązanie:

•	W definicji Type...End Type określono pusty typ.

Sprawdź, czy w instrukcji Type nie występują niepożądane znaki początku komentarza.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Zmienna nie jest zdefiniowana.

Użyto instrukcji Option Explicit w celu zabezpieczenia modułu przed występowaniem nie zadeklarowanych zmiennych i przed przypadkowym tworzeniem zmiennych wskutek błędów pisowni. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Użyto instrukcji Option Explicit w celu wymuszenia jawnej deklaracji zmiennych, lecz wystąpiła nie zadeklarowana zmienna.

Zadeklaruj jawnie zmienną lub zmień pisownię zmiennej tak, by oznaczała istniejącą zmienną.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Zmiennej jeszcze nie utworzono w tym kontekście.

Zmienna musi zostać utworzona, zanim będzie mogła zostać wyświetlona w oknie Czujki lub w oknie Instrukcje bezpośrednie oraz zanim będzie można jej przypisać wartość w oknie Instrukcje bezpośrednie. Ten błąd ma następujące przyczyny i rozwiązania:

•	Usiłowano wyświetlić wartość zmiennej lokalnej, która została właśnie wprowadzona do kodu programu, przed wykonaniem w trybie przerwania co najmniej jednego polecenia Krokowo.

Wykonaj krok w kodzie programu w celu wymuszenia kompilacji nowej instrukcji.

•	Usiłowano wyświetlić wartość zmiennej lokalnej, która została właśnie dodana do znajdującej się dalej w łańcuchu wywołań procedury pokazanej w oknie dialogowym Stos wywołań.

Należy powrócić do procedury przed wyświetleniem zmiennych w jej kontekście.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Wymagana jest zmienna - nie można dokonać przypisania do tego wyrażenia.

Ten błąd występuje najczęściej przy próbie przypisania wartości do elementu nie akceptującego operacji przypisania. Ten błąd ma następujące przyczyny i rozwiązania:

•	Usiłowano użyć wyrażenia numerycznego jako argumentu funkcji Len.

Funkcja Len nie akceptuje wyrażenia numerycznego, literału numerycznego lub binarnego wyrażenia numerycznego, lecz akceptuje zmienną numeryczną lub znakową, wyrażenie znakowe lub zmienną typu zdefiniowanego przez użytkownika.

•	Użyto wywołania funkcji lub wyrażenia jako argumentu instrukcji Input #, Let, Get lub Put. Na przykład, zamiast argumentu będącego prawidłowym odwołaniem do zmiennej tablicy wywołano funkcję o tej samej nazwie.

Instrukcje Input #, Let, Get i Put nie akceptują wywołań funkcji jako argumentów.

•	Usiłowano przypisać wartość do identyfikatora zadeklarowanego uprzednio jako stała.

Wybierz inną nazwę dla identyfikatora.

•	W konstrukcji For...Next usiłowano jako licznika pętli użyć elementu nie będącego zmienną.

Użyj zmiennej jako licznika.

•	Usiłowano przypisać wartość do właściwości przeznaczonej tylko do odczytu lub do wyrażenia składającego się z więcej niż jednej zmiennej (takiego jak X + Y). Przypisanie powoduje umieszczenie wartości w lokacji pamięci. Podane wyrażenie musi reprezentować pojedynczą, zapisywalną lokację.

Przepisz to przypisanie tak, by dane były przekazywane do pojedynczej zmiennej.

•	Usiłowano użyć nie zadeklarowanej zmiennej, która w bibliotece typów jest zdefiniowana jako stała.

Użyj innej nazwy dla zmiennej albo zadeklaruj ją jawnie.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Ostrzeżenie: własne ustawienia językowe nie są przenośne.

Nie wszystkie ustawienia językowe są przenośne. To ostrzeżenie ma następującą przyczynę i rozwiązanie:

•	W kodzie programu użyto specyficznych ustawień językowych.

Po wyborze własnych ustawień języka/kraju dla kodu programu, konwencje używane w kodzie programu odpowiadają konwencjom ustawionym w Panelu sterowania systemu. Można również użyć dla kodu programu własnych ustawień regionalnych, lecz ten kod może nie działać przy innych ustawieniach regionalnych lub w systemach o innych ustawieniach. Aplikacja główna dokonuje analizy składniowej niektórych ciągów znaków opierając się na ustawieniach Panelu sterowania komputera, na którym jest wykonywana.

Jeśli ustawienia Panelu sterowania komputera docelowego różnią się od ustawień komputera, na którym pisano kod programu, mogą wystąpić błędy, na przykład przy przetwarzaniu kodu programu zależnego od separatora dziesiętnego zależnego od ustawień regionalnych. Dlatego też nie należy używać własnych ustawień językowych, jeśli kod programu ma być wykorzystywany przez innych użytkowników. Jeśli kod programu ma być wysłany do innych użytkowników, należy wybrać predefiniowane ustawienia regionalne.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Instrukcja Wend bez instrukcji While.

Każda instrukcja Wend musi być poprzedzono odpowiadającą jej instrukcją While. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Użyto instrukcji Wend bez poprzedzającej jej instrukcji While.

Sprawdź, czy w pętli While...Wend nie ma nie zakończonych pętli powodujących ten błąd.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Instrukcja While bez instrukcji Wend.

Użyto instrukcji While bez odpowiadającej jej instrukcji Wend. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Otworzono konstrukcję While...Wend, lecz nie zamknięto jej.

Sprawdź, czy w zewnętrznej strukturze While...Wend nie ma niepoprawnej struktury While...Wend.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Obiekt będący przedmiotem instrukcji With musi być typu zdefiniowanego przez użytkownika, typu Object lub typu Variant.

Blok With...End With nie może być stosowany ze wszystkimi typami zmiennych. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Wewnątrz bloku With usiłowano użyć zmiennej, która nie jest typu Object, typu zdefiniowanego przez użytkownika lub typu danych Variant zawierającego obiekt.

Sprawdź, czy nie popełniono błędu w nazwie obiektu, typu zdefiniowanego przez użytkownika lub zmiennej typu Variant.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Niewłaściwa liczba wymiarów.

W odwołaniu do tablic indeksy muszą odpowiadać liczbie wymiarów występujących w deklaracjach tej tablicy. Ten błąd ma następującą przyczynę i rozwiązanie:

•	W odwołaniu do tablicy użyto niewłaściwej liczby argumentów. Na przykład, odwołanie do tablicy ma postać X(2,4) (tablica o dwóch wymiarach), podczas gdy została ona zdefiniowana jako Dim X(5) (tablica jednowymiarowa), i to powoduje ten błąd.

Sprawdź deklarację tablicy, a w odwołaniu do niej przeznacz jeden indeks dla każdego wymiaru.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Po zakończeniu tej edycji konieczne będzie ponowne uruchomienie programu. Czy mimo to kontynuować?

W trybie przerwania można dokonywać edycji, lecz niektóre zmiany uniemożliwiają kontynuację wykonywania programu. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Usiłowano dokonać edycji uniemożliwiającej kontynuację wykonywania programu, na przykład zadeklarowano zmienną statyczną.

Jeśli zostanie wybrany przycisk Tak, wykonanie zostanie zakończone i będzie można podjąć edycję kodu programu. Jeśli zostanie wybrany przycisk Nie, będzie można podjąć wykonywanie programu od punktu, w którym zostało ono przerwane.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Blok # If musi być zakończony klauzulą # End If.

#If jest dyrektywą kompilacji warunkowej. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Wykryto blok #If nie zakończony dyrektywą #End If.

Dodaj w odpowiednim miejscu dyrektywę #End If.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Argument obowiązkowy. (Błąd 449)

Liczba argumentów i ich typy muszą być zgodne z wartościami oczekiwanymi. Ten błąd ma następujące przyczyny i rozwiązania:

•	Niewłaściwa liczba argumentów.

Podaj wszystkie niezbędne argumenty. Na przykład, funkcja Left wymaga dwóch argumentów; pierwszy z nich reprezentuje ciąg znaków, na którym funkcja operuje, a drugi określa liczbę znaków zwracanych z lewej strony ciągu. Ponieważ żaden z tych argumentów nie jest argumentem nieobowiązkowym, dlatego trzeba podać oba.

•	Pominięty argument nie jest argumentem nieobowiązkowym.

Argument można pominąć tylko w wywołaniu procedury zdefiniowanej przez użytkownika, jeżeli w deklaracji tej procedury argument został zadeklarowany jako Optional. Podaj argument w wywołaniu procedury albo w definicji zadeklaruj parametr jako Optional.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Błędna konwencja wywołania biblioteki DLL. (Błąd 49)

Argumenty przekazywane do procedury biblioteki dołączanej dynamicznie (DLL) muszą być zgodne z argumentami oczekiwanymi przez tę procedurę. Konwencje wywołania dotyczą liczby, typu i kolejności argumentów. Ten błąd ma następujące przyczyny i rozwiązania:

•	Program wywołuje procedurę z biblioteki DLL, do której przekazywane są błędne typy argumentów.

Sprawdź, czy wszystkie typy argumentów są zgodne z typami podanymi w deklaracji wywoływanej procedury.

•	Program wywołuje procedurę z biblioteki DLL, do której przekazywana jest błędna liczba argumentów.

Sprawdź, czy jest przekazywana taka sama liczba argumentów, jaka została podana w deklaracji wywoływanej procedury.

•	Program wywołuje procedurę z biblioteki DLL, ale nie używa konwencji wywołania StdCall.

Jeżeli procedura z biblioteki DLL oczekuje argumentów przekazywanych przez wartość, sprawdź, czy w deklaracji procedury dla tych argumentów podano słowo kluczowe ByVal.

•	Instrukcja Declare zawiera słowa kluczowe CDecl.

Słowo kluczowe CDecl jest używane tylko w systemie Macintosh.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Błędny tryb pliku. (Błąd 54)

Instrukcje używane do operowania zawartością pliku muszą być instrukcjami odpowiednimi dla trybu, w jakim plik został otwarty. Ten błąd ma następujące przyczyny i rozwiązania:

•	Instrukcja Put lub Get określa plik sekwencyjny.

Instrukcje Put i Get mogą odnosić się tylko do plików otwartych w trybach dostępu Random lub Binary.

•	Instrukcja Print # określa plik otwarty w trybie dostępu innym niż Output lub Append.

Aby umieścić dane w pliku użyj innej instrukcji lub ponownie otwórz plik w odpowiednim trybie.

•	Instrukcja Input # określa plik otwarty w trybie dostępu innym niż Input.

Aby odczytać dane z pliku użyj innej instrukcji lub ponownie otwórz plik w trybie Input.

•	Próbowano zapisać dane do pliku przeznaczonego tylko do odczytu.

Zmień status pliku, umożliwiając zapis, lub zrezygnuj z zapisu do tego pliku.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Błędna nazwa lub numer pliku. (Błąd 52)

Podczas próby dostępu do podanego pliku pojawił się błąd. Ten błąd ma następujące przyczyny i rozwiązania:

•	Instrukcja odnosi się do pliku za pośrednictwem numeru pliku lub nazwy, ale:

•	Nazwa nie została podana w instrukcji Open lub została podana w instrukcji Open, ale plik od tego czasu został już zamknięty.

Podaj nazwę pliku w instrukcji Open. Należy zauważyć, że wywołując instrukcję Close bez argumentu, można nieświadomie zamknąć wszystkie otwarte aktualnie pliki, unieważniając wszystkie numery plików.

•	Numer jest poza zakresem numerów plików (1 – 511).

Jeżeli kod programu generuje numery plików algorytmicznie, sprawdź, czy numery są prawidłowe.

•	Nazwa lub numer pliku są nieprawidłowe.

Nazwy plików muszą być zgodne z konwencjami systemu operacyjnego oraz z konwencjami nazewnictwa plików stosowanymi w języku Basic. W środowisku Microsoft Windows należy stosować następujące zasady dotyczące nazw plików i katalogów:

•	Nazwa pliku lub katalogu może składać się z dwóch części: nazwy i nieobowiązkowego rozszerzenia. Dwie części nazwy oddzielone są kropką, np. myfile.new.

•	Nazwa nie może zawierać więcej niż 255 znaków.

•	Nazwa musi zaczynać się od litery lub cyfry. Może ona zawierać dowolne znaki (małe i wielkie; system nie rozróżnia w nazwach plików małych i wielkich liter), z wyjątkiem następujących znaków: znaku cudzysłowu ("), apostrofu ('), kreski ułamkowej (/), kreski ułamkowej odwróconej (\), dwukropka (:) i kreski pionowej (|).

•	W nazwie mogą występować znaki spacji.

•	Następujące nazwy są nazwami zarezerwowanymi i nie można ich używać jako nazwy plików i katalogów: CON, AUX, COM1, COM2, COM3, COM4, LPT1, LPT2, LPT3, PRN i NUL. Na przykład, jeżeli w instrukcji Open jako nazwa pliku zostanie podana nazwa PRN, to miejscem przeznaczenia instrukcji Print # i Write # skierowanych do numeru pliku podanego w instrukcji Open stanie się drukarka domyślna.

•	Poniżej przedstawiono przykłady prawidłowych nazw plików w systemie Microsoft Windows:

LIST.DOC

Moja Notatka.Txt

WYDATKI.92

12345678.901

Drugi egzamin.Rpt

•	W systemie Macintosh nazwa pliku może zawierać dowolne znaki, łącznie ze spacjami, z wyjątkiem dwukropka (:). Znak null (Chr(0)) jest niedopuszczalny w nazwach plików.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Błędna długość rekordu. (Błąd 59)

Długość zmiennej rekordowej podana w instrukcji Get lub Put musi być taka sama, jak długość podana w odpowiedniej instrukcji Open. Ten błąd ma następujące przyczyny i rozwiązania:

•	Długość zmiennej rekordowej różni się od długości podanej w odpowiedniej instrukcji Open.

Sprawdź, czy suma rozmiarów zmiennej o stałej długości w typie zdefiniowanym przez użytkownika definiującym typ zmiennej rekordowej jest taka sama jak wartość podana w klauzuli Len instrukcji Open. W poniższym przykładzie zakłada się, że ZmRek jest zmienną odpowiedniego typu. Do określenia długości można użyć funkcji Len:

Open MójPlik As #1 Len = Len(ZmRek)

•	Zmienna w instrukcji Put jest ciągiem znaków zmiennej długości lub zawiera taki ciąg.

Ponieważ do ciągu znaków zmiennej długości umieszczanego za pomocą instrukcji Put w pliku o dostępie swobodnym jest zawsze dodawany 2-bajtowy deskryptor, ciąg ten musi być krótszy o co najmniej 2 znaki od długości rekordu podanej w klauzuli Len instrukcji Open.

•	Zmienna w instrukcji Put jest typu Variant lub zawiera składową tego typu.

Podobnie jak ciągi znaków zmiennej długości, typy danych Variant wymagają również 2-bajtowego deskryptora. Wariantowe typy danych zawierające ciągi znaków zmiennej długości wymagają 4-bajtowego deskryptora. Dlatego też ciągi znaków zmiennej długości zawarte w typie Variant muszą być krótsze co najmniej o 4 bajty od długości rekordu podanej w klauzuli Len.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Błędny numer rekordu. (Błąd 63)

Podczas próby dostępu do pliku pojawił się błąd. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Numer rekordu w instrukcji Put lub Get jest mniejszy od zera lub równy zero.

Sprawdź obliczenia służące do generacji numeru rekordu. Upewnij się, że zmienna zawierające numer rekordu lub używane w obliczeniach numerów rekordów są napisane poprawnie. Błędnie napisana nazwa zmiennej zostanie w sposób niejawny zadeklarowana i zainicjowana z wartością zero, o ile w module nie będzie prawidłowo umieszczona instrukcja Option Explicit

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można utworzyć niezbędnego pliku tymczasowego. (Błąd 322)

Tworzenie pliku wykonywalnego wymaga plików tymczasowych. Ten błąd ma następujące przyczyny i rozwiązania:

•	Brak miejsca na dysku zawierającym katalog podany przez zmienną środowiska TEMP.

Usuń pliki z tego dysku lub w zmiennej środowiska TEMP podaj inny dysk.

•	Zmienna środowiska TEMP określa nieprawidłowy lub przeznaczony tylko do odczytu dysk lub katalog.

Podaj dla zmiennej środowiska TEMP prawidłowy dysk lub usuń atrybut "tylko do odczytu" z dysku lub katalogu aktualnie określanego przez tę zmienną.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można wykonać żądanej operacji. (Błąd 17)

Nie można wykonać operacji, która unieważniłaby bieżący stan projektu. Ten błąd ma następujące przyczyny i rozwiązania:

•	Żądana operacja unieważniłaby bieżący stan projektu. Na przykład, błąd ten pojawi się, jeżeli w czasie, gdy program jest w trybie przerwania, okno dialogowe Odwołania zostanie wykorzystane do dodania odwołania do nowego projektu lub biblioteki obiektowej.

Zakończ wykonywanie bieżącego kodu programu i ponów tę operację.

•	Próbowano programowo zmodyfikować aktualnie wykonywany kod programu. Na przykład, kod programu usiłował wczytać z dysku do aktualnie wykonywanego modułu kod innego programu.

Można modyfikować moduły w projekcie, które nie są aktualnie wykonywane, nie można jednak wprowadzać modyfikacji do wykonywanego modułu. Aby wprowadzić takie zmiany, trzeba zatrzymać wykonywanie modułu, zmodyfikować ten moduł i ponownie go uruchomić.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można zmienić nazwy, używając nazwy innego dysku. (Błąd 74)

Nowa nazwa podana w instrukcji Name nie może zawierać nazwy innego dysku. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Próbowano przenieść plik na inny dysk, używając instrukcji Name.

Użyj instrukcji FileCopy, aby zapisać plik na innym dysku, a następnie usuń stary plik za pomocą instrukcji Kill.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można zapisać pliku w katalogu TEMP. (Błąd 735)

Składniki projektu często muszą zapisywać na dysku tymczasowe informacje. Ten błąd ma następujące przyczyny i rozwiązania:

•	Składnik nie może odnaleźć katalogu o nazwie TEMP.

Utwórz katalog o nazwie TEMP i ustaw zmienną środowiska TEMP na ścieżkę dostępu do tego katalogu.

•	Na dysku lub partycji z katalogiem TEMP jest zbyt mało miejsca do zapisania informacji.

Zwolnij miejsce na dysku, usuwając niepotrzebne pliki, lub utwórz katalog TEMP na innej partycji i ustaw zmienną środowiska TEMP na ścieżkę dostępu do tego katalogu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Klasa nie obsługuje automatyzacji. (Błąd 430)

Nie wszystkie obiekty mają interfejs służący automatyzacji. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Klasa podana w funkcji GetObject lub CreateObject została odnaleziona, ale nie ma ona programowego interfejsu.

Nie można napisać kodu programu sterującego zachowaniem się obiektu, dopóki nie podlega on automatyzacji. Sprawdź dokumentację aplikacji, która utworzyła obiekt, aby zapoznać się z ograniczeniami dotyczącymi stosowania automatyzacji z tą klasą obiektu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Błąd blokowania zasobów programowych. (Błąd 455)

Podczas dostępu do zasobów programowych zasoby te trzeba zablokować. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Wykonano wywołanie procedury z zasobów programowych. Zasoby zostały odnalezione, ale podczas próby ich zablokowania wystąpił błąd.

Sprawdź błąd zwrócony przez zmienną Hlock, "Illegal on empty handle" (Niedozwolone na pustym dojściu) lub "Illegal on free block" (Niedozwolone na wolnym bloku). Błąd ten może pojawić się tylko w systemie Macintosh.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie odnaleziono zasobów programowych. (Błąd 454)

Błąd ten może pojawić się tylko w systemie Macintosh. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Wykonano wywołanie procedury z zasobów programowych, ale zasobów tych nie udało się odnaleźć.

Sprawdź, czy zasoby istnieją i czy odwołanie do nich jest poprawne.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Utracono połączenie z biblioteką typów lub biblioteką obiektów procesu zdalnego. (Błąd 442)

Podczas dostępu zdalnego (tzn. podczas dostępu do obiektu, który jest częścią innego procesu lub jest wykonywany na innej maszynie) utracono połączenie z biblioteką obiektów. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Utracono połączenie z biblioteką obiektową lub biblioteką typów procesu zdalnego.

Aby przywrócić to połączenie:

1	Uruchom ponownie obiekt Application.

2	W oknie dialogowym błędu, poprzez które wyświetlono ten temat Pomocy, wybierz przycisk OK, aby wyświetlić okno dialogowe Odwołania.

3	Utracone odwołanie pojawi się ze słowem BRAKUJE po lewej stronie.

4	Usuń utracone odwołanie.

5	W oknie dialogowym Odwołania kliknij pole wyboru obok obiektu uruchomionego w kroku 1.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Błąd urządzenia podczas operacji we-wy. (Błąd 57)

Urządzenia zewnętrzne generują czasami nieprzewidywalne błędy. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Podczas wykorzystywania przez program urządzenia zewnętrznego, np. drukarki lub dysku, pojawił się błąd wejścia lub wyjścia.

Sprawdź, czy urządzenie to działa poprawnie i ponów operację.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Urządzenie nie jest dostępne. (Błąd 68)

Ten błąd ma następujące przyczyny i rozwiązania:

•	Urządzenie, do którego próbowano uzyskać dostęp, nie jest w trybie online albo nie istnieje.

Sprawdź zasilanie urządzenia i wszystkie kable łączące komputer z tym urządzeniem. Przy próbie dostępu do drukarki poprzez sieć sprawdź, czy istnieje połączenie logiczne między komputerem i drukarką, np. połączenie kojarzące urządzenie LPT1 z identyfikatorem drukarki sieciowej.

•	Możliwe, że połączenie z siecią zostało utracone.

Wznów połączenie z siecią i ponów operację.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Brak miejsca na dysku (Błąd 61)

Ten błąd ma następujące przyczyny i rozwiązania:

•	Brak miejsca na dysku do zakończenia operacji Print #, Write # lub Close.

Przenieś kilka plików na inny dysk lub usuń kilka plików.

•	Brak miejsca na dysku do utworzenia wymaganych plików.

Przenieś kilka plików na inny dysk lub usuń kilka plików.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Dysk nie jest gotowy. (Błąd 71)

Ten błąd ma następujące przyczyny i rozwiązania:

•	W podanym napędzie nie ma dysku.

Włóż dysk do napędu i ponownie wykonaj operację.

•	Drzwiczki podanego napędu są otwarte.

Zamknij drzwiczki napędu i ponownie wykonaj operację.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Dzielenie przez zero. (Błąd 11)

Dzielenie przez zero nie jest wykonalne. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Wartość wyrażenia użytego jako dzielnik jest równa zero.

Sprawdź w wyrażeniu pisownię zmiennych. Błędnie napisana nazwa zmiennej może w sposób niezamierzony utworzyć zmienną numeryczną inicjowaną wartością zero. Sprawdź poprzednie operacje na zmiennych w tym wyrażeniu, zwracając szczególną uwagę na zmienne przekazywane do procedury jako argument z innych procedur.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Błąd ładowania biblioteki DLL. (Błąd 48)

Biblioteka dołączana dynamicznie (DLL) jest biblioteką podaną w klauzuli Lib instrukcji Declare. Ten błąd ma następujące przyczyny i rozwiązania:

•	Plik nie jest plikiem wykonywalnym DLL.

Jeżeli plik jest źródłowym plikiem tekstowym, musi być on skompilowany i skonsolidowany do postaci wykonywalnego pliku DLL.

•	Plik nie jest plikiem DLL systemu Microsoft Windows.

Uzyskaj odpowiednik DLL tego pliku dla systemu Microsoft Windows.

•	Plik ten jest wcześniejszą wersją biblioteki DLL systemu Microsoft Windows, która jest niezgodna z trybem ochrony systemu Microsoft Windows.

Uzyskaj uaktualnioną wersję biblioteki DLL.

•	Ta biblioteka DLL odwołuje się do innej biblioteki DLL, która nie istnieje.

Uzyskaj bibliotekę, do której odnosi się odwołanie, i udostępnij ją dla innych bibliotek DLL.

•	Ta biblioteka DLL lub jedna z bibliotek DLL, do których odnosi się odwołanie, nie znajduje się w katalogu podawanym przez ścieżkę dostępu.

Przenieś bibliotekę DLL do katalogu, do którego odnosi się odwołanie, lub wpisz bieżący katalog biblioteki do ścieżki dostępu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Plik już istnieje. (Błąd 58)

Ten błąd ma następujące przyczyny i rozwiązania:

•	Błąd ten pojawia się w czasie wykonywania, jeżeli nazwa nowego pliku, na przykład nazwa podana w instrukcji Name, jest identyczna z nazwą już istniejącego pliku.

Podaj nową nazwę w instrukcji Name lub przed podaniem tej nazwy w instrukcji Name usuń stary plik.

•	Użyto polecenia Zapisz jako do zapisania aktualnie załadowanego projektu, ale taka nazwa projektu już istnieje.

Użyj innej nazwy projektu, jeżeli nie chcesz zastąpić już istniejącego projektu o takiej samej nazwie bieżącym projektem.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Plik jest już otwarty. (Błąd 55)

Czasami trzeba zamknąć plik, aby można było wykonać inną instrukcję Open lub inną operację. Ten błąd ma następujące przyczyny i rozwiązania:

•	Wykonano instrukcję Open trybu wyjścia sekwencyjnego dla już otwartego pliku.

Plik otwarty w jednym trybie dostępu sekwencyjnego należy zamknąć przed otwarciem go w innym trybie dostępu. Na przykład, plik otwarty w trybie dostępu Input trzeba zamknąć przed otwarciem go w trybie dostępu Output.

•	Instrukcja, np. Kill, SetAttr lub Name, odnosi się do otwartego pliku.

Zamknij plik przed wykonaniem tej instrukcji.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można odnaleźć podanego pliku.
Nie można odnaleźć podanego pliku. (Błąd 53)

Nie odnaleziono podanego pliku. Ten błąd ma następujące przyczyny i rozwiązania:

•	Instrukcja, np. Kill, Name lub Open, odnosi się do pliku, który nie istnieje.

Sprawdź pisownię nazwy pliku i określenie ścieżki.

•	Próbowano wywołać procedurę z biblioteki dołączanej dynamicznie (DLL), ale nie udało się odnaleźć pliku biblioteki o nazwie podanej w klauzuli Lib instrukcji Declare.

Sprawdź pisownię nazwy pliku i określenie ścieżki.

•	W środowisku projektowania błąd ten pojawia się przy próbie otwarcia projektu lub załadowania pliku tekstowego, które nie istnieją.

Sprawdź pisownię nazwy projektu lub pliku i określenie ścieżki.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie zainicjowana pętla For. (Błąd 92)

Liczniki pętli For muszą być zainicjowane. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Wykonano skok do środka pętli For...Next.

Usuń skok prowadzący do pętli. Nie zaleca się wstawiania etykiet wewnątrz pętli For...Next.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Próba odczytu poza końcem pliku. (Błąd 62)

Odczyt poza końcem pliku jest niemożliwy. Ten błąd ma następujące przyczyny i rozwiązania:

•	Instrukcja Input # lub Line Input # wykonuje odczyt z pliku, z którego odczytano wszystkie dane, lub z pliku, który jest pusty.

Bezpośrednio przed instrukcją Input # użyj funkcji EOF w celu wykrycia końca pliku.

•	Użyto funkcji EOF w stosunku do pliku otwartego w trybie dostępu Binary.

Funkcja EOF działa tylko na plikach otwartych w trybie dostępu sekwencyjnego Input. W stosunku do plików otwartych w trybie dostępu Binary należy używać funkcji Seek i Loc.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Błąd wewnętrzny. (Błąd 51)

Sprawdź, czy błędu tego nie generuje instrukcja Error lub metoda Raise. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Wystąpił wewnętrzny błąd funkcjonowania systemu Visual Basic.

Jeżeli błędu tego nie generuje instrukcja Error lub metoda Raise, skontaktuj się z serwisem technicznym firmy Microsoft, podając warunki, w jakich pojawia się ten komunikat.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowy format Schowka. (Błąd 460)

Schowek akceptuje tylko dane w pewnych określonych formatach. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Próbowano umieścić w Schowku dane ze składnika, ale ich format jest niezgodny z formatem dozwolonym przez Schowek.

Przejrzyj dokumentację tego składnika, aby dowiedzieć się, czy można użyć Schowka do transferu danych z tego składnika.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowy format pliku. (Błąd 321)

Pliki dyskowe zawierają dane zapisane często w prawnie zastrzeżonych formatach. Ten błąd ma następujące przyczyny i rozwiązania:

•	Próbowano załadować plik do składnika, ale format danych w tym pliku był niezgodny z formatem składnika.

Przejrzyj dokumentację tego składnika, aby określić właściwy format dla danych z pliku dyskowego i dowiedzieć się, czy składnik ten obsługuje konwersję formatów.

•	Próbowano zapisać dane składnika do pliku, ale format danych składnika był niezgodny z formatem pliku.

Przejrzyj dokumentację tego składnika, aby dowiedzieć się, czy ten składnik obsługuje konwersję formatów.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowa liczba porządkowa. (Błąd 452)

Wywołanie biblioteki dołączana dynamicznie (DLL) z wykorzystaniem składni #num wskazało na użycie liczby zamiast nazwy procedury. Ten błąd ma następujące przyczyny i rozwiązania:

•	Próba konwersji wyrażenia num na liczbę porządkową zakończyła się niepowodzeniem.

Sprawdź, czy wyrażenie reprezentuje prawidłową liczbę, lub wywołaj procedurę przez nazwę.

•	Podane wyrażenie num nie określa żadnej funkcji w bibliotece DLL.

Sprawdź, czy wyrażenie num określa prawidłową funkcję w bibliotece DLL.

•	Biblioteka typów zawiera nieprawidłową deklarację powodującą wewnętrzne użycie niewłaściwej liczby porządkowej.

Umieść kod programu w komentarzu, aby odizolować wywołanie procedury powodujące błąd. Napisz instrukcję Declare dla tej procedury i zgłoś wystąpienie problemu dostawcy biblioteki typów.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowy ciąg znaków wzorca. (Błąd 93)

Ciąg znaków wzorca podany w operacji poszukiwania Like jest nieprawidłowy. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Typowym przykładem nieprawidłowego wyrażenia listy znaków jest [a-b, gdzie brakuje prawego nawiasu.

Użyj znaków, które są prawidłowe w wyrażeniach listy.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowe wywołanie procedury lub nieprawidłowy argument. (Błąd 5)

Nie udało się zakończyć którejś z czynności wywołania. Ten błąd ma następujące przyczyny i rozwiązania:

•	Prawdopodobnie argument przekracza zakres dopuszczalnych wartości. Na przykład, funkcja Sin akceptuje tylko wartości z określonego zakresu. Argumenty dodatnie mniejsze niż 2 147 483 648 są akceptowane, natomiast argument równy 2 147 483 648 generuje ten błąd.

Sprawdź zakresy wartości dopuszczalnych dla argumentów.

•	Błąd ten może pojawić się także podczas próby wywołania procedury, która nie jest prawidłowa na bieżącej platformie. Na przykład, niektóre procedury są prawidłowe tylko w systemie Microsoft Windows lub tylko w systemie Macintosh itd.

Sprawdź informacje o procedurze dotyczące podanej platformy.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowy indeks tablicy właściwości. (Błąd 381)

Wartość właściwości może być tablicą wartości. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Tablica właściwości składnika mogła mieć dolny indeks równy zero, a górny indeks równy liczbie elementów w tablicy minus 1. Inną możliwością jest to, że dolny indeks mógł być równy 1, a górny równy liczbie elementów w tablicy.

Przejrzyj dokumentację tego składnika, aby sprawdzić, czy indeks znajduje się w prawidłowym dla tej właściwości zakresie.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Błędne użycie Null. (Błąd 94)

Null jest podtypem typu Variant używanym do wskazania, że pozycja danych nie zawiera żadnych prawidłowych danych. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Próbowano pobrać wartość zmiennej typu Variant lub wyrażenie o wartości Null. Na przykład:

MojaZmienna = Null

For Count = 1 To MojaZmienna

. . .

Next Count

Sprawdź, czy zmienna ma prawidłową wartość.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Argument nazwany został już podany. (Błąd 448)

Nazwany argument nie może być użyty w wywołaniu procedury, dopóki nie pojawi się w definicji tej procedury. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Podano argument nazwany, ale w definicji procedury nie określono, że procedura ma przyjmować argument o tej nazwie.

Sprawdź pisownię nazwy argumentu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Niezbędny jest indeks tablicy właściwości. (Błąd 385)

Wartość tej właściwości jest tablicą, a nie pojedynczą wartością. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Nie podano indeksu tablicy właściwości, do której próbowano uzyskać dostęp.

Przejrzyj dokumentację składnika, aby znaleźć zakres indeksów odpowiednich dla tej tablicy. Podaj odpowiedni indeks w instrukcji dostępu do właściwości.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Obiekt nie obsługuje bieżących ustawień regionalnych. (Błąd 447)

Nie wszystkie obiekty obsługują wszystkie ustawienia regionalne. Ten błąd ma następujące przyczyny i rozwiązania:

•	Próbowano uzyskać dostęp do obiektu, który nie obsługuje ustawień regionalnych bieżącego projektu. Na przykład, jeżeli bieżący projekt ma ustawienia regionalne "Canadian French", to obiekt, do którego próbowano uzyskać dostęp, musi obsługiwać to ustawienie.

Sprawdź, jakie ustawienia regionalne obsługuje obiekt.

•	Obiekt korzysta z obsługi języków narodowych w bibliotece dołączanej dynamicznie (DLL), np. w bibliotece OLE2NLS.DLL, która może być nieaktualna.

Postaraj się o nowszą wersję biblioteki DLL  taką, która obsługuje ustawienia regionalne bieżącego projektu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Obiekt nie obsługuje argumentów nazwanych. (Błąd 446)

Nie wszystkie obiekty obsługują nazwany argument. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Próbowano uzyskać dostęp do obiektu, którego metody nie obsługują argumentów nazwanych.

Podczas wykonywania metod na tym obiekcie podawaj argumenty pozycyjnie. Przejrzyj dokumentację obiektu, aby uzyskać więcej informacji o pozycjach argumentów i ich typach.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Obiekt nie obsługuje tej operacji. (Błąd 445)

Nie wszystkie obiekty obsługują wszystkie operacje. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Odwołano się do metod lub właściwości, która nie jest obsługiwana przez ten obiekt.

Przejrzyj dokumentację obiektu, aby uzyskać więcej informacji o tym obiekcie, oraz sprawdź pisownię właściwości i metod.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Obiekt nie jest kolekcją. (Błąd 451)

Niektóre właściwości, metody i operacje mogą być stosowane tylko w stosunku do obiektów Collection. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Podano operację lub właściwość, która odnosi się wyłącznie do kolekcji, a obiekt nie jest kolekcją.

Sprawdź pisownię nazwy obiektu lub właściwości oraz czy obiekt jest obiektem Collection. Sprawdź również poprawność składni metody Add użytej do dodania obiektu do kolekcji oraz poprawność pisowni identyfikatora.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Wymagany jest obiekt. (Błąd 424)

Odwołania do właściwości i metod często wymagają wyraźnie określonego (jawnego) kwalifikatora obiektu. Ten błąd ma następujące przyczyny i rozwiązania:

•	Odwołano się do właściwości lub metody obiektu, nie podając prawidłowego kwalifikatora tego obiektu.

Określ kwalifikator obiektu, jeżeli nie został on podany. Na przykład, kwalifikator obiektu można pominąć przy odwoływaniu się do właściwości formularza z własnego modułu tego formularza, ale nie można go pominąć, odwołując się do tych właściwości z modułu standardowego.

•	Podano kwalifikator obiektu, ale nie został on rozpoznany jako obiekt.

Sprawdź pisownię kwalifikatora obiektu i upewnij się, że obiekt jest widoczny w części programu, w której występuje odwołanie do niego. W przypadku obiektów Collection, sprawdź każde wystąpienie metody Add pod względem poprawności składni i pisowni wszystkich elementów.

•	Podano prawidłowy kwalifikator obiektu, ale błąd wystąpił w innej części wywołania.

Możliwe, że ten błąd spowodowała niepoprawna ścieżka podana jako argument instrukcji File Open aplikacji głównej. Sprawdź argumenty.

•	W przypisaniu odwołania do obiektu nie użyto instrukcji Set.

Jeżeli wartość zwracana w wywołaniu procedury CreateObject jest przypisywana do zmiennej typu Variant, to przy braku instrukcji Set niekoniecznie musi wystąpić błąd. W przedstawionym poniżej przykładowym kodzie programu tworzone jest niejawne wystąpienie programu Microsoft Excel, a jego właściwość domyślna (ciąg znaków "Microsoft Excel") jest zwracana i przypisywana do zmiennej WartWyn typu Variant. Kolejna próba użycia zmiennej WartWyn jako odwołania do obiektu spowoduje ten błąd:

Dim WartWyn	' Zmienna typu Variant.

' Właściwość domyślna jest przypisywana do zmiennej WartWyn typu Variant o podtypie 8.

WartWyn = CreateObject("Excel.Application")

WartWyn.Visible = True	' Tutaj pojawia się błąd.

Użyj instrukcji Set do przypisania odwołania do obiektu.

•	Niekiedy błąd ten występuje w przypadku, gdy obiekt jest prawidłowy, ale usiłowano wykonać na nim niepoprawną operację. Na przykład, błąd ten pojawi się przy próbie przypisania wartości do właściwości przeznaczonej tylko do odczytu.

Przejrzyj dokumentację obiektu i sprawdź, czy wykonywana operacja jest prawidłowa.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Zmienna obiektowa lub zmienna bloku With nie jest ustawiona. (Błąd 91)

Tworzenie zmiennej obiektowej składa się z dwóch kroków. W pierwszym kroku należy zadeklarować zmienną obiektową. Następnie trzeba przypisać prawidłowe odwołanie do tej zmiennej, używając instrukcji Set. Podobnie należy zainicjować blok With...End With, wykonując punkt wejścia do instrukcji With. Ten błąd ma następujące przyczyny i rozwiązania:

•	Próbowano użyć zmiennej obiektowej, która nie odwołuje się jednak do prawidłowego obiektu.

Podaj lub zmień odwołanie dla zmiennej obiektowej. Na przykład, jeżeli w poniższym programie pominięto by instrukcję Set, to odwołanie do obiektu MójObiekt spowoduje błąd:

Dim MójObiekt As Object	' Utwórz zmienną obiektową.

Set MójObiekt = Sheets(1)	' Utwórz prawidłowe odwołanie do obiektu.

MójLicz = MójObiekt.Count	' Przypisz wartość Count do zmiennej MójObiekt.

•	Próbowano użyć zmiennej obiektowej ustawionej na wartość Nothing.

Set MójObiekt = Nothing	' Zwolnij obiekt.

MójLicz = MójObiekt.Count	' Odwołaj się do zwolnionego obiektu.

Zmień odwołanie dla zmiennej obiektowej. Na przykład użyj nowej instrukcji Set do ustawienia nowego odwołania do obiektu.

•	Obiekt jest prawidłowym obiektem, ale nie został on ustawiony, ponieważ w oknie dialogowym Odwołania nie zaznaczono biblioteki obiektowej, w której jest on opisany.

W oknie dialogowym Dodaj odwołania zaznacz tę bibliotekę obiektów.

•	Miejsce przeznaczenia instrukcji GoTo znajduje się wewnątrz bloku With.

Nie wykonuj skoku do wnętrza bloku With. Sprawdź, czy blok jest inicjowany przez wykonywanie punktu wejścia instrukcji With.

•	W poleceniu Ustaw następną instrukcję podano wiersz znajdujący się wewnątrz bloku With.

Blok With musi być zainicjowany przez wykonanie punktu wejścia do instrukcji With.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Błąd automatyzacji. (Błąd 440)

Podczas dostępu do obiektu automatyzacji mogą pojawić się określone typy błędów. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Podczas wykonywania metody albo podczas pobierania lub ustawiania właściwości zmiennej obiektowej wystąpił błąd. Błąd ten został zgłoszony przez aplikację, która utworzyła obiekt.

Sprawdź właściwości obiektu Err, aby określić źródło i naturę błędu. Spróbuj także użyć instrukcji On Error Resume Next bezpośrednio przed instrukcją dostępu, a następnie sprawdź błędy pojawiające się bezpośrednio za tą instrukcją.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Obiekt nie obsługuje tej właściwości lub metody. (Błąd 438)

Nie wszystkie obiekty obsługują wszystkie właściwości i metody. Ten błąd ma następujące przyczyny i rozwiązania:

•	Podano metodę lub właściwość, która nie istnieje dla tego obiektu automatyzacji.

Przejrzyj dokumentację tego obiektu, aby uzyskać o nim więcej informacji oraz sprawdź pisownię właściwości i metod.

•	Określono procedurę typu Friend, dla której ma zachodzić wiązanie opóźnione.

Nazwa procedury Friend musi być znana w czasie kompilacji. Nie może pojawić się ona w wywołaniu, które jest wiązane w czasie wykonywania.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Za mało pamięci (Błąd 7)

Potrzebna jest większa pamięć niż pamięć aktualnie dostępna lub osiągnięto granicę segmentu o wielkości 64 KB. Ten błąd ma następujące przyczyny i rozwiązania:

•	Istnieje za dużo otwartych aplikacji, dokumentów lub plików źródłowych.

Zamknij niepotrzebne aplikacje, dokumenty lub pliki źródłowe.

•	Moduł lub procedura zajmuje za dużo pamięci.

Podziel duże moduły lub procedury na mniejsze jednostki. Nie zaoszczędzi to pamięci, ale może uchronić przed osiągnięciem granicy segmentu (64 KB).

•	System Microsoft Windows działa w trybie standardowym.

Uruchom system Microsoft Windows w trybie rozszerzonym.

•	System Microsoft Windows działa w trybie rozszerzonym, ale zabrakło mu pamięci wirtualnej.

Zwiększ pamięć wirtualną, zwalniając trochę pamięci na dysku, lub zapewnij, że pamięć wirtualna będzie dostępna.

•	Wykonywane są programy rezydujące w pamięci (TSR).

Usuń programy typu TSR.

•	Załadowano zbyt dużo sterowników urządzeń.

Usuń zbędne sterowniki urządzeń.

•	Zabrakło pamięci dla zmiennej typu Public.

Zmniejsz liczbę zmiennych typu Public.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Brak miejsca na stosie (Błąd 28)

Stos jest to roboczy obszar pamięci, który dynamicznie zwiększa się i zmniejsza w zależności od żądań wykonywanego programu. Ten błąd ma następujące przyczyny i rozwiązania:

•	Istnieje zbyt dużo aktywnych wywołań procedur Function, Sub lub Property.

Sprawdź, czy procedury nie są zagnieżdżone zbyt głęboko. Dotyczy to szczególnie procedur rekursywnych, tzn. procedur, które wywołują same siebie. Sprawdź, czy procedury rekursywne kończą się poprawnie. Użyj okna dialogowego Wywołania, aby zobaczyć, które procedury są aktywne (znajdują się na stosie).

•	Lokalne zmienne potrzebują więcej pamięci niż pamięć aktualnie dostępna.

Spróbuj zadeklarować niektóre zmienne na poziomie modułu. Można także zadeklarować wszystkie zmienne w procedurze jako statyczne, poprzedzając procedury Property, Sub lub Function słowem kluczowym Static. Można również użyć instrukcji Static w deklaracjach poszczególnych zmiennych w procedurach.

•	Istnieje zbyt dużo ciągów znaków o stałej długości.

Dostęp w procedurze do ciągów znaków o stałej długości jest szybszy, ale ciągi te zajmują więcej obszaru stosu niż ciągi o zmiennej długości, ponieważ na stosie są umieszczane dane z tych ciągów. Spróbuj przedefiniować niektóre z ciągów o stałej długości na ciągi o zmiennej długości. Jeżeli w procedurze są deklarowane ciągi o zmiennej długości, to tylko deskryptor ciągu (a nie same dane) jest umieszczany na stosie. Istnieje również możliwość zdefiniowania ciągu na poziomie modułu, i wówczas ciąg nie potrzebuje w ogóle stosu. Zmienne zadeklarowane na poziomie modułu są domyślnie zmiennymi typu Public i dlatego ciągi znaków są widoczne dla wszystkich procedur w tym module.

•	Istnieje zbyt dużo zagnieżdżonych wywołań funkcji DoEvents.

Użyj okna dialogowego Wywołania do wyświetlenia aktywnych procedur (znajdujących się na stosie).

•	Kod programu wyzwolił kaskadę zdarzeń.

Kaskada zdarzeń powstaje przez wywołanie zdarzenia, które z kolei wywołuje procedurę obsługi zdarzenia będącą już na stosie. Kaskada zdarzeń przypomina nie zakończone wywołanie procedury rekursywnej, ale jest mniej czytelna, ponieważ jest wykonywana przez system Visual Basic, a nie przez jawne wywołanie w kodzie programu. Użyj okna dialogowego Wywołania do wyświetlenia aktywnych procedur (znajdujących się na stosie).

Aby wyświetlić okno dialogowe Wywołania, wybierz przycisk Wywołania umieszczony z prawej strony pola Procedure w oknie Analiza programu lub wybierz polecenie Wywołania. W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Brak miejsca na ciąg znaków(Błąd 14)

System Visual Basic zezwala na używanie bardzo dużych ciągów znaków. Jednak wymagania innych programów i sposób, w jaki użytkownik wykonuje operacje na ciągach, mogą spowodować ten błąd. Ten błąd ma następujące przyczyny i rozwiązania:

•	Błąd ten mogą powodować wyrażenia wymagające dla obliczeń tworzenia ciągów znaków. Na przykład, w niektórych systemach operacyjnych przedstawiony poniżej kod programu powoduje błąd Brak miejsca na ciąg znaków:

MójCiąg = "Pozdrawiam"

For Count = 1 To 100

MójCiąg = MójCiąg & MójCiąg

Next Count

Przypisz ciąg znaków do zmiennej o innej nazwie.

•	Możliwe, że systemowi zabrakło pamięci do wykonania operacji, co uniemożliwiło alokację ciągu znaków.

Usuń niepotrzebne aplikacje z pamięci, aby uzyskać więcej miejsca.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Przepełnienie. (Błąd 6)

Przepełnienie powstaje podczas próby wykonania przypisania przekraczającego granice dopuszczalne dla elementu, do którego następuje przypisanie. Ten błąd ma następujące przyczyny i rozwiązania:

•	Rezultat przypisania, obliczenia lub konwersji typu danych przekracza zakres wartości dopuszczalnych dla tego typu zmiennej.

Przypisz tę wartość zmiennej typu, który może mieć większy zakres wartości.

•	Wartość przypisywana właściwości przekracza maksymalną wartość akceptowaną przez tę właściwość.

Sprawdź, czy wykonywane przypisanie do właściwości mieści się w zakresie dopuszczalnym dla tej właściwości.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można odnaleźć ścieżki. (Błąd 76)

Ścieżka dostępu do pliku zawiera nazwę dysku oraz nazwy katalogów i podkatalogów, przez które trzeba przejść, aby dotrzeć do pliku. Ścieżka dostępu może być względna lub bezwzględna. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Podczas dostępu do pliku lub dysku, na przykład w instrukcji Open, MkDir, ChDir lub RmDir, system operacyjny nie był w stanie odnaleźć podanej ścieżki.

Podaj poprawną ścieżkę.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Błąd dostępu do pliku/ścieżki. (Błąd 75)

Podczas dostępu do pliku lub dysku, na przykład w instrukcji Open, MkDir, ChDir lub RmDir, system operacyjny nie był w stanie utworzyć połączenia między ścieżką a nazwą pliku. Ten błąd ma następujące przyczyny i rozwiązania:

•	Określenie pliku nie jest poprawne.

Nazwa pliku może zawierać pełną (bezwzględną) lub względną nazwę ścieżki. Pełna nazwa ścieżki rozpoczyna się od nazwy dysku (jeżeli ścieżka znajduje się na innym dysku) i zawiera jawną ścieżkę dostępu do pliku, zaczynając od katalogu głównego. Ścieżka, która nie jest pełną ścieżką, jest ścieżką względną w stosunku do bieżącego dysku i katalogu.

•	Próbowano zapisać plik, który miał zastąpić istniejący plik przeznaczony tylko do odczytu.

Zmień atrybut "tylko do odczytu" pliku docelowego lub zapisz plik pod inną nazwą.

•	W trybie dostępu Output lub Append próbowano otworzyć plik przeznaczony tylko do odczytu.

Otwórz plik w trybie Input lub zmień atrybut "tylko do odczytu" tego pliku.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Brak uprawnień (Błąd 70)

Próbowano wykonać zapis na dysku zabezpieczonym przez zapisem lub uzyskać dostęp do zablokowanego pliku. Ten błąd ma następujące przyczyny i rozwiązania:

•	Próbowano otworzyć plik zabezpieczony przed zapisem w trybie dostępu sekwencyjnego Output lub Append.

Otwórz plik w trybie Input lub zmień atrybut zabezpieczający plik przed zapisem.

•	Plik znajdujący się na dysku zabezpieczonym przed zapisem próbowano otworzyć w trybie dostępu sekwencyjnego Output lub Append.

Usuń z dysku zabezpieczenie przed zapisem lub otwórz plik w trybie Input.

•	Próbowano wykonać zapis do pliku zablokowanego przez inny proces.

Poczekaj z otwarciem tego pliku, aż zostanie on zwolniony przez inny proces.

•	Próbowano uzyskać dostęp do rejestru, ale użytkownik nie ma uprawnień dostępu do tego typu rejestru.

W 32-bitowych systemach Microsoft Windows użytkownik musi mieć właściwe uprawnienia umożliwiające dostęp do rejestru systemowego. Zmień uprawnienia lub poproś o ich zmianę administratora systemu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Błąd drukarki. (Błąd 482)

Ten błąd ma następującą przyczynę i rozwiązanie:

•	Wystąpił błąd drukarki, ale żadne dodatkowe informacje nie zostały przesłane do komputera, który wysyłał plik na drukarkę.

Należy sprawdzić drukarkę. Upewnij się, że wszystkie połączenia między komputerem i drukarką są prawidłowe. Większość drukarek wyświetla informacje o błędach, takie jak "Brak papieru", "Tryb offline" itd.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Procedura Property Get nie może być wykonana w trybie wykonywania programu. (Błąd 393)

Nie wszystkie właściwości zwracają informacje w trakcie wykonywania programu. Ten błąd ma następujące przyczyny i rozwiązania:

•	Podczas wykonywania programu właściwość, do której próbowano uzyskać dostęp, jest przeznaczona tylko do odczytu.

Zakończ wykonywanie programu i przejrzyj tę właściwość w trybie projektowania.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Procedura Property Get nie może być wykonana na właściwości przeznaczonej tylko do zapisu. (Błąd 394)

Nie wszystkie właściwości zwracają informacje. Ten błąd ma następujące przyczyny i rozwiązania:

•	Właściwość, do której próbowano uzyskać dostęp nie zwraca informacji.

Nie można określić stanu tej właściwości.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można odnaleźć właściwości lub metody. (Błąd 423)

Pisownia nazwy obiektu musi być zgodna z definicją podaną w bibliotece obiektowej. Ten błąd ma następujące przyczyny i rozwiązania:

•	Wystąpiło odwołanie obiekt.metoda lub obiekt.właściwość, ale ta metoda lub właściwość nie są zdefiniowane.

Możliwe, że błędnie napisano nazwę obiektu. Wyświetl okno Przeglądarka obiektów, aby zobaczyć, jakie właściwości i metody są zdefiniowane dla obiektu. Zaznacz odpowiednią bibliotekę obiektów, aby otrzymać listę dostępnych właściwości i metod.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można odnaleźć właściwości. (Błąd 422)

Nie wszystkie obiekty obsługują ten sam zestaw właściwości. Ten błąd ma następujące przyczyny i rozwiązania:

•	Ten obiekt nie obsługuje podanej właściwości.

Sprawdź pisownię nazwy właściwości. Być może, że próbowano uzyskać dostęp do właściwości nazwanej na przykład "tekst", podczas gdy obiekt ma faktycznie właściwość "nagłówek" lub inną podobnie nazwaną. Przejrzyj dokumentację obiektu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Procedura Property Set nie może być wykonana w trybie wykonywania programu. (Błąd 382)

W czasie wykonywania nie zawsze można uzyskać odwołanie do właściwości. Ten błąd ma następujące przyczyny i rozwiązania:

•	Próbowano uzyskać odwołanie do właściwości, która w trakcie wykonywania programu jest przeznaczona tylko do odczytu albo tylko do zapisu.

Ponieważ użytkownik może używać odwołań zarówno do operacji odczytu, jak i zapisu, właściwość wskazywana odwołaniem musi podczas wykonywania programu obsługiwać obie te operacje.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Procedura Property Set nie może być wykonana na właściwości przeznaczonej tylko do odczytu. (Błąd 383)

W czasie wykonywania nie zawsze można uzyskać odwołanie do właściwości. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Próbowano uzyskać odwołanie do właściwości, która w trakcie wykonywania programu jest przeznaczona tylko do odczytu.

Ponieważ użytkownik może używać odwołań zarówno do operacji odczytu, jak i zapisu, właściwość wskazywana odwołaniem musi podczas wykonywania programu obsługiwać obie te operacje. Z tą właściwością można używać tylko Property Get.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Procedura Property Set jest niedozwolona. (Błąd 387)

Nie wszystkie właściwości zwracają odwołania. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Próbowano uzyskać odwołanie do właściwości, która nie zwraca odwołania.

Ogranicz dostęp do tej właściwości do procedur Property Let i Property Get.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Ciągi zamiany są zbyt długie. (Błąd 746)

Ciąg zamiany nie może przekraczać określonej maksymalnej długości. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Podano ciąg zamiany przekraczający dozwoloną długość.

Przejrzyj dokumentację składnika pod kątem informacji o ograniczeniu na długość.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Instrukcja Resume bez wystąpienia błędu. (Błąd 20)

Instrukcja Resume może występować tylko w programie obsługi błędów i może być wykonywana tylko w aktywnym programie obsługi błędów. Ten błąd ma następujące przyczyny i rozwiązania:

•	Użyto instrukcji Resume poza programem obsługi błędów.

Przenieś tę instrukcję do programu obsługi błędów lub usuń ją.

•	Program wszedł do programu obsługi błędów, mimo że nie było żadnego błędu.

Prawdopodobnie napisano błędnie etykietę wiersza. Skoki do etykiet nie mogą przekraczać granic procedur, dlatego też poszukaj w procedurze etykiety identyfikującej program obsługi błędów. W przypadku znalezienia powtórzonej etykiety podanej jako miejsce docelowe instrukcji skoku, która nie jest instrukcją On Error GoTo, zmień etykietę wiersza tak, aby była ona zgodna z założonym miejscem przeznaczenia.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Instrukcja Return bez instrukcji GoSub. (Błąd 3)

Dla instrukcji Return musi istnieć odpowiednia instrukcja GoSub. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Użyto instrukcji Return, która nie może być skojarzona z żadną instrukcją GoSub.

Sprawdź, czy instrukcja GoSub nie została usunięta przypadkowo.

W przeciwieństwie do instrukcji For...Next, While...Wend i Sub...End Sub, które są kojarzone w czasie kompilacji, instrukcje GoSub i Return są kojarzone w czasie wykonywania.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można odnaleźć podanej funkcji DLL. (Błąd 453)

W odwołaniu użytkownika do biblioteki znaleziono bibliotekę dołączaną dynamicznie (DLL), ale w bibliotece DLL nie znaleziono podanej funkcji DLL. Ten błąd ma następujące przyczyny i rozwiązania:

•	W deklaracji funkcji podano nieprawidłową liczbę porządkową.

Podaj poprawną liczbę porządkową lub wywołaj funkcję przez nazwę.

•	Podano prawidłową nazwę biblioteki DLL, ale nie jest to wersja zawierająca określoną funkcję DLL.

Możliwe, że na tym komputerze zainstalowano prawidłową wersję biblioteki, ale jeżeli w ścieżce dostępu katalog zawierający błędną wersję poprzedza katalog zawierający wersję poprawną, to zostanie odnaleziona niewłaściwa biblioteka DLL. Sprawdź wersje biblioteki DLL na komputerze. W przypadku posiadania wcześniejszej wersji, skontaktuj się z dostawcą w celu otrzymania nowszej wersji.

•	W przypadku pracy na 32-bitowej platformie Microsoft Windows, zarówno nazwa biblioteki DLL, jak również alias (jeżeli jest używany) muszą być poprawne.

Sprawdź, czy nazwa DLL i alias są poprawne.

•	Niektóre 32-bitowe biblioteki DLL zawierają funkcje w nieznacznie różniących się wersjach, które obsługują zarówno ciągi znaków Unicode, jak i ciągi znaków ANSI. Litera "A" umieszczona na końcu nazwy funkcji określa wersję ANSI. Natomiast litera "W" na końcu nazwy funkcji oznacza wersję Unicode.

Jeżeli argumenty funkcji są ciągami znaków, spróbuj dodać "A" do nazwy funkcji.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Wyrażenie jest zbyt skomplikowane. (Błąd 16)

Liczba podwyrażeń dopuszczalnych w wyrażeniu zmiennoprzecinkowym jest różna dla różnych platform. Na przykład, w 32-bitowych systemach operacyjnych Microsoft Windows można stosować maksymalnie 8 poziomów zagnieżdżenia wyrażeń zmiennoprzecinkowych. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Wyrażenie zmiennoprzecinkowe zawiera zbyt dużo zagnieżdżonych podwyrażeń.

Podziel wyrażenie na tyle oddzielnych wyrażeń, ile potrzeba, aby zapobiec w ten sposób wystąpieniu tego błędu.

Uwaga   We starszych wersjach systemu Visual Basic błąd 16 był określany jako "Wyrażenie znakowe jest zbyt skomplikowane.". Taki warunek błędu nie może się już pojawić. Jednak jeżeli w programie istnieje kod, który przechwytuje i obsługuje taki błąd, to należy usunąć go, aby nie pomylić tego starego błędu z nowym.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można odnaleźć poszukiwanego tekstu. (Błąd 744)

Ten błąd ma następującą przyczynę i rozwiązanie:

•	Nie odnaleziono podanego tekstu.

Taki tekst nie istnieje.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Procedura Sub, Function lub Property nie została zdefiniowana. (Błąd 35)

Procedura Sub, Function lub Property musi być zdefiniowana, aby można było ją wywołać. Ten błąd ma następujące przyczyny i rozwiązania:

•	Błędnie napisano nazwę procedury.

Sprawdź pisownię i popraw ją.

•	Próbowano wywołać procedurę z innego projektu bez jawnego dodania odwołania do tego projektu w oknie dialogowym Odwołania.

Aby dodać odwołanie:

1	Wyświetl okno dialogowe Odwołania.

2	Odszukaj nazwę projektu zawierającego procedurę, którą chcesz wywołać. Jeżeli nazwa projektu nie pojawia się w oknie dialogowym Odwołania, kliknij przycisk Przeglądaj, aby ją odnaleźć.

3	Kliknij pole wyboru z lewej strony nazwy projektu.

4	Kliknij przycisk OK.

•	Podana procedura nie jest widoczna dla procedury wywołującej.

Procedury zadeklarowane jako Private w jednym module nie mogą być wywoływane z procedur spoza tego modułu. Jeżeli jest aktywna opcja Option Private Module, to procedury z tego modułu nie są dostępne dla innych projektów. Zlokalizuj tę procedurę.

•	Zadeklarowano procedurę biblioteki dołączanej dynamicznie (DLL), ale procedura ta nie istnieje w podanej bibliotece.

•	Sprawdź liczbę porządkową (jeżeli jest stosowana) lub nazwę procedury. Upewnij się, że wersja biblioteki DLL jest poprawna. Procedura może istnieć tylko w nowszych wersjach tej biblioteki. Jeżeli w ścieżce dostępu katalog zawierający błędną wersję poprzedza katalog z prawidłową wersją, to będzie stosowana niewłaściwa wersja biblioteki DLL. Prawdopodobnie nazwa biblioteki DLL jest poprawna, ale nie jest to wersja zawierająca określoną funkcję.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Indeks poza zakresem. (Błąd 9)

Do elementów tablicy i składników kolekcji można odwoływać się tylko w zdefiniowanych dla nich zakresach. Ten błąd ma następujące przyczyny i rozwiązania:

•	Odwołano się do nie istniejącego elementu tablicy.

Prawdopodobnie, podany indeks był większy lub mniejszy niż zakres dopuszczalnych indeksów albo w tym punkcie aplikacji jeszcze nie zdefiniowano wymiarów tablicy. Sprawdź w deklaracji tablicy górną i dolną granicę jej indeksów. Jeżeli działasz na tablicach, których wymiary są zmieniane, używaj funkcji UBound i LBound do wyznaczania prawidłowych warunków dostępu do tablicy,. Jeżeli indeks określono jako zmienną, sprawdź pisownię nazwy tej zmiennej.

•	Zadeklarowano tablicę, ale nie podano liczby jej elementów. Na przykład, błąd ten powoduje poniższy kod programu:

Dim MojaTab () As Integer

MojaTab (8) = 234	' Powoduje błąd 9.

System Visual Basic sam nie określa jako 0 – 10 nie podanych przez użytkownika zakresów wymiarów tablicy. Trzeba jawnie za pomocą instrukcji Dim lub ReDim podać liczbę elementów w tablicy.

•	Odwołano się do nie istniejącego elementu kolekcji.

Spróbuj użyć instrukcji For Each...Next, zamiast określać elementy indeksu.

•	Użyto skrótowego formatu indeksu, który niejawnie określił nieprawidłowy element.

Na przykład, jeżeli z kolekcją użyto operatora !, to operator ten niejawnie określa klucz w tej kolekcji. Na przykład, obiekt!nazwa_klucza.wartość jest równoważne obiekt.pozycja(nazwa_klucza).wartość. W takim przypadku błąd jest generowany, jeżeli nazwa_klucza reprezentuje nieprawidłowy klucz kolekcji. Aby wyeliminować ten błąd, użyj dla kolekcji prawidłowej nazwy klucza lub prawidłowego indeksu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Ten składnik nie obsługuje zdarzeń. (Błąd 459)

Nie każdy składnik obsługuje deklarowanie i wywoływanie zdarzeń. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Próbowano zadeklarować, wywołać lub napisać procedurę obsługi zdarzenia dla składnika, który nie obsługuje żadnego typu zdarzeń.

Nie można deklarować, wywoływać ani pisać procedur obsługi zdarzeń dla składnika, który nie obsługuje zdarzeń.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Za dużo klientów aplikacji DLL (Błąd 47)

Biblioteka dołączana dynamicznie (DLL) systemu Visual Basic może mieć dostęp jednocześnie tylko 50 aplikacji głównych. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Dana aplikacja lub inne aplikacje będące aplikacjami głównymi systemu Visual Basic (do niektórych z nich może mieć dostęp dana aplikacja) próbują jednocześnie uzyskać dostęp do biblioteki DLL systemu Visual Basic.

Zmniejsz liczbę otwartych aplikacji próbujących uzyskać dostęp do biblioteki systemu Visual Basic.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Za dużo plików (Błąd 67)

Istnieje ograniczenie liczby plików dyskowych, które mogą być otwarte jednocześnie. Ten błąd ma następujące przyczyny i rozwiązania:

•	System operacyjny MS-DOS: W katalogu głównym utworzono więcej plików niż zezwala na to system operacyjny.

System operacyjny MS-DOS ogranicza liczbę plików w katalogu głównym, zwykle do 512. Jeżeli program otwiera, zamyka lub zapisuje pliki w katalogu głównym, należy zmienić go tak, aby używał podkatalogu.

•	System operacyjny MS-DOS: Otwarto więcej plików niż liczba podana w ustawieniu files= w pliku CONFIG.SYS.

Zwiększ liczbę w ustawieniu files= w pliku CONFIG.SYS i ponownie uruchom komputer.

•	System Macintosh: Program próbował otworzyć więcej niż 40 plików.

W systemie Macintosh standardowo można otworzyć maksymalnie 40 plików. Ograniczenie to można zmienić, używając programu usługowego służącego do modyfikacji parametru MaxFiles bloku rozruchowego.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Niezgodność typów. (Błąd 13)

System Visual Basic jest w stanie przeprowadzać konwersje wartości wielu typów, aby móc wykonywać przypisania na typie danych, które nie były możliwe we wcześniejszych wersjach systemu. Jednak błąd ten może się nadal pojawiać i mieć następujące przyczyny i rozwiązania:

•	Zmienna lub właściwość nie jest poprawnego typu. Na przykład zmienna wymagająca wartości całkowitej nie może przyjąć wartości znakowej, chyba że cały ciąg może być uznany za liczbę całkowitą.

Spróbuj wykonywać przypisania tylko między zgodnymi typami danych. Na przykład typ danych Integer można zawsze przypisać do typu Long, typ danych Single można zawsze przypisać do typu Double, a każdy typ (z wyjątkiem typu zdefiniowanego przez użytkownika) można przypisać do typu Variant.

•	Do procedury oczekującej wartości lub właściwości typu Single przekazano obiekt.

Przekaż odpowiednią właściwość typu Single lub wywołaj metodę odpowiednią dla obiektu.

•	Użyto nazwy modułu lub projektu w miejscu, gdzie oczekiwane było wyrażenie, na przykład:

Debug.Print MójModuł

Podaj wyrażenie, które można wyświetlić.

•	Próbowano połączyć tradycyjną obsługę błędów języka Basic z wartościami typu Variant o podtypie Error (10, vbError), na przykład:

Error CVErr(n)

Aby móc wywołać taki błąd, trzeba go odwzorować na błąd wbudowany systemu Visual Basic lub na błąd zdefiniowany przez użytkownika, a następnie wygenerować ten błąd.

•	Nie można przekształcić wartości typu CVErr na wartość typu Date. Na przykład:

MojaZmienna = CDate(CVErr(9))

Użyj instrukcji Select Case lub podobnej konstrukcji do odwzorowania zwracanej wartości typu CVErr na taką wartość.

•	W czasie wykonywania ten błąd zwykle wskazuje, że typ Variant użyty w wyrażeniu ma niepoprawny podtyp lub typ Variant zawierający tablicę pojawia się w instrukcji Print #.

Aby wydrukować tablicę, utwórz pętlę, która będzie wyświetlać każdy element indywidualnie.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Wystąpiło przerwanie użytkownika. (Błąd 18)

Proces przerwania wykonywania programu jest użyteczny, ale jeżeli pozostaje nie obsłużony, powoduje zakończenie aplikacji. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Użytkownik nacisnął klawisze CTRL+BREAK lub inny klawisz przerwania.

W środowisku projektowania kontynuuj wykonywanie programu. Aby uwzględnić występowanie takiej sytuacji w czasie wykonywania, obsłuż ten błąd w odpowiedni sposób.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Zmienna używa typu, który nie jest obsługiwany przez system Visual Basic. (Błąd 458)

Nie każda zmienna występująca w bibliotece typów lub bibliotece obiektowej może być użyta w dowolnym języku programowania. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Próbowano użyć zmiennej zdefiniowanej w bibliotece typów lub bibliotece obiektów, która ma typ danych nie obsługiwany przez system Visual Basic.

Nie można używać zmiennej typu, który nie jest rozpoznawany przez system Visual Basic w programie napisanym w języku Visual Basic.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Błędna liczba argumentów lub nieprawidłowe przypisanie do właściwości. (Błąd 450)

Liczba argumentów procedury musi być zgodna z liczbą parametrów w definicji tej procedury. Ten błąd ma następujące przyczyny i rozwiązania:

•	Liczba argumentów w wywołaniu procedury nie była taka sama jak liczba argumentów obowiązkowych oczekiwanych przez tę procedurę.

Porównaj listę argumentów w wywołaniu z deklaracją lub definicją procedury.

•	Podano indeks dla formantu nie będącego elementem tablicy formantów.

Podany indeks jest interpretowany jako argument, ale ani indeks, ani argument nie były oczekiwane, i dlatego wystąpił błąd. Usuń specyfikację indeksu lub utwórz tablicę formantów. W czasie projektowania na arkuszu właściwości lub w oknie właściwości formantu ustaw właściwość Index na wartość niezerową.

•	Próbowano przypisać wartość do właściwości przeznaczonej tylko do odczytu lub do właściwości, dla której nie istnieje żadna procedura Property Let.

Przypisanie wartości do właściwości jest tym samym, co przekazanie wartości jako argumentu do procedury Property Let obiektu. Należy poprawnie zdefiniować procedurę Property Let; musi ona mieć o jeden argument więcej niż odpowiednia procedura Property Get. Jeżeli jednak właściwość jest przeznaczona tylko do odczytu, nie można przypisać do niej żadnej wartości.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Składnik ActiveX nie może utworzyć obiektu lub zwrócić odwołania do tego obiektu. (Błąd 429)

Tworzenie obiektów wymaga, aby klasa obiektu była zarejestrowana w rejestrze systemowym i aby były dostępne wszystkie skojarzone biblioteki dołączane dynamicznie (DLL). Ten błąd ma następujące przyczyny i rozwiązania:

•	Klasa nie jest zarejestrowana. Na przykład, w rejestrze systemowym nie ma żadnego zapisu o tej klasie lub klasa ta występuje, ale określa ona plik niewłaściwego typu albo plik, którego nie można odnaleźć.

W miarę możliwości spróbuj uruchomić aplikację obiektu. Jeżeli dane w rejestrze są nieaktualne lub błędne, aplikacja powinna sprawdzić rejestr i poprawić dane. Jeżeli uruchomienie aplikacji nie likwiduje błędu, ponownie wykonaj program instalacyjny tej aplikacji.

•	Nie można użyć biblioteki DLL wymaganej przez obiekt, ponieważ nie można jej odnaleźć albo została ona odnaleziona, ale jest uszkodzona.

Sprawdź, czy są dostępne wszystkie skojarzone biblioteki DLL. Na przykład, obiekt dostępu do danych (Data Access Object, DAO) wymaga bibliotek DLL, które są różne dla różnych platform. Możliwe, że trzeba będzie ponownie wykonać instalację takiego obiektu, jeżeli jest on przyczyną tego błędu.

•	Obiekt jest dostępny na tym komputerze, ale jest on licencjonowanym obiektem automatyzacji, a nie można sprawdzić licencji niezbędnej do utworzenia wystąpienia tego obiektu.

Wystąpienia niektórych obiektów mogą pojawić się tylko wtedy, gdy składnik znajdzie klucz licencji sprawdzający, czy obiekt jest zarejestrowany na bieżącym komputerze. Gdy odwołanie do obiektu jest wykonywane poprzez prawidłowo zainstalowaną bibliotekę typów lub bibliotekę obiektową, to poprawny klucz jest dostarczany automatycznie.

Jeżeli próba utworzenia wystąpienia obiektu odbywa się poprzez funkcję CreateObject lub GetObject, obiekt musi najpierw odnaleźć klucz. W takim przypadku musi on przeszukać rejestr systemowy lub poszukać specjalnego pliku, który utworzył podczas instalacji, na przykład jednego z plików o rozszerzeniu lic. Jeżeli nie można odnaleźć klucza, nie można także utworzyć wystąpienia obiektu. Jeżeli użytkownik błędnie zainstalował aplikację obiektu, w sposób niezamierzony usunął niezbędny plik lub zmienił rejestr systemowy, obiekt może nie być stanie odnaleźć swojego klucza. Jeżeli nie można odnaleźć klucza, nie można także utworzyć wystąpienia obiektu. W takim przypadku operacja tworzenia wystąpienia obiektu może działać w systemie projektanta aplikacji, ale nie w systemie użytkownika. Możliwe, że użytkownik będzie musiał ponownie zainstalować licencjonowany obiekt.

•	Próbowano użyć funkcji GetObject do pobrania odwołania do klasy utworzonej za pomocą systemu Visual Basic.

Nie można użyć funkcji GetObject do pobrania odwołania do klasy utworzonej za pomocą systemu Visual Basic.

•	Dostęp do obiektu został jawnie zabroniony.

Na przykład możliwe jest, że próbowano uzyskać dostęp do obiektu danych, który jest aktualnie używany i został zablokowany, aby zapobiec wystąpieniu sytuacji zakleszczenia w dostępie do zasobów systemu. Użytkownik może uzyskać dostęp do tego obiektu innym razem.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowa wartość właściwości. (Błąd 380)

Większość właściwości akceptuje tylko wartości określonego typu i z ustalonego zakresu. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Przypisano właściwości nieodpowiednią wartość.

Wyświetl temat Pomocy dotyczący tej właściwości, aby określić, jakie typy i zakres wartości są dla niej odpowiednie.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowy rysunek. (Błąd 481)

Do właściwości Picture lub obiektu Picture można przypisać tylko rysunek. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Właściwości Picture lub obiektowi Picture próbowano przypisać element, który nie został rozpoznany jako ikona, mapa bitowa lub plik Metafile systemu Microsoft Windows.

Wyświetl temat Pomocy dotyczący obiektu Picture lub właściwości Picture używanego obiektu, aby określić dopuszczalne typy rysunków.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowy format w pliku zasobów. (Błąd 325)

Format pliku zasobów musi być prawidłowy, aby można było uzyskać do niego dostęp. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Plik zasobów, który próbowano odczytać, ma nieprawidłowy format, lub określony zasób w tym pliku ma nieprawidłowy format.

Jeżeli zawartość pliku została uszkodzona, należy ponownie zainstalować ten plik, korzystając z oryginalnego dysku. Jeżeli błąd będzie się nadal pojawiał, należy skontaktować się z dostawcą zasobów, aby otrzymać nowy plik lub nową wersję zasobów w odpowiednim formacie.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Ten klucz jest już skojarzony z elementem tej kolekcji. (Błąd 457)

Klucz jest ciągiem znaków podawanym w metodzie Add, który jednoznacznie identyfikuje określoną składową kolekcji. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Podano klucz dla elementu kolekcji, który jest już skojarzony z innym elementem tej kolekcji.

Wybierz inny klucz dla tego elementu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Ta tablica ma stały rozmiar lub jest chwilowo zablokowana. (Błąd 10)

Nie dla wszystkich tablic dopuszczalna jest operacja zmiany rozmiaru. Nawet tablice specjalnie zadeklarowane jako tablice dynamiczne oraz tablice określone w zmiennej typu Variant bywają tymczasowo blokowane. Ten błąd ma następujące przyczyny i rozwiązania:

•	Próbowano użyć instrukcji ReDim do zmiany liczby elementów tablicy o stałym rozmiarze. Na przykład, w przedstawionym poniżej kodzie programu tablica TabStała o stałym rozmiarze jest przekazywana do tablicy JakaśTab w procedurze Kolejna, a następnie występuje próba zmiany rozmiaru tablicy JakaśTab:

Sub Pierwsza

Dim TabStała(25) As Integer	' Utwórz tablicę o stałym rozmiarze i

Kolejna TabStała()	' przekaż ją do innej procedury.

End Sub

Sub Kolejna(JakaśTab() As Integer)

ReDim JakaśTab (35)	' Tutaj pojawia się błąd 10.

. . .

End Sub

Zdefiniuj oryginalną tablicę jako tablicę dynamiczną, a nie jako tablicę o stałym rozmiarze, deklarując ją za pomocą instrukcji ReDim (jeżeli deklaracja tej tablicy występuje w procedurze) lub deklarując ją bez podawania liczby elementów (jeżeli deklaracja występuje na poziomie modułu).

•	Próbowano zmienić rozmiar tablicy dynamicznej poziomu modułu, z której jeden element został przekazany do procedury jako argument. Na przykład, w przedstawionym poniżej kodzie programu tablica TabMod jest tablicą dynamiczną poziomu modułu, której 45. element jest przekazywany przez odwołanie do procedury Test:

Dim TabMod () As Integer	' Utwórz tablicę dynamiczną poziomu modułu.

. . .

Sub AliasError()

ReDim TabMod (1 To 73) As Integer

Test TabMod (45)	' Przekaż element tablicy

' poziomu modułu do procedury Test.

End Sub

Sub Test(ZmInt As Integer)

ReDim TabMod (1 To 40) As Integer  ' Tutaj pojawia się błąd.

End Sub

W tym przypadku nie ma potrzeby przekazywania elementu tablicy poziomu modułu, ponieważ jest on widoczny dla wszystkich procedur w tym module. Jednak przy przekazywaniu elementu tablica jest blokowana, aby zapobiec zwolnieniu pamięci dla odwołania będącego parametrem procedury, co mogłoby spowodować nieprzewidywalne skutki przy powrocie z procedury.

•	Próbowano przypisać wartość do zmiennej typu Variant zawierającej tablicę, ale zmienna typu Variant jest aktualnie zablokowana. Na przykład, jeżeli w kodzie programu występuje pętla For Each...Next służąca do wyliczania elementów tablicy zawartej w zmiennej typu Variant, to tablica ta zostaje zablokowana na wejściu do pętli i odblokowana na wyjściu z tej pętli:

MojaTab = Array(9,8,7,6,5,4,3,2,1)

For Each X In MojaTab

MojaTab = 301	' Powoduje błąd, ponieważ tablica jest zablokowana.

Next X

Do wyliczania elementów tablicy użyj pętli For...Next zamiast pętli For Each...Next. Jeżeli tablica jest obiektem pętli For Each...Next, to można ją odczytywać, ale nie można do niej nic zapisać.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Podczas operacji automatyzacji nie można odnaleźć nazwy pliku lub klasy. (Błąd 432)

Funkcja GetObject wymaga albo prawidłowej nazwy pliku łącznie z określeniem ścieżki dostępu do tego pliku, albo nazwy klasy zarejestrowanej w systemie. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Nie udało się odnaleźć podanej nazwy pliku lub klasy w wywołaniu funkcji GetObject.

Sprawdź podane nazwy i ponów operację. Upewnij się, czy nazwa używana dla parametru klasa jest zgodna z nazwą zarejestrowaną w systemie.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Obiekt automatyzacji nie ma składowej domyślnej. (Błąd 443)

Jeżeli nazwa obiektu jest podawana bez właściwości lub metody, system Visual Basic zakłada, że odwołanie jest kierowane do domyślnej składowej (właściwości lub metody) tego obiektu. Jednak, nie wszystkie obiekty mają składową domyślną. Ten błąd ma następującą przyczynę i rozwiązanie:

•	System Visual Basic nie może określić dla podanego obiektu składowej domyślnej.

Przejrzyj dokumentację obiektu i jawnie określ właściwość lub metodę.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieoczekiwany błąd; koniec pracy programu.

Wystąpił nieoczekiwany błąd i nie można było kontynuować pracy systemu Visual Basic. Błąd ten mógł być spowodowany przez błąd sprzętowy lub działanie w systemie innego oprogramowania.


Prawidłowe wartości należą do przedziału liczb całkowitych od 1 do 32.

Próbowano ustawić pole TabStop Width na wartość spoza dopuszczalnego zakresu. W pole to można wpisać liczbę od 1 do 32 (włącznie).


Prawidłowe wartości należą do przedziału liczb całkowitych od 2 do 60.

Próbowano ustawić pole Grid Width lub Grid Height na wartość spoza dopuszczalnego zakresu. W pola te można wpisać liczbę od 2 do 60 (włącznie).


Podany element jest w formacie binarnym i nie może zostać załadowany do Visual Basic.

Formularze binarne utworzone we wcześniejszej wersji systemu Visual Basic nie mogą być ładowane do tej wersji systemu. Konwersja formularzy binarnych na kod ASCII jest możliwa tylko w wersji 2.0 i 3.0 systemu Visual Basic. Jeżeli dostępna jest kopia systemu Visual Basic w wersji 2.0 lub 3.0, to można załadować tę wersję oraz formularz utworzony w wersji 1.0 i zapisać go jako plik tekstowy. Następnie można importować ten formularz do środowiska Visual Basic.


Plik projektu jest przeznaczony tylko do odczytu.

Plik projektu nie jest przeznaczony do zapisu. Aby to zmienić, trzeba zapisać plik pod inną nazwą lub usunąć atrybut "tylko do odczytu".


Plik jest przeznaczony tylko do odczytu.

Plik nie jest przeznaczony do zapisu. Aby to zmienić, trzeba zapisać plik pod inną nazwą lub usunąć atrybut "tylko do odczytu".


Procedura o podanej nazwie już istnieje.

Nazwy procedur w obrębie tego samego zakresu nie mogą się powtarzać. Zmień nazwę procedury.


Podany plik projektu zawiera nieprawidłową wartość klucza. Prawidłowy zakres wynosi od 0 do 'element3'.

Zakres wartości klucza jest ograniczony. Należy stosować wartości tylko z zakresu wartości klucza.


Nazwa projektu zbyt długa. Nazwa została obcięta.

Jeżeli nazwa projektu przekracza dopuszczalną długość, zostaje obcięta do maksymalnej dozwolonej długości.


Podany plik projektu zawiera nieprawidłowy klucz. Projekt nie może być załadowany.

Nie można załadować projektu, jeżeli plik projektu zawiera nieprawidłowy klucz.


Podany element jest nieprawidłowym kluczem. Plik nie może być załadowany.

Nie można załadować pliku, jeżeli zawiera nieprawidłowy klucz.


Nie można odnaleźć podanego pliku.

Nie można odnaleźć podanego pliku. Popraw nazwę ścieżki lub pliku.


Podany plik projektu zawiera nieprawidłową wartość klucza.

Podana wartość klucza jest nieprawidłowa. Zmień ją.


Za mało pamięci do uruchomienia programu; koniec pracy.

Nie można uruchomić systemu Visual Basic z powodu braku pamięci. Zamknij inne aplikacje i spróbuj ponownie.


Niewłaściwa wersja systemu operacyjnego; wymagana jest podana edycja wersji 3.51 systemu Windows NT lub systemu Windows 95.

Do uruchomienia tej wersji systemu Visual Basic wymagana jest podana edycja systemu Windows 95 lub wersji 3.51 systemu Windows NT.


Wystąpił podany błąd systemowy.

Visual Basic napotkał błąd wygenerowany przez system lub składnik zewnętrzny.


Podany plik jest oznaczony wersją nie obsługiwaną przez bieżącą wersję systemu Visual Basic i nie może być załadowany.

Próbowano załadować formularz utworzony za pomocą systemu Visual Basic w wersji 1.0 lub w wersji późniejszej niż bieżąca wersja Visual Basic. Formularz taki nie jest obsługiwany.


Podany plik projektu jest uszkodzony i nie można go załadować.

Visual Basic nie może odczytać pliku projektu. Taka sytuacja może wystąpić, jeżeli plik został zmodyfikowany za pomocą edytora zewnętrznego. Problem ten można rozwiązać, cofając wszystkie zmiany wykonane w pliku.


Nie można zapisać pliku podanego bufora Projektanta. Przy ładowaniu zostaną użyte zwykłe pliki.

Projektant ActiveX nie mógł zapisać informacji do pliku bufora i dlatego przy ładowaniu zostaną wykorzystane zwykłe pliki.

Aby poprawić efektywność działania przy następnym uruchomieniu systemu Visual Basic, Projektant ActiveX zapisuje plik bufora. Projektant nie może teraz wykonać zapisu do pliku bufora ze względu na zbyt mało miejsca na dysku lub niewłaściwe uprawnienia do dysku. Sprawdź, czy na dysku jest wystarczająco dużo pamięci i czy mogą być na nim wykonywane operacje zapisu. Jeżeli problem nadal istnieje, skontaktuj się z dostawcą Projektanta ActiveX.


Za mało pamięci do załadowania pliku

Visual Basic ma za mało pamięci do załadowania pliku. Zamknij inne aplikacje i spróbuj ponownie.


Powtórzona nazwa procedury.

Zdefiniowano (lub próbowano zdefiniować) więcej niż jedną wersję procedury o takiej samej nazwie. Zmień nazwę jednej z procedur. Sprawdź, czy instrukcje Declare dotyczące tej samej procedury mają tę samą klauzulę Alias.


Nie można odnaleźć pliku .exe systemu Pomocy Windows.

Aplikacja Pomocy Windows nie jest dostępna. Jeżeli plik winhelp.exe jest zainstalowany na komputerze, sprawdź, czy znajduje się we właściwym katalogu. Jeżeli na komputerze brak tego pliku, uruchom program instalacyjny Microsoft Windows 95 lub Microsoft Windows NT i zainstaluj Pomoc.


Nie można wyświetlić informacji o systemie.

Visual Basic nie może wyświetlić informacji o systemie po wybraniu opcji Informacje o systemie z okna dialogowego Microsoft Visual Basic - informacje. Możliwe, że brakuje pamięci albo potrzebny plik jest uszkodzony lub go brak.


Nieprawidłowa nazwa procedury.

Ograniczenia narzucone na nazwy procedur są ostrzejsze niż ograniczenia na nazwy identyfikatorów. Ten błąd ma następujące przyczyny i rozwiązania:

•	Usiłowano zdefiniować procedurę, lecz wybrana dla niej nazwa jest nieprawidłowa, gdyż aplikacja główna wykorzystuje ją w innym celu. Na przykład, jeśli aplikacją główną jest program Microsoft Excel, to nie można zdefiniować procedury o nazwie R1C1, gdyż ten identyfikator jest już używany przez program Microsoft Excel.

Wybierz inną nazwę dla procedury.

•	Nazwa procedury jest zastrzeżonym słowem kluczowym, długość nazwy przekracza 255 znaków lub pierwszy znak nazwy nie jest literą.

Wybierz inną nazwę dla procedury.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Opis aplikacji nie może być dłuższy niż 2000 znaków.

Opis aplikacji nie może być dłuższy niż 2000 znaków. Usuń zbędne znaki z opisu.


Należy określić, które elementy mają być wydrukowane.

Nie określono, które elementy mają być drukowane. Po wybraniu polecenia Drukuj z menu Plik zaznacz w oknie dialogowym Drukuj co najmniej jedno z pól wyboru: Formularz lub Kod programu.


Podana nazwa obiektu jest niedozwolona.

Nazwy formularzy i formantów muszą zaczynać się od litery i mogą składać się z maksymalnie 40 znaków — liter, cyfr i znaków podkreślenia (_).

Zauważmy, że właściwość Name formularza lub formantu różni się od właściwości Label — Caption, Text Value — które nadają etykietę lub wyświetlają zawartość formantu w trakcie czasu wykonywania. Właściwości te mogą być zarezerwowanymi słowami kluczowymi, mogą zaczynać się od cyfry i mogą zawierać znaki niealfanumeryczne.


Podana nazwa koliduje z istniejącą nazwą modułu, projektu lub biblioteki obiektów.

Przyczyny tego błędu są następujące:

•	Załadowano formularz, formant użytkownika, dokument użytkownika lub stronę właściwości, które zawierają obiekty o kolidujących ze sobą nazwach. Taka sytuacja może wystąpić, jeżeli plik edytowano poza środowiskiem Visual Basic.

•	Błąd ten może pojawić się przy zmianie nazwy formularza na nazwę taką samą, jak nazwa projektu, innego formularza lub modułu. Ponadto może on wystąpić przy próbie nadania projektowi takiej samej nazwy, jak nazwa formularza lub modułu.


W tej chwili nie można ustawić nazwy projektu.

W tej chwili nie można nadać projektowi nazwy.


Opis aplikacji nie może być dłuższy niż 2000 znaków.


Podany składnik ActiveX nie został poprawnie zarejestrowany lub nie został odnaleziony.

Składnik powinien być zarejestrowany w rejestrze systemowym. Ten błąd ma następujące przyczyny i rozwiązania:

•	Informacje w rejestrze dotyczące tego składnika są niepoprawne i dlatego nie można odnaleźć składnika.

Popraw zapis w rejestrze. W razie potrzeby ponownie zarejestruj ten składnik.

•	Składnik został usunięty przez skasowanie go, a nie drogą użycia programu służącego do deinstalacji.

Ponownie zapisz pliki tego składnika w katalogu określonym w rejestrze.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można wykonać operacji, ponieważ projekt jest chroniony.

Gdy projekt jest chroniony, niektóre operacje są zabronione. Ten błąd ma następujące przyczyny i rozwiązania:

•	Projekt został zabezpieczony w sposób niezamierzony.

Usuń zabezpieczenie i ponownie wykonaj operację.

•	Projekt został zabezpieczony w sposób zamierzony.

Nie podejmuj żadnej akcji, dopóki osoba, która założyła zabezpieczenie, nie usunie go.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można rozpocząć rejestrowania, dopóki bieżąca sesja nie zostanie zakończona.

Nie można "zagnieżdżać" rejestracji. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Trwa sesja rejestracji.

Zakończ bieżącą sesję rejestracji przed rozpoczęciem nowej.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Czy chcesz dokonać eksportu podanego pliku przed jego usunięciem?

Można eksportować formularze i moduły i później ponownie je ładować. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Usuwasz z projektu formularz lub moduł.

Aby zachować moduł, wyeksportuj go. W razie potrzeby będzie go można później zaimportować.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Klasa formularza zawarta w podanym pliku nie jest obsługiwana przez system Visual Basic for Applications; pliku nie można
Klasa formularza zawarta w podanym pliku nie jest obsługiwana przez system Visual Basic for Applications; pliku nie można załadować.

System Visual Basic for Applications obsługuje tylko obiekty formularzy typu UserForm. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Próbowano załadować formularz z wcześniejszej wersji systemu Visual Basic lub formularz z bieżącej wersji, ale autonomicznej.

Prawdopodobnie najłatwiej będzie przeprojektować formularz za pomocą narzędzi do formularzy systemu Visual Basic for Applications. Jeżeli można zapisać formularz w formacie zestawu znaków ASCII, będzie go można modyfikować i importować. Wymaga to od użytkownika dobrego zrozumienia formatów i ograniczeń dotyczących różnych pakietów formularzy.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można załadować podanego pliku.

Nie wszystkie pliki można załadować do środowiska Visual Basic for Applications. Ten błąd ma następującą przyczynę i rozwiązanie:

•	System Visual Basic nie może zinterpretować formatu ładowanego pliku lub plik jest uszkodzony.

Nie można załadować pliku.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


To polecenie zatrzymuje analizę programu.

Niektóre polecenia i operacje powodują, że system Visual Basic zatrzymuje analizę kodu programu. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Niektóre operacje edycyjne, jak deklaracja zmiennej Static, i niektóre polecenia, jak na przykład te, które służą do dodawania nowego modułu lub formularza, powodują przejście wykonywanego lub zawieszonego programu do stanu zatrzymania.

Aby nie zatrzymywać wykonywania kodu programu, nie dodawaj elementów lub nie wykonuj tego polecenia.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Aby dodać odwołanie do projektu, należy przedtem zapisać ten projekt.

Nie można dodać odwołania do nie zapisanego projektu. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Próbowano dodać odwołanie do nie zapisanego projektu.

Przed dodaniem odwołania zapisz projekt.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowe użycie obiektu. (Błąd 425)

Większości obiektów można używać tylko w określony sposób; błąd ten występuje zwykle przy próbie wykorzystania obiektu poza jego zasięgiem. Na przykład, odwołanie do obiektu przekazywane do zdarzenia typu przeciągnij i upuść można prawdopodobnie zastosować tylko w kontekście tego zdarzenia.


Ten typ drukarki nie może wydrukować obrazu formularza. (Błąd 486)

Do wydrukowania obrazu formularza potrzebna jest drukarka graficzna.


W wywołaniu metody Show() nie można użyć określonego obiektu jako formularza nadrzędnego. (Błąd 371)

W wywołaniu metody Show trzeba użyć odpowiedniego obiektu.


Nie odnaleziono podanego formantu ActiveX. (Błąd 363)

Ładowany formularz zawiera formant typu ActiveX nie będący elementem bieżącego projektu. Ten błąd ma następujące przyczyny i rozwiązania:

•	Możliwe, że użyto ręcznie edytowanego pliku .vbp. projektu, aby dodać formularz zawierający formant ActiveX, który nie jest już elementem tego projektu.

Po załadowaniu projektu użyj polecenia Dodaj plik z menu Plik, aby dodać do projektu formant ActiveX.

•	Możliwe, że użyto ręcznie edytowanego pliku vbp.projektu, aby dodać formularz zawierający wcześniejszą wersję formantu ActiveX należącego już do tego projektu.

Po załadowaniu projektu usuń z formularza wcześniejszą i wstaw w to miejsce późniejszą wersję formantu.


Składnik ActiveX został niepoprawnie zarejestrowany. (Błąd 336)

Składnik ActiveX został niepoprawnie zarejestrowany w rejestrze systemowym.


Nie odnaleziono wartości danej o podanej nazwie. (Błąd 327)

Nie znaleziono wartości danej.


Nieprawidłowy rysunek. (Błąd 481)

Właściwości Picture przypisano nieprawidłowy format rysunku. Ten błąd ma następujące przyczyny i rozwiązania:

•	Dla właściwości Picture formularza lub formantu próbowano przypisać format rysunku inny niż mapa bitowa, ikona lub plik Metafile Windows.

Sprawdź, czy plik ładowany do właściwości Picture jest prawidłowym plikiem graficznym obsługiwanym przez system Visual Basic.


Błąd drukarki. (Błąd 482)

Wystąpił problem uniemożliwiający drukowanie. Ten błąd ma następujące przyczyny i rozwiązania:

•	Drukarka nie została zainstalowana poprzez Panel sterowania Windows.

Aby zainstalować drukarkę, otwórz Panel sterowania, dwukrotnie kliknij ikonę Drukarki i wybierz opcję Dodaj drukarkę.

•	Drukarka nie jest w trybie bezpośrednim (online).

Ręcznie przełącz drukarkę w tryb online.

•	W drukarce zablokował się papier lub wystąpił brak papieru.

Ręcznie usuń tę przyczynę.

•	Próbowano wydrukować formularz na drukarce drukującej tylko tekst.

Przełącz się na drukarkę graficzną.


Sterownik drukarki nie obsługuje podanej właściwości. (Błąd 483)

Wykorzystywany sterownik drukarki nie obsługuje tej właściwości obiektu Printer. Ten błąd ma następujące przyczyny i rozwiązania:

•	Działanie właściwości obiektu Printer zależy od sterownika dostarczonego przez producenta drukarki. Niektóre ustawienia właściwości nie dają żadnego efektu lub ustawienia kilku różnych właściwości mogą dawać taki sam efekt. Ustawienia spoza dopuszczalnego zakresu mogą, ale nie muszą, powodować błędu.

Więcej informacji na ten temat podano w dokumentacji fabrycznej określonej drukarki.


Nie można uzyskać od systemu informacji o drukarce, upewnij się, że drukarka jest prawidłowo zainstalowana. (Błąd 484)

Wystąpił problem uniemożliwiający uzyskanie z systemu informacji o drukarce. Ten błąd ma następujące przyczyny i rozwiązania:

•	Drukarka nie została zainstalowana poprzez Panel sterowania Windows.

Aby zainstalować drukarkę, otwórz Panel sterowania, dwukrotnie kliknij ikonę Drukarki i wybierz opcję Dodaj drukarkę.

•	Drukarka nie jest w trybie bezpośrednim (online).

Ręcznie przełącz drukarkę w tryb online.

•	W drukarce zablokował się papier lub wystąpił brak papieru.

Ręcznie usuń tę przyczynę.


Nieprawidłowy typ rysunku. (Błąd 485)

Format rysunku pliku źródłowego, który próbowano załadować, nie zgadza się z podaną właściwością obiektu. Ten błąd ma następujące przyczyny i rozwiązania:

•	Próbowano użyć metody LoadResPicture do załadowania zasobu mapy bitowej jako właściwości Icon formularza.

Zmień właściwość obiektu formularza na właściwość Picture lub argument format metody LoadResPicture na wartość vbResIcon.

•	Próbowano użyć metody LoadResPicture do załadowania zasobu kursora jako pewnej właściwości obiektu lub formantu innej niż właściwość MousePointer.

Zmień odwołanie do właściwości na MousePointer.


Nie można opróżnić Schowka. (Błąd 520)

Schowek został już otwarty, ale nie można go opróżnić. Ten błąd ma następujące przyczyny i rozwiązania:

•	Inna aplikacja używa Schowka i nie zwolni go dla danej aplikacji.

Ustaw w kodzie programu pułapkę dla takiego błędu i umieść w oknie komunikatu przyciski Powtórz i Anuluj, aby umożliwić użytkownikowi ponowną próbę opróżnienia Schowka.


Nie można otworzyć Schowka. (Błąd 521)

Schowek został już otwarty przez inną aplikację. Ten błąd ma następujące przyczyny i rozwiązania:

•	Inna aplikacja używa Schowka i nie zwolni go dla danej aplikacji.

Ustaw w kodzie programu pułapkę dla takiego błędu i umieść w oknie komunikatu przyciski Powtórz i Anuluj, aby umożliwić użytkownikowi ponowną próbę opróżnienia Schowka.


Podany format nie zgadza się z formatem danych. (Błąd 461)

Podany format Schowka nie jest zgodny z wykonywaną metodą. Ten błąd ma następujące przyczyny i rozwiązania:

•	Próbowano użyć metody GetText lub SetText z formatem Clipboard innym niż vbCFText lub vbCFLink.

Przed zastosowaniem tych metod użyj metody GetFormat do sprawdzenia, czy bieżąca zawartość Schowka zgadza się z podanym formatem.

•	Próbowano użyć metody GetData lub SetData z formatem Clipboard innym niż vbCFBitmap, vbCFDIB lub vbCFMetafile.

Przed zastosowaniem tych metod użyj metody GetFormat do sprawdzenia, czy bieżąca zawartość Schowka zgadza się z podanym formatem graficznym.


Nieprawidłowy format Schowka. (Błąd 460)

Podany format Schowka nie jest zgodny z wykonywaną metodą. Ten błąd ma następujące przyczyny i rozwiązania:

•	Próbowano użyć metody GetText lub SetText z formatem Clipboard innym niż vbCFText lub vbCFLink.

Usuń nieprawidłowy format i podaj jeden z dwóch prawidłowych formatów.

•	Próbowano użyć metody GetData lub SetData z formatem Clipboard innym niż vbCFBitmap, vbCFDIB lub vbCFMetafile.

Usuń nieprawidłowy format i podaj jeden z trzech prawidłowych formatów graficznych.


Nie znaleziono informacji o licencji dla tego elementu. Tej funkcji nie można użyć w środowisku projektowania bez odpowiedniej
Nie znaleziono informacji o licencji dla tego elementu. Tej funkcji nie można użyć w środowisku projektowania bez odpowiedniej licencji.(Błąd 429)

Nie istnieje licencja dla tego formantu typu ActiveX. Ten błąd ma następujące przyczyny i rozwiązania:

•	Próbowano umieścić formant na formularzu w czasie projektowania lub dodać formularz z formantem ActiveX do projektu, ale w rejestrze nie znaleziono związanych z nim informacji.

Informacje w rejestrze mogły zostać usunięte lub uszkodzone. Zainstaluj ponownie formant ActiveX lub skontaktuj się z jego dostawcą.


Formularz jest już wyświetlany; nie można pokazać go modalnie. (Błąd 400)

Nie można użyć metody Show do wyświetlenia modalnie widocznego formularza. Ten błąd ma następujące przyczyny i rozwiązania:

•	W stosunku do już widocznego formularza próbowano użyć metody Show z argument styl ustawionym na wartość 1 (vbModal).

Przed wyświetleniem formularza modalnie użyj w stosunku do niego instrukcji Unload lub metody Hide.


Należy najpierw zamknąć lub ukryć formularz modalny znajdujący się na wierzchu. (Błąd 402)

Formularz modalny, który próbowano zamknąć lub ukryć, nie znajduje się na wierzchu w porządku względem osi Z. Ten błąd ma następujące przyczyny i rozwiązania:

•	Inny formularz modalny znajduje się wyżej w porządku względem osi Z niż formularz modalny, który próbowano zamknąć lub ukryć.

Użyj najpierw instrukcji Unload lub metody Hide w stosunku do formularza modalnego znajdującego się wyżej w porządku względem osi Z. Formularz modalny jest formularzem wyświetlanym przez metodę Show z argumentem ustawionym na wartość 1 (vbModa).


Nie można załadować tego obiektu lub usunąć go z pamięci. (Błąd 361)

Instrukcja Load lub Unload odwoływała się do nieprawidłowego obiektu lub formantu. Ten błąd ma następujące przyczyny i rozwiązania:

•	Próbowano załadować lub usunąć z pamięci obiekt, który nie jest obiektem ładowalnym, np. Screen, Printer lub Clipboard.

Usuń z kodu programu błędną instrukcję.

•	Próbowano załadować lub usunąć z pamięci istniejący formant, który nie jest elementem tablicy formantów. Na przykład przy założeniu, że istnieje formant TextBox z właściwością Name o wartości Text1, instrukcja Load Text1 spowoduje ten błąd.

Usuń z kodu programu błędną instrukcję lub zmień odwołanie do formantu w tablicy formantów.

•	Próbowano usunąć z pamięci formant Menu ze zdarzenia Click jego menu nadrzędnego.

Usuń z pamięci formant Menu, używając innej procedury.

•	Próbowano usunąć z pamięci ostatni widoczny element menu formantu Menu.

Przed usunięciem elementu menu z pamięci lub błędnej instrukcji z kodu programu sprawdź w tablicy formantów ustawienie właściwości Visible dla innych elementów menu.


Obiekt został już załadowany. (Błąd 360)

Formant został już załadowany do tablicy formantów. Ten błąd ma następujące przyczyny i rozwiązania:

•	W trakcie czasu wykonywania próbowano za pomocą instrukcji Load dodać formant do tablicy formantów, ale wartość indeksu, do którego się odwoływano, już istnieje.

Zmień odwołanie do indeksu na nową wartość lub sprawdź, czy kod nie wykonuje tej samej instrukcji Load z tą samą wartością indeksu więcej niż jeden raz.


Nie można odnaleźć formularza. (Błąd 424)

Formularz nie został znaleziony. Ten błąd ma następujące przyczyny i rozwiązania:

•	Próbowano dodać formularz do kolekcji UserForms za pomocą metody Add, ale klasa formularza o podanej nazwie nie istnieje. Na przykład, użyto UserForms.Add "MójForm", ale  MójForm nie istnieje.

Sprawdź, czy nazwa klasy jest dostępna dla projektu.


Zwolnienie pamięci w tym kontekście nie jest możliwe. (Błąd 365)

W pewnych sytuacjach nie jest dopuszczalne usunięcie z pamięci formularza lub formantu na formularzu. Ten błąd ma następujące przyczyny i rozwiązania:

•	Istnieje instrukcja Unload w zdarzeniu Paint dla formularza lub formantu na formularzu, dla którego istnieje zdarzenie Paint.

Usuń instrukcję Unload ze zdarzenia Paint.

•	Istnieje instrukcja Unload w zdarzeniach Change, Click lub DropDown obiektu ComboBox.

Usuń instrukcję Unload ze zdarzenia.

•	Istnieje instrukcja Unload w zdarzeniu Scroll formantu HScrollBar lub VScrollBar.

Usuń instrukcję Unload ze zdarzenia.

•	Istnieje instrukcja Unload w zdarzeniu Resize formantu Data, Form, MDIForm lub PictureBox.

Usuń instrukcję Unload ze zdarzenia.

•	Istnieje instrukcja Unload w zdarzeniu Resize formantu MDIForm, która usiłuje usunąć z pamięci podrzędny format MDI.

Usuń instrukcję Unload ze zdarzenia.

•	Istnieje instrukcja Unload w zdarzeniu RePosition lub Validate formantu Data.

Usuń instrukcję Unload ze zdarzenia.

•	Istnieje instrukcja Unload w zdarzeniu ObjectMove formantu OLE Container.

Usuń instrukcję Unload ze zdarzenia.


Nie można załadować podanej systemowej biblioteki DLL. (Błąd 298)

Pliki o rozszerzeniu dll są plikami systemu operacyjnego. Na przykład, nie udało się odnaleźć pliku DDEML.DLL, VERSION.DLL lub WINSPOOL.DRV. Ten błąd ma następujące przyczyny i rozwiązania:

•	Plik nie jest zapisany we właściwym katalogu.

Upewnij się, czy biblioteka DLL znajduje się w katalogu systemowym Windows.

•	Biblioteka DDL jest uszkodzona lub usunięto ją.

Ponownie załaduj bibliotekę DLL.

•	Za mało pamięci lub obszaru wymiany.

Spróbuj zwolnić trochę pamięci, zamykając inne aplikacje.


W nazwach plików nie można używać znakowych nazw urządzeń. (Błąd 320)

W systemie Visual Basic nie można nadawać plikom nazw urządzeń znakowych. Ten błąd ma następujące przyczyny i rozwiązania

•	Próbowano użyć nazwy pliku takiej, jak AUX, CON, COM1, COM2, LPT1, LPT2, LPT3, LPT4 lub NUL.

Nadaj plikowi inną nazwę.


Nieprawidłowy format pliku. (Błąd 321)

Plik formularza systemu Visual Basic jest uszkodzony. Ten błąd ma następujące przyczyny i rozwiązania:

•	Formularz ma uszkodzony formant typu ActiveX.

Wymień formant ActiveX na tym formularzu.

•	Numer właściwości w bieżącej wersji formantu ActiveX nie zgadza się z numerem oczekiwanym.

Wymień formant ActiveX na wersję wcześniejszą lub późniejszą.


Niedozwolony parametr. Nie można zapisać tablic. (Błąd 328)

Do metody przekazano niedozwolony parametr. Ten błąd ma następujące przyczyny i rozwiązania:

•	W zdarzeniu WriteProperties formantu użytkownika próbowano wykonać instrukcję PropBag.WriteProperty X, gdzie X jest tablicą. Nie jest ona obsługiwana.

Każdy element tablicy trzeba wypisać indywidualnie.


Brak dostępu do rejestru systemowego (Błąd 335)

Próba odczytu z lub zapisu do rejestru systemowego nie powiodła się.


Nie można odnaleźć składnika ActiveX. (Błąd 337)

Nie można odnaleźć żądanego pliku o rozszerzeniu .exe lub .dll.


Składnik ActiveX nie został uruchomiony poprawnie. (Błąd 338)

Plik .exe składnika ActiveX nie został uruchomiony poprawnie. Być może wystąpił problem z informacjami w rejestrze.


Obiekt został usunięty z pamięci. (Błąd 364)

Formularz został usunięty z pamięci instrukcją w swojej procedurze _ Load. Ten błąd ma następujące przyczyny i rozwiązania:

•	Formularz, którego procedura _Load zawiera instrukcję Unload, został załadowany w sposób niejawny. Na przykład, następująca instrukcja niejawnie załaduje formularz TwójForm, jeżeli nie został on jeszcze załadowany:

MójForm.BackColor = TwójForm.BackColor.

•	Usuń instrukcję Unload z procedury Form_Load.


Nieprawidłowa wersja podanego pliku. Ten program wymaga późniejszej wersji. (Błąd 368)

Wersja formantu typu ActiveX jest przestarzała. Ten błąd ma następujące przyczyny i rozwiązania:

•	Numer właściwości w bieżącej wersji formantu ActiveX nie zgadza się z oczekiwanym numerem.

Zastąp bieżący formant ActiveX późniejszą wersją.


Nieprawidłowa wartość właściwości. (Błąd 380)

Właściwości przypisano nieodpowiednią wartość. Ten błąd ma następujące przyczyny i rozwiązania:

•	Próbowano nadać jednej z właściwości obiektu lub formantu wartość spoza dopuszczalnego zakresu.

Zmień wartość właściwości na prawidłową. Na przykład, właściwość MousePointer trzeba ustawić na liczbę całkowitą z zakresu od 0 do 15 lub na 99.


Podanej właściwości nie można ustawiać w trakcie wykonywania programu. (Błąd 382)

W trakcie czasu wykonywania właściwość ta służy tylko do odczytu. Ten błąd ma następujące przyczyny i rozwiązania:

•	Próbowano ustawić lub zmienić właściwość, której wartość można ustawić tylko w trakcie czasu projektowania.

Usuń z kodu programu odwołanie do tej właściwości lub zmień to odwołanie tak, aby w trakcie wykonywania programu tylko zwracało ono wartość właściwości.


Podana właściwość jest przeznaczona tylko do odczytu. (Błąd 383)

Właściwość ta jest przeznaczona tylko do odczytu zarówno w trakcie czasu projektowania, jak i w trakcie czasu wykonywania. Ten błąd ma następujące przyczyny i rozwiązania:

•	Próbowano ustawić lub zmienić właściwość, której wartość można tylko odczytać.

Usuń z kodu programu odwołanie do tej właściwości lub zmień to odwołanie tak, aby w trakcie wykonywania programu jedynie zwracało ono wartość właściwości.


Podanej właściwości nie można odczytywać w trakcie wykonywania programu. (Błąd 393)

Właściwość jest dostępna tylko w trakcie czasu projektowania. Ten błąd ma następujące przyczyny i rozwiązania:

•	W trakcie czasu wykonywania próbowano odczytać właściwość, która jest dostępna tylko w czasie projektowania.

Zmień kod programu lub usuń odwołanie do tej właściwości.


Podana właściwość jest przeznaczona tylko do zapisu. (Błąd 394)

Właściwość ta nie jest przeznaczona do odczytu. Ten błąd ma następujące przyczyny i rozwiązania:

•	Właściwości tej nie można odczytywać; na przykład instrukcja ctl.property = 3 może być dopuszczalna, ale już instrukcja "Print ctl.property" spowoduje wystąpienie tego błędu.

Zmień kod programu lub usuń odwołanie do tej właściwości.


Brak uprawnień do użycia obiektu. (Błąd 419)

Użytkownik nie ma uprawnień potrzebnych do użycia podanego obiektu. Ten błąd ma następujące przyczyny i rozwiązania:

•	Brak uprawnień do uzyskania dostępu do tego obiektu.

W celu uzyskania odpowiednich uprawnień skontaktuj się z administratorem systemu lub twórcą obiektu.


Nie można utworzyć obrazu AutoRedraw. (Błąd 480)

Visual Basic nie może utworzyć trwałej mapy bitowej potrzebnej do automatycznego przerysowywania formularza lub rysunku. Ten błąd ma następujące przyczyny i rozwiązania:

•	Brakuje pamięci, aby właściwość AutoRedraw ustawić na wartość True.

Ustaw właściwość AutoRedraw na False i zrealizuj własną obsługę przerysowywania w procedurze obsługi zdarzenia Paint lub zmniejsz formant PictureBox lub obiekt Form i ponownie wykonaj operację z właściwością AutoRedraw ustawioną na True.


Za mało pamięci (Błąd 31001)

Dla podanej operacji systemowi nie udało się wykonać alokacji ani uzyskać dostępu do pamięci lub dysku.


Brak obiektu (Błąd 31004)

Próbowano wykonać operację na nieistniejącym obiekcie.


Klasa nie jest ustawiona. (Błąd 31018)

Przy ustawieniu Action = 0  (metoda CreateEmbed), jeżeli dokument źródłowy nie został określony (właściwość SourceDoc), właściwość Class musi być ustawiona na nazwę klasy dostępną w systemie.

Aby wyświetlić listę dostępnych nazw klas w trakcie czasu projektowania, kliknij prawym przyciskiem myszy formant kontenera OLE i wybierz polecenie Wstaw obiekt.


Nie można uaktywnić obiektu. (Błąd 31027)

Nie można załadować dokumentu źródłowego obiektu lub aplikacja, która utworzyła ten obiekt, nie jest dostępna.

Błąd pojawia się przy próbie uaktywnienia połączonego obiektu (ustawienie Action = 7), a plik określony we właściwości SourceDoc został usunięty lub już nie istnieje.

Błąd ten występuje również wtedy, gdy obiekt jest uaktywniany (ustawienie Action = 7), a operacja określona przez właściwość Verb nie jest prawidłowa. Niektóre aplikacje dostarczające obiekty mogą w zależności od swojego stanu obsługiwać różne zlecenia. Wszystkie zlecenia obsługiwane przez aplikację znajdują się na liście właściwości ObjectVerbs. Niektóre zlecenia mogą być jednak nieprawidłowe dla bieżącego stanu aplikacji.


Nie można utworzyć obiektu osadzonego. (Błąd 31032)

Aplikacja tworząca obiekt nie może utworzyć obiektu określonego przez właściwość SourceDoc.

Na przykład błąd ten pojawi się przy próbie osadzenia obiektu arkusza kalkulacyjnego, gdy właściwość SourceDoc określa arkusz kalkulacyjny zbyt duży do załadowania przez aplikację obsługującą arkusze kalkulacyjne.


Błąd podczas zapisu do pliku. (Błąd 31036)

Visual Basic nie może zapisać obiektu do podanego pliku (ustawienie Action = 11 lub 18). Prawdopodobne przyczyny:

•	Właściwość FileNumber jest nieprawidłowa.

•	Podany plik nie został otwarty w trybie Binary.

•	Za mało miejsca na dysku dla tej operacji.


Błąd podczas odczytu z pliku. (Błąd 31037)

Przy próbie odczytu podanego pliku (ustawienie Action = 12) wystąpił błąd. Prawdopodobne przyczyny:

•	Właściwość FileNumber jest nieprawidłowa.

•	Plik nie został otwarty w trybie Binary.

•	Plik nie został poprawnie zapisany (ustawienie Action = 11).

•	Plik jest uszkodzony.

•	Aktualna pozycja odczytu w pliku nie znajduje się na początku prawidłowego obiektu ActiveX.


W podanym wierszu: Podana nazwa formularza lub formularza MDI jest błędna. Nie można załadować tego formularza.

Plik ASCII zawiera nazwę formularza, która nie jest prawidłowym ciągiem znaków w języku Visual Basic. Formularz nie został załadowany.


W podanym wierszu: Nie można utworzyć podanego obiektu osadzonego.

Nie udało się utworzyć obiektu osadzonego podczas ładowania formularza, formantu użytkownika, dokumentu użytkownika lub strony właściwości z pliku tekstowego. Na przykład, błąd ten wystąpi, jeżeli wcześniej wstawiono do formularza dokument utworzony za pomocą programu Microsoft Word, a następnie usunięto ten program z systemu. Komunikat ten jest zapisywany w pliku rejestru błędów.


W podanym wierszu: Nie można utworzyć podanego obiektu osadzonego; nie znaleziono licencji.

Nie udało się utworzyć obiektu osadzonego podczas ładowania formularza, formantu użytkownika, dokumentu użytkownika lub strony właściwości z pliku tekstowego, ponieważ nie odnaleziono pliku licencji. Licencja jest niezbędna do użycia tego obiektu. Skontaktuj się z dostawcą obiektu. Komunikat ten jest zapisywany w pliku rejestru błędów.


W podanym wierszu: Podany formant przekroczył maksymalny poziom zagnieżdżenia formantów.

Plik ASCII zawiera formanty zagnieżdżone głębiej niż na 7 poziomach.


W podanym wierszu: Wszystkie formanty muszą poprzedzać menu; nie można załadować podanego formantu.

Formant występuje w niewłaściwym miejscu pliku ASCII formularza. Wszystkie formanty muszą być załadowane przed wszystkimi menu.


W podanym wierszu: Podanego menu nadrzędnego nie można załadować jako separatora.

Plik ASCII zawiera formant Menu którego menu nadrzędne lub menu górnego poziomu jest zdefiniowane jako separator menu. Menu najwyższego poziomu nie mogą być separatorami menu. Separator nie będzie ustawiony.


W podanym wierszu: W podanym menu nie można ustawić właściwości Checked. Menu nadrzędnego nie można zaznaczyć.

Formant Menu najwyższego poziomu występuje w pliku ASCII formularza razem z właściwością Checked ustawioną na wartość True. Menu najwyższego poziomu nie można zaznaczyć. Formant Menu zostanie załadowany, ale jego właściwość Checked nie będzie ustawiona.


W podanym wierszu: W podanym menu nie można ustawić właściwości Shortcut. Menu nadrzędne nie może mieć klawisza skrótu.

Formant Menu najwyższego poziomu występuje w pliku ASCII formularza razem ze zdefiniowanym klawiszem skrótu. Menu najwyższego poziomu nie mogą mieć klawisza skrótu. Formant Menu zostanie załadowany, ale jego właściwość Shortcut nie będzie ustawiona.


W podanym wierszu: Nazwa podanego formularza jest już wykorzystana, nie można załadować tego formularza.

Plik ASCII zawiera formularz z nazwą, która została już użyta w aplikacji. Nie można załadować tego formularza.


W podanym elemencie znaleziono niezgodne atrybuty. Zostaną użyte atrybuty domyślne.

Niektóre instrukcje dotyczące atrybutów w formularzu, formancie użytkownika, stronie właściwości, dokumencie użytkownika lub module klasy kolidują z wymaganymi ustawieniami dla ich typu. Na przykład, formularze muszą zawsze mieć atrybut VB_PredeclaredId ustawiony na True. Błąd ten może wystąpić, jeżeli plik był modyfikowany za pomocą innego edytora niż edytor środowiska Visual Basic.


Podany plik jest przeznaczony tylko do odczytu.

Usiłowano zapisać dane do pliku, który jest przeznaczony tylko do odczytu. Pliki przeznaczone tylko do odczytu są oznaczone przez Eksplorator projektów symbolem [image]. Plików takich nie można zapisywać. Zamiast polecenia Zapisz użyj polecenia Zapisz jako.


W podanym wierszu: Nie można utworzyć podanego odwołania.

Nie można utworzyć odwołania wskazanego w podanym wierszu.


W podanym wierszu: Nie można załadować podanego pliku.

Błędy składniowe uniemożliwiają systemowi Visual Basic dokonanie analizy syntaktycznej i załadowanie pliku lub konflikt nazw formularzy nie pozwala załadować pliku ASCII. Formularz nie zostanie załadowany i jego nazwa nie będzie wyświetlana w oknie Eksploratora projektów.

Sprawdź, czy plik powodujący ten błąd jest prawidłowym formularzem ASCII o poprawnym formacie i czy w projekcie nie istnieje konflikt nazw między różnymi formularzami.


Błędy podczas ładowania.

Sprawdź rejestr błędów w celu uzyskania dokładniejszych informacji.


Nie można załadować podanego dodatku. Czy usunąć go z listy dostępnych dodatków?

Visual Basic nie mógł załadować dodatku wybranego z listy Dostępne dodatki w oknie dialogowym Menedżer dodatków. Wybierz Tak, aby usunąć ten dodatek z listy, lub Nie, aby pozostawić go na liście. W każdym przypadku nie można go jednak załadować.


Nie można załadować podanego dodatku, ponieważ nie istnieje on w rejestrze systemu. Sprawdź, czy wszystkie dodatki zostały
Nie można załadować podanego dodatku, ponieważ nie istnieje on w rejestrze systemu. Sprawdź, czy wszystkie dodatki zostały zainstalowane poprawnie.

Visual Basic nie mógł załadować dodatku wybranego z listy Dostępne dodatki w oknie dialogowym Menedżer dodatków, ponieważ nie został on poprawnie zainstalowany lub nie istnieje w rejestrze systemu.


Wyświetlić więcej błędów ładowania?

Wybierz przycisk OK, aby zobaczyć więcej błędów; w przeciwnym razie wybierz przycisk Anuluj.


Nie można załadować podanego pliku.

Błędy składniowe uniemożliwiają systemowi Visual Basic dokonanie analizy syntaktycznej i załadowanie pliku lub konflikt nazw formularzy nie pozwala załadować pliku ASCII. Formularz nie zostanie załadowany i jego nazwa nie będzie wyświetlana w oknie Eksploratora projektów.

Sprawdź, czy plik powodujący ten błąd jest prawidłowym formularzem ASCII o poprawnym formacie i czy w projekcie nie istnieje konflikt nazw między różnymi formularzami.


Brak numeru wersji lub jest on nieprawidłowy.

Nie odnaleziono numeru wersji albo podana wersja nie została rozpoznana. Sprawdź, czy pierwszy wiersz, który nie jest pusty, lub komentarze formularza ASCII zawierają poprawny numer wersji.


Do podanego formantu odwołuje się podany projekt i dlatego nie można go uaktualnić.

Do określonego formantu odwołuje się więcej niż jeden projekt. Aktualizacja formantu dla jednego projektu mogłaby unieważnić ten formant dla innego projektu.


Nie można usunąć używanego formantu lub odwołania.

Formant typu ActiveX lub odwołanie, które próbowano usunąć, jest właśnie wykorzystywane przez jeden z formularzy projektu. Najpierw usuń z formularza ten formant lub obiekt, a następnie usuń go z listy.


W tej chwili nie można zakończyć pracy.

Nie można zakończyć pracy w środowisku Windows, jeżeli program Visual Basic znajduje się w trybie przerwania lub w trybie wykonywania. Ponadto, nie można zakończyć pracy systemu Windows, jeżeli jest wyświetlane okno dialogowe lub okno komunikatu.


Błąd podczas ładowania podanego elementu. Podczas ładowania właściwości wystąpił błąd. Czy kontynuować?

Prawdopodobnie próbowano załadować formularz z formantami, których nazwy kolidują z formularzami już istniejącymi w projekcie. Na przykład, błąd ten wystąpi podczas ładowania formularza Form2 zawierającego formant o nazwie Form1.


Błąd podczas ładowania podanego elementu. Formantu nie udało się załadować. Czy kontynuować?

Ten komunikat jest wyświetlany po wystąpieniu innego błędu. Pojawia się zaraz po podjęciu przez użytkownika odpowiedniego działania dla tego błędu. Aby jednak załadować formant, wybierz przycisk Tak; aby anulować ładowanie, wybierz przycisk Nie.


Podany plik jest w starym formacie. Plik ten zostanie zapisany w nowszym formacie.

Plik został utworzony we wcześniejszej wersji systemu Visual Basic. W przypadku zapisu zostanie on zapisany w formacie bieżącej wersji systemu Visual Basic.


Podany plik istnieje już w projekcie.

Określony plik znajduje się już w projekcie. Nie można dodać do projektu tego samego pliku więcej niż jeden raz. Nie można zapisać pliku o takiej samej nazwie, jak inny plik projektu.


Błędy podczas ładowania. Szczegółowe informacje znajdują się w podanym elemencie.

W pliku formularza ASCII wystąpił nieoczekiwany element lub błąd. Visual Basic utworzył plik rejestru, aby dostarczyć więcej szczegółów o błędach. Należy przejrzeć zawartość rejestru, aby określić wagę problemu. Czasami można bezpiecznie zignorować błędy (np. Brak numeru wersji lub jest on nieprawidłowy...). Jednak w innych przypadkach błędy mogłyby spowodować inne niż oczekiwane działanie formularza (np. Klasa MojaKlasa w formancie MójFormant nie była klasą załadowanego formantu).


Wartość ciągu znaków zbyt długa do przetworzenia. Przerwano ładowanie formularza.

Ciąg osadzony w ładowanym formularzu był zbyt długi do przetworzenia.


Jeden lub więcej plików w projekcie uległo zmianie. Czy zapisać zmiany?

Zmianie uległo jedno z ustawień właściwości lub instrukcja w jednym lub więcej plików projektu, a zmian tych jeszcze nie zapisano. Jest to ostatnia możliwość zapisania zmian przed załadowaniem innego projektu.


Nie udało się zarejestrować podanego elementu.

Nie udało się zarejestrować określonego pliku w rejestrze systemu. Błąd jest związany z biblioteką typów używaną przez składniki środowiska projektowania i wskazuje, że pozycja odpowiadająca temu plikowi w rejestrze systemowym jest uszkodzona lub że brak biblioteki DLL lub jest ona uszkodzona.


Jeden z obiektów programu wykorzystują inne aplikacje. Zakończenie programu w tej chwili może spowodować błędy w tych
Jeden z obiektów programu wykorzystują inne aplikacje. Zakończenie programu w tej chwili może spowodować błędy w tych aplikacjach. Czy mimo to zakończyć program?

Obiekt automatyzacji w aktualnie wykonywanym programie Visual Basic jest używany przez co najmniej jedną inną aplikację. Zakończenie programu może spowodować błąd w tej aplikacji. Wybierz przycisk Tak, aby zakończyć program, lub przycisk Nie, aby go kontynuować.


W podanym pliku istnieje błędna właściwość lub błędne właściwości. Możliwe, że część lub wszystkie z nich nie zostały ustawione
W podanym pliku istnieje błędna właściwość lub błędne właściwości. Możliwe, że część lub wszystkie z nich nie zostały ustawione poprawnie.

Określony plik projektu zawiera jedną lub więcej nieprawidłowych właściwości. Błąd ten dotyczy tylko pliku projektu.


W podanym pliku znaleziono kolidujące ze sobą nazwy. Zostanie użyta podana nazwa.

Nazwa formularza występuje dwukrotnie w pliku źródłowym formularza, formantu użytkownika, strony właściwości lub dokumentu użytkownika. Błąd ten może pojawić się, jeżeli plik był modyfikowany za pomocą innego edytora niż edytor środowiska Visual Basic.


W podanym wierszu: Nazwa podanego formantu jest błędna.

Plik ASCII zawiera nazwę formantu, która nie jest prawidłowym ciągiem znaków języka Visual Basic. Nie można załadować tego formantu.


W podanym wierszu: Podana nazwa właściwości jest błędna.

Plik ASCII zawiera nazwę właściwości, która jest nieprawidłowa dla tego formantu.


W podanym wierszu: Zamiast nazwy właściwości, w podanym pliku występuje ciąg znaków w cudzysłowie.

W pliku formularza ASCII zamiast nazwy właściwości występuje ciąg znaków w cudzysłowie. Nazwy właściwości nie mogą być umieszczone w cudzysłowie (" ").


W podanym wierszu: Właściwość podanego formantu ma błędny indeks właściwości.

Plik ASCII zawiera nazwę właściwości z indeksem właściwości większym niż 255.


W podanym wierszu: Właściwości w podanym pliku nie udało się załadować.

Plik ASCII zawiera nieznaną właściwość. Właściwość ta zostanie pominięta podczas ładowania formularza.


W podanym wierszu: Właściwość w podanym pliku musi być ciągiem znaków w cudzysłowie.

Plik ASCII zawiera właściwość, która powinna być ujęta w cudzysłów (" "), ale znaków cudzysłowu brak. Ten wiersz w opisie formularza jest ignorowany.


W podanym wierszu: Właściwość w podanym pliku ma błędną wartość.

Plik ASCII zawiera wartość właściwości niepoprawną dla tego formantu. Właściwość ta zostanie ustawiona na wartość domyślną.


W podanym wierszu: Właściwość w podanym pliku ma błędne odwołanie do pliku.

Plik ASCII zawiera odwołanie do pliku, którego nie można odnaleźć w podanym katalogu.


W podanym wierszu: Właściwości w podanym pliku nie udało się ustawić.

Nie można ustawić właściwości podanego formantu według wskazania w opisie formularza w pliku ASCII.


W podanym wierszu: Klasa podanego formantu nie była załadowaną klasą formantu.

Plik ASCII zawiera klasę formantu nie rozpoznawaną przez system Visual Basic. Dodaj do projektu formant wraz z tą klasą.


W podanym wierszu: Nie odnaleziono właściwości indeksu, a podanego formant już istnieje.
W podanym wierszu: Nie odnaleziono właściwości indeksu, a podany formant już istnieje.

Nie można załadować formantu, ponieważ nie istnieje indeks, a formant ma taką samą nazwę, jak formant załadowany wcześniej.


W podanym wierszu: Nazwa formantu zbyt długa; skrócono do podanej postaci.

Plik ASCII zawiera nazwę formantu dłuższą niż 40 znaków. Formant zostanie załadowany z nazwą obciętą do 40 znaków.


W podanym wierszu: Nazwa klasy zbyt długa; skrócono do podanej postaci.

Plik ASCII zawiera nazwę klasy dłuższą niż 40 znaków. Klasa zostanie załadowana z nazwą obciętą do 40 znaków.


W podanym wierszu: Błąd składniowy: w podanej właściwości brakuje znaku '='.

Plik ASCII zawiera nazwę właściwości i jej wartość nie oddzielone znakiem równości (=). Właściwość ta nie zostanie załadowana.


W podanym wierszu: Nie można załadować podanego formantu, gdyż nie jest on prawidłowym kontenerem.

Próbowano załadować formant do formantu, który nie jest prawidłowym kontenerem.


W podanym wierszu: Nie można załadować podanego formantu; nazwa jest już używana.

Nie można załadować formantu określonego w pliku tekstowym ASCII, ponieważ jego nazwa jest już wykorzystywana w aplikacji.


W podanym wierszu: Brak lub błędna klasa formantu w podanym pliku.

Plik ASCII zawiera w opisie formularza nieznaną klasę formantu lub nazwa klasy nie jest poprawnym ciągiem znaków języka Visual Basic.


W podanym wierszu: Brak lub błędna nazwa formantu w podanym pliku.

Plik ASCII zawiera w opisie formularza nieznaną nazwę formantu lub nazwa ta nie jest poprawnym ciągiem znaków języka Visual Basic.


W podanym wierszu: Nie można załadować podanego formantu; nie znaleziono licencji.

Nie udało się utworzyć formantu typu ActiveX podczas ładowania formularza, formantu użytkownika, dokumentu użytkownika lub strony właściwości z pliku tekstowego. Formant może nie istnieć lub może być uszkodzony. Zainstaluj formant ponownie i spróbuj jeszcze raz wykonać tę operację. Komunikat ten jest zapisywany w pliku rejestru błędów.


W podanym wierszu: Podany parametr CLSID jest błędny.

Nie udało się załadować obiektu podczas ładowania z formularza, formantu użytkownika, dokumentu użytkownika lub strony właściwości z pliku tekstowego. Podany w pliku parametr CLSID jest nieprawidłowy. Można go stosować tylko do obiektów będących właściwościami, takich jak na przykład obiekt Font. Komunikat ten jest zapisywany w pliku rejestru błędów.


Nie można utworzyć odwołania do podanego elementu.

Podczas ładowania pliku wystąpił błąd przy ustalaniu odwołania i dlatego nie dodano tego odwołania.


Podany element nie zostanie załadowany. Nazwa jest już używana.

Nie można załadować jednocześnie dwóch elementów tego rodzaju.


Do podanego formantu odwołuje się podany projekt i dlatego nie można go uaktualnić.


Instrukcja ChDir - przykład

W tym przykładzie wykorzystano instrukcję ChDir do zmiany domyślnego katalogu lub folderu.

' Zmień domyślny katalog lub folder na "KATALOG".

ChDir "KATALOG"

' W systemie Microsoft Windows:

' Załóżmy, że domyślnym dyskiem jest "C:". Poniższa

' instrukcja zmienia domyślny katalog dysku "D:". Dysk

' "C:" pozostaje dyskiem domyślnym

ChDir "D:\WINDOWS\SYSTEM"

' W systemie Macintosh:

' Poniższa instrukcja zmienia domyślny katalog i

' domyślny dysk.

ChDir "HD:FOLDER"


Instrukcja ChDrive - przykład

W tym przykładzie wykorzystano instrukcję ChDrive do zmiany domyślnej stacji dysków.

' W systemie Microsoft Windows:

ChDrive "D"	' Ustaw dysk "D" jako domyślny.

' W systemie Macintosh:

' Ustaw dysk "DYSK" jako domyślny.

ChDrive "DYSK:"

' Ustaw dysk "DYSK" jako dysk domyślny i folder

' "FOLDER" jako domyślny folder. Ten folder

' znajduje się w katalogu głównym.

ChDrive "DYSK:FOLDER"


Funkcja CurDir - przykład

W tym przykładzie wykorzystano funkcję CurDir do wyznaczenia bieżącej ścieżki.

' W systemie Microsoft Windows:

' Załóżmy, że domyślnym katalogiem dysku "C" jest

' katalog "C:\WINDOWS\SYSTEM".

' Załóżmy, że domyślnym katalogiem dysku "D" jest

' katalog " D:\EXCEL ".

' Załóżmy, że dysk "C" jest dyskiem domyślnym.

Dim MojaŚcieżka

MojaŚcieżka = CurDir	' Wynik: "C:\WINDOWS\SYSTEM".

MojaŚcieżka = CurDir("C") ' Wynik: "C:\WINDOWS\SYSTEM".

MojaŚcieżka = CurDir("D") ' Wynik: "D:\EXCEL".

' W systemie Macintosh:

' Litery oznaczające dysk są pomijane. Zwracana jest

' domyślna ścieżka dysku domyślnego.

' Załóżmy, że domyślnym katalogiem dysku HD jest

' katalog "HD:FOLDER".

' Załóżmy, że dysk HD jest dyskiem domyślnym.

' W systemie znajduje się również dysk MD.

Dim MojaŚcieżka

MojaŚcieżka = CurDir	' Wynik: "HD:FOLDER".

MojaŚcieżka = CurDir("HD")	' Wynik: "HD:FOLDER".

MojaŚcieżka = CurDir("MD")	' Wynik: "HD:FOLDER".


Funkcja Dir - przykład

W tym przykładzie wykorzystano funkcję Dir do stwierdzenia, czy istnieją pewne pliki i katalogi. W systemie Macintosh można określić typ plików, wykorzystując funkcję MacID.

Dim MójPlik, MojaŚcieżka, MojaNazwa

' W systemie Microsoft Windows:

' Wynikiem będzie nazwa pliku "WIN.INI", jeśli taki

' plik istnieje.

MójPlik = Dir("C:\WINDOWS\WIN.INI")

' Wynikiem będzie nazwa pliku z określonym

' rozszerzeniem. Jeśli istnieje wiele plików *.INI,

' wynikiem będzie nazwa pierwszego napotkanego pliku.

MójPlik = Dir("C:\WINDOWS\*.INI")

' Wywołaj ponownie funkcję Dir, ale bez użycia

' argumentów, aby wyświetlić kolejny plik *.INI w tym

' samym katalogu.

MójPlik = Dir

' Zwróć nazwę pierwszego pliku *.TXT, który jest

' plikiem ukrytym.

MójPlik = Dir("*.TXT", vbHidden)

' Wyświetl nazwy podkatalogów katalogu C:\

MojaŚcieżka = "c:\"	' Zdefiniuj nazwę ścieżki.

MojaNazwa = Dir(MojaŚcieżka, vbDirectory)' Pobierz

' pierwszą nazwę.

Do While MojaNazwa <> ""	' Rozpocznij wykonywanie

' pętli.

' Pomiń katalog domyślny i katalog nadrzędny.

If MojaNazwa <> "." And MojaNazwa <> ".." Then

' Wykonaj porównywanie bitowe, aby upewnić się,

' że MojaNazwa jest nazwą katalogu.

If (GetAttr(MojaŚcieżka & MojaNazwa) And _

vbDirectory) = vbDirectory Then

Debug.Print MojaNazwa	' Wyświetl nazwę,

' jeśli to jest nazwa katalogu

End If

End If

MojaNazwa = Dir	' Pobierz kolejną nazwę

Loop

' W systemie Macintosh:

' Wykorzystaj funkcję MacID do określenia typu plików.

' Poniższa instrukcja zwraca pierwszy napotkany plik

' typu tekstowego w określonym katalogu lub folderze.

MójPlik = Dir("HD:FOLDER:", MacID("TEXT"))


Funkcja Environ - przykład

W tym przykładzie wykorzystano funkcję Environ do wyznaczenia liczby pozycji zapisanych w zmiennej środowiska PATH i jej długości na podstawie tabeli zawierającej ciągi środowiska.

Dim Ciąg, Indeks, Kom, Długość	' Zadeklaruj

' zmienne.

Indeks = 1	' Zainicjuj zmienną Indeks.

Do

Ciąg = Environ(Indeks)	' Pobierz zmienną

' środowiska.

If Left(Ciąg, 5) = "PATH=" Then	' Sprawdź zmienną

' PATH.

Długość = Len(Environ("PATH"))	' Pobierz

' długość.

Kom = "Wartość zmiennej PATH = " & Indeks & _

" i jego długość = " & Długość

Exit Do

Else

Indeks = Indeks + 1	' To nie jest zmienna PATH,

End If	' więc zwiększaj indeks.

Loop Until Ciąg = ""

If Długość > 0 Then

MsgBox Kom	' Wyświetl komunikat.

Else

MsgBox "Zmienna środowiska PATH nie istnieje."

End If


Instrukcja FileCopy - przykład

W tym przykładzie wykorzystano instrukcję FileCopy do skopiowania danego pliku do innego pliku. W tym przykładzie przyjęto, że plik ŹRÓDŁO zawiera pewne dane.

Dim PlikŹródłowy, PlikDocelowy

PlikŹródłowy = "ŹRÓDŁO"	' Zdefiniuj nazwę pliku

' źródłowego.

PlikDocelowy = "CEL"	' Zdefiniuj nazwę pliku

' docelowego.

FileCopy PlikŹródłowy, PlikDocelowy ' Skopiuj plik

' źródłowy do pliku docelowego.


Funkcja FileDateTime - przykład

W tym przykładzie wykorzystano funkcję FileDateTime do określenia daty i godziny utworzenia lub ostatniej modyfikacji pliku. Format wyświetlanej daty i godziny zależy od ustawień regionalnych w systemie.

Dim CZAS

' Załóżmy, że plik TEST został ostatnio zmodyfikowany

' 12 lutego 1993 o godzinie 16:35:47.

' Załóżmy, że w systemie są ustawienia

' regionalne dla Polski.

CZAS = FileDateTime("TEST")	' Wynik: "93-02-12

' 16:35:47".


Funkcja FileLen - przykład

W tym przykładzie wykorzystano funkcję FileLen do określenia wielkości pliku liczonej w bajtach. W tym przykładzie przyjęto, że plik TEST zawiera pewne dane.

Dim Wielkość

Wielkość = FileLen("TEST")	' Zwraca wielkość pliku

' (liczoną w bajtach).


Funkcja GetAttr - przykład

W tym przykładzie wykorzystano funkcję GetAttr do określenia atrybutów pliku i katalogu lub folderu.

Dim Atrybut

' Załóżmy, że plik TEST jest plikiem ukrytym.

Atrybut = GetAttr("TEST")	' Zwracana jest wartość 2.

' Poniższa instrukcja zwróci wartość niezerową, jeśli

' plik TEST jest plikiem ukrytym.

Debug.Print Atrybut And vbHidden

' Załóżmy, że plik TEST jest plikiem ukrytym i tylko

' do odczytu.

Atrybut = GetAttr("TEST")	' Zwracana jest wartość 3.

' Poniższa instrukcja zwróci wartość niezerową, jeśli

' plik TEST jest plikiem ukrytym i tylko do odczytu.

Debug.Print Atrybut And (vbHidden + vbReadOnly)

' Załóżmy, że nazwa "KATALOG" jest nazwą katalogu

' lub folderu.

Atrybut = GetAttr("KATALOG")	' Zwracana jest

' wartość 16.


Instrukcja Kill - przykład

W tym przykładzie wykorzystano instrukcję Kill do usunięcia pliku z dysku. W systemie Macintosh nie można wykorzystać symboli wieloznacznych, ale można wykorzystać funkcję MacID do określenia zamiast nazwy pliku jego typu.

' Załóżmy, że plik TEST zawiera pewne dane.

Kill "TEST"	' Usuń plik.

' W systemie Microsoft Windows:

' Usuń wszystkie pliki *.TXT z katalogu domyślnego.

Kill "*.TXT"

' W systemie Macintosh:

' Wykorzystaj funkcję MacID do usunięcia wszystkich

' plików typu PICT z folderu domyślnego.

Kill MacID("PICT")


Funkcja MacID - przykład

W tym przykładzie pokazano różne sposoby wykorzystania funkcji MacID. Funkcja MacID nie jest dostępna w systemie Microsoft Windows.

Dim NazwaPliku, Wartość

' Zwróć nazwę pierwszego pliku tekstowego w folderze

' HD:FOLDER.

NazwaPliku = Dir("HD:FOLDER:", MacId("TEXT"))

' Usuń wszystkie pliki tekstowe z folderu domyślnego.

Kill MacId("TEXT")

' Uruchom program Microsoft Excel.

Wartość = Shell(MacId("XCEL"))

' Uaktywnij program Microsoft Word.

AppActivate MacId("MSWD")


Instrukcja MkDir - przykład

W tym przykładzie wykorzystano instrukcję MkDir do utworzenia katalogu lub folderu. Jeśli nie określono nazwy dysku, nowy katalog lub folder zostanie utworzony na dysku domyślnym.

MkDir "KATALOG"	' Utwórz nowy katalog lub folder.


Instrukcja Name - przykład

W tym przykładzie wykorzystano instrukcję Name do zmiany nazwy pliku. Przyjęto, że istnieją określone katalogi lub foldery.

Dim StaraNazwa, NowaNazwa

' Zdefiniuj nazwy plików.

StaraNazwa = "PLIK1": NowaNazwa = "PLIK2"

Name StaraNazwa As NowaNazwa	' Zmień nazwę pliku.

' W systemie Microsoft Windows:

StaraNazwa = "C:\KATALOG1\PLIK1": _

NowaNazwa = "C:\KATALOG2\PLIK2"

Name StaraNazwa As NowaNazwa	' Przenieś plik i zmień

' jego nazwę.

' W systemie Macintosh:

StaraNazwa = "HD:FOLDER1: PLIK1": _

NowaNazwa = "HD:FOLDER2: PLIK2"

Name StaraNazwa As NowaNazwa	' Przenieś plik i zmień

' jego nazwę.


Funkcja QBColor - przykład

W tym przykładzie wykorzystano funkcję QBColor do zmiany właściwości BackColor formularza przekazanego jako parametr MójFormularz na wartość Kolor. Argumentem funkcji QBColor może być liczba całkowita z przedziału od 0 do 15.

Sub ZmieńKolorTła (Kolor As Integer, _

MójFormularz As Form)

MójFormularz.BackColor = QBColor(Kolor)

End Sub


Funkcja RGB - przykład

W tym przykładzie wykorzystano funkcję RGB do pobrania liczby reprezentującej wartość koloru RGB. Ta funkcja jest wykorzystywana przez te metody i właściwości aplikacji, które wymagają określenia koloru. Obiekt MójObiekt i jego właściwość zostały użyte jedynie dla tego przykładu. Jeśli obiekt MójObiekt nie istnieje lub jeśli nie ma właściwości Kolor, wystąpi błąd.

Dim Czerwony, I, WartośćRGB, MójObiekt

Czerwony = RGB(255, 0, 0)	' Zwróć wartość dla koloru

' czerwonego.

I = 75	' Ustal różnicę między kolejnymi wartościami.

WartośćRGB = RGB(I, 64 + I, 128 + I) ' Jest to

' równoważne wyrażeniu RGB(75, 139, 203).

MójObiekt.Kolor = RGB(255, 0, 0)	' Ustaw wartość

' właściwości Kolor obiektu MójObiekt

' na wartość odpowiadającą kolorowi

' czerwonemu.


Instrukcja RmDir - przykład

W tym przykładzie wykorzystano instrukcję RmDir do usunięcia istniejącego katalogu lub folderu.

' Załóżmy, że KATALOG jest pustym katalogiem lub

' folderem.

RmDir "KATALOG"	' Usuń katalog KATALOG.


Instrukcja SetAttr - przykład

W tym przykładzie wykorzystano instrukcję SetAttr do ustawienia atrybutów pliku.

SetAttr "TEST", vbHidden	' Ustaw atrybut "ukryty".

SetAttr "TEST", vbHidden + vbReadOnly	' Ustaw

' atrybuty "ukryty" i "tylko do odczytu".


ChDir - instrukcja

Zmienia domyślny katalog lub folder.

Składnia

ChDir ścieżka

Obowiązkowy argument ścieżka jest wyrażeniem znakowym określającym, który katalog lub folder stanie się nowym domyślnym katalogiem lub folderem. Element ścieżka może zawierać oznaczenie dysku. Jeśli nie wskazano dysku, ChDir zmienia domyślny katalog lub folder w obrębie bieżącego dysku.

Użycie

Instrukcja ChDir zmienia domyślny katalog, ale nie domyślny dysk. Na przykład, jeżeli dysk C jest dyskiem domyślnym, poniższa instrukcja zmieni domyślny katalog na dysku D, lecz domyślnym dyskiem pozostanie dysk C:

ChDir "D:\TMP"


ChDrive - instrukcja

Zmienia bieżący dysk.

Składnia

ChDrive dysk

Obowiązkowy argument dysk jest wyrażeniem znakowym określającym istniejący dysk. Przekazanie ciągu znaków o zerowej długości ("") nie powoduje zmiany bieżącego dysku. Jeżeli element dysk jest ciągiem wieloznakowym, instrukcja ChDrive wykorzystuje tylko jego pierwszą literę.


CurDir - funkcja

Zwraca wartość typu Variant (String) reprezentującą bieżącą ścieżkę.

Składnia

CurDir[(dysk)]

Nieobowiązkowy argument dysk jest wyrażeniem znakowym określającym istniejący dysk. Jeżeli nie podano oznaczenia dysku lub dysk jest ciągiem o zerowej długości (""), CurDir zwraca ścieżkę dla bieżącego dysku.


Dir - funkcja

Zwraca wartość typu String reprezentującą nazwę pliku, katalogu lub foldera, która odpowiada określonemu wzorcowi, atrybutowi pliku albo etykiecie dysku.

Składnia

Dir[(nazwa_ściezki[, atrybuty])]

Funkcja Dir ma następujące elementy:

Element	Opis
nazwa_ ścieżki	Element nieobowiązkowy. Wyrażenie znakowe określające nazwę pliku—może zawierać katalog lub folder oraz oznaczenie dysku. Jeśli nazwa_ścieżki nie zostanie znaleziona, zwracany jest ciąg o zerowej długości.
atrybuty	Element nieobowiązkowy. Jest to stała lub wyrażenie numeryczne, którego suma określa atrybuty pliku. W przypadku pominięcia tego elementu zwracane są wszystkie pliki pasujące do nazwa_ścieżki.
Ustawienia

Argument atrybuty może przyjmować wartości:

Stała	Wartość	Opis
vbNormal	0	Zwykły
vbHidden	2	Ukryty
vbSystem	4	Plik systemowy
vbVolume	8	Etykieta dysku; jeśli zostanie określona, wszystkie inne atrybuty są ignorowane
vbDirectory	16	Katalog lub folder
Uwaga   Powyższe stałe są zdefiniowane przez Visual Basic for Applications i mogą być stosowane w dowolnym miejscu kodu programu zamiast ich rzeczywistych wartości.

Użycie

Funkcja Dir pozwala na stosowanie symboli wieloznacznych zastępujących wiele znaków (*) lub pojedynczy znak (?), umożliwiając w ten sposób wskazanie wielu plików.

Przy pierwszym wołaniu funkcji Dir należy określić nazwę_ścieżki, w przeciwnym razie wystąpi błąd. Ponadto, nazwa_ścieżki musi wystąpić, jeżeli podano atrybuty pliku.

Funkcja Dir zwraca nazwę pierwszego pliku, który odpowiada nazwie_ścieżki. Aby uzyskać nazwy kolejnych plików pasujących do nazwy_ścieżki, należy ponownie wywołać funkcję Dir, lecz bez elementów. Po wyczerpaniu plików, których nazwy pasują do wzorca, Dir zwróci ciąg o zerowej długości (""). Po zwróceniu przez funkcję ciągu o zerowej długości, w kolejnym wywołaniu funkcji należy określić nazwę_ścieżki, w przeciwnym razie wystąpi błąd. Możliwe jest wskazanie nowej nazwy_ścieżki bez odczytywania wszystkich nazw plików odpowiadających bieżącej nazwie_ścieżki. Nie można jednak wywoływać funkcji Dir rekurencyjnie. Wywoływanie funkcji Dir z atrybutem vbDirectory nie zwraca podkatalogów.

Wskazówka   Zwracane nazwy plików nie są uporządkowane, można je jednak zapisać do tablicy, a następnie posortować zawartość tablicy.


Environ - funkcja

Zwraca wartość typu String odpowiadającą wartości zmiennej otoczenia systemu operacyjnego.

Składnia

Environ({envstring | number})

Funkcja Environ ma następujące nazwane argumenty:

Argument	Opis
envstring	Argument nieobowiązkowy. Jest to wyrażenie znakowe zawierające nazwę zmiennej otoczenia.
number	Argument nieobowiązkowy. Jest to wyrażenie numeryczne odpowiadające liczbie porządkowej ciągu otoczenia w tablicy ciągów otoczenia. Argument number może być dowolnym wyrażeniem numerycznym, ale przed użyciem jego wartości jest zaokrąglana do najbliższej liczby całkowitej.
Użycie

Jeżeli argument envstring nie zostanie znaleziony w tablicy ciągów otoczenia, zwracany jest ciąg o zerowej długości (""). W przeciwnym razie funkcja Environ zwraca tekst przypisany do określonego argumentu envstring; to jest, tekst dla tej zmiennej otoczenia następujący po znaku równości (=) w tablicy ciągów znaków otoczenia.

Podanie argumentu number powoduje zwrócenie ciągu znaków zajmującego pozycję o podanym numerze w tablicy ciągów otoczenia. W takim przypadku funkcja Environ zwraca cały tekst łącznie z argumentem envstring. Jeżeli na określonej pozycji nie ma ciągu otoczenia, funkcja Environ zwraca ciąg znaków o zerowej długości.


FileCopy - instrukcja

Kopiuje plik.

Składnia

FileCopy source, destination

Składnia instrukcji FileCopy zawiera następujące nazwane argumenty:

Argument	Opis
source	Argument obowiązkowy. Jest to wyrażenie znakowe określające nazwę pliku, który ma zostać skopiowany.  Argument source może zawierać katalog lub folder oraz dysk.
destination	Argument obowiązkowy. Wyrażenie znakowe określające nazwę docelowego pliku. Argument destination może zawierać katalog lub folder oraz dysk.
Użycie

Próba użycia instrukcji FileCopy dla aktualnie otwartego pliku powoduje błąd.


FileDateTime - funkcja

Zwraca wartość typu Variant (Date) wskazującą datę i czas utworzenia lub ostatniej modyfikacji pliku.

Składnia

FileDateTime(nazwa_ścieżki)

Obowiązkowy argument nazwa_ścieżki jest wyrażeniem znakowym określającym nazwę pliku. Element nazwa_ścieżki może zawierać katalog lub folder oraz dysk.


FileLen - funkcja

Zwraca wartość typu Long określającą długość pliku w bajtach.

Składnia

FileLen(nazwa_ścieżki)

Obowiązkowy argument nazwa_ścieżki jest wyrażeniem znakowym określającym plik. Element nazwa_ścieżki może zawierać katalog lub folder oraz dysk.

Użycie

Jeżeli wskazany plik jest otwarty w momencie wywołania funkcji FileLen, zwracana wartość reprezentuje rozmiar pliku bezpośrednio przed jego otwarciem.

Uwaga   Aby uzyskać rozmiar pliku, który jest otwarty, należy użyć funkcji LOF.


GetAttr - funkcja

Zwraca wartość typu Integer reprezentującą atrybuty pliku, katalogu lub foldera.

Składnia

GetAttr(nazwa_ścieżki)

Obowiązkowy argument nazwa_ścieżki jest wyrażeniem znakowym określającym nazwę pliku. Element nazwa_ścieżki może zawierać katalog lub folder oraz dysk.

Zwracane wartości

Wartość zwrócona przez funkcję GetAttr jest sumą następujących wartości atrybutów:

Stała	Wartość	Opis
vbNormal	0	Zwykły
vbReadOnly	1	Tylko do odczytu
vbHidden	2	Ukryty
vbSystem	4	Systemowy
vbDirectory	16	Katalog lub folder
vbArchive	32	Plik został zmieniony od ostatniego zapisu kopii zapasowej
Uwaga   Powyższe stałe są zdefiniowane przez system Visual Basic for Applications i mogą być stosowane w dowolnym miejscu kodu programu zamiast ich rzeczywistych wartości.

Użycie

W celu określenia, które atrybuty są ustawione, należy wykorzystać operator And do porównywania bitowego wartości zwróconej przez funkcję GetAttr z wartością odpowiedniego atrybutu pliku. Wynik różny od zera oznacza, że dla wskazanego pliku atrybut jest ustawiony. Na przykład, wartość zwrócona przez poniższe wyrażenie z operatorem And jest równa zero, jeśli atrybut "Archiwowany" nie jest ustawiony:

Result = GetAttr(FName) And vbArchive

Jeśli atrybut Archiwowany jest ustawiony, zwracana jest wartość różna od zera.


Kill - instrukcja

Usuwa pliki z dysku.

Składnia

Kill nazwa_ścieżki

Obowiązkowy argument nazwa_ścieżki jest wyrażeniem znakowym określającym jedną lub więcej nazw plików, które mają być usunięte. Nazwa_ścieżki może zawierać katalog lub folder oraz dysk.

Użycie

Instrukcja Kill pozwala na stosowanie symboli wieloznacznych zastępujących wiele znaków (*) lub pojedynczy znak (?), aby umożliwić w ten sposób wskazanie wielu plików.

Próba zastosowania instrukcji Kill do usunięcia otwartego pliku powoduje błąd.

Uwaga   Do usuwania katalogów służy instrukcja RmDir.


MkDir - instrukcja

Tworzy nowy katalog lub folder.

Składnia

MkDir ścieżka

Obowiązkowy argument ścieżka jest wyrażeniem znakowym określającym tworzony katalog lub folder. Element ścieżka może zawierać dysk. Jeżeli nie określono dysku, MkDir tworzy nowy katalog lub folder na dysku bieżącym.


Name - instrukcja

Zmienia nazwę pliku dyskowego, katalogu lub folderu.

Składnia

Name stara_nazwa_ścieżki As nowa_nazwa_ścieżki

Składnia instrukcji Name zawiera następujące elementy:

Element	Opis
stara_nazwa_ ścieżki	Element obowiązkowy. Jest to wyrażenie znakowe określające nazwę i położenie istniejącego pliku—może zawierać katalog lub folder oraz dysk.
nowa_nazwa_ ścieżki	Element obowiązkowy. Jest to wyrażenie znakowe określające nową nazwę i położenie pliku—może zawierać katalog lub folder oraz dysk. Plik o nazwie określonej przez nową_nazwę_ścieżki nie może istnieć.
Użycie

Zarówno nowa_nazwa_ścieżki jak i stara_nazwa_ścieżki muszą dotyczyć tego samego dysku. Jeżeli ścieżka określona w nowej_nazwie_ścieżki istnieje i jest różna od ścieżki podanej w starej_nazwie_ścieżki, instrukcja Name przenosi plik do nowego katalogu lub folderu i zmienia nazwę pliku, jeśli jest to konieczne. Jeżeli nowa_nazwa_ścieżki i stara_nazwa_ścieżki zawierają różne ścieżki i te same nazwy plików, Name przenosi plik w nowe położenie i pozostawia bez zmiany nazwę pliku. Wykorzystując instrukcję Name można przenieść plik z jednego katalogu lub folderu do innego, ale nie można przenieść katalogu lub folderu.

Użycie instrukcji Name dla otwartego pliku powoduje błąd. Przed zmianą nazwy plik musi zostać zamknięty. Argumenty instrukcji Name nie mogą zawierać symboli wieloznacznych zastępujących wiele znaków (*) lub pojedynczy znak (?).


QBColor - funkcja

Zwraca wartość typu Long reprezentującą kod koloru RGB odpowiadający określonemu numerowi koloru.

Składnia

QBColor(kolor)

Obowiązkowy argument kolor jest liczbą całkowitą z przedziału 0–15.

Ustawienia

Element kolor może przyjmować następujące wartości:

Numer	Kolor	Numer	Kolor
0	Czarny	8	Szary
1	Niebieski	9	Jasnoniebieski
2	Zielony	10	Jasnozielony
3	Błękitny	11	Jasnobłękitny
4	Czerwony	12	Jasnoczerwony
5	Purpurowy	13	Jasnopurpurowy
6	Żółty	14	Jasnożółty
7	Biały	15	Intensywny biały
Użycie

Element kolor reprezentuje wartości kolorów stosowane we wcześniejszych wersjach systemu Basic (jak Microsoft Visual Basic for MS-DOS i Basic Compiler). Począwszy od najmniej znaczącego bajtu, zwracana wartość określa wartości kolorów czerwonego, zielonego i niebieskiego zgodnie z system RGB stosowanym w Visual Basic for Applications.


RGB - funkcja

Zwraca liczbę całkowitą typu Long reprezentującą wartość koloru w systemie RGB.

Składnia

RGB(red, green, blue)

Funkcji RGB ma następujące nazwane argumenty:

Argument	Opis
red	Argument obowiązkowy typu Variant (Integer). Jest to liczba z przedziału 0–255 włącznie, reprezentująca składową czerwoną koloru.
green	Argument obowiązkowy typu Variant (Integer). Jest to liczba z przedziału 0–255 włącznie, reprezentująca składową zieloną koloru.
blue	Argument obowiązkowy typu Variant (Integer). Jest to liczba z przedziału 0–255 włącznie, reprezentująca składową niebieską koloru.
Użycie

Metody i właściwości aplikacji, które operują na specyfikacji koloru, wymagają, aby była to liczba reprezentująca wartość koloru w systemie RGB. Wartość koloru systemie RGB określa względne intensywności barwy czerwonej, zielonej i niebieskiej użyte do wyświetlenia określonego koloru.

Wartość dowolnego argumentu funkcji RGB, która przekracza 255 jest przyjmowana jako 255.

Poniższa tabela przedstawia niektóre typowe kolory oraz odpowiadające im wartości składowej czerwonej, zielonej i niebieskiej:

Kolor	Wartość czerwonego	Wartość zielonego	Wartość niebieskiego
Czarny	0	0	0
Niebieski	0	0	255
Zielony	0	255	0
Błękitny	0	255	255
Czerwony	255	0	0
Purpurowy	255	0	255
Żółty	255	255	0
Biały	255	255	255


RmDir - instrukcja

Usuwa istniejący katalog lub folder.

Składnia

RmDir ścieżka

Obowiązkowy argument ścieżka jest wyrażeniem znakowym wskazującym usuwany katalog lub folder. Element ścieżka może zawierać dysk. Jeżeli nie określono dysku, RmDir usuwa katalog lub folder na dysku bieżącym.

Użycie

Próba użycia RmDir dla katalogu lub folderu zawierającego pliki powoduje błąd. Aby usunąć katalog lub folder, należy najpierw za pomocą instrukcji Kill usunąć wszystkie pliki.


SetAttr - instrukcja

Ustawia atrybuty pliku.

Składnia

SetAttr pathname, attributes

Składnia instrukcji SetAttr zawiera następujące nazwane argumenty:

Argument	Opis
pathname	Argument obowiązkowy. Jest to wyrażenie znakowe określające nazwę pliku - może zawierać katalog lub folder oraz dysk.
attributes	Argument obowiązkowy. Są to stałe lub wyrażenia numeryczne, których suma określa atrybuty pliku.
Ustawienia

Argument attributes może przyjmować następujące wartości:

Stała	Wartość	Opis
vbNormal	0	Zwykły (domyślnie)
vbReadOnly	1	Tylko do odczytu
vbHidden	2	Ukryty
vbSystem	4	Plik systemowy
vbArchive	32	Plik został zmieniony od ostatniego zapisu kopii zapasowej
Uwaga   Powyższe stałe są zdefiniowane przez system Visual Basic for Applications. Nazwy mogą być stosowane w dowolnym miejscu kodu programu zamiast ich rzeczywistych wartości.

Użycie

Próba ustawienia atrybutów otwartego pliku powoduje błąd wykonania.


Instrukcja Close - przykład

W tym przykładzie wykorzystano instrukcję Close do zamknięcia wszystkich trzech plików otwartych dla operacji wyjścia (Output).

Dim I, NazwaPliku

For I = 1 To 3	' Wykonaj pętlę 3 razy.

NazwaPliku = "TEST" & I	' Utwórz nazwę pliku.

Open NazwaPliku For Output As #I	' Otwórz plik.

Print #I, "To jest próba."	' Zapisz ciąg znaków

' do pliku.

Next I

Close	' Zamknij wszystkie 3 otwarte pliki.


Funkcja EOF - przykład

W tym przykładzie wykorzystano funkcję EOF do wykrycia końca pliku. W przykładzie przyjęto, że plik MÓJPLIK jest plikiem tekstowym zawierającym kilka wierszy tekstu.

Dim DaneWejściowe

Open "MÓJPLIK" For Input As #1	' Otwórz plik dla

' operacji wejścia.

Do While Not EOF(1)	' Sprawdź, czy to koniec pliku.

Line Input #1, DaneWejściowe	' Przeczytaj wiersz

' danych.

Debug.Print DaneWejściowe	' Drukuj w oknie Analiza programu.

Loop

Close #1	' Zamknij plik.


Funkcja FileAttr - przykład

W tym przykładzie wykorzystano funkcję FileAttr do wyznaczenia trybu otwarcia i dojścia do otwartego pliku.

Dim NumPliku, Tryb, Dojście

NumPliku = 1	' Ustaw numer pliku.

Open "TEST" For Append As NumPliku	' Otwórz plik.

Tryb = FileAttr(NumPliku, 1)	' Wynik: 8 (Tryb Append).

Dojście = FileAttr(NumPliku, 2)	' Wynikiem jest

' dojście do pliku.

Close NumPliku	' Zamknij plik.


Funkcja FreeFile - przykład

W tym przykładzie wykorzystano funkcję FreeFile do ustalenia pierwszego dostępnego numeru pliku. W trakcie wykonywania pętli następuje otwarcie pięciu plików dla operacji wyjścia i zapisanie do każdego pliku przykładowych danych.

Dim MójIndeks, NumPliku

For MójIndeks = 1 To 5	' Wykonaj pętlę 5 razy.

NumPliku = FreeFile	' Pobierz nie wykorzystany

' numer pliku.

Open "TEST" & MójIndeks _

For Output As #NumPliku 	' Utwórz plik.

Write #NumPliku, "To jest przykład."	' Zapisz tekst

' do pliku.

Close #NumPliku	' Zamknij plik.

Next MójIndeks


Instrukcja Get - przykład

W tym przykładzie wykorzystano instrukcję Get do przeczytania danych z pliku i zapisania ich w zmiennej. W przykładzie przyjęto, że plik TEST zawiera pięć rekordów typu Rekord, który jest zdefiniowany przez użytkownika.

Type Rekord	' Zdefiniuj typ.

ID As Integer

Nazwisko As String * 20

End Type

Dim MójRekord As Rekord, Pozycja	' Deklaracja

' zmiennych.

' Otwórz przykładowy plik dla dostępu swobodnego.

Open "TEST" For Random As #1 Len = Len(MójRekord)

' Przeczytaj przykładowy plik, korzystając

' z instrukcji Get.

Pozycja = 3	' Ustaw numer rekordu.

Get #1, Pozycja, MójRekord	' Przeczytaj trzeci

' rekord.

Close #1	' Zamknij plik.


Instrukcja Input # - przykład

W tym przykładzie wykorzystano instrukcję Input # do przeczytania danych z pliku i zapisania ich w dwóch zmiennych. W przykładzie przyjęto, że plik TEST zwiera kilka wierszy danych zapisanych przy użyciu instrukcji Write #; dokładniej, każdy wiersz zawiera ciąg znaków ograniczony cudzysłowami i liczbę oddzieloną od ciągu znakiem przecinka (np. "Cześć", 234).

Dim MójCiąg, MojaLiczba

Open "TEST" For Input As #1	' Otwórz plik dla operacji

' wejścia.

Do While Not EOF(1)	' Wykonuj pętlę aż do napotkania

' końca pliku.

Input #1, MójCiąg, MojaLiczba	' Przeczytaj dane i

' zapisz je w dwóch zmiennych.

Debug.Print MójCiąg, MojaLiczba	' Drukuj dane w

' oknie Analiza programu.

Loop

Close #1	' Zamknij plik.


Funkcja Input - przykład

W tym przykładzie wykorzystano funkcję Input do czytania z pliku kolejnych znaków (po jednym znaku naraz) i wyświetlania ich w oknie Analiza programu. W przykładzie przyjęto, że TEST jest plikiem zawierającym kilka wierszy przykładowych danych.

Dim MójZnak

Open "TEST" For Input As #1	' Otwórz plik.

Do While Not EOF(1)	' Wykonuj pętlę aż do napotkania

' końca pliku.

MójZnak = Input(1, #1)	' Pobierz jeden znak.

Debug.Print MójZnak	' Drukuj w oknie Analiza programu.

Loop

Close #1	' Zamknij plik.


Instrukcja Line Input # - przykład

W tym przykładzie wykorzystano instrukcję Line Input # do przeczytania wiersza z pliku sekwencyjnego i przypisania go do zmiennej. W przykładzie przyjęto, że plik TEST zwiera kilka wierszy przykładowych danych.

Dim Wiersz

Open "TEST" For Input As #1	' Otwórz plik.

Do While Not EOF(1)	' Wykonuj pętlę aż do napotkania

' końca pliku.

Line Input #1, Wiersz	' Przeczytaj wiersz i

' przypisz go do zmiennej.

Debug.Print Wiersz	' Drukuj w oknie Analiza programu.

Loop

Close #1	' Zamknij plik.


Funkcja Loc - przykład

W tym przykładzie wykorzystano funkcję Loc do określenia bieżącej pozycji odczytu/zapisu w otwartym pliku. W przykładzie przyjęto, że plik TEST zwiera kilka wierszy przykładowych danych.

Dim Pozycja, MójWiersz

Open "TEST" For Binary As #1	' Otwórz właśnie utworzony

' plik.

Do While Pozycja < LOF(1)	' Wykonuj pętlę aż do

' napotkania końca pliku.

MójWiersz = MójWiersz & Input(1, #1)	' Przeczytaj

' znak i zapisz go w zmiennej.

Pozycja = Loc(1)	' Pobierz bieżącą pozycję w

' pliku.

' Drukuj w oknie Analiza programu.

Debug.Print MójWiersz; Tab; Pozycja

Loop

Close #1	' Zamknij plik.


Instrukcje Lock, Unlock - przykład

W tym przykładzie pokazano sposób użycia instrukcji Lock i Unlock. W chwili gdy pewien proces modyfikuje rekord, dostęp innych procesów do niego jest zabroniony. W przykładzie przyjęto, że plik TEST zwiera pięć rekordów typu Rekord, który jest zdefiniowany przez użytkownika.

Type Rekord	' Zdefiniuj typ.

ID As Integer

Nazwisko As String * 20

End Type

Dim MójRekord As Rekord, NrRekordu	' Deklaracja

' zmiennych.

' Otwórz przykładowy plik dla dostępu swobodnego.

Open "TEST" For Random Shared As #1 Len = _

Len(MójRekord)

NrRekordu = 4	' Ustaw numer rekordu.

Lock #1, NrRekordu	' Zablokuj rekord.

Get #1, NrRekordu, MójRekord	' Przeczytaj rekord.

MójRekord.ID = 234	' Zmodyfikuj rekord.

MójRekord.Nazwisko = "Jan Kowalski"

Put #1, NrRekordu, MójRekord	' Zapisz zmodyfikowany

' rekord.

Unlock #1, NrRekordu	' Odblokuj bieżący Rekord.

Close #1	' Zamknij plik.


Funkcja LOF - przykład

W tym przykładzie wykorzystano funkcję LOF do określenia wielkości otwartego pliku. W przykładzie przyjęto, że plik TEST zwiera przykładowe dane.

Dim DługośćPliku

Open "TEST" For Input As #1	' Otwórz plik.

DługośćPliku = LOF(1)	' Pobierz wielkość pliku.

Close #1	' Zamknij plik.


Instrukcja Open - przykład

W tym przykładzie pokazano różne zastosowania instrukcji Open do umożliwienia realizacji na pliku operacji wejścia i wyjścia.

Poniższy kod programu otwiera plik TEST do przeprowadzenia sekwencyjnych operacji wejścia.

Open "TEST" For Input As #1

' Zamknij plik przed ponownym otwarciem w innym trybie.

Close #1

Ten przykład otwiera plik w trybie binarnym tylko do zapisu.

Open "TEST" For Binary Access Write As #1

' Zamknij plik przed ponownym otwarciem go w innym

' trybie.

Close #1

Ten przykład otwiera plik dla dostępu swobodnego. Plik zawiera rekordy typu Rekord zdefiniowanego przez użytkownika.

Type Rekord	' Zdefiniuj typ.

ID As Integer

Nazwisko As String * 20

End Type

Dim MójRekord As Rekord	' Deklaracja zmiennej.

Open "TEST" For Random As #1 Len = Len(MójRekord)

' Zamknij plik przed ponownym otwarciem go w innym

' trybie.

Close #1

Ten przykład otwiera plik dla sekwencyjnych operacji wyjścia; dowolny proces może czytać z pliku lub do niego zapisywać.

Open "TEST" For Output Shared As #1

' Zamknij plik przed ponownym otwarciem go w innym

' trybie.

Close #1

Ten przykład otwiera plik w trybie binarnym tylko do odczytu; inne procesy nie mogą czytać z tego pliku.

Open "TEST" For Binary Access Read Lock Read As #1


Instrukcja Print # - przykład

W tym przykładzie wykorzystano instrukcję Print # do zapisania danych do pliku.

Open "TEST" For Output As #1	' Otwórz plik dla operacji

' wyjścia.

Print #1, "To jest próba"	' Drukuj tekst do pliku.

Print #1,	' Drukuj pusty wiersz do pliku.

Print #1, "Obszar 1"; Tab ; "Obszar 2"	' Drukuj w

' dwóch obszarach wydruku.

Print #1, "Pozdrawiam" ; " " ; "wszystkich" ' Oddzielaj

' ciągi znaków spacją.

Print #1, Spc(5) ; "5 znaków spacji " ' Drukuj pięć

' znaków spacji.

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

' kolumnie.

' Przypisz zmiennym wartości typu Boolean, Date, Null i Error.

Dim MójBool, MojaData, MójNull, MójBłąd

MójBool = False : MojaData = #12 luty 1969#

MójNull = Null

MójBłąd = CVErr(32767)

' Wartości True, False, Null i Error są tłumaczone

' zależnie od ustawień regionalnych w systemie.

' Literały daty zapisywane są w standardowym formacie

' daty krótkiej.

Print #1, MójBool ; " jest wartością typu Boolean"

Print #1, MojaData ; " jest datą"

Print #1, MójNull ; " jest wartością typu NULL"

Print #1, MójBłąd ; " jest numerem błędu"

Close #1	' Zamknij plik.


Instrukcja Put - przykład

W tym przykładzie wykorzystano instrukcję Put do zapisania danych do pliku. Plik zawiera pięć rekordów typu Rekord zdefiniowanego przez użytkownika.

Type Rekord	' Zdefiniuj typ.

ID As Integer

Nazwisko As String * 20

End Type

Dim MójRekord As Rekord, NrRekordu	' Deklaracja

' zmiennych.

' Otwórz plik dla dostępu swobodnego.

Open "TEST" For Random As #1 Len = Len(MójRekord)

For NrRekordu = 1 To 5	' Wykonaj pętlę 5 razy.

MójRekord.ID = NrRekordu	' Zdefiniuj numer

' identyfikacyjny.

' Utwórz ciąg znaków.

MójRekord.Nazwisko = "Moje nazwisko" & NrRekordu

Put #1, NrRekordu, MójRekord	' Zapisz rekord do

' pliku.

Next NrRekordu

Close #1	' Zamknij plik.


Instrukcja Reset - przykład

W tym przykładzie wykorzystano instrukcję Reset do zamknięcia wszystkich otwartych plików i zapisania zawartości wszystkich buforów plików na dysk. Należy zwrócić uwagę na wykorzystanie zmiennej typu Variant NumPliku zarówno jako ciągu znaków, jak i liczby.

Dim NumPliku

For NumPliku = 1 To 5	' Wykonaj pętlę 5 razy.

' Otwórz plik dla operacji wyjścia. Liczba NumPliku

' jest dołączana do ciągu znaków TEST, aby utworzyć

' nazwę pliku. Liczba NumPliku jest traktowana jak

' numer, gdy występuje po znaku #.

Open "TEST" & NumPliku For Output As #NumPliku

Write #NumPliku, "Pozdrawiam"	' Zapisz dane do

' pliku.

Next NumPliku

Reset	' Zamknij pliki i zapisz ich zawartość na dysku.


Funkcja Seek - przykład

W tym przykładzie wykorzystano funkcję Seek do określenia bieżącej pozycji w pliku. W przykładzie przyjęto, że plik TEST zwiera rekordy typu Rekord, który jest zdefiniowany przez użytkownika.

Type Rekord	' Zdefiniuj typ.

ID As Integer

Nazwisko As String * 20

End Type

Funkcja Seek użyta z plikami otwartymi dla dostępu swobodnego zwraca numer kolejnego rekordu.

Dim MójRekord As Rekord	' Deklaracja zmiennej.

Open "TEST" For Random As #1 Len = Len(MójRekord)

Do While Not EOF(1)	' Wykonuj pętlę aż do napotkania

' końca pliku.

Get #1, , MójRekord	' Przeczytaj kolejny rekord.

Debug.Print Seek(1)	' Drukuj numer rekordu w oknie

' Analiza programu.

Loop

Close #1	' Zamknij plik.

W przypadku plików otwartych w innym trybie niż Random, funkcja Seek zwraca pozycję bajtu, na który będzie miała wpływ kolejna operacja. Przyjęto, że plik TEST zwiera kilka wierszy tekstu.

Dim MójZnak

Open "TEST" For Input As #1	' Otwórz plik do odczytu.

Do While Not EOF(1)	' Wykonuj pętlę aż do napotkania

' końca pliku.

MójZnak = Input(1, #1)	' Przeczytaj kolejny znak

' danych.

Debug.Print Seek(1)	' Drukuj pozycję bajtu w oknie

' Analiza programu.

Loop

Close #1	' Zamknij plik.


Instrukcja Seek - przykład

W tym przykładzie wykorzystano instrukcję Seek do ustawienia pozycji kolejnej operacji odczytu lub zapisu w pliku. W przykładzie przyjęto, że plik TEST zwiera rekordy typu Rekord, który jest zdefiniowany przez użytkownika.

Type Rekord	' Zdefiniuj typ.

ID As Integer

Nazwisko As String * 20

End Type

Instrukcja Seek użyta z plikami otwartymi dla dostępu swobodnego ustawia numer kolejnego rekordu.

' Deklaracja zmiennych.

Dim MójRekord As Rekord, Rozmiar, NrRekordu

' Otwórz plik dla dostępu swobodnego.

Open "TEST" For Random As #1 Len = Len(MójRekord)

Rozmiar = LOF(1) \ Len(MójRekord)	' Pobierz liczbę

' rekordów w pliku.

' Pętla czyta wszystkie rekordy, zaczynając od

' ostatniego.

For NrRekordu = Rozmiar To 1 Step - 1

Seek #1, NrRekordu	' Ustaw pozycję.

Get #1, , MójRekord	' Przeczytaj rekord.

Next NrRekordu

Close #1	' Zamknij plik.

W przypadku plików otwartych w innym trybie niż Random, instrukcja Seek ustawia pozycję bajtu, na który będzie miała wpływ kolejna operacja. Przyjęto, że plik TEST zwiera kilka wierszy tekstu.

Dim Rozmiar, NastZnak, MójZnak

Open "TEST" For Input As #1	' Otwórz plik dla operacji

' wejścia.

Rozmiar = LOF(1)	' Pobierz wielkość pliku w bajtach.

' Pętla czyta wszystkie znaki, zaczynając od

' ostatniego.

For NastZnak = Rozmiar To 1 Step -1

Seek #1, NastZnak	' Ustaw się na pozycji znaku.

MójZnak = Input(1, #1)	' Przeczytaj znak.

Next NastZnak

Close #1	' Zamknij plik.


Funkcja Spc - przykład

W tym przykładzie wykorzystano funkcję Spc do ustawienia pozycji w pliku dla operacji wyjścia i pozycji wydruku w oknie Analiza programu.

' Funkcji Spc można używać w połączeniu z instrukcją

' Print #.

Open "TEST" For Output As #1	' Otwórz plik dla operacji

' wyjścia.

Print #1, "Między tym punktem"; Spc(10); "a tym " & _

"jest 10 znaków spacji."

Close #1	' Zamknij plik.

Poniższa instrukcja powoduje wydrukowanie w oknie Analiza programu tekstu poprzedzonego trzydziestoma znakami spacji (wykorzystano metodę Print).

Debug.Print Spc(30); _

"Po lewej stronie wydrukowano 30 znaków spacji."


Funkcja Tab - przykład

W tym przykładzie wykorzystano funkcję Tab do ustawienia pozycji w pliku dla operacji wyjścia i pozycji wydruku w oknie Analiza programu.

' Funkcji Tab można używać w połączeniu z instrukcją

' Print #.

Open "TEST" For Output As #1	' Otwórz plik dla operacji

' wyjścia.

' Drugie słowo drukowane jest w 20. kolumnie.

Print #1, "Pozdrawiam"; Tab(20); "wszystkich"

' Jeśli nie podano wartości parametru, kursor

' przesuwany jest do kolejnego obszaru wydruku.

Print #1, "Pozdrawiam"; Tab; " wszystkich"

Close #1	' Zamknij plik.

Funkcji Tab można również użyć w połączeniu z metodą Print. Poniższa instrukcja drukuje tekst od dziesiątej kolumny.

Debug.Print Tab(10); "Dziesiąta kolumna."


Instrukcja Width # - przykład

W tym przykładzie wykorzystano instrukcję Width # do ustawienia w pliku długości wiersza dla operacji wyjścia.

Dim I

Open "TEST" For Output As #1	' Otwórz plik dla operacji

' wyjścia.

Width #1, 5	' Ustaw długość wiersza dla operacji

' wyjścia

' na 5.

For I = 0 To 9	' Wykonaj pętlę 10 razy.

Print #1, Chr(48 + I);	' Drukowanie pięciu znaków

' w każdym wierszu.

Next I

Close #1	' Zamknij plik.


Instrukcja Write # - przykład

W tym przykładzie wykorzystano instrukcję Write # do zapisania danych nie sformatowanych do pliku sekwencyjnego.

Open "TEST" For Output As #1	' Otwórz plik dla operacji

' wyjścia.

Write #1, "Pozdrawiam wszystkich", 234	' Zapisz blok

' danych zakończony znakiem przecinka.

Write #1,	' Zapisz pusty wiersz.

Dim MójBool, MojaData, MójNull, MójBłąd

' Przypisz wartości typu Boolean, Date, Null i Error.

MójBool = False : MojaData = #12 luty 1969#

MójNull = Null

MójBłąd = CVErr(32767)

' Dane typu Boolean zapisywane są jako #TRUE# lub

' #FALSE#. Literały daty zapisywane są w uniwersalnym

' formacie daty (np. #1994-07-13# oznacza 13 lipca

' 1994). Dane typu Null zapisywane są jako #NULL#. Dane

' typu Error zapisywane są jako #ERROR kod#.

Write #1, MójBool ; " jest wartością typu Boolean"

Write #1, MojaData ; " jest datą"

Write #1, MójNull ; " jest wartością Null"

Write #1, MójBłąd ; " jest numerem błędu"

Close #1	' Zamknij plik.


Close - instrukcja

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

Składnia

Close [lista_numerów_plików]

Nieobowiązkowy argument lista_numerów_plików obejmuje jeden lub wiele numerów plików zapisanych według poniższej składni, przy założeniu, że numer_pliku jest dowolnym poprawnym numerem pliku:

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

Użycie

Jeżeli argument lista_numerów_plików zostanie pominięty, wszystkie aktywne pliki otwarte za pomocą instrukcji Open zostaną zamknięte.

Przy zamknięciu pliku otwartego dla operacji Output lub Append, bufor wyjściowy jest zapisywany do bufora systemowego przeznaczonego dla zamykanego pliku. Cały obszar bufora związanego z zamykanym plikiem jest zwalniany.

Po wykonaniu instrukcji Close powiązanie między plikiem a jego numerem staje się nieaktualne.


EOF - funkcja

Zwraca wartość typu Integer zawierającą wartość True typu Boolean, jeżeli osiągnięty został koniec pliku otwartego za pomocą funkcji Input dla dostępu typu Random lub sekwencyjnego.

Składnia

EOF(numer_pliku)

Obowiązkowy argument numer_pliku jest wartością typu Integer zawierającą dowolny poprawny numer pliku.

Użycie

Funkcję EOF należy wykorzystywać w celu uniknięcia błędów powstałych przy próbie odczytu danych znajdujących się za końcem pliku.

Funkcja EOF zwraca wartość False, dopóki nie zostanie osiągnięty koniec pliku. W przypadku plików otwartych dla dostępu typu Random lub Binary, funkcja EOF zwraca wartość False, dopóki ostatnio wykonana instrukcja Get nie będzie w stanie odczytać bieżącego rekordu.

W przypadku plików otwartych dla dostępu typu Binary, próba odczytu pliku za pomocą funkcji Input, zanim funkcja EOF zwróci wartość True, spowoduje wystąpienie błędu. W przypadku odczytu plików binarnych należy zamiast funkcji EOF korzystać z funkcji LOF i Loc lub korzystać z funkcji EOF wtedy, gdy używamy funkcji Get. Dla plików otwartych za pomocą funkcji Output, funkcja EOF zawsze zwraca wartość True.


FileAttr - funkcja

Zwraca wartość typu Long reprezentującą tryb pliku dla plików otwartych za pomocą instrukcji Open.

Składnia

FileAttr(filenumber, returntype)

Funkcja FileAttr ma następujące nazwane argumenty:

Argument	Opis
filenumber	Argument obowiązkowy; wartość typu Integer. Dowolny poprawny numer pliku.
returntype	Argument obowiązkowy; wartość typu Integer. Wartość wskazująca rodzaj zwracanej informacji. Podanie wartości 1 powoduje zwrócenie trybu pliku. W systemach 16 bitowych, podanie wartości 2 powoduje zwrócenie systemowego uchwytu pliku. Wartość returntype równa 2 nie jest obsługiwana w systemach 32 bitowych i powoduje błąd.
Zwracane wartości

Jeżeli argument returntype jest równy 1, to tryb pliku wskazują następujące wartości:

Tryb	Wartość
Input	1
Output	2
Random	4
Append	8
Binary	32


FreeFile - funkcja

Zwraca wartość typu Integer reprezentującą następny numer pliku dostępny dla instrukcji Open.

Składnia

FreeFile[(numer_zakresu)]

Nieobowiązkowy argument numer_zakresu jest wartością typu Variant, która określa zakres wartości, z jakiego zwrócony ma zostać następny numer pliku. Aby zwrócony numer pliku należał do zakresu 1 – 255 włącznie, należy podać 0 (wartość domyślna). Aby zwrócony numer pliku należał do zakresu 256 – 511, należy podać wartość 1.

Użycie

Funkcji FreeFile należy używać w celu uzyskania numeru pliku, który nie jest jeszcze wykorzystywany.


Get - instrukcja

Odczytuje do zmiennej dane z otwartego pliku dyskowego.

Składnia

Get [#]numer_pliku, [numer_rekordu], nazwa_zmiennej

Instrukcja Get składa się z następujących elementów:

Element	Opis
numer_pliku	Element obowiązkowy. Dowolny poprawny numer pliku.
numer_rekordu	Element nieobowiązkowy. Wartość typu Variant (Long). Numer rekordu (dla plików otwartych w trybie Random) lub numer bajtu (dla plików otwartych w trybie Binary), od którego rozpoczyna się odczyt.
Nazwa_zmiennej	Element obowiązkowy. Poprawna nazwa zmiennej, do której odczytywane są dane.
Użycie

Dane odczytane za pomocą instrukcji Get są zwykle zapisywane do pliku za pomocą instrukcji Put.

Na pozycji 1 znajduje się pierwszy rekord lub bajt w pliku, na pozycji 2 znajduje się drugi rekord lub bajt, i tak dalej. Jeżeli element numer_rekordu zostanie pominięty, odczytany zostanie rekord wskazywany po ostatniej instrukcji Get lub Put (lub przez ostatnio wykonaną funkcję Seek). W ciągu elementów muszą występować przecinki oddzielające od siebie poszczególne elementy, na przykład:

Get #4,,BuforPliku

Dla plików otwartych w trybie Random zastosowanie mają następujące reguły:

•	Jeżeli długość odczytywanych danych jest mniejsza niż długość określona klauzulą Len w instrukcji Open, instrukcja Get odczytuje kolejne rekordy, poczynając od granic wyznaczonych długością rekordu. Przestrzeń pomiędzy końcem jednego rekordu a początkiem następnego jest wypełniana bieżącą zawartością bufora pliku. Ponieważ ilość danych wypełniających nie może być ściśle określona, dobrym pomysłem jest dopasowanie długości odczytywanych danych tak, aby odpowiadały długości rekordu.

•	Jeżeli zmienna, do której czytane są dane, jest ciągiem znaków o zmiennej długości, instrukcja Get odczytuje dwubajtowy deskryptor zawierający długość ciągu, po czym odczytuje dane do zmiennej. Dlatego długość rekordu określona w klauzuli Len instrukcji Open musi być większa o co najmniej 2 bajty od faktycznej długości ciągu.

•	Jeżeli zmienna, do której czytane są dane, jest typem numerycznym Variant, instrukcja Get odczytuje 2 bajty określające wartość VarType dla typu Variant, po czym dana zapisywana jest do zmiennej. Na przykład, podczas odczytywania zmiennych Variant typu VarType 3, instrukcja Get odczytuje 6 bajtów: 2 bajty określające zmienną Variant jako typ VarType 3 (Long) i 4 bajty zawierające dane typu Long. Długość rekordu określona klauzulą Len w instrukcji Open musi być o co najmniej 2 bajty większa od faktycznej liczby bajtów niezbędnych do zapisania zmiennej.

Uwaga   Instrukcji Get można używać do odczytu z dysku tablicy typu Variant, ale nie można używać instrukcji Get do odczytu wartości skalarnej typu Variant zawierającej tablicę. Instrukcji Get nie można też wykorzystywać do odczytu z dysku obiektów.

•	Jeżeli odczytywana wartość jest zmienną Variant typu VarType 8 (String), instrukcja Get odczytuje 2 bajty określające wartość VarType, 2 bajty określające długość ciągu, po czym odczytuje ciąg. Długość rekordu określona klauzulą Len instrukcji Open musi być o co najmniej 4 bajty większa od faktycznej długości ciągu.

•	Jeżeli odczytywana wartość jest tablicą dynamiczną, instrukcja Get odczytuje deskryptor, którego długość równa jest 2 plus 8 razy liczba wymiarów, czyli 2 + 8 * LiczbaWymiarów. Długość rekordu określona klauzulą Len instrukcji Open musi być większa lub równa sumie wszystkich bajtów niezbędnych do odczytania danych z tablicy i deskryptora tablicy. Na przykład, do zapisu zadeklarowanej poniżej tablicy potrzeba 118 bajtów.

Dim MojaTablica(1 To 5,1 To 10) As Integer

Na liczbę 118 bajtów składa się: 18 bajtów na deskryptor (2 + 8 * 2) i 100 bajtów danych (5 * 10 * 2).

•	Jeżeli odczytywana zmienna jest tablicą o stałym rozmiarze, instrukcja Get odczytuje tylko dane. Nie jest odczytywany żaden deskryptor.

•	Jeżeli odczytywana wartość jest zmienną innego typu (nie jest ciągiem znaków o zmiennej długości ani zmienną typu Variant), instrukcja Get odczytuje tylko dane. Długość rekordu określona klauzulą Len instrukcji Open musi być większa lub równa długości odczytywanych danych.

•	Instrukcja Get odczytuje elementy typu zdefiniowanego przez użytkownika tak, jak gdyby każdy z nich był odczytywany indywidualnie, z wyjątkiem tego, że nie ma wypełniania przestrzeni między elementami. Tablica dynamiczna typu zdefiniowanego przez użytkownika zapisana na dysku za pomocą instrukcji Put jest poprzedzona deskryptorem, którego długość jest równa 2 plus 8 razy liczba wymiarów, czyli 2 + 8 * LiczbaWymiarów. Długość rekordu określona klauzulą Len instrukcji Open musi być większa lub równa sumie wszystkich bajtów niezbędnych do odczytu poszczególnych elementów, łącznie z tablicami i ich deskryptorami.

Dla plików otwartych w trybie Binary zastosowanie mają wszystkie zasady dla trybu Random, z następującymi wyjątkami:

•	Zastosowanie klauzuli Len w instrukcji Open nie ma znaczenia. Instrukcja Get odczytuje wszystkie zmienne z dysku w sposób ciągły, czyli bez wypełniania przestrzeni między rekordami.

•	W przypadku dowolnej tablicy typu innego niż typ zdefiniowany przez użytkownika instrukcja Get odczytuje tylko dane. Nie jest odczytywany żaden deskryptor.

•	Instrukcja Get odczytuje ciągi znaków zmiennej długości, które nie są elementami typu zdefiniowanego przez użytkownika, nie oczekując 2-bajtowego deskryptora długości. Liczba odczytywanych bajtów równa się liczbie znaków w ciągu. Na przykład, poniższe instrukcje odczytują 10 bajtów z numeru pliku 1:

ZmCiag = String(10," ")

Get #1,,ZmCiag


Input # - instrukcja

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

Składnia

Input #numer_pliku, lista_zmiennych

Składnia instrukcji Input # zawiera następujące elementy:

Element	Opis
numer_pliku	Element obowiązkowy. Dowolny poprawny numer pliku.
lista_zmiennych	Element obowiązkowy. Jest to lista zmiennych oddzielonych od siebie przecinkami, którym są przypisywane wartości odczytywane z pliku, przy czym niedopuszczalne są tablice lub zmienne obiektowe. Natomiast dopuszczalne są zmienne będące elementem tablicy lub zmienne typu zdefiniowanego przez użytkownika.
Użycie

Dane odczytane za pomocą instrukcji Input # są zwykle zapisywane do pliku za pomocą instrukcji Write #. Instrukcję tę należy wykorzystywać tylko w przypadku plików otwartych w trybie Input lub Binary.

Podczas odczytu, typowy ciąg znaków lub wartość numeryczna są przypisywane zmiennej bez żadnej modyfikacji. Poniższa tabela ilustruje, w jaki sposób traktowane są inne dane wejściowe:

Empty	Wartość przypisywana zmiennej
Null	Empty
#NULL#	Null
#TRUE# lub #FALSE#	True lub False
#rrrr-mm-dd gg:mm:ss#	Data i/lub godzina Null reprezentowana przez wyrażenie
#ERROR numer_błędu#	numer_błędu (zmienna jest typu Variant i oznaczona jest jako błąd)
Podwójne cudzysłowy (" ") wewnątrz danych wejściowych są ignorowane.

Elementy danych w pliku muszą występować w takiej samej kolejności, jak zmienne na liście_zmiennych i muszą odpowiadać zmiennym tego samego typu danych. Jeżeli zmienna jest typu numerycznego, a dana - nienumerycznego, do zmiennej przypisywana jest wartość zero.

Jeżeli podczas czytania danych osiągnięty zostanie koniec pliku, czytanie danych jest przerywane i występuje błąd.

Uwaga   Aby mieć możliwość poprawnego odczytu danych z plików do zmiennych za pomocą instrukcji Input #, należy do zapisu danych do plików wykorzystywać instrukcję Write #, a nie instrukcję Print #. Wykorzystanie instrukcji Write # wymusza poprawne oddzielenie od siebie pól danych.


Input - funkcja

Zwraca wartość typu String zawierającą znaki z pliku otwartego w trybie Input lub Binary.

Składnia

Input(liczba, [#]numer_pliku)

Składnia funkcji Input zawiera następujące elementy:

Element	Opis
liczba	Element obowiązkowy. Dowolne poprawne wyrażenie numeryczne określające liczbę zwracanych znaków.
numer_pliku	Element obowiązkowy. Dowolny poprawny numer pliku.
Użycie

Dane odczytane za pomocą funkcji Input są zwykle zapisywane do pliku za pomocą instrukcji Print # lub Put. Funkcji Input należy używać jedynie w odniesieniu do plików otwartych w trybie Input lub Binary.

W przeciwieństwie do instrukcji Input #, funkcja Input zwraca wszystkie odczytane znaki, łącznie z przecinkami, znakami powrotu karetki, znakami końca wiersza, cudzysłowami i spacjami wiodącymi.

W przypadku plików otwartych dla dostępu typu Binary, próba odczytu pliku za pomocą funkcji Input, zanim funkcja EOF zwróci wartość True, spowoduje wystąpienie błędu. W przypadku odczytu plików binarnych należy zamiast funkcji EOF korzystać z funkcji LOF i Loc lub korzystać z funkcji EOF wtedy, gdy używamy funkcji Get.

Uwaga   Do odczytu danych bajtowych zawartych w plikach tekstowych należy używać funkcji InputB. W przypadku funkcji InputB, element liczba zamiast liczby zwracanych znaków określa liczbę zwracanych bajtów.


Line Input # - instrukcja

Odczytuje pojedynczy wiersz z otwartego pliku sekwencyjnego i przypisuje go zmiennej typu String.

Składnia

Line Input #numer_pliku, nazwa_zmiennej

Składnia instrukcji Line Input # składa się z następujących elementów:

Element	Opis
numer_pliku	Element obowiązkowy. Dowolny poprawny numer pliku.
nazwa_zmiennej	Element obowiązkowy. Poprawna nazwa zmiennej typu Variant lub String.
Użycie

Dane odczytane za pomocą instrukcji Line Input # są zwykle zapisywane do plików za pomocą instrukcji Print #.

Instrukcja Line Input # odczytuje z pliku po jednym znaku do momentu napotkania znaku powrotu karetki (Chr(13)) lub sekwencji: znak powrotu karetki – znak nowego wiersza (Chr(13) + Chr(10)). Sekwencje znak powrotu karetki – znak nowego wiersza są pomijane i nie są dołączane do wynikowego ciągu znaków.


Loc - funkcja

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

Składnia

Loc(numer_pliku)

Obowiązkowy argument numer_pliku jest poprawnym numerem pliku będącym wartością typu Integer.

Użycie

Poniższa tabela opisuje zwracane wartości dla każdego trybu dostępu do pliku:

Tryb	Zwracana wartość
Random	Numer ostatniego rekordu zapisanego lub odczytanego z pliku.
Sequential	Bieżąca pozycja bajtowa w pliku podzielona przez 128. Należy jednak pamiętać, że informacja zwracana przez funkcję Loc dla plików sekwencyjnych nie jest nigdzie wykorzystywana ani potrzebna.
Binary	Pozycja ostatnio odczytanego lub zapisanego bajtu.


Lock, Unlock - instrukcje

Steruje dostępem innych procesów do całości lub części pliku otwartego za pomocą instrukcji Open.

Składnia

Lock [#]numer_pliku [, zakres_rekordów]
. . .

Unlock [#]numer_pliku [, zakres_rekordów]

Składnia instrukcji Lock i Unlock zawiera następujące elementy:

Element	Opis
numer_pliku	Element obowiązkowy. Dowolny poprawny numer pliku.
zakres_rekordów	Element nieobowiązkowy. Zakres rekordów przeznaczonych do zablokowania lub odblokowania.
Ustawienia

Ustawienia argumentu zakres_rekordów obejmują:

numer_rekordu | [początek] To koniec

Element	Opis
numer_rekordu	Numer rekordu (dla plików otwartych w trybie Random) lub numer bajtu (dla plików otwartych w trybie Binary), od którego rozpoczyna się blokowanie lub odblokowywanie.
początek	Numer pierwszego rekordu albo bajtu blokowanego lub odblokowywanego.
koniec	Numer ostatniego rekordu albo bajtu blokowanego lub odblokowywanego.
Użycie

Instrukcje Lock i Unlock wykorzystywane są w środowiskach, w których kilka procesów może jednocześnie żądać dostępu do tego samego pliku.

Instrukcje Lock i Unlock używane są zawsze w parach. Argumenty instrukcji Lock i Unlock muszą sobie dokładnie odpowiadać.

Na pozycji 1 znajduje się pierwszy rekord lub bajt w pliku, na pozycji 2 znajduje się drugi rekord lub bajt, i tak dalej. Jeżeli określony zostanie tylko jeden rekord, tylko on będzie blokowany lub odblokowywany. Jeżeli określony zostanie zakres rekordów i pominięty zostanie rekord początkowy (początek), blokowane lub odblokowywane będą wszystkie rekordy począwszy od pierwszego rekordu do końca określonego zakresu (koniec). Użycie instrukcji Lock bez podania elementu numer_rekordu blokuje dany plik; użycie instrukcji Unlock bez podania elementu numer_rekordu odblokowuje dany plik.

Jeżeli plik został otwarty do przeprowadzenia sekwencyjnych operacji wejścia lub wyjścia, instrukcje Lock i Unlock mają wpływ na cały plik, niezależnie od wartości elementów początek i koniec.

Ostrzeżenie   Przed zamknięciem pliku lub zakończeniem programu należy za pomocą instrukcji Unlock usunąć wszystkie blokady. Niedopełnienie usunięcia zbędnych blokad może przynieść nieprzewidziane wyniki.


LOF - funkcja

Zwraca wartość typu Long określającą w bajtach rozmiar pliku otwartego za pomocą instrukcji Open.

Składnia

LOF(numer_pliku)

Obowiązkowy argument numer_pliku jest wartością typu Integer oznaczającą poprawny numer pliku.

Uwaga   Aby uzyskać długość pliku, który nie jest otwarty, należy wykorzystać funkcję FileLen.


Open - instrukcja

Umożliwia wykonywanie operacji wejścia/wyjścia na pliku.

Składnie

Open nazwa_ścieżki For tryb [Access dostęp] [blokada] As [#]numer_pliku [Len=długość_rekordu]

Składnia instrukcji Open zawiera następujące elementy:

Element	Opis
nazwa_ścieżki	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. Jeżeli ten element nie jest określony, plik jest otwierany w trybie Random.
dostęp	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. Poprawny numer pliku z zakresu 1 do 511 włącznie. Aby uzyskać następny wolny numer pliku, należy wykorzystać funkcję FreeFile.
długość_rekordu	Element nieobowiązkowy. Liczba mniejsza lub równa 32 767 (bajtów). Dla plików otwartych dla dostępu swobodnego oznacza długość rekordu. Dla plików sekwencyjnych oznacza liczbę buforowanych znaków.
Użycie

Przed wykonaniem jakiejkolwiek operacji na pliku należy plik otworzyć. Instrukcja Open przydziela plikowi bufor dla operacji wejścia/wyjścia i określa tryb dostępu do bufora.

Jeżeli plik określony przez element nazwa_ścieżki nie istnieje, zostanie on utworzony, jeśli podany tryb to Append, Binary, Output lub Random.

Jeżeli plik jest już otwarty przez inny proces, a podany tryb dostępu jest niedozwolony, operacja Open kończy się niepowodzeniem i występuje błąd.

Klauzula Len jest pomijana w przypadku, gdy tryb ma wartość Binary.

Ważne   W trybach Binary, Input i Random możliwe jest otwarcie pliku z innym numerem pliku, bez konieczności jego wcześniejszego zamknięcia. W trybach Append i Output należy przed otwarciem pliku z innym numerem plik zamknąć.


Print # - instrukcja

Zapisuje do pliku sekwencyjnego dane w postaci sformatowanej do wydruku.

Składnia

Print #numer_pliku, [lista_wyjścia]

Składnia instrukcji Print # zawiera następujące elementy:

Element	Opis
numer_pliku	Element obowiązkowy. Dowolny poprawny numer pliku.
lista_wyjścia	Element nieobowiązkowy. Wyrażenie lub lista wyrażeń, które mają być wydrukowane.
Ustawienia

Ustawienia argumentu lista_wyjścia obejmują:

[{Spc(n) | Tab[(n)]}] [wyrażenie] [pozycja_znaku]

Opcja	Opis
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. Opcja Tab bez argumentu określającego położenie punktu wstawiania wskazuje na początek następnej strefy drukowania.
wyrażenie	Wyrażenia numeryczne lub wyrażenia znakowe, które mają być wydrukowane.
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. Aby umieścić punkt wstawiania w kolumnie o określonym numerze bezwzględnym, należy użyć opcji Tab(n). Aby umieścić punkt wstawiania na początku następnej strefy wydruku, należy użyć opcji Tab bez argumentu. Jeżeli opcja pozycja_znaku jest pominięta, następny znak drukowany jest w następnym wierszu.
Użycie

Dane zapisane za pomocą instruwyrażenie numerycznecji Print # są zwykle odczytywane z dysku za pomocą instrukcji Line Input # lub Input.

Jeżeli pominięty zostanie element lista_wyjścia, a pozostawiony zostanie separator listy po elemencie numer_pliku, do pliku drukowany jest pusty wiersz. Wyrażenia na liście mogą być oddzielane od siebie albo spacją, albo średnikiem. Użycie spacji jest równoznaczne z użyciem średnika.

W przypadku danych typu Boolean drukowane są wartości True lub False. Słowa kluczowe True i False nie są tłumaczone, niezależnie od ustawień regionalnych.

Dane typu Date są zapisywane do pliku z wykorzystaniem standardowego krótkiego formatu daty stosowanego rozpoznanego w systemie. Jeżeli jakiś element daty lub godziny zostanie pominięty lub wynosi zero, zapisywana zostaje tylko ta część, która jest podana.

Do pliku nic nie jest zapisane, jeśli element na liście_wyjścia ma wartość Empty. Jednak jeżeli dane listy_wyjścia mają wartość Null, do pliku zapisywane są wartości Null.

W przypadku danych typu Error, wyjście przyjmuje postać ciągu Error <kod_błędu>. Słowo kluczowe Error nie jest tłumaczone, niezależnie od ustawień regionalnych.

Wszystkie dane pisane do pliku za pomocą instrukcji Print # są formatowane zgodnie ustawieniami regionalnymi, przy zachowaniu właściwego separatora dziesiętnego.

Ponieważ instrukcja Print # zapisuje obraz danych na dysk, w związku z tym dane należy ograniczyć w ten sposób, aby drukowane były poprawnie. Jeżeli do ustawienia punktu wstawiania na następną strefę wydruku użyta zostanie opcja Tab bez argumentów, to instrukcja Print # zapisuje do pliku również spacje występujące między polami.

Uwaga   Jeżeli w przyszłości trzeba będzie odczytać dane z pliku za pomocą instrukcji Input #, należy do zapisu danych na dysk zamiast instrukcji Print # wykorzystać instrukcję Write #. Użycie instrukcji Write # zapewnia właściwe oddzielenie poszczególnych pól danych poprzez właściwą separację. Umożliwia to późniejszy odczyt danych za pomocą instrukcji Input #. Użycie instrukcji Write # zapewnia również poprawny odczyt danych przy dowolnych ustawieniach regionalnych.


Put - instrukcja

Zapisuje dane ze zmiennej do pliku dyskowego.

Składnia

Put [#]numer_pliku, [numer_rekordu], nazwa_zmiennej

Składnia instrukcji Put obejmuje następujące elementy:

Element	Opis
numer_pliku	Element obowiązkowy. Dowolny poprawny numer pliku.
numer_rekordu	Element nieobowiązkowy. Wartość typu Variant (Long). Jest to numer rekordu (dla plików otwartych w trybie Random) lub numer bajtu (dla plików otwartych w trybie Binary), od którego rozpoczyna się zapis.
nazwa_zmiennej	Element obowiązkowy. Nazwa zmiennej zawierającej dane, które mają być zapisane na dysk.
Użycie

Dane zapisywane za pomocą instrukcji Put są zwykle odczytywane z pliku za pomocą instrukcji Get.

Na pozycji 1 znajduje się pierwszy rekord lub bajt w pliku, na pozycji 2 znajduje się drugi rekord lub bajt, i tak dalej. Jeżeli element numer_rekordu zostanie pominięty, odczytany zostanie rekord wskazywany po ostatniej instrukcji Get lub Put albo przez ostatnio wykonaną funkcję Seek. W ciągu argumentów muszą występować przecinki oddzielające od siebie poszczególne elementy, na przykład:

Put #4,,BuforPliku

Dla plików otwartych w trybie Random zastosowanie mają następujące reguły:

•	Jeżeli długość zapisywanych danych jest mniejsza niż długość określona klauzulą Len w instrukcji Open, instrukcja Put zapisuje kolejne rekordy, poczynając od granic wyznaczonych długością rekordu. Przestrzeń pomiędzy końcem jednego rekordu a początkiem następnego jest wypełniana bieżącą zawartością bufora pliku. Ponieważ ilość danych wypełniających nie może być ściśle określona, dobrym pomysłem jest dopasowanie długości zapisywanych danych tak, aby odpowiadały długości rekordu. Jeżeli długość zapisywanych danych jest większa od długości określonej klauzulą Len w instrukcji Open, wystąpi błąd.

•	Jeżeli zapisywana zmienna jest ciągiem znaków o zmiennej długości, instrukcja Put zapisuje dwubajtowy deskryptor zawierający długość ciągu, a po nim zmienną. Długość rekordu określona w klauzuli Len w instrukcji Open musi być większa o co najmniej 2 bajty od faktycznej długości ciągu.

•	Jeżeli zapisywana zmienna jest typem numerycznym Variant, instrukcja Put zapisuje 2 bajty określające wartość VarType dla typu Variant, po czym zapisywana jest dana. Na przykład, podczas zapisywania zmiennych Variant typu VarType 3, instrukcja Put zapisuje 6 bajtów: 2 bajty określające zmienną Variant jako typ VarType 3 (Long) i 4 bajty zawierające dane typu Long. Długość rekordu określona klauzulą Len w instrukcji Open musi być o co najmniej 2 bajty większa od faktycznej liczby bajtów niezbędnych do zapisania zmiennej.

Uwaga   Instrukcji Put można używać do zapisu na dysk tablicy typu Variant, ale nie można używać instrukcji Put do zapisu na dysk wartości skalarnej typu Variant zawierającej tablicę. Instrukcji Put nie można też wykorzystywać do zapisu na dysk obiektów.

•	Jeżeli zapisywana wartość jest zmienną Variant typu VarType 8 (String), instrukcja Put zapisuje 2 bajty określające wartość VarType, 2 bajty określające długość ciągu, po czym zapisywany jest ciąg. Długość rekordu określona klauzulą Len instrukcji Open musi być o co najmniej 4 bajty większa od faktycznej długości ciągu.

•	Jeżeli zapisywana wartość jest tablicą dynamiczną, instrukcja Put zapisuje deskryptor, którego długość równa jest 2 plus 8 razy liczba wymiarów, czyli 2 + 8 * LiczbaWymiarów. Długość rekordu określona klauzulą Len instrukcji Open musi być większa lub równa sumie wszystkich bajtów niezbędnych do zapisania danych z tablicy i deskryptora tablicy. Na przykład, do zapisu zadeklarowanej poniżej tablicy potrzeba 118 bajtów.

Dim MojaTablica(1 To 5,1 To 10) As Integer

•	Na liczbę 118 bajtów składa się: 18 bajtów na deskryptor (2 + 8 * 2) i 100 bajtów danych (5 * 10 * 2).

•	Jeżeli zapisywana zmienna jest tablicą o stałym rozmiarze, instrukcja Put zapisuje tylko dane. Nie jest zapisywany żaden deskryptor.

•	Jeżeli zapisywana wartość jest zmienną innego typu (nie jest ciągiem znaków o zmiennej długości ani zmienną typu Variant), instrukcja Put zapisuje tylko dane. Długość rekordu określona klauzulą Len instrukcji Open musi być większa lub równa długości zapisywanych danych.

•	Instrukcja Put zapisuje elementy typu zdefiniowanego przez użytkownika tak, jak gdyby każdy z nich był zapisywany indywidualnie, z wyjątkiem tego, że nie ma wypełniania przestrzeni między elementami. Tablica dynamiczna typu zdefiniowanego przez użytkownika zapisana na dysku za pomocą instrukcji Put jest poprzedzona deskryptorem, którego długość równa jest 2 plus 8 razy liczba wymiarów, czyli 2 + 8 * LiczbaWymiarów. Długość rekordu określona klauzulą Len instrukcji Open musi być większa lub równa sumie wszystkich bajtów niezbędnych do zapisu poszczególnych elementów, łącznie z tablicami i ich deskryptorami.

Dla plików otwartych w trybie Binary zastosowanie mają wszystkie zasady jak dla trybu Random, z następującymi wyjątkami:

•	Zastosowanie klauzuli Len w instrukcji Open nie ma znaczenia. Instrukcja Put zapisuje wszystkie zmienne na dysk w sposób ciągły, czyli bez wypełniania przestrzeni między rekordami.

•	W przypadku dowolnej tablicy typu innego niż typ zdefiniowany przez użytkownika instrukcja Put zapisuje tylko dane. Żaden deskryptor nie jest zapisywany.

•	Instrukcja Put zapisuje ciągi znaków zmiennej długości, które nie są elementami typu zdefiniowanego przez użytkownika, bez 2-bajtowego deskryptora długości. Liczba zapisywanych bajtów równa się liczbie znaków w ciągu. Na przykład, poniższe instrukcje zapisują 10 bajtów do pliku numer 1:

ZmCiag$ = String$(10," ")

Put #1,,ZmCiag$


Reset - instrukcja

Zamyka wszystkie pliki otwarte za pomocą instrukcji Open.

Składnia

Reset

Użycie

Instrukcja Reset zamyka wszystkie aktywne pliki otwarte za pomocą instrukcji Open i zapisuje zawartości wszystkich buforów plikowych na dysk.


Seek - funkcja

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

Składnia

Seek(numer_pliku)

Obowiązkowy argument numer_pliku jest wartością typu Integer zawierającą poprawny numer pliku.

Użycie

Funkcja Seek zwraca wartość z zakresu od 1 do 2 147 483 647 (równoważne liczbie 2^31 – 1) włącznie.

Poniższa tabela opisuje zwracane wartości dla każdego trybu dostępu do pliku.

Tryb	Zwracana wartość
Random	Numer następnego rekordu do odczytu lub zapisu.
Binary, Output, Append, Input	Pozycja bajtowa, od której rozpocznie się następna operacja. Na pozycji 1 znajduje się pierwszy bajt w pliku, na pozycji 2 znajduje się drugi bajt, i tak dalej.


Seek - instrukcja

W pliku otwartym instrukcją Open ustawia pozycję następnej operacji odczytu/zapisu.

Składnia

Seek [#]numer_pliku, pozycja

Składnia instrukcji Seek zawiera następujące elementy:

Element	Opis
numer_pliku	Element obowiązkowy. Dowolny poprawny numer pliku.
pozycja	Element obowiązkowy. Liczba z zakresu od 1 do 2 147 483 647, włącznie, wskazująca miejsce, w którym powinna się odbyć następna operacja odczytu/zapisu.
Użycie

Numery rekordów określone w instrukcjach Get i Put mają priorytet nad ustaleniem pozycji w pliku wykonanym za pomocą instrukcji Seek.

Wykonanie operacji zapisu do pliku po wykonaniu operacji Seek poza koniec pliku powoduje powiększenie pliku. Próba wykonania operacji Seek do pozycji ujemnej lub zerowej spowoduje wystąpienie błędu.


Spc - funkcja

Używana wraz z instrukcją Print # i metodą Print do ustalania pozycji wydruku.

Składnia

Spc(n)

Obowiązkowy argument n oznacza liczbę spacji, które należy wstawić przed następnym wyświetlanym lub drukowanym wyrażeniem z listy.

Użycie

Jeżeli wartość n jest mniejsza niż szerokość wiersza wyjściowego, następna drukowana pozycja jest poprzedzona odpowiednią liczbą spacji. Jeżeli wartość n jest większa niż szerokość wiersza wyjściowego, funkcja Spc oblicza następną pozycję druku za pomocą formuły:

bieżąca_pozycja_druku + (n Mod szerokość)

Na przykład, jeśli bieżąca pozycja druku wynosi 24, szerokość wiersza wyjściowego wynosi 80, a wywołanie funkcji ma postać Spc(90), to wydruk rozpocznie się od pozycji 34 (bieżąca pozycja druku + reszta z dzielenia 90 przez 80). Jeżeli różnica między bieżącą pozycją druku a szerokością wiersza wyjściowego jest mniejsza od n (lub od n Mod szerokość), funkcja Spc pomija początek następnego wiersza i wstawia spacje w liczbie n – (szerokość – bieżąca_pozycja_druku).

Uwaga   Należy upewnić się, czy kolumny tabelaryczne są wystarczająco szerokie, aby pomieścić szerokie litery.

Jeżeli metoda Print jest wykorzystywana z czcionką proporcjonalną, szerokość drukowanych funkcją Spc znaków spacji jest zawsze średnią szerokości wszystkich znaków tego samego rozmiaru z tej samej czcionki. Jednak nie istnieje żadne powiązanie między liczbą drukowanych znaków i liczbą kolumn stałej długości, które zajmują drukowane znaki. Na przykład, duża litera "W" zajmuje więcej niż jedną kolumnę, a mała litera "i" zajmuje mniej niż jedną kolumnę.


Tab - funkcja

Używana wraz z instrukcją Print # i metodą Print do ustalania pozycji wydruku.

Składnia

Tab[(n)]

Nieobowiązkowy argument n oznacza numer kolumny, od której rozpocznie się wyświetlenie lub wydrukowanie następnego wyrażenia z listy. Jeżeli argument zostanie pominięty, funkcja Tab przesuwa punkt wstawiania do początku następnej strefy drukowania. Pozwala to na wykorzystanie funkcji Tab zamiast przecinka stosowanego w ustawieniach regionalnych jako separator dziesiętny.

Użycie

Jeżeli bieżąca pozycja druku bieżącego wiersza jest większa niż n, funkcja Tab powoduje przejście do n-tej kolumny następnego wiersza wyjściowego. Jeżeli n jest mniejsze niż 1, funkcja Tab przenosi pozycję druku do 1. kolumny. Jeżeli n jest większe od szerokości wiersza wyjściowego, funkcja Tab oblicza następną pozycję druku za pomocą formuły:

n Mod szerokość

Na przykład, jeżeli szerokość wynosi 80 a wywołanie funkcji ma postać Tab(90), to wydruk rozpocznie się w 10. kolumnie (reszta z dzielenia 90 przez 80). Jeżeli n jest mniejsze od bieżącej pozycji druku, druk rozpocznie się w następnym wierszu od obliczonej pozycji. Jeżeli obliczona pozycja jest większa od bieżącej pozycji druku, drukowanie rozpoczyna się od obliczonej pozycji w tym samym wierszu.

Najbardziej wysunięta na lewo pozycja w wierszu wyjściowym ma zawsze numer 1. Jeżeli do drukowania plików wykorzystywana jest instrukcja Print #, pozycja najbardziej wysunięta na prawo ma numer równy bieżącej szerokości pliku wyjściowego, którą można ustawić za pomocą instrukcji Width #.

Uwaga Należy upewnić się, czy kolumny są wystarczająco szerokie, aby pomieścić szerokie litery.

Jeżeli funkcja Tab wykorzystywana jest z metodą Print, powierzchnia wydruku podzielona jest na jednakowe kolumny stałej długości. Szerokość każdej kolumny jest równa średniej szerokości wszystkich znaków tego samego rozmiaru wybranej czcionki. Jednak nie istnieje żadne powiązanie między liczbą drukowanych znaków i liczbą kolumn, które zajmują drukowane znaki. Na przykład, wielka litera "W" zajmuje więcej niż jedną kolumnę, a mała litera "i" zajmuje mniej niż jedną kolumnę.


Width # - instrukcja

Przypisuje odpowiednią szerokość wiersza wyjściowego plikowi otwartemu instrukcją Open.

Składnia

Width #numer_pliku, szerokość

Składnia instrukcji Width # zawiera następujące elementy:

Element	Opis
numer_pliku	Element obowiązkowy. Dowolny poprawny numer pliku.
szerokość	Element obowiązkowy. Jest to wyrażenie numeryczne z zakresu od 0 do 255 włącznie określające, ile znaków ma się pojawiać w wierszu, zanim rozpoczęty zostanie nowy wiersz. Jeżeli element szerokość ma wartość 0, oznacza to brak ograniczenia na długość wiersza. Domyślną wartością elementu szerokość jest 0.


Write # - instrukcja

Zapisuje dane do pliku sekwencyjnego.

Składnia

Write #numer_pliku, [lista_wyjścia]

Składnia instrukcji Write # zawiera następujące elementy:

Element	Opis
numer_pliku	Element obowiązkowy. Dowolny poprawny numer pliku.
lista_wyjścia	Element nieobowiązkowy. Jest to jedno lub więcej wyrażeń numerycznych lub wyrażeń znakowych oddzielonych od siebie przecinkami. Wartości tych wyrażeń będą zapisane do pliku.
Użycie

Dane zapisywane za pomocą instrukcji Write # są zwykle odczytywane z pliku za pomocą instrukcji Input #.

Jeżeli pominięty zostanie element lista_wyjścia, a pozostawiony zostanie separator listy po elemencie numer_pliku, do pliku drukowany jest pusty wiersz. Wyrażenia na liście mogą być oddzielane od siebie albo spacją, albo średnikiem. Użycie spacji jest równoznaczne z użyciem średnika.

Przy użyciu instrukcji Write # do zapisu danych do pliku zastosowanie mają następujące założenia, które powodują, że dane mogą być zawsze odczytane i poprawnie zinterpretowane przez instrukcję Input #, niezależnie od ustawień regionalnych:

•	Dane numeryczne zapisywane są zawsze z wykorzystaniem kropki jako separatora dziesiętnego.

•	W przypadku danych typu Boolean, drukowane są ciągi #TRUE# lub #FALSE#. Słowa kluczowe True i False nie są tłumaczone, niezależnie od ustawień regionalnych.

•	Dane typu Date są zapisywane zgodnie z uniwersalnym formatem daty. Jeżeli jakiś element daty lub godziny zostanie pominięty lub wynosi zero, zapisywana zostaje tylko ta część, która jest podana.

•	Do pliku nie są zapisywane żadne dane, jeżeli element listy_wyjścia ma wartość Empty. Jednak jeżeli dana na liście_wyjścia ma wartość Null, do pliku zapisywana jest wartość #NULL#.

•	Jeżeli dane listy_wyjścia są równe Null, do pliku zapisywane są wartości #NULL#.

•	W przypadku danych typu Error, wyjście przyjmuje postać ciągu Error <kod_błędu>. Słowo kluczowe Error nie jest tłumaczone, niezależnie od ustawień regionalnych.

W odróżnieniu od instrukcji Print #, instrukcja Write # podczas zapisywania do pliku wstawia przecinki między kolejnymi elementami i cudzysłowy ograniczające ciągi znaków. Nie trzeba wstawiać jawnie separatorów między elementy listy. Instrukcja Write # po zapisaniu ostatniego znaku listy_wyjścia do pliku wstawia znak nowego wiersza, czyli sekwencję znak powrotu karetki–znak nowego wiersza (Chr(13) + Chr(10)).


Funkcja DDB - przykład

W tym przykładzie wykorzystano funkcję DDB do określenia amortyzacji aktywa w danym okresie. Dla określenia amortyzacji wprowadzono następujące dane: początkowy koszt aktywa (KosztPocz), wartość aktywa na końcu okresu użytkowania (WartośćKońcowa), długość okresu użytkowania aktywa (CzasUżytk) oraz okres, dla jakiego wyliczana jest amortyzacja (WartośćAmort), podany w latach (RokAmort).

Dim Fmt, KosztPocz, WartośćKońcowa, MiesCzasUżytk, CzasUżytk, RokAmort, WartośćAmort

Const LMWR = 12	' Liczba miesięcy w roku.

Fmt = "### ##0,00"

KosztPocz = InputBox("Podaj koszt początkowy aktywa.")

WartośćKońcowa = InputBox("Podaj wartość aktywa na końcu okresu użytkowania.")

MiesCzasUżytk = InputBox("Podaj w miesiącach długość okresu użytkowania aktywa.")

Do While MiesCzasUżytk < LMWR	' Zapewnij, że okres użytkowania jest >= 1 rok.

MsgBox "Okres użytkowania aktywa musi być równy lub dłuższy niż jeden rok."

MiesCzasUżytk = InputBox("Podaj w miesiącach długość okresu użytkowania aktywa.")

Loop

CzasUżytk = MiesCzasUżytk / LMWR	' Zamień liczbę miesięcy na liczbę lat.

If CzasUżytk <> Int(MiesCzasUżytk / LMWR) Then

CzasUżytk = Int(CzasUżytk + 1)	'Zaokrąglij w górę całkowitą liczbę lat.

End If

RokAmort = CInt(InputBox("Podaj rok użytkowania, dla którego chcesz obliczyć amortyzację aktywa."))

Do While RokAmort < 1 Or RokAmort > CzasUżytk

MsgBox "Musisz podać wartość od 1 do " & CzasUżytk & "."

RokAmort = InputBox("Podaj rok użytkowania, dla którego chcesz obliczyć amortyzację aktywa.")

Loop

WartośćAmort = DDB(KosztPocz, WartośćKońcowa, CzasUżytk, RokAmort)

MsgBox "Amortyzacja w " & RokAmort & " roku użytkowania wynosi " & _

Format(WartośćAmort, Fmt) & "."


Funkcja FV - przykład

W tym przykładzie wykorzystano funkcję FV do określenia przyszłej wartości oszczędności, na podstawie następujących danych: stopy procentowej za jeden okres (StopaProc / 12), całkowitej liczby wpłat (CałkLiczWpłat), wartości wpłaty w jednym okresie (Wpłata), wartości bieżącej oszczędności (WartBieżOszczędn) oraz liczby określającej, czy wpłata jest dokonywana na początku czy na końcu okresu płatności (TypWpłaty). Zmienna Wpłata ma wartość ujemną, ponieważ reprezentuje wydaną kwotę gotówki.

Dim Fmt, Wpłata, StopaProc, CałkLiczWpłat, TypWpłaty, WartBieżOszczędn, WartośćOszczędn

Const NAKOŃCU = 0, NAPOCZĄTKU = 1	' Kiedy dokonywana jest płatność.

Fmt = "### ### ##0,00"	' Zdefiniuj format wartości pieniężnych.

Wpłata = InputBox("Podaj kwotę miesięcznych wpłat na konto oszczędnościowe.")

StopaProc = InputBox("Jakie jest przewidywane oprocentowanie roczne tego konta? ")

If StopaProc > 1 Then StopaProc = StopaProc / 100	' Zapewnij poprawną wartość stopy procentowej.

CałkLiczWpłat = InputBox("Ile miesięcy masz zamiar oszczędzać?")

TypWpłaty = MsgBox("Czy wpłat będziesz dokonywać pod koniec miesiąca?", vbYesNo)

If TypWpłaty = vbNo Then TypWpłaty = NAPOCZĄTKU Else TypWpłaty = NAKOŃCU

WartBieżOszczędn = InputBox("Ile masz aktualnie na tym koncie?")

WartośćPrzysz = FV(StopaProc / 12, CałkLiczWpłat,    -Wpłata, -WartBieżOszczędn, TypWpłaty)

MsgBox "Tak oszczędzając, zgromadzisz na koncie " & Format(WartośćPrzysz, Fmt) & "."


Funkcja IPmt - przykład

W tym przykładzie wykorzystano funkcję IPmt do określenia, jaką część spłat zadłużenia za daną liczbę okresów płatności stanowią spłaty oprocentowania  tego zadłużenia. Przyjęto założenie, że wartość płatności nie zmienia się w tych okresach. Dla określenia sumy spłat oprocentowania wprowadzono następujące dane: stopę procentową za jeden okres (StopaProc / 12); liczbę okresów płatności (OkresPłatn), za które suma spłat oprocentowania tego zadłużenia jest obliczana; całkowitą liczbę płatności (CałkLiczPłatn); wartość zaciągniętego kredytu (KwotaKredytu); wartość przyszłą kredytu (WartośćPrzysz) oraz liczbę określającą, czy płatność jest dokonywana na początku czy na końcu okresu płatności (TypPłatn).

Dim WartośćPrzysz, Fmt, KwotaKredytu, StopaProc, CałkLiczPłatn, TypPłatn, OkresPłatn, SpłataOdset, CałkSumaOdset, Kom

Const NAKOŃCU = 0, NAPOCZĄTKU = 1	' Kiedy dokonywana jest płatność.

WartośćPrzysz = 0	' Wartość przyszła kredytu jest zazwyczaj równa 0.

Fmt = "### ### ##0,00"	' Zdefiniuj format wartości pieniężnych.

KwotaKredytu = InputBox("Podaj wartość kredytu, który chcesz zaciągnąć.")

StopaProc = InputBox("Jaka jest roczna stopa procentowa dla tego kredytu?")

If StopaProc > 1 Then StopaProc = StopaProc / 100	'Zapewnij poprawną wartość stopy procentowej.

CałkLiczPłatn = InputBox("Ilu spłat miesięcznych zamierzasz dokonać?")

TypPłatn = MsgBox("Czy będziesz wpłacać pod koniec każdego miesiąca?", vbYesNo)

If TypPłatn = vbNo Then TypPłatn = NAPOCZĄTKU Else TypPłatn = NAKOŃCU

For OkresPłatn = 1 To CałkLiczPłatn	' Sumuj kolejne spłaty oprocentowania.

SpłataOdset = IPmt(StopaProc / 12, OkresPłatn, CałkLiczPłatn, -KwotaKredytu, WartośćPrzysz, TypPłatn)

CałkSumaOdset = CałkSumaOdset + SpłataOdset

Next OkresPłatn

Kom = "W podanym okresie wpłacisz " & Format(CałkSumaOdset, Fmt)

Kom = Kom & " na pokrycie spłat odsetek od tego kredytu."

MsgBox Kom	' Wyświetl wynik.


Funkcja IRR - przykład

W tym przykładzie wykorzystano funkcję IRR do określenia wewnętrznej stopy zysku dla serii 5 przepływów gotówki, których wielkości zawarte są w tablicy Wartości(). Pierwszy element tej tablicy ma wartość ujemną i określa koszt rozpoczęcia działalności. Pozostałe 4 wartości określają przepływy gotówki w 4 kolejnych latach. Zmienna PrzewStopaZysku określa przewidywaną wartość stopy zysku.

Dim PrzewStopaZysku, Fmt, WewStopaZysku, Kom

Static Wartości(5) As Double	' Zdefiniuj tablicę.

PrzewStopaZysku = .1	' Wartość minimalna przewidywanej stopy zysku.

Fmt = "#0.00"	' Zdefiniuj format wartości procentowych.

Wartości(0) = -70000	' Koszt rozpoczęcia działalności.

'Dodatnie wartości przepływów gotówki odzwierciedlające przychody w czterech kolejnych latach.

Wartości(1) = 22000 : Wartości(2) = 25000

Wartości(3) = 28000 : Wartości(4) = 31000

WewStopaZysku = IRR(Wartości(), PrzewStopaZysku) * 100	' Oblicz wewnętrzną stopę zysku.

Kom = "Wewnętrzna stopa zysku dla czterech podanych przepływów gotówki wynosi "

Kom = Kom & Format(WewStopaZysku, Fmt) & " procent."

MsgBox Kom	' Wyświetl wewnętrzną stopę zysku.


Funkcja MIRR - przykład

W tym przykładzie wykorzystano funkcję MIRR do określenia zmodyfikowanej wewnętrznej stopy zysku dla serii przepływów gotówki, których wielkości zawarte są w tablicy Wartości(). Zmienna OprocKredytu określa oprocentowanie kredytu. Zmienna OprocReinwest określa oprocentowanie ponownej inwestycji.

Dim OprocKredytu, OprocReinwest, Fmt, ModWewStopaZysku, Kom

Static Wartości(5) As Double	' Zdefiniuj tablicę.

OprocKredytu = .1	' Oprocentowanie kredytu.

OprocReinwest = .12	' Oprocentowanie ponownej inwestycji.

Fmt = "#0.00"	' Zdefiniuj format wartości pieniężnych.

Wartości(0) = -70000	' Koszt rozpoczęcia działalności.

' Dodatnie wartości przepływów gotówki odzwierciedlające przychody w czterech kolejnych latach.

Wartości(1) = 22000 : Wartości(2) = 25000

Wartości(3) = 28000 : Wartości(4) = 31000

ModWewStopaZysku = MIRR(Wartości(), OprocKredytu, OprocReinwest)	' Oblicz zmodyfikowaną wewnętrzną stopę zysku.

Kom = " Zmodyfikowana wewnętrzna stopa zysku dla czterech podanych przepływów gotówki wynosi "

Kom = Kom & Format(Abs(ModWewStopaZysku) * 100, Fmt) & "%."

MsgBox Kom	' Wyświetl zmodyfikowaną wewnętrzną stopę

' zysku.


Funkcja NPer - przykład

W tym przykładzie wykorzystano funkcję NPer do określenia liczby okresów potrzebnych do spłacenia kredytu. Zmienna KwotaKredytu określa wartość zaciągniętego kredytu. Dane są: stopa procentowa za jeden okres (StopaProc / 12), wartość płatności za jeden okres (Płatność), wartość przyszła kredytu (WartośćPrzysz) oraz liczba określająca, czy płatność jest dokonywana na początku czy na końcu okresu płatności (TypPłatn).

Dim WartośćPrzysz, KwotaKredytu, StopaProc, Płatność, TypPłatn, CałkLiczPłatn

Const NAKOŃCU = 0, NAPOCZĄTKU = 1	' Kiedy dokonywana jest płatność.

WartośćPrzysz = 0	' Wartość przyszła kredytu jest zazwyczaj równa 0.

KwotaKredytu = InputBox("Podaj wartość kredytu, który chcesz zaciągnąć.")

StopaProc = InputBox("Jaka jest roczna stopa procentowa dla tego kredytu?")

If StopaProc > 1 Then StopaProc = StopaProc / 100	' Zapewnij poprawną wartość stopy procentowej.

Płatność = InputBox("Podaj wartość miesięcznej spłaty kredytu.")

TypPłatn = MsgBox("Czy będziesz wpłacać na końcu każdego miesiąca?", vbYesNo)

If TypPłatn = vbNo Then TypPłatn = NAPOCZĄTKU Else TypPłatn = NAKOŃCU

CałkLiczPłatn = NPer(StopaProc / 12, -Płatność, KwotaKredytu, WartośćPrzysz, TypPłatn)

If Int(CałkLiczPłatn) <> CałkLiczPłatn Then CałkLiczPłatn = Int(CałkLiczPłatn) + 1

MsgBox "Liczba miesięcy, przez które będziesz spłacać zaciągnięty kredyt wynosi " & CałkLiczPłatn & "."


Funkcja NPV - przykład

W tym przykładzie wykorzystano funkcję NPV do określenia wartości bieżącej netto dla serii przepływów gotówki, których wielkości zawarte są w tablicy Wartości(). Zmienna StałaWewStopaZysku określa stałą wewnętrzną stopę zysku.

Dim Fmt, PrzewStopaZysku, StałaWewStopaZysku, WartośćBieżNetto, Kom

Static Wartości(5) As Double	' Zdefiniuj tablicę.

Fmt = "### ##0,00"	' Zdefiniuj format wartości pieniężnych.

PrzewStopaZysku = .1	' Wartość minimalna przewidywanej stopy zysku.

StałaWewStopaZysku = .0625	' Ustal stałą wewnętrzną stopę zysku.

Wartości(0) = -70000	' Koszt rozpoczęcia działalności.

' Dodatnie wartości przepływów gotówki odzwierciedlające przychody w czterech kolejnych latach.

Wartości(1) = 22000 : Wartości(2) = 25000

Wartości(3) = 28000 : Wartości(4) = 31000

WartośćBieżNetto = NPV(StałaWewStopaZysku, Wartości())	' Oblicz wartość bieżącą netto.

Kom = "Wartość bieżąca netto dla podanych przepływów gotówki wynosi "

Kom = Kom & Format(WartośćBieżNetto, Fmt) & "."

MsgBox Kom	' Wyświetl wartość bieżącą netto.


Funkcja Pmt - przykład

W tym przykładzie wykorzystano funkcję Pmt do określenia sumy miesięcznej płatności z tytułu spłaty kredytu za jeden okres, na podstawie następujących danych: stopy procentowej za jeden okres (StopaProc / 12), całkowitej liczby płatności (CałkLiczPłatn), wartości zaciągniętego kredytu (KwotaKredytu), wartości przyszłej kredytu (WartośćPrzysz) oraz liczby określającej, czy płatność jest dokonywana na początku czy na końcu okresu płatności (TypPłatn).

Dim Fmt, WartośćPrzysz, KwotaKredytu, StopaProc, CałkLiczPłatn, TypPłatn, Płatność

Const NAKOŃCU = 0, NAPOCZĄTKU = 1	' Kiedy dokonywana jest płatność.

Fmt = "### ### ##0,00"	' Zdefiniuj format wartości pieniężnych.

WartośćPrzysz = 0	' Wartość przyszła kredytu jest zazwyczaj równa 0.

KwotaKredytu = InputBox("Podaj wartość kredytu, który chcesz zaciągnąć.")

StopaProc = InputBox("Jaka jest roczna stopa procentowa dla tego kredytu?")

If StopaProc > 1 Then StopaProc = StopaProc / 100	' Zapewnij poprawną wartość stopy procentowej.

CałkLiczPłatn = InputBox("Ilu spłat miesięcznych zamierzasz dokonać?")

TypPłatn = MsgBox("Czy będziesz wpłacać pod koniec każdego miesiąca?", vbYesNo)

If TypPłatn = vbNo Then TypPłatn = NAPOCZĄTKU Else TypPłatn = NAKOŃCU

Płatność = Pmt(StopaProc / 12, CałkLiczPłatn, -KwotaKredytu, WartośćPrzysz, TypPłatn)

MsgBox "Będziesz wpłacać " & Format(Płatność, Fmt) & " miesięcznie."


Funkcja PPmt - przykład

W tym przykładzie wykorzystano funkcję PPmt do określenia, jaką część spłat zadłużenia za daną liczbę okresów płatności stanowią raty kapitałowe od tego zadłużenia. Przyjęto założenie, że wartość płatności nie zmienia się w tych okresach. Dla określenia sumy rat kapitałowych wprowadzono następujące dane: stopę procentową za jeden okres (StopaProc / 12); liczbę okresów płatności (OkresPłatn), za które obliczana jest suma rat kapitałowych od zadłużenia; całkowitą liczbę płatności (CałkLiczPłatn); wartość zaciągniętego kredytu (KwotaKredytu); wartość przyszłą kredytu (WartośćPrzysz) oraz liczbę określającą, czy płatność jest dokonywana na początku czy na końcu okresu płatności (TypPłatn).

Dim NL, TB, Fmt, WartośćPrzysz, KwotaKredytu, StopaProc, CałkLiczPłatn, TypPłatn, Płatność, Kom, MakeChart, OkresPłatn, P, I

Const NAKOŃCU = 0, NAPOCZĄTKU = 1	' Kiedy dokonywana jest płatność.

NL = Chr(13) & Chr(10)	' Zdefiniuj znak nowego wiersza.

TB = Chr(9)	' Zdefiniuj znak tabulacji.

Fmt = "### ### ##0,00"	' Zdefiniuj format wartości pieniężnych.

WartośćPrzysz = 0	' Wartość przyszła kredytu jest zazwyczaj równa 0.

KwotaKredytu = InputBox("Podaj wartość kredytu, który chcesz zaciągnąć.")

StopaProc = InputBox("Jaka jest roczna stopa procentowa dla tego kredytu?")

If StopaProc > 1 Then StopaProc = StopaProc / 100	'Zapewnij poprawną wartość stopy procentowej.

CałkLiczPłatn = InputBox("Ilu spłat miesięcznych musisz dokonać?")

TypPłatn = MsgBox("Czy będziesz wpłacać pod koniec każdego miesiąca?", vbYesNo)

If TypPłatn = vbNo Then TypPłatn = NAPOCZĄTKU Else TypPłatn = NAKOŃCU

Płatność = Abs(-Pmt(StopaProc / 12, CałkLiczPłatn, KwotaKredytu, WartośćPrzysz, TypPłatn))

Kom = "Będziesz wpłacać " & Format(Płatność, Fmt) & " miesięcznie. "

Kom = Kom & "Czy chcesz zobaczyć zestawienie rat kapitałowych i oprocentowania za każdy "

Kom = Kom & "z tych okresów?"

MakeChart = MsgBox(Kom, vbYesNo)	' Sprawdź, czy konieczne jest zestawienie.

If MakeChart <> vbNo Then

If CałkLiczPłatn > 12 Then MsgBox "Zostaną przedstawione tylko wartości za pierwszy rok.”

Kom = "Miesiąc  Płatność  Kapitał  Oprocentowanie" & NL

For OkresPłatn = 1 To CałkLiczPłatn

If OkresPłatn > 12 Then Exit For	' Pokaż tylko 12 pierwszych miesięcy.

P = PPmt(StopaProc / 12, OkresPłatn, CałkLiczPłatn, -KwotaKredytu, WartośćPrzysz, TypPłatn)

P = (Int((P + .005) * 100) / 100)	' Zaokrąglij wartość raty kapitałowej.

I = Płatność - P

I = (Int((I + .005) * 100) / 100)	' Zaokrąglij wartość spłaty odsetek.

Kom = Kom & OkresPłatn & TB & Format(Płatność, Fmt)

Kom = Kom & TB & Format(P, Fmt) & TB & Format(I, Fmt) & NL

Next OkresPłatn

MsgBox Kom	' Wyświetl tabelę amortyzacji.

End If


Funkcja PV - przykład

W tym przykładzie wykorzystano funkcję PV do obliczenia bieżącej wartości oszczędności, które przez 20 lat mają przynieść 200 000 zł, przy założeniu, że rocznie wypłacana będzie kwota 10 000 zł. Dane są: przewidywana stopa procentowa oszczędności (StopaProc), całkowita liczba okresów wypłat (CałkLiczWypłat), wypłata za każdy okres (WyłataRoczna), wartość przyszła oszczędności (WartośćPrzysz) oraz liczba określająca, czy wypłata będzie dokonywana na początku czy na końcu każdego okresu (TypWypłaty). Zmienna WypłataRoczna ma wartość ujemną, ponieważ reprezentuje kwotę wypłaconą z oszczędności.

Dim Fmt, StopaProc, CałkLiczWypłat, WypłataRoczna, WartośćPrzysz, TypWypłaty, WartośćBieżOszczędn

Const NAKOŃCU = 0, NAPOCZĄTKU = 1	' Kiedy dokonywana jest wypłata.

Fmt = "### ##0,00"	' Zdefiniuj format wartości pieniężnych.

StopaProc = .0825	' Roczna stopa procentowa oszczędności.

CałkLiczWypłat = 20	' Całkowita liczba okresów wypłat.

WypłataRoczna = 10000	' Wypłata roczna.

WartośćPrzysz = 200000	' Wartość przyszła oszczędności.

TypWypłaty = NAPOCZĄTKU	' Wypłata na początku każdego okresu.

WartośćBieżOszczędn = PV(StopaProc, CałkLiczWypłat, -WypłataRoczna, WartośćPrzysz, TypWypłaty)

MsgBox "Wartość bieżąca oszczędności wynosi " & Format(WartośćBieżOszczędn, Fmt) & " zł."


Funkcja Rate - przykład

W tym przykładzie wykorzystano funkcję Rate do obliczenia stopy procentowej kredytu, na podstawie następujących danych: całkowitej liczby płatności (CałkLiczPłatn); wartości jednej płatności kredytu (Płatność); wartości zaciągniętego kredytu (KwotaKredytu); wartości przyszłej kredytu (WartośćPrzysz); liczby określającej, czy płatność jest dokonywana na początku czy na końcu okresu płatności (TypPłatn) oraz oczekiwanej wartości stopy zysku (PrzewStopaZysku).

Dim Fmt, WartośćPrzysz, PrzewStopaZysku, KwotaKredytu, Płatność, CałkLiczPłatn, TypPłatn, StopaProc

Const NAKOŃCU = 0, NAPOCZĄTKU = 1	' Kiedy dokonywana jest płatność.

Fmt = "##0,00"	' Zdefiniuj format wartości procentowych.

WartośćPrzysz = 0	' Wartość przyszła kredytu jest zazwyczaj równa 0.

PrzewStopaZysku = .1	' Przewidywana stopa zysku wynosi 10 procent.

KwotaKredytu = InputBox("Podaj wartość zaciągniętego kredytu.")

Płatność = InputBox("Ile spłacasz miesięcznie?")

CałkLiczPłatn = InputBox("Ilu spłat miesięcznych musisz dokonać?")

TypPłatn = MsgBox("Czy wpłat dokonujesz pod koniec każdego miesiąca?", _

vbYesNo)

If TypPłatn = vbNo Then TypPłatn = NAPOCZĄTKU Else TypPłatn = NAKOŃCU

StopaProc = (Rate(CałkLiczPłatn, -Płatność, KwotaKredytu, WartośćPrzysz, TypPłatn, PrzewStopaZysku) * 12) * 100

MsgBox "Stopa procentowa zaciągniętego kredytu wynosi " & Format(CInt(StopaProc), Fmt) & " procent."


Funkcja SLN - przykład

W tym przykładzie wykorzystano funkcję SLN do określenia amortyzacji liniowej aktywa w jednym okresie na podstawie następujących danych: kosztu początkowego aktywa (KosztPocz), wartości aktywa na końcu okresu użytkowania (WartośćKońcowa) oraz całkowitej długości okresu użytkowania aktywa, wyrażonej w latach (CzasUżytk).

Dim Fmt, KosztPocz, WartośćKońcowa, MiesCzasUżytk, CzasUżytk, AmortLiniowa

Const LMWR = 12	' Liczba miesięcy w roku.

Fmt = "### ##0,00"	' Zdefiniuj format wartości pieniężnych.

KosztPocz = InputBox("Podaj koszt początkowy aktywa.")

WartośćKońcowa = InputBox("Podaj wartość aktywa na końcu okresu użytkowania.")

MiesCzasUżytk = InputBox("Podaj w miesiącach długość okresu użytkowania aktywa.")

Do While MiesCzasUżytk < LMWR	' Zapewnij, że okres jest >= 1 rok.

MsgBox "Okres użytkowania aktywa musi być równy lub dłuższy niż jeden rok."

MiesCzasUżytk = InputBox("Podaj w miesiącach długość okresu użytkowania aktywa.")

Loop

CzasUżytk = MiesCzasUżytk / LMWR	' Zamień liczbę miesięcy na liczbę lat.

If CzasUżytk <> Int(MiesCzasUżytk / LMWR) Then

CzasUżytk = Int(CzasUżytk + 1)	' Zaokrąglij w górę liczbę lat.

End If

AmortLiniowa = SLN(KosztPocz, WartośćKońcowa, CzasUżytk)

MsgBox "Amortyzacja liniowa wynosi " & Format(AmortLiniowa, Fmt) & " na rok."


Funkcja SYD - przykład

W tym przykładzie wykorzystano funkcję SYD do określenia amortyzacji aktywa w danym okresie. Dla określenia amortyzacji wprowadzono następujące dane: koszt początkowy aktywa (KosztPocz), wartość aktywa na końcu okresu użytkowania (WartośćKońcowa) oraz całkowitą długość użytkowania aktywa wyrażoną w latach (CzasUżytk). Zmienna WartośćAmort określa wartość roczną amortyzacji aktywa.

Dim Fmt, KosztPocz, WartośćKońcowa, MiesCzasUżytk, CzasUżytk, RokAmort, WartośćAmort

Const LMWR = 12	' Liczba miesięcy w roku.

Fmt = "### ##0,00"	' Zdefiniuj format wartości pieniężnych.

KosztPocz = InputBox("Podaj koszt początkowy aktywa.")

WartośćKońcowa = InputBox("Podaj wartość aktywa na końcu okresu użytkowania.")

MiesCzasUżytk = InputBox("Podaj w miesiącach długość okresu użytkowania aktywa.")

Do While MiesCzasUżytk < LMWR	' Zapewnij, że okres jest >= 1 rok.

MsgBox "Okres użytkowania aktywa musi być równy lub dłuższy niż jeden rok."

MiesCzasUżytk = InputBox("Podaj w miesiącach długość okresu użytkowania aktywa.")

Loop

CzasUżytk = MiesCzasUżytk / LMWR	' Zamień liczbę miesięcy na liczbę lat.

If CzasUżytk <> Int(MiesCzasUżytk / LMWR) Then

CzasUżytk = Int(CzasUżytk + 1)	' Zaokrąglij w górę liczbę lat.

End If

RokAmort = CInt(InputBox("Podaj rok użytkowania, dla którego chcesz obliczyć amortyzację aktywa."))

Do While RokAmort < 1 Or RokAmort > CzasUżytk

MsgBox "Musisz podać wartość od 1 do " & CzasUżytk & "."

RokAmort = CInt(InputBox("Podaj rok użytkowania, dla którego chcesz obliczyć amortyzację aktywa."))

Loop

WartośćAmort = SYD(KosztPocz, WartośćKońcowa, CzasUżytk, RokAmort)

MsgBox "Amortyzacja w " & RokAmort & " roku użytkowania wynosi " & Format(WartośćAmort, Fmt) & "."


DDB - funkcja

Zwraca wartość typu Double określającą amortyzację aktywa w danym okresie za pomocą metody podwójnej degresji lub innej metody wybranej przez użytkownika.

Składnia

DDB(cost, salvage, life, period[, factor])

Funkcja DDB ma następujące nazwane argumenty:

Argument	Opis
cost	Argument obowiązkowy. Wartość typu Double określająca koszt początkowy aktywa.
salvage	Argument obowiązkowy. Wartość typu Double określająca wartość aktywa na koniec okresu użytkowania.
life	Argument obowiązkowy. Wartość typu Double określająca długość okresu użytkowania danego aktywa.
period	Argument obowiązkowy. Wartość typu Double określająca okres, dla jakiego jest wyliczana amortyzacja aktywa.
factor	Argument nieobowiązkowy. Wartość typu Variant określająca stopę obniżki sumy bilansowej. Jeżeli ten argument jest pominięty, zakłada się 2 (metoda podwójnej degresji).
Użycie

Za pomocą metody podwójnej degresji oblicza się amortyzację w przyspieszonym tempie. Odpisy z tytułu amortyzacji są najwyższe w pierwszym okresie, a w następnych maleją.

Argumenty life i period należy wyrazić w tych samych jednostkach. Na przykład, jeżeli life jest wyrażony w miesiącach, period także należy podać w miesiącach. Wszystkie argumenty należy wyrazić w liczbach dodatnich.

W funkcji DDB do wyliczania amortyzacji w danym okresie jest wykorzystywany następujący wzór:

Amortyzacja / period = ((cost – salvage) * factor) / life


FV - funkcja

Zwraca wartość typu Double określającą przyszłą wartość zobowiązania lub należności w oparciu o okresowe płatności stałe oraz stałą stopę procentową.

Składnia

FV(rate, nper, pmt[, pv[, type]])

Funkcja FV ma następujące nazwane argumenty:

Argument	Opis
rate	Argument obowiązkowy. Wartość typu Double określająca stopę procentową w danym okresie. Na przykład, jeżeli uzyskuje się kredyt na zakup samochodu oprocentowany na 10 procent w stosunku rocznym (APR Annual Percentage Rate) i dokonuje spłat miesięcznych, oprocentowanie w tym okresie wynosi 0,1/12, czyli 0,0083.
nper	Argument obowiązkowy. Wartość typu Integer określająca całkowitą liczbę okresów płatności w związku z danym zobowiązaniem. Na przykład, jeżeli spłaca się czteroletni kredyt na zakup samochodu w comiesięcznych ratach, kredyt ma w sumie 4 * 12 (czyli 48) okresów płatności.
pmt	Argument obowiązkowy. Wartość typu Double określająca płatności obowiązujące w każdym okresie. Płatności zazwyczaj składają się z rat kapitałowych oraz oprocentowania, które nie zmieniają się przez cały okres trwania zobowiązania.
pv	Argument nieobowiązkowy. Wartość typu Variant określająca wartość bieżącą (lub ryczałt) serii przyszłych płatności. Na przykład, kiedy uzyskuje się kredyt na zakup samochodu, kwota udzielonego kredytu stanowi dla wierzyciela wartość bieżącą miesięcznych spłat, których dokonuje dłużnik. Jeżeli argument jest pominięty, wstawiana jest wartość 0.
type	Argument nieobowiązkowy. Wartość typu Variant określająca, kiedy należy dokonać płatności. Należy użyć 0, jeżeli płatności muszą spłynąć na koniec okresu, lub 1, jeżeli muszą spłynąć na początku okresu płatności. Jeżeli argument jest pominięty, wstawiana jest wartość 0.
Użycie

Przez zobowiązanie lub należność rozumie się serię stałych płatności lub wpływów gotówkowych, których dokonuje się przez dany okres. Może to być kredyt (na przykład hipoteczny) lub inwestycja (na przykład lokata miesięczna).

Argumenty rate i nper należy wyliczać, używając okresów płatności wyrażonych w takich samych jednostkach. Na przykład, jeżeli rate jest wyliczana dla miesięcy, nper należy także podać w miesiącach.

Dla wszystkich argumentów, wypłaty gotówki (na przykład z rachunków oszczędnościowych) reprezentowane są za pomocą liczb ujemnych; wpływy gotówki (na przykład dywidendy) wyrażane są za pomocą liczb dodatnich.


Ipmt - funkcja

Zwraca wartość typu Double określającą płatności z tytułu odsetek w danym okresie zobowiązania lub należności o okresowych, stałych płatnościach i stałym oprocentowaniu.

Składnia

IPmt(rate, period, nper, pv[, fv[, type]])

Funkcja IPmt ma następujące nazwane argumenty:

Argument	Opis
rate	Argument obowiązkowy. Wartość typu Double określająca stopę procentową w danym okresie. Na przykład, jeżeli uzyskuje się kredyt na zakup samochodu oprocentowany na 10 procent w stosunku rocznym (Annual Percentage Rate) i dokonuje spłat miesięcznych, oprocentowanie w tym okresie wynosi 0,1/12 czyli 0,0083.
period	Argument obowiązkowy. Wartość typu Double określająca okres płatności w zakresie od 1 do nper.
nper	Argument obowiązkowy. Wartość typu Double określająca całkowitą liczbę okresów płatności w związku z danym zobowiązaniem. Na przykład, jeżeli spłaca się czteroletni kredyt na zakup samochodu w comiesięcznych ratach, kredyt ma w sumie 4 * 12 (czyli 48) okresów płatności.
pv	Argument obowiązkowy. Wartość typu Double określająca wartość bieżącą (“na dzisiaj”) serii przyszłych płatności. Na przykład, kiedy uzyskuje się kredyt na zakup samochodu, kwota udzielonego kredytu stanowi dla wierzyciela wartość bieżącą miesięcznych spłat, których dokonuje dłużnik.
fv	Argument nieobowiązkowy. Wartość typu Variant określająca wartość przyszłą lub saldo gotówkowe po dokonaniu ostatniej płatności. Na przykład, wartość przyszła kredytu wynosi 0 zł, ponieważ taka jest jego wartość po dokonaniu ostatniej płatności. Jednakże, jeżeli przez 18 lat pragnie się zaoszczędzić 50,000 zł na kształcenie dziecka, wtedy 50,000 zł stanowi wartość przyszłą. Jeżeli argument jest pominięty, wstawiana jest wartość 0.
type	Argument nieobowiązkowy. Wartość typu Variant określająca, kiedy należy dokonać płatności. Należy użyć 0, jeżeli płatności muszą spłynąć na koniec okresu, lub 1, jeżeli muszą spłynąć na początku okresu płatności. Jeżeli argument jest pominięty, wstawiana jest wartość 0.
Użycie

Przez zobowiązanie lub należność rozumie się serię stałych płatności lub wpływów gotówkowych, których dokonuje się przez dany okres. Może to być kredyt (na przykład hipoteczny) lub inwestycja (na przykład lokata miesięczna).

Argumenty rate i nper należy wyliczać, używając okresów płatności wyrażonych w takich samych jednostkach. Na przykład, jeżeli rate jest wyliczana dla miesięcy, nper należy także podać w miesiącach.

Dla wszystkich argumentów, wypłaty gotówki (na przykład wypłaty z rachunków oszczędnościowych) reprezentowane są za pomocą liczb ujemnych; wpływy gotówki (na przykład dywidendy) wyrażane są za pomocą liczb dodatnich.


IRR - funkcja

Zwraca wartość typu Double określającą wewnętrzną stopę zysku dla serii okresowych przepływów gotówki (płatności i przychody).

Składnia

IRR(values()[, guess])

Funkcja IRR ma następujące nazwane argumenty:

Argument	Opis
values()	Argument obowiązkowy. Jest to tablica typu Double określająca wartości przy przepływie gotówki. Tablica musi zawierać co najmniej jedną wartość ujemną (wypłata) oraz jedną wartość dodatnią (wpłata).
guess	Argument nieobowiązkowy. Jest to wartość typu Variant określająca oczekiwaną wartość stopy zysku. Jeżeli argument jest pominięty, wstawiana jest wartość 0,1 (10 procent).
Użycie

Wewnętrzna stopa zysku oznacza stopę zysku, jaką uzyskuje się przy inwestycjach składających się z płatności i przychodów występujących w regularnych odstępach czasu.

W funkcji IRR wykorzystywana jest kolejność wartości w ramach tablicy w celu interpretacji kolejności płatności i przychodów. Należy zwrócić uwagę, by wartości płatności i przychodów wpisywane były w odpowiedniej kolejności. Przepływy gotówki w każdym okresie nie muszą być stałe, w odróżnieniu od zobowiązań i należności o okresowych stałych płatnościach i stałym oprocentowaniu.

Funkcja IRR obliczana jest drogą iteracji. Począwszy od wartości guess, funkcja IRR wykonuje cykliczne obliczenia, aż do momentu uzyskania dokładności 0,00001 procent. Jeżeli funkcja IRR nie uzyska wyniku po 20 próbach, następuje błąd.


MIRR - funkcja

Zwraca wartość typu Double określającą zmodyfikowaną wewnętrzną stopę zysku dla serii okresowych przepływów gotówki (płatności i przychody).

Składnia

MIRR(values(), finance_rate, reinvest_rate)

Funkcja MIRR ma następujące nazwane argumenty:

Argument	Opis
values()	Argument obowiązkowy. Jest to tablica typu Double określająca wartości przy przepływie gotówki. Tablica musi zawierać co najmniej jedną wartość ujemną (płatność) oraz jedną wartość dodatnią (przychód).
finance_rate	Argument obowiązkowy. Wartość typu Double określająca poniesione odsetki stanowiące koszty inwestowania.
reinvest_rate	Argument obowiązkowy. Wartość typu Double określająca odsetki uzyskane jako dochód z ponownej inwestycji gotówki.
Użycie

Zmodyfikowana wewnętrzna stopa zysku jest to wewnętrzna stopa zysku w przypadku, gdy płatności i przychody finansowane są przy różnym oprocentowaniu. W funkcji MIRR uwzględnione są zarówno koszty inwestycji (finance_rate), jak i odsetki uzyskane z ponownej inwestycji gotówki (reinvest_rate).

Argumenty finance_rate i reinvest_rate są wartościami procentowymi wyrażonymi w ułamkach dziesiętnych. Na przykład, 12 procent wyraża się jako 0,12.

Funkcja MIRR wykorzystuje kolejność wartości w tablicy w celu odtworzenia kolejności płatności i wpływów. Należy upewnić się, że wartości płatności i wpływów są wpisywane w odpowiedniej kolejności.


NPer - funkcja

Zwraca wartość typu Double określającą liczbę okresów przy zobowiązaniu lub płatności o okresowych opłatach stałych oraz stałej stopie procentowej.

Składnia

NPer(rate, pmt, pv[, fv[, type]])

Funkcja NPer ma następujące nazwane argumenty:

Argument	Opis
rate	Argument obowiązkowy. Wartość typu Double określająca stopę procentową w danym okresie. Na przykład, jeżeli uzyskuje się kredyt na zakup samochodu oprocentowany na 10 procent w stosunku rocznym (Annual Percentage Rate) i dokonuje spłat miesięcznych, oprocentowanie w tym okresie wynosi 0,1/12, czyli 0,0083.
pmt	Argument obowiązkowy. Wartość typu Double określająca płatności obowiązujące w każdym okresie. Płatności zazwyczaj składają się z rat kapitałowych oraz oprocentowania, które nie zmienia się przez cały okres trwania zobowiązania lub należności.
pv	Argument obowiązkowy. Wartość typu Double określająca wartość bieżącą (“na dzisiaj”) serii przyszłych płatności. Na przykład, kiedy uzyskuje się kredyt na zakup samochodu, kwota udzielonego kredytu stanowi dla wierzyciela wartość bieżącą miesięcznych spłat, których dokonuje dłużnik.
fv	Argument nieobowiązkowy. Wartość typu Variant określająca wartość przyszłą lub saldo gotówkowe po dokonaniu ostatniej płatności. Na przykład, wartość przyszła kredytu wynosi 0 zł, ponieważ taka jest jego wartość po dokonaniu ostatniej płatności. Jednakże, jeżeli przez 18 lat pragnie się zaoszczędzić 50,000 zł na kształcenie dziecka, wtedy 50,000 zł stanowi wartość przyszłą. Jeżeli argument jest pominięty, wstawiana jest wartość 0.
type	Argument nieobowiązkowy. Wartość typu Variant określająca, kiedy należy dokonać płatności. Należy użyć 0, jeżeli płatności muszą spłynąć na koniec okresu, lub 1, jeżeli muszą spłynąć na początku okresu płatności. Jeżeli argument jest pominięty, wstawiana jest wartość 0.
Użycie

Przez zobowiązanie lub należność rozumie się serię stałych płatności gotówkowych, których dokonuje się przez dany okres. Może to być kredyt (na przykład hipoteczny) lub inwestycja (na przykład lokata miesięczna).

Dla wszystkich argumentów, wypłaty gotówki (na przykład wypłaty z rachunków oszczędnościowych) reprezentowane są za pomocą liczb ujemnych; wpływy gotówki (na przykład dywidendy) wyrażane są za pomocą liczb dodatnich.


NPV - funkcja

Zwraca wartość typu Double określającą wartość bieżącą netto inwestycji w oparciu o serię okresowych przepływów gotówki (płatności i przychody) oraz stopę dyskontową.

Składnia

NPV(rate, values())

Funkcja NPV ma następujące nazwane argumenty:

Argument	Opis
rate	Argument obowiązkowy. Wartość typu Double określająca stopę dyskontową w danym okresie, wyrażoną jako ułamek dziesiętny.
values()	Argument obowiązkowy. Jest to tablica typu Double określająca wartości przepływu gotówki. Tablica musi zawierać co najmniej jedną wartość ujemną (płatność) oraz jedną wartość dodatnią (przychód).
Użycie

Wartość bieżąca netto inwestycji to bieżąca wartość przyszłej serii płatności i przychodów.

W funkcji NPV wykorzystywana jest kolejność wartości w ramach tablicy w celu interpretacji kolejności płatności i przychodów. Należy zwrócić uwagę, by wartości płatności i przychodów wpisywane były w odpowiedniej kolejności.

Inwestycja NPV rozpoczyna się o jeden okres wcześniej niż data pierwszej wartości przepływu gotówki i kończy się wraz z ostatnią wartością przepływu gotówki w tablicy.

Wyliczenie wartości bieżącej netto oparte jest na przyszłych przepływach gotówki. Jeżeli pierwszy przepływ odbywa się na początku pierwszego okresu, pierwszą wartość należy dodać do wyniku funkcji NPV i nie należy jej zawierać w values() przepływu gotówki.

Funkcja NPV jest podobna do funkcji PV (wartość bieżąca) z tą różnicą, iż funkcja PV zezwala na to, by przepływy gotówki rozpoczynały się zarówno na początku, jak i na końcu okresu. W odróżnieniu od zmiennych wartości przepływów gotówki w przypadku funkcji NPV, w funkcji PV przepływy gotówki muszą być stałe przez cały okres trwania inwestycji.


Pmt - funkcja

Zwraca wartość typu Double określającą płatności w związku ze zobowiązaniem lub należnością o okresowych, stałych płatnościach i stałym oprocentowaniu.

Składnia

Pmt(rate, nper, pv[, fv[, type]])

Funkcja Pmt ma następujące nazwane argumenty:

Argument	Opis
rate	Argument obowiązkowy. Wartość typu Double określająca stopę procentową w danym okresie. Na przykład, jeżeli uzyskuje się kredyt na zakup samochodu oprocentowany na 10 procent w stosunku rocznym (Annual Percentage Rate) i dokonuje spłat miesięcznych, oprocentowanie w tym okresie wynosi 0,1/12, czyli 0,0083.
nper	Argument obowiązkowy. Wartość typu Integer określająca całkowitą liczbę okresów płatności w związku z danym zobowiązaniem. Na przykład, jeżeli spłaca się czteroletni kredyt na zakup samochodu w comiesięcznych ratach, kredyt ma w sumie 4 * 12 (czyli 48) okresów płatności.
pv	Argument obowiązkowy. Wartość typu Double określająca wartość bieżącą (“na dzisiaj”) serii przyszłych płatności. Na przykład, kiedy uzyskuje się kredyt na zakup samochodu, kwota udzielonego kredytu stanowi dla wierzyciela wartość bieżącą miesięcznych spłat, których dokonuje dłużnik.
fv	Argument nieobowiązkowy. Wartość typu Variant określająca wartość przyszłą lub saldo gotówkowe po dokonaniu ostatniej płatności. Na przykład, wartość przyszła kredytu wynosi 0 zł, ponieważ taka jest jego wartość po dokonaniu ostatniej płatności. Jednakże, jeżeli przez 18 lat pragnie się zaoszczędzić 50,000 zł na kształcenie dziecka, wtedy 50,000 zł stanowi wartość przyszłą. Jeżeli argument jest pominięty, wstawiana jest wartość 0.
type	Argument nieobowiązkowy. Wartość typu Variant określająca, kiedy należy dokonać płatności. Należy użyć 0, jeżeli płatności muszą spłynąć na koniec okresu, lub 1, jeżeli muszą spłynąć na początku okresu płatności. Jeżeli argument jest pominięty, wstawiana jest wartość 0.
Użycie

Przez zobowiązanie lub należność rozumie się serię stałych płatności gotówkowych, których dokonuje się przez dany okres. Może to być kredyt (na przykład hipoteczny) lub inwestycja (na przykład lokata miesięczna).

Argumenty rate i nper należy wyliczać, używając okresów płatności wyrażonych w takich samych jednostkach. Na przykład, jeżeli, rate jest wyliczana dla miesięcy, nper należy także podać w miesiącach.

Dla wszystkich argumentów, wypłaty gotówki (na przykład wypłaty z rachunków oszczędnościowych) reprezentowane są za pomocą liczb ujemnych; wpływy gotówki (na przykład dywidendy) wyrażane są za pomocą liczb dodatnich.


PPmt - funkcja

Zwraca wartość typu Double określającą raty kapitałowe w danym okresie zobowiązania lub należności o okresowych, stałych płatnościach i stałym oprocentowaniu.

Składnia

PPmt(rate, period, nper, pv[, fv[, type]])

Funkcja PPmt ma następujące nazwane argumenty:

Argument	Opis
rate	Argument obowiązkowy. Wartość typu Double określająca stopę procentową w danym okresie. Na przykład, jeżeli uzyskuje się kredyt na zakup samochodu oprocentowany na 10 procent w stosunku rocznym (Annual Percentage Rate) i dokonuje spłat miesięcznych, oprocentowanie w tym okresie wynosi 0,1/12, czyli 0,0083.
period	Argument obowiązkowy. Wartość typu Integer określająca okres płatności w zakresie od 1 do nper.
nper	Argument obowiązkowy. Wartość typu Integer określająca całkowitą liczbę okresów płatności w związku z danym zobowiązaniem. Na przykład, jeżeli spłaca się czteroletni kredyt na zakup samochodu w comiesięcznych ratach, kredyt ma w sumie 4 * 12 (czyli 48) okresów płatności.
pv	Argument obowiązkowy. Wartość typu Double określająca wartość bieżącą (“na dzisiaj”) serii przyszłych płatności. Na przykład, kiedy uzyskuje się kredyt na zakup samochodu, kwota udzielonego kredytu stanowi dla wierzyciela wartość bieżącą miesięcznych spłat, których dokonuje dłużnik.
fv	Argument nieobowiązkowy. Wartość typu Variant określająca wartość przyszłą lub saldo gotówkowe po dokonaniu ostatniej płatności. Na przykład, wartość przyszła kredytu wynosi 0 zł, ponieważ taka jest jego wartość po dokonaniu ostatniej płatności. Jednakże, jeżeli przez 18 lat pragnie się zaoszczędzić 50,000 zł na kształcenie dziecka, wtedy 50,000 zł stanowi wartość przyszłą. Jeżeli argument jest pominięty, wstawiana jest wartość 0.
type	Argument nieobowiązkowy. Wartość typu Variant określająca, kiedy należy dokonać płatności. Należy użyć 0, jeżeli płatności muszą spłynąć na koniec okresu, lub 1, jeżeli muszą spłynąć na początku okresu płatności. Jeżeli argument jest pominięty, wstawiana jest wartość 0.
Użycie

Przez zobowiązanie lub należność rozumie się serię stałych płatności gotówkowych, których dokonuje się przez dany okres. Może to być kredyt (na przykład hipoteczny) lub inwestycja (na przykład lokata miesięczna).

Argumenty rate i nper należy wyliczać, używając okresów płatności wyrażonych w takich samych jednostkach. Na przykład, jeżeli, rate jest wyliczana dla miesięcy, nper należy także podać w miesiącach.

Dla wszystkich argumentów, wypłaty gotówki (na przykład wypłaty z rachunków oszczędnościowych) reprezentowane są za pomocą liczb ujemnych; wpływy gotówki (na przykład dywidendy) wyrażane są za pomocą liczb dodatnich.


PV - funkcja

Zwraca wartość typu Double określającą wartość bieżącą zobowiązania lub należności o okresowych, stałych płatnościach i stałym oprocentowaniu.

Składnia

PV(rate, nper, pmt[, fv[, type]])

Funkcja PV ma następujące nazwane argumenty:

Argument	Opis
rate	Argument obowiązkowy. Wartość typu Double określająca stopę procentową w danym okresie. Na przykład, jeżeli uzyskuje się kredyt na zakup samochodu oprocentowany na 10 procent w stosunku rocznym (Annual Percentage Rate) i dokonuje spłat miesięcznych, oprocentowanie w tym okresie wynosi 0,1/12, czyli 0,0083.
nper	Argument obowiązkowy. Wartość typu Integer określająca całkowitą liczbę okresów płatności w związku z danym zobowiązaniem. Na przykład, jeżeli spłaca się czteroletni kredyt na zakup samochodu w comiesięcznych ratach, kredyt ma w sumie 4 * 12 (czyli 48) okresów płatności.
pmt	Argument obowiązkowy. Wartość typu Double określająca płatności obowiązujące w każdym okresie. Płatności zazwyczaj składają się z rat kapitałowych oraz oprocentowania, które nie zmieniają się przez cały okres trwania zobowiązania.
fv	Argument nieobowiązkowy. Wartość typu Variant określająca wartość przyszłą lub saldo gotówkowe po dokonaniu ostatniej płatności. Na przykład, wartość przyszła kredytu wynosi 0 zł, ponieważ taka jest jego wartość po dokonaniu ostatniej płatności. Jednakże, jeżeli przez 18 lat pragnie się zaoszczędzić 50,000 zł na kształcenie dziecka, wtedy 50,000 zł stanowi wartość przyszłą. Jeżeli argument jest pominięty, wstawiana jest wartość 0.
type	Argument nieobowiązkowy. Wartość typu Variant określająca, kiedy należy dokonać płatności. Należy użyć 0, jeżeli płatności muszą spłynąć na koniec okresu, lub 1, jeżeli muszą spłynąć na początku okresu płatności. Jeżeli argument jest pominięty, wstawiana jest wartość 0.
Użycie

Przez zobowiązanie lub należność rozumie się serię stałych płatności lub wpływów gotówkowych, których dokonuje się przez dany okres. Może to być kredyt (na przykład hipoteczny) lub inwestycja (na przykład lokata miesięczna).

Argumenty rate i nper należy wyliczać, używając okresów płatności wyrażonych w takich samych jednostkach. Na przykład, jeżeli, rate jest wyliczana dla miesięcy, nper należy także podać w miesiącach.

Dla wszystkich argumentów, wypłaty gotówki (na przykład z rachunków oszczędnościowych) reprezentowane są za pomocą liczb ujemnych; wpływy gotówki (na przykład dywidendy) wyrażane są za pomocą liczb dodatnich.


Rate - funkcja

Zwraca wartość typu Double określającą stopę procentową w danym okresie dla należności lub zobowiązania o okresowych, stałych płatnościach i stałym oprocentowaniu.

Składnia

Rate(nper, pmt, pv[, fv[, type[, guess]]])

Funkcja Rate ma następujące nazwane argumenty:

Argument	Opis
nper	Argument obowiązkowy. Wartość typu Double określająca całkowitą liczbę okresów płatności w związku z danym zobowiązaniem. Na przykład, jeżeli spłaca się czteroletni kredyt na zakup samochodu w comiesięcznych ratach, kredyt ma w sumie 4 * 12 (czyli 48) okresów płatności.
pmt	Argument obowiązkowy. Wartość typu Double określająca płatności obowiązujące w każdym okresie. Płatności zazwyczaj składają się z rat kapitałowych oraz oprocentowania, które nie zmieniają się przez cały okres trwania zobowiązania.
pv	Argument obowiązkowy. Wartość typu Double określająca wartość bieżącą (“na dzisiaj”) serii przyszłych płatności. Na przykład, kiedy uzyskuje się kredyt na zakup samochodu, kwota udzielonego kredytu stanowi dla wierzyciela wartość bieżącą miesięcznych spłat, których dokonuje dłużnik.
fv	Argument nieobowiązkowy. Wartość typu Variant określająca wartość przyszłą lub saldo gotówkowe po dokonaniu ostatniej płatności. Na przykład, wartość przyszła kredytu wynosi 0 zł, ponieważ taka jest jego wartość po dokonaniu ostatniej płatności. Jednakże, jeżeli przez 18 lat pragnie się zaoszczędzić 50,000 zł na kształcenie dziecka, wtedy 50,000 zł stanowi wartość przyszłą. Jeżeli argument jest pominięty, wstawiana jest wartość 0.
type	Argument nieobowiązkowy. Wartość typu Variant określająca, kiedy należy dokonać płatności. Należy użyć 0, jeżeli płatności muszą spłynąć na koniec okresu, lub 1, jeżeli muszą spłynąć na początku okresu płatności. Jeżeli argument jest pominięty, wstawiana jest wartość 0.
guess	Argument nieobowiązkowy. Wartość typu Variant określająca oczekiwaną wartość stopy zysku. Jeżeli argument jest pominięty, wstawiana jest wartość 0,1 (10 procent).
Użycie

Przez zobowiązanie lub należność rozumie się serię stałych płatności lub wpływów gotówkowych, których dokonuje się przez dany okres. Może to być kredyt (na przykład hipoteczny) lub inwestycja (na przykład lokata miesięczna).

Dla wszystkich argumentów, wypłaty gotówki (na przykład z rachunków oszczędnościowych) reprezentowane są za pomocą liczb ujemnych; wpływy gotówki (na przykład dywidendy) wyrażane są za pomocą liczb dodatnich.

Funkcja Rate obliczana jest drogą iteracji. Począwszy od wartości guess, funkcja Rate wykonuje cykliczne obliczenia, aż do momentu uzyskania dokładności 0,00001 procent. Jeżeli w funkcji Rate nie zostanie uzyskany wynik po 20 próbach, następuje błąd. Jeżeli guess wynosi 10 procent, a funkcja Rate zwraca błąd, należy podać inną wartość argumentu guess.


SLN - funkcja

Zwraca wartość typu Double określającą amortyzację liniową aktywa w jednym okresie.

Składnia

SLN(cost, salvage, life)

Funkcja SLN ma następujące nazwane argumenty:

Argument	Opis
cost	Argument obowiązkowy. Wartość typu Double określająca koszt początkowy aktywa.
salvage	Argument obowiązkowy. Wartość typu Double określająca wartość aktywa na koniec okresu użytkowania.
life	Argument obowiązkowy. Wartość typu Double określająca długość okresu użytkowania danego aktywa.
Użycie

Okres amortyzacji należy wyrazić w tych samych jednostkach co argument life. Wszystkie argumenty należy wyrazić za pomocą liczb dodatnich.


SYD Funkcja
SYD - funkcja

Zwraca wartość typu Double określającą amortyzację obliczaną metodą sumy cyfr roku dla aktywa w danym okresie.

Składnia

SYD(cost, salvage, life, period)

Funkcja SYD ma następujące nazwane argumenty:

Argument	Opis
cost	Argument obowiązkowy. Wartość typu Double określająca koszt początkowy aktywa.
salvage	Argument obowiązkowy. Wartość typu Double określająca wartość aktywa na koniec okresu użytkowania.
life	Argument obowiązkowy. Wartość typu Double określająca długość okresu użytkowania dla danego aktywa.
period	Argument obowiązkowy. Wartość typu Double określająca okres, dla jakiego obliczana jest amortyzacja aktywa.
Użycie

Argumenty life i period należy wyrazić w tych samych jednostkach. Na przykład, jeżeli life jest wyrażony w miesiącach, period także należy podać w miesiącach. Wszystkie argumenty należy wyrazić w liczbach dodatnich.


Funkcja IsArray - przykład

W tym przykładzie wykorzystano funkcję IsArray do sprawdzenia, czy zmienna jest tablicą.

Dim MojaTablica(1 To 5) As Integer, TwojaTablica, MójWarunek

' Zadeklaruj zmienne tablicowe.

TwojaTablica = Array(1, 2, 3)	' Użyj funkcji Array.

MójWarunek = IsArray(MojaTablica)	' Wynik: True

MójWarunek = IsArray(TwojaTablica)	' Wynik: True


Funkcja IsDate - przykład

W tym przykładzie wykorzystano funkcję IsDate do sprawdzenia, czy wyrażenie może być przekształcone w datę.

Dim MojaData, TwojaData, NieData, MójWarunek

MojaData = "12 luty 1969": TwojaData = #12/2/69#: NieData = "Cześć"

MójWarunek = IsDate(MojaData)	' Wynik: True

MójWarunek = IsDate(TwojaData)	' Wynik: True

MójWarunek = IsDate(NieData)	' Wynik: False


Funkcja IsEmpty - przykład

W tym przykładzie wykorzystano funkcję IsEmpty do sprawdzenia, czy zmienna została zainicjowana.

Dim Zmienna, MójWarunek

MójWarunek = IsEmpty(Zmienna)	' Wynik: True

Zmienna = Null	' Przypisz wartość Null.

MójWarunek = IsEmpty(Zmienna)	' Wynik: False

Zmienna = Empty	' Przypisz wartość Empty.

MójWarunek = IsEmpty(Zmienna)	' Wynik: True


Funkcja IsError - przykład

W tym przykładzie wykorzystano funkcję IsError do sprawdzenia, czy wyrażenie numeryczne reprezentuje wartość błędu. W funkcjach definiowanych przez użytkownika do zwracania wartości typu Variant reprezentujących obiekt Error stosowana może być funkcja CVErr. Załóżmy, że MojaFunkcja jest funkcją zdefiniowaną przez użytkownika, która zwraca wartość błędu, na przykład wartość przypisaną instrukcją MojaFunkcja = CVErr(32767), gdzie 32767 jest numerem zdefiniowanym przez użytkownika.

Dim WartośćZwracana, MójWarunek

WartośćZwracana = MojaFunkcja()

MójWarunek = IsError(WartośćZwracana)	' Wynik: True


Funkcja IsMissing - przykład

W tym przykładzie wykorzystano funkcję IsMissing do sprawdzenia, czy do procedury zdefiniowanej przez użytkownika przekazano argument nieobowiązkowy. Zauważmy, że obecnie argumenty kwalifikowane jako Optional mogą mieć wartości domyślne i typy inne niż Variant.

Dim WartośćZwracana

' Następne instrukcje wywołują funkcję zdefiniowaną przez użytkownika.

WartośćZwracana = DwaRazy()	' Zwraca Null.

WartośćZwracana = DwaRazy(2)	' Zwraca 4.

' Definicja funkcji.

Function DwaRazy(Optional A)

If IsMissing(A) Then

' Jeśli nie ma argumentu, zwróć wartość Null.

DwaRazy = Null

Else

' Jeśli podano argument, zwróć jego podwójną wartość.

DwaRazy = A * 2

End If

End Function


Funkcja IsNull - przykład

W tym przykładzie wykorzystano funkcję IsNull do sprawdzenia, czy zmienna zawiera wartość Null.

Dim Zmienna, MójWarunek

MójWarunek = IsNull(Zmienna)	' Wynik: False

Zmienna = ""

MójWarunek = IsNull(Zmienna)	' Wynik: False

Zmienna = Null

MójWarunek = IsNull(Zmienna)	' Wynik: True


Funkcja IsNumeric - przykład

W tym przykładzie wykorzystano funkcję IsNumeric do sprawdzenia, czy wartość zmiennej może być potraktowana jako liczba.

Dim Zmienna, MójWarunek

Zmienna = "53"	' Przypisz wartość.

MójWarunek = IsNumeric(Zmienna)	' Wynik: True

Zmienna = "459.95"	' Przypisz wartość.

MójWarunek = IsNumeric(Zmienna)	' Wynik: True

Zmienna = "45 Pomoc"	' Przypisz wartość.

MójWarunek = IsNumeric(Zmienna)	' Wynik: False


Funkcja IsObject - przykład

W tym przykładzie wykorzystano funkcję IsObject do sprawdzenia, czy identyfikator reprezentuje zmienną obiektową. Zmienne MójObiekt oraz TwójObiekt są zmiennymi obiektowymi tego samego typu. Nazwy te nie mają żadnego znaczenia poza tym przykładem.

Dim ZmInt As Integer, TwójObiekt, MójWarunek	' Zadeklaruj zmienne.

Dim MójObiekt As Object

Set TwójObiekt = MójObiekt	' Przypisz odwołanie obiektowe.

MójWarunek = IsObject(TwójObiekt)	' Wynik: True

MójWarunek = IsObject(ZmInt)	' Wynik: False


Funkcja TypeName - przykład

W tym przykładzie wykorzystano funkcję TypeName do uzyskania informacji o zmiennych.

' Zadeklaruj zmienne.

Dim ZmNull, TypZm, ZmStr As String, ZmInt As Integer, ZmCur As Currency

Dim ZmArray (1 To 5) As Integer

ZmNull = Null	' Przypisz wartość Null.

TypZm = TypeName(ZmStr)	' Zwraca "String".

TypZm = TypeName(ZmInt)	' Zwraca "Integer".

TypZm = TypeName(ZmCur)	' Zwraca "Currency".

TypZm = TypeName(ZmNull)	' Zwraca "Null".

TypZm = TypeName(ZmArray)	' Zwraca "Integer()".


Funkcja VarType - przykład

W tym przykładzie wykorzystano funkcję VarType do wyznaczenia podtypu zmiennej.

Dim ZmInt, ZmStr, ZmDate, MójWarunek

' Zainicjuj zmienne.

ZmInt = 459: ZmStr = "Pozdrawiam wszystkich": ZmDate = #12/2/69#

MójWarunek = VarType(ZmInt)	' Zwraca 2.

MójWarunek = VarType(ZmDate)	' Zwraca 7.

MójWarunek = VarType(ZmStr)	' Zwraca 8.


IsArray - funkcja

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

Składnia

IsArray(nazwa_zmiennej)

Obowiązkowy argument nazwa_zmiennej jest identyfikatorem określającym zmienną.

Użycie

IsArray zwraca True, jeśli zmienna jest tablicą, w przeciwnym przypadku zwraca False. Funkcja IsArray jest szczególnie użyteczna w przypadku zmiennych wyrażeń wariantowych zawierających tablice.


IsDate - funkcja

Zwraca wartość typu Boolean wskazującą, czy wyrażenie może zostać przekształcone na wartość oznaczającą datę.

Składnia

IsDate(wyrażenie)

Obowiązkowy argument wyrażenie typu Variant zawiera wyrażenie oznaczające datę lub wyrażenie znakowe reprezentujące datę lub godzinę.

Użycie

IsDate zwraca True, jeśli wyrażenie reprezentuje datę lub może zostać przekształcone na poprawną datę; w przeciwnym przypadku zwraca False. W systemie Microsoft Windows poprawne daty zawierają się w zakresie od 1 stycznia 100 A.D. do 31 grudnia 9999 A.D.; zakres ten może być różny dla różnych systemów operacyjnych.


IsEmpty - funkcja

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

Składnia

IsEmpty(wyrażenie)

Obowiązkowy argument wyrażenie typu Variant zawiera wyrażenie wyrażenie numeryczne lub wyrażenie znakowe. Z uwagi na to, że funkcja IsEmpty jest stosowana do sprawdzania zainicjowania pojedynczych zmiennych, element wyrażenie jest zazwyczaj pojedynczą nazwą zmiennej.

Użycie

IsEmpty zwraca True, jeśli zmienna nie została zainicjowana lub jeśli jawnie przypisano jej wartość Empty; w przeciwnym przypadku zwraca False. Wartość False jest zwracana także wówczas, gdy wyrażenie zawiera więcej niż jedną zmienną. Funkcja IsEmpty daje sensowny wynik jedynie dla wyrażenia wariantowego.


IsError - funkcja

Zwraca wartość Boolean wskazującą, czy wyrażenie reprezentuje wartość błędną.

Składnia

IsError(wyrażenie)

Obowiązkowy argument wyrażenie musi być wyrażeniem typu Variant o podtypie VarType vbError.

Użycie

Wartości błędne powstają przez przekształcenie liczb rzeczywistych na wartości błędne przy użyciu funkcji CVErr. Funkcja IsError jest stosowana do sprawdzenia, czy wyrażenie numeryczne reprezentuje błąd. Funkcja IsError zwraca True, jeśli wyrażenie oznacza błąd; w przeciwnym przypadku zwraca False. Funkcja IsError daje sensowny wynik tylko dla wariantów typu VarType vbError.


IsMissing - funkcja

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

Składnia

IsMissing(nazwa_argumentu)

Obowiązkowy element nazwa_argumentu zawierający nazwę nieobowiązkowego elementu procedury typu Variant.

Użycie

Funkcji IsMissing należy używać do sprawdzenia, czy w wywołaniu procedury podano elementy nieobowiązkowe. Funkcja IsMissing zwraca True, jeśli dla podanego elementu nie przekazano żadnej wartości; w przeciwnym przypadku zwraca False. Jeśli dla pewnego elementu funkcja IsMissing zwróciła True, użycie tego brakującego elementu w dalszym kodzie programu może spowodować błąd zdefiniowany przez użytkownika. Funkcja IsMissing użyta dla elementu typu ParamArray zawsze zwraca wartość False. W celu wykrycia brakującego elementu typu ParamArray, należy sprawdzić, czy górne ograniczenie indeksu tablicy nie jest mniejsze niż ograniczenie dolne.


IsNull - funkcja

Zwraca wartość Boolean wskazującą, czy wyrażenie nie zawiera danych (ma wartość Null).

Składnia

IsNull(wyrażenie)

Obowiązkowy argument wyrażenie typu Variant zawiera wyrażenie numeryczne lub wyrażenie znakowe.

Użycie

IsNull zwraca True, jeśli wyrażenie ma wartość Null; w przeciwnym przypadku funkcja IsNull zwraca False. Jeśli wyrażenie zawiera więcej niż jedną zmienną, wartość Null w dowolnej składowej powoduje zwrócenie przez funkcję wartości True.

Wartość Null wskazuje, że zmienna typu Variant nie zawiera poprawnych danych. Wartość Null nie jest tym samym co wartość Empty, która oznacza, iż zmienna nie została jeszcze zainicjowana. Nie jest to również to samo co ciąg znaków o długości zerowej (""), nazywany czasem ciągiem pustym.

Ważne   Do sprawdzenia, czy wyrażenie zawiera wartość Null, należy stosować funkcję IsNull. Wyrażenia, które w pewnych warunkach wydają się mieć wartość True, jak np. If Var = Null albo If Var <> Null, mają zawsze wartość False. Wynika to z tego, iż dowolne wyrażenie zawierające wartość Null ma wartość Null, czyli False.


IsNumeric - funkcja

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

Składnia

IsNumeric(wyrażenie)

Obowiązkowy argument wyrażenie typu Variant zawiera wyrażenie numeryczne lub wyrażenie znakowe.

Użycie

IsNumeric zwraca True, jeśli całe wyrażenie reprezentuje liczbę; w przeciwnym przypadku zwraca False.

IsNumeric zwraca False, jeśli wyrażenie reprezentuje datę.


IsObject - funkcja

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

Składnia

IsObject(identyfikator)

Obowiązkowy argument identyfikator jest nazwą zmiennej.

Użycie

Funkcja IsObject jest stosowana jedynie do określenia, czy zmienna typu Variant ma podtyp VarType vbObject. Może to mieć miejsce jedynie w przypadku, gdy zmienna Variant zawiera (lub zawierała) odesłanie do obiektu lub jeśli zawiera wartość Nothing.

IsObject zwraca True, jeśli identyfikator jest zmienną o zadeklarowanym typie Object lub dowolnym typie oznaczającym klasę albo jeśli identyfikator odsyła do wariantu typu VarType vbObject lub do obiektu zdefiniowanego przez użytkownika; w przeciwnym przypadku zwraca False. Funkcja IsObject zwraca True, nawet gdy zmiennej przypisano wartość Nothing.

Do sprawdzania poprawności odesłań do obiektów należy stosować technikę przechwytywania błędów. Do sprawdzenia, czy odesłanie do obiektu zostało ustawione na wartość Nothing, należy stosować funkcję IsNothing.


TypeName - funkcja

Zwraca wartość typu String zawierającą informacje o zmiennej.

Składnia

TypeName(nazwa_zmiennej)

Obowiązkowy argument nazwa_zmiennej typu Variant zawiera dowolną zmienną z wyjątkiem zmiennej typu zdefiniowanego przez użytkownika.

Użycie

Ciąg znaków zwracany przez funkcję TypeName może mieć jedną z następujących postaci:

Ciąg	Zmienna
typ obiektowy	obiekt o typie typ_obiektowy
Byte	wartość bajtu
Integer	liczba całkowita
Long	liczba całkowita długa
Single	liczba zmiennoprzecinkowa pojedynczej precyzji
Double	liczba zmiennoprzecinkowa podwójnej precyzji
Currency	wartość pieniężna
Decimal	wartość dziesiętna
Date	wartość daty
String	ciąg znaków
Boolean	wartość typu Boolean
Error	wartość błędna
Empty	nie zainicjowana
Null	bez poprawnych danych
Object	obiekt
nieznany	obiekt, którego typ jest nieznany
Nothing	zmienna obiektowa, która nie odsyła do obiektu
Jeśli nazwa_zmiennej oznacza tablicę, zwracany ciąg znaków może być dowolnej z podanych wyżej postaci (lub mieć formę Variant) z dołączonymi pustymi nawiasami. Jeśli na przykład nazwa_zmiennej oznacza tablicę liczb całkowitych, funkcja TypeName zwróci ciąg "Integer()".


VarType - funkcja

Zwraca liczbę typu Integer wskazującą podtyp zmiennej.

Składnia

VarType(nazwa_zmiennej)

Obowiązkowy argument nazwa_zmiennej typu Variant zawiera dowolną zmienną z wyjątkiem zmiennej typu zdefiniowanego przez użytkownika.

Zwracane wartości

Stała	Wartość	Opis
vbEmpty	0	Empty (nie zainicjowana)
vbNull	1	Null (bez poprawnych danych)
vbInteger	2	liczba całkowita
vbLong	3	liczba całkowita długa
vbSingle	4	liczba zmiennoprzecinkowa pojedynczej precyzji
vbDouble	5	liczba zmiennoprzecinkowa podwójnej precyzji
vbCurrency	6	wartość pieniężna
vbDate	7	wartość daty
vbString	8	ciąg znaków
vbObject	9	obiekt
vbError	10	kod błędu
vbBoolean	11	wartość typu Boolean
vbVariant	12	typ Variant (tylko dla tablic wariantów)
vbDataObject	13	obiekt dostępu do danych
vbDecimal	14	wartość dziesiętna
vbByte	17	wartość bajtu
vbArray	8192	tablica
Uwaga   Podane wyżej stałe są zdefiniowane przez system Visual Basic for Applications. Ich nazwy mogą być używane zamiast ich rzeczywistych wartości w dowolnym miejscu kodu programu.

Użycie

Funkcja VarType nigdy nie zwraca samej wartości vbArray. Wartość ta jest zawsze dodawana do pewnej wartości odpowiadającej typowi elementów wchodzących w skład tablicy. Stała vbVariant jest zwracana jedynie w połączeniu z wartością vbArray, i to oznacza, że element funkcji VarType jest tablicą typu Variant. Przykładowo, wartość zwrócona w przypadku tablicy liczb całkowitych wynosi vbInteger + vbArray, czyli 8194. Jeśli obiekt ma właściwość domyślną, funkcja VarType (obiekt) zwróci typ właściwości domyślnej obiektu.


Empty

Słowo kluczowe Empty oznacza nie zainicjowaną zmienną i jest używane jako podtyp typu Variant.


False

Słowo kluczowe False ma wartość równą 0.


Me

Słowo kluczowe Me zachowuje się jak niejawnie zadeklarowana zmienna. Jest ono automatyczne dostępne z każdej procedury modułu klasy. W przypadku gdy klasa może mieć więcej niż jedną instancję, Me pozwala odwoływać się do konkretnych instancji klasy, w których zostanie wykonany fragment kodu programu. Używanie słowa kluczowego Me jest szczególnie wygodne dla przekazywania informacji o aktualnie aktywnej instancji klasy do procedury w innym module. Na przykład, jeśli w module jest następująca procedura:

Sub ZmienKolorForm(NazwaForm As Form)

NazwaForm.Tlo = RGB(Rnd * 256, Rnd * 256, Rnd * 256)

End Sub

Wywołanie procedury i przekazanie bieżącej instancji klasy Form jako argumentu jest możliwe przy użyciu następującej instrukcji:

ZmienKolorForm Me


Nothing

Słowo kluczowe Nothing jest używane w celu odłączenia zmiennej obiektowej od rzeczywistego obiektu. Słowo kluczowe Nothing można przypisać do zmiennej obiektowej, używając instrukcji Set. Na przykład:

Set MojObiekt = Nothing

Klika zmiennych obiektowych może się odwoływać do tego samego obiektu. Jeśli do zmiennej obiektowej przypisana jest wartość Nothing, zmienna ta przestaje wskazywać na jakikolwiek rzeczywisty obiekt. Jeśli kilka zmiennych obiektowych odwołuje się do tego samego obiektu, to pamięć i zasoby systemowe, z których korzysta ten obiekt, są zwalniane tylko wtedy, gdy wszystkim zmiennym zostanie przypisana wartość Nothing. Ustawianie zmiennych może zostać wykonane jawnie, instrukcją Set, lub niejawnie, kiedy ostatnia zmienna wyjdzie poza zakresem.


Null

Słowo kluczowe Null jest używane jako podtyp typu Variant i oznacza, że zmienna nie zawiera poprawnych danych.


True

Słowo kluczowe True ma wartość -1.


Funkcja MacID

Funkcja używana w systemie Macintosh do zamiany stałej 4-znakowej na wartość, która może być używana przez funkcje Dir, Kill, Shell i AppActivate.

Składnia

MacID(stała)

Obowiązakowy element stała składa się z 4 znaków służących do określenia typu zasobu, typu pliku, sygnatury aplikacji lub zdarzenia systemu Apple. Przykładami stałych są TEXT, OBIN, MSWD (Microsoft Word), XCEL (Microsoft Excel) itd.

Użycie

Funkcja MacID jest używana razem z funkcjami Dir i Kill do określenia typu pliku w systemie Macintosh. Ponieważ system Macintosh nie traktuje znaków * i ? jako symboli wieloznacznych, do identyfikacji grup plików można używać czteroznakowych stałych. Na przykład, następująca instrukcja zwraca pliki typu TEXT znajdujące się w bieżącym katalogu:

Dir("Ścieżka", MacID("TEXT"))

Funkcja MacID jest używana razem z funkcjami Shell i AppActivate do określenia aplikacji za pomocą unikatowej sygnatury aplikacji.


Funkcja MacScript

Wykonuje skrypt języka AppleScript i zwraca wartość zwróconą przez skrypt, jeśli taka wartość istnieje.

Składnia

MacScript skrypt

Argument skrypt jest wyrażeniem typu String. Wyrażenie typu String może być serią poleceń języka AppleScript, może też określać nazwę skryptu języka AppleScript lub pliku ze skryptem.

Użycie

Skrypty wielowierszowe tworzy się wpisując znak powrotu karetki (Chr(13)).


Funkcja MacScript -przykład

W poniższym przykładzie wykorzystano funkcję MacScript do otwarcia okna dialogowego Wybierz plik (w systemie Macintosh jest to standardowe okno dialogowe do obsługi plików). Zwracana jest pełna ścieżka do pliku wybranego przez użytkownika. Jeśli jest to właściwe, ścieżka jest poprzedzona typem pliku.

Ścieżka$ = Macscript("ChooseFile")


Date - instrukcja (Apple Power Macintosh)

W systemie Macintosh data musi być datą z zakresu od 1 stycznia 1904 do 5 lutego 2040.


Call - instrukcja (Apple Power Macintosh)

W instrukcji Call, przy wywoływaniu zasobu programowego systemu Macintosh, można używać kwalifikatorów ByVal i ByRef.


Shell - funkcja (Apple Power Macintosh)

Składnia instrukcji Shell zawiera następujące nazwane argumenty:

Argument	Opis
pathname	W systemie Macintosh można zastosować funkcję MacID do określenia sygnatury aplikacji w miejsce jej nazwy. Poniższy przykład używa sygnatury programu Microsoft Word:
	Shell MacID("MSWD")
windowstyle	W systemie Macintosh (wersja System 7.0 lub nowsza) argument windowstyle określa jedynie, czy aplikacja otrzymuje fokus bezpośrednio po uruchomieniu.
Stała vbHide nie ma zastosowania w systemach Apple Macintosh.


Declare - instrukcja (Apple Power Macintosh)

W systemie Power Macintosh składnia instrukcji Declare jest taka sama, jak w Windows. Wyjątkiem jest słowo kluczowe CDecl, które może być stosowane do określenia, że procedura używa kolejności przesyłania argumentów, konwencji nazewnictwa i konwencji wywoływania stosowanych w języku C:

[Public | Private ] Declare Function nazwa [CDecl] Lib "nazwa_bibl" [Alias "alias" ] [([lista_argumentów])] [As typ]

Słowo kluczowe Alias oznacza, że wywoływana procedura znajduje się w zasobie programowym systemu Macintosh. Jest ono użyteczne, gdy nazwa procedury zewnętrznej jest taka sama jak słowa kluczowego.

W celu określenia zasobu programowego należy używać argumentu alias w następujący sposób:

"[typ_zasobu]$[nazwa_zasobu]"

Element typ_zasobu jest dowolną 4-znakową stałą. Jeśli jest pominięty, to przyjmuje się domyślnie typ CODE. Element nazwa_zasobu jest nazwą procedury w zasobie. Jeśli jest pominięty, przyjmuje się domyślnie nazwę podaną jako argument nazwa.

W systemie Power Macintosh instrukcja Declare uwzględnia wywołania macierzystego kodu programu tylko dla fragmentów kodu programu. Wywoływanie zasobu programowego jest obsługiwane tylko w trybie emulacji 68000.

Składnia instrukcji Declare w systemie Power Macintosh jest następująca:

Declare Function MojaFunkcja Lib "hd:system folder:extensions:MojFragmentKodu" Alias "MojaFunkcja" () As Long

Zarówno dla fragmentów kodu, jak i zasobu programowego we frazie Lib można podać pełną lub częściową nazwę ścieżki. Niejednoznaczność frazy Lib jest rozwiązywana następująco:

•	Jeśli plik zawiera zasób 'cfrg', to jest traktowany jako fragment kodu programu.

•	Jeśli plik nie zawiera zasobu 'cfrg', to jest traktowany jako plik zawierający zasoby programowe.

Dzięki temu można tworzyć "poszerzone" fragmenty kodu, czyli pliki zawierające zarówno fragmenty kodu programu, jak i zasoby programowe 68000. Gdy system Visual Basic for Applications jest uruchamiany na komputerze Macintosh typu 68000, stosowany jest zasób programowy. Uruchamianie w systemie Power Macintosh powoduje użycie macierzystego fragmentu kodu programu.

W systemie Power Macintosh, za pomocą deklaracji odwołującej się do systemowego fragmentu kodu, można udostępnić przybornik komputera Macintosh.


ChDir - instrukcja (Apple Power Macintosh)

W systemie Power Macintosh napęd domyślny jest zawsze zmieniany na napęd podany w argumencie ścieżka. Określenie pełnej ścieżki zaczyna się od nazwy woluminu; względne ścieżki rozpoczynają się od dwukropka (:). Instrukcja ChDir rozwija wszystkie aliasy podane w ścieżce:

ChDir "MacDrive:Tmp"	' W systemie Macintosh.

Należy zauważyć, że przy względnych zmianach katalogów w systemach Microsoft Windows i Macintosh są używane inne symbole:

ChDir ".."	' Zmiana katalogu o poziom wyżej (Microsoft Windows).

ChDir "::"	' Zmiana katalogu o poziom wyżej (Macintosh).


Dir - funkcja (Apple Power Macintosh)

W systemie Microsoft Windows funkcja Dir uwzględnia symbole wieloznaczne wieloznakowe (*) i jednoznakowe (?) stosowane w celu określenia wielu plików. W systemie Macintosh te znaki są traktowane jako normalne znaki składowe nazw plików i nie mogą być używane jako symbole wieloznaczne.

Ponieważ system Macintosh nie obsługuje symboli wieloznacznych, do określania grup plików należy stosować typy plików. Funkcja MacID umożliwia określenie typu plików w miejsce ich nazw. Na przykład, poniższa instrukcja zwraca nazwę pierwszego pliku typu TEXT w bieżącym folderze:

Dir("Ścieżka", MacID("TEXT"))

Aby przejrzeć nazwy wszystkich plików w folderze, należy podać ciąg pusty:

Dir("")

Jeśli funkcja MacID zostanie użyta z funkcją Dir w systemie Microsoft Windows, wystąpi błąd.

Każda wartość atrybut większa niż 256 jest uważana za wartość MacID.

Poniższe stałe nie są dostępne w systemie Macintosh:

Stała	Wartość	Opis
vbSystem	4	Plik systemowy
vbVolume	8	Etykieta woluminu
Poniższa stała jest dostępna tylko w systemie Macintosh:

Stała	Wartość	Opis
vbAlias	64	Podana nazwa pliku jest aliasem.


GetAttr - funkcja (Apple Power Macintosh)

Poniższe stałe nie są dostępne w systemie Macintosh:

Stała	Wartość	Opis
vbSystem	4	Plik systemowy
vbArchive	32	Plik został zmieniony od czasu ostatniej archiwizacji.
Poniższa stała jest dostępna tylko w systemie Macintosh:

Stała	Wartość	Opis
vbAlias	64	Podana nazwa pliku jest aliasem.


Kill - instrukcja (Apple Power Macintosh)

W systemie Microsoft Windows instrukcja Kill uwzględnia symbole wieloznaczne wieloznakowe (*) i jednoznakowe (?) stosowane w celu określenia wielu plików. W systemie Macintosh te znaki są traktowane jako normalne znaki składowe nazw plików i nie mogą być używane jako symbole wieloznaczne.

Ponieważ system Macintosh nie obsługuje symboli wieloznacznych, do identyfikacji grup plików przeznaczonych do usunięcia należy stosować typy plików. Zamiast wielokrotnie wykonywać instrukcję dla każdego pliku, można wykorzystać funkcję MacID do określenia typu plików. Na przykład, poniższa instrukcja usuwa z bieżącego folderu wszystkie pliki typu TEXT.

Kill MacID("TEXT")

Jeśli funkcja MacID zostanie użyta razem z instrukcją Kill w systemie Microsoft Windows, wystąpi błąd.


SetAttr - instrukcja (Apple Power Macintosh)

Poniższe stałe nie są dostępne w systemie Macintosh:

Stała	Wartość	Opis
vbSystem	4	Plik systemowy
vbArchive	32	Plik został zmieniony od czasu ostatniej archiwizacji.
Poniższa stała jest dostępna tylko w systemie Macintosh:

Stała	Wartość	Opis
vbAlias	64	Podana nazwa pliku jest aliasem.


Dir, GetAttr i SetAttr - stałe (Apple Power Macintosh)

Poniższe stałe nie są dostępne w systemie Macintosh:

Stała	Wartość	Opis
vbSystem	4	Plik systemowy
vbVolume	8	Etykieta woluminu
vbArchive	32	Plik został zmieniony od czasu ostatniej archiwizacji.
Poniższa stała jest dostępna tylko w systemie Macintosh:

Stała	Wartość	Opis
vbAlias	64	Podana nazwa pliku jest aliasem.


StrConv - stałe (Apple Power Macintosh)

Poniższe stałe nie są dostępne w systemie Macintosh:

Stała	Wartość	Opis
vbUnicode***	64***	Dokonuje konwersji ciągu na Unicode, używając domyślnej strony kodowej w systemie. Ustawienie tego bitu w 16-bitowych systemach Macintosh i Windows powoduje błąd wykonania.
vbFromUnicode***	128***	Dokonuje konwersji ciągu z Unicode na domyślną stronę kodową w systemie. Ustawienie tego bitu w 16-bitowych systemach Macintosh i Windows powoduje błąd wykonania.


ChDrive - instrukcja (Apple Power Macintosh)

W systemie Macintosh instrukcja ChDrive zmienia bieżący folder na główny folder podanego dysku.


CurDir - funkcja (Apple Power Macintosh)

Opcjonalny argument dysk jest wyrażeniem znakowym określającym istniejący dysk. Funkcja CurDir ignoruje podany dysk i zwraca po prostu ścieżkę na bieżącym dysku.


RGB - funkcja (Apple Power Macintosh)

Wartości kolorów RGB zwracane przez tę funkcję nie są zgodne z wartościami stosowanymi przez system operacyjny Macintosh. Mogą być one używane w kontekście aplikacji firmy Microsoft dla komputera Macintosh, ale nie powinny być używane przy przesyłaniu informacji o zmianach kolorów bezpośrednio do systemu operacyjnego komputera Macintosh.


Like - operator (Apple Power Macintosh)

W systemie Macintosh porządek sortowania jest określony przez zestaw znaków.


Option Compare - instrukcja (Apple Power Macintosh)

W systemie Macintosh porządek sortowania jest określony przez zestaw znaków.


Nie zarejestrowana biblioteka obiektów (Apple Power Macintosh)

Należy usunąć folder Preferencje i ponownie uruchomić aplikację.


Funkcja Abs - przykład

W tym przykładzie wykorzystano funkcję Abs do obliczenia wartości bezwzględnej liczby.

Dim MojaLiczba

MojaLiczba = Abs(50.3)	' Wynik: 50.3

MojaLiczba = Abs(-50.3)	' Wynik: 50.3


Funkcja Atn - przykład

W tym przykładzie wykorzystano funkcję Atn do obliczenia wartości stałej pi.

Dim pi

pi = 4 * Atn(1)	' Oblicz wartość pi.


Funkcja Cos - przykład

W tym przykładzie wykorzystano funkcję Cos do obliczenia cosinusa kąta.

Dim MójKąt, WartSec

MójKąt = 1.3	' Określ kąt, w radianach.

WartSec = 1 / Cos(MójKąt)	' Oblicz secans.


Funkcja Exp - przykład

W tym przykładzie wykorzystano funkcję Exp do podniesienia stałej e do określonej potęgi.

Dim MójKąt, WartSinH

' Określ kąt, w radianach.

MójKąt = 1.3

' Oblicz sinus hiperboliczny.

WartSinH = (Exp(MójKąt) - Exp(-1 * MójKąt)) / 2


Funkcje Int i Fix - przykład

W tym przykładzie pokazano, jak użyć funkcji Int i Fix do obliczenia części całkowitej liczby. W przypadku argumentu ujemnego, funkcja Int zwraca pierwszą liczbę całkowitą ujemną mniejszą od argumentu lub mu równą; natomiast funkcja Fix zwraca wówczas pierwszą liczbę całkowitą niedodatnią większą od argumentu lub mu równą.

Dim MojaLiczba

MojaLiczba = Int(99.8)	' Wynik: 99

MojaLiczba = Fix(99.2)	' Wynik: 99

MojaLiczba = Int(-99.8)	' Wynik: -100

MojaLiczba = Fix(-99.8)	' Wynik: -99

MojaLiczba = Int(-99.2)	' Wynik: -100

MojaLiczba = Fix(-99.2)	' Wynik: -99


Funkcja Log - przykład

W tym przykładzie wykorzystano funkcję Log do obliczenia logarytmu naturalnego liczby.

Dim MójKąt, WartArSinH

' Określ kąt, w radianach.

MójKąt = 1.3

' Oblicz odwrotny sinus hiperboliczny.

WartArSinH = Log(MójKąt + Sqr(MójKąt * MójKąt + 1))


Instrukcja Randomize - przykład

W tym przykładzie wykorzystano instrukcję Randomize do zainicjowania generatora liczb losowych. Ponieważ pominięto tu argument, do zainicjowania generatora instrukcja Randomize wykorzysta wartość zwróconą przez funkcję Timer.

Dim MojaWartość

Randomize	' Zainicjuj generator liczb losowych.

MojaWartość = Int((6 * Rnd) + 1)	' Wygeneruj liczbę losową z przedziału od 1 do 6.


Funkcja Rnd - przykład

W tym przykładzie wykorzystano funkcję Rnd do wygenerowania losowej liczby całkowitej z przedziału od 1 do 6.

Dim MojaWartość

MojaWartość = Int((6 * Rnd) + 1)	' Wygeneruj liczbę losową z przedziału od 1 do 6.


Funkcja Sgn - przykład

W tym przykładzie wykorzystano funkcję Sgn do wyznaczenia znaku liczby.

Dim Zm1, Zm2, Zm3, MójZnak

Zm1 = 12: Zm2 = -2.4: Zm3 = 0

MójZnak = Sgn(Zm1)	' Wynik: 1

MójZnak = Sgn(Zm2)	' Wynik: -1

MójZnak = Sgn(Zm3)	' Wynik: 0


Funkcja Sin - przykład

W tym przykładzie wykorzystano funkcję Sin do obliczenia sinusa kąta.

Dim MójKąt, WartCosec

MójKąt = 1.3	' Określ kąt, w radianach.

WartCosec = 1 / Sin(MójKąt)	' Oblicz cosecans.


Funkcja Sqr - przykład

W tym przykładzie wykorzystano funkcję Sqr do obliczenia pierwiastka kwadratowego liczby.

Dim WartSqr

WartSqr = Sqr(4)	' Wynik: 2

WartSqr = Sqr(23)	' Wynik: 4.79583152331272

WartSqr = Sqr(0)	' Wynik: 0

WartSqr = Sqr(-4)	' Spowoduje błąd wykonania.


Funkcja Tan - przykład

W tym przykładzie wykorzystano funkcję Tan do obliczenia tangensa kąta.

Dim MójKąt, WartCot

MójKąt = 1.3	' Określ kąt, w radianach.

WartCot = 1 / Tan(MójKąt)	' Oblicz cotangens.


Funkcje matematyczne

Abs - funkcja

Atn - funkcja

Cos - funkcja

Exp - funkcja

Fix - funkcja

Int - funkcja

Log - funkcja

Rnd - funkcja

Sgn - funkcja

Sin - funkcja

Sqr - funkcja

Tan - funkcja

Funkcje matematyczne pochodne


Abs - funkcja

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

Składnia

Abs(liczba)

Obowiązkowy argument liczba może być dowolnym poprawnym wyrażeniem numerycznym. Jeśli liczba zawiera wartość Null, zwracana jest wartość Null; jeśli argument jest zmienną nie zdefiniowaną, wówczas zwracana jest wartość zero.

Użycie

Wartość bezwzględna liczby jest to wartość liczby bez uwzględnienia znaku. Przykładowo, zarówno ABS(-1), jak i ABS(1) zwracają wartość 1.


Atn - funkcja

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

Składnia

Atn(liczba)

Obowiązkowy argument liczba może być liczbą typu Double lub dowolnym poprawnym wyrażeniem numerycznym.

Użycie

Funkcja Atn pobiera stosunek dwóch boków trójkąta prostokątnego (liczba) i zwraca wartość miary odpowiedniego kąta wyrażoną w radianach. Stosunek obliczany jest przez podzielenie przyprostokątnej leżącej naprzeciw kąta przez długość przyprostokątnej przyległej kąta.

Wartość funkcji mieści się w przedziale od pi/2 do pi/2 radianów.

Aby przeliczyć stopnie na radiany, należy pomnożyć wartość wyrażoną w stopniach przez pi/180. Aby przeliczyć radiany na stopnie, należy pomnożyć wartość wyrażoną w radianach przez 180/pi.

Uwaga   Atn jest funkcją odwrotną do funkcji trygonometrycznej Tan, która pobiera kąt jako argument, natomiast zwraca stosunek długości przyprostokątnych trójkąta prostokątnego. Funkcji Atn nie należy mylić z funkcją cotangens, która jest po prostu odwrotnością tangensa (1/tangens).


Cos - funkcja

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

Składnia

Cos(liczba)

Obowiązkowy argument liczba może być liczbą typu Double lub dowolnym poprawnym wyrażeniem numerycznym wyrażającym miarę kąta w radianach.

Użycie

Funkcja Cos pobiera kąt i zwraca stosunek długości dwóch boków trójkąta prostokątnego. Stosunek ten obliczany jest przez podzielenie przyprostokątnej przyległej do kąta przez długość przeciwprostokątnej.

Wartościami funkcji są liczby należące do przedziału od -1 do 1.

Aby przeliczyć stopnie na radiany, należy pomnożyć wartość wyrażoną w stopniach przez pi/180. Aby przeliczyć radiany na stopnie, należy pomnożyć wartość wyrażoną w radianach przez 180/pi.


Exp - funkcja

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

Składnia

Exp(liczba)

Obowiązkowy argument liczba może być liczbą typu Double lub dowolnym poprawnym wyrażeniem numerycznym.

Użycie

Przekroczenie przez liczbę wartości 709,782712893 powoduje błąd. Wartość stałej e wynosi w przybliżeniu 2,718282.

Uwaga   Funkcja Exp jest funkcją odwrotną do Log i jest czasami określana jako antylogarytm.


Int, Fix - funkcja

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

Składnia

Int(liczba)

Fix(liczba)

Obowiązkowy argument liczba może być liczbą typu Double lub dowolnym poprawnym wyrażeniem numerycznym. Jeśli liczba zawiera wartość Null, wówczas zwracana jest wartość Null.

Użycie

Obydwie funkcje: Int i Fix odrzucają część ułamkową liczby i zwracają jej część całkowitą.

Różnica pomiędzy funkcjami Int i Fix występuje wtedy, gdy liczba ma wartość ujemną. Wówczas funkcja Int zwraca najbliższą liczbę całkowitą ujemną mniejszą lub równą liczbie, podczas gdy funkcja Fix zwraca najbliższą liczbę całkowitą ujemną większą lub równą liczbie. Przykładowo, Int przekształca -8,4 w -9, a Fix przekształca -8,4 w -8.

Fix(liczba) jest równoważne następującemu wyrażeniu arytmetycznemu:

Sgn(liczba) * Int(Abs(liczba))


Log - funkcja

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

Składnia

Log(liczba)

Obowiązkowy argument liczba może być liczbą typu Double lub dowolnym poprawnym wyrażeniem numerycznym o wartości większej od zera.

Użycie

Podstawą logarytmu naturalnego jest liczba e. Wartość stałej e wynosi w przybliżeniu 2,718282.

Obliczenie logarytmu liczby o dowolnej podstawie jest możliwe przez podzielenie wartości logarytmu naturalnego tej liczby przez logarytm naturalny podstawy. Działanie to wyrażone jest poniższym równaniem:

Logn(x) = Log(x) / Log(n)

Poniższy przykład przedstawia funkcję zdefiniowaną przez użytkownika, która oblicza logarytmy o podstawie 10:

Static Function Log10(X)

Log10 = Log(X) / Log(10#)

End Function


Randomize - instrukcja

Inicjuje generator liczb losowych.

Składnia

Randomize [liczba]

Nieobowiązkowy argument liczba może być wartością typu Variant lub dowolnym poprawnym wyrażeniem numerycznym.

Użycie

Instrukcja Randomize wykorzystuje liczbę do zainicjowania generatora liczb losowych dla funkcji Rnd, nadając wartość ziarnu generatora. Jeśli liczba nie zostanie podana, to nową wartością ziarna będzie liczba zwrócona przez zegar systemowy.

Jeśli instrukcja Randomize nie zostanie użyta, wówczas przy pierwszym wywołaniu funkcji Rnd (bez argumentów) jako ziarno wykorzystywana jest wartość domyślna, natomiast przy kolejnych wywołaniach ziarnem staje się liczba wygenerowana przy wywołaniu poprzednim.

Uwaga   Aby ponownie wygenerować taką samą sekwencję liczb losowych, należy bezpośrednio przed wykonaniem instrukcji Randomize wywołać funkcję Rnd z argumentem będącym liczbą ujemną. Wykonanie instrukcji Randomize z tą samą wartością liczby nie spowoduje ponownego wygenerowania poprzedniej sekwencji.


Rnd - funkcja

Zwraca wartość typu Single będącą liczbą losową.

Składnia

Rnd[(liczba)]

Nieobowiązkowy argument liczba może być liczbą typu Single lub dowolny poprawnym wyrażeniem numerycznym.

Zwracane wartości

Jeśli number jest	funkcja Rnd generuje
mniejsza od zera	tę samą liczbę za każdym razem, wykorzystując liczbę jako ziarno.
większa od zera	następną liczbę losową w sekwencji.
równa zeru	ostatnio wygenerowaną liczbę.
nie podana	następną liczbę losową w sekwencji.
Użycie

Funkcja Rnd zwraca wartości mniejsze od 1 lecz większe lub równe 0.

Wartość liczby określa sposób, w jaki funkcja Rnd generuje liczby losowe.

Dla dowolnej zadanej początkowej wartości ziarna generowana jest ta sama sekwencja liczb, ponieważ kolejne wywołania funkcji Rnd wykorzystują poprzednio wygenerowane liczby jako ziarna dla kolejnych generowanych liczb.

Przed wywołaniem funkcji Rnd należy użyć instrukcji Randomize bez argumentu celem zainicjowania generatora liczb losowych z ziarnem o wartości pobranej z zegara systemowego.

Aby generować losowe liczby całkowite z określonego przedziału, należy wykorzystać poniższą formułę:

Int((ogr_górne - ogr_dolne + 1) * Rnd + ogr_dolne)

gdzie ogr_górne i ogr_dolne są odpowiednio największą i najmniejszą liczbą przedziału.

Uwaga   Aby ponownie wygenerować taką samą sekwencję liczb losowych, należy bezpośrednio przed wykonaniem instrukcji Randomize wywołać funkcję Rnd z argumentem będącym liczbą ujemną. Wykonanie instrukcji Randomize z tą samą wartością liczby nie spowoduje ponownego wygenerowania poprzedniej sekwencji.


Sgn - funkcja

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

Składnia

Sgn(liczba)

Obowiązkowy argument liczba może być dowolnym poprawnym wyrażeniem numerycznym.

Zwracane wartości

Jeśli number jest	Funkcja Sgn zwraca
większa od zera	1
równa zeru	0
mniejsza od zera	-1
Użycie

Znak argumentu liczba wyznacza wartość zwracaną przez funkcję Sgn.


Sin - funkcja

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

Składnia

Sin(liczba)

Obowiązkowy argument liczba może być liczbą typu Double lub dowolnym poprawnym wyrażeniem numerycznym wyrażającym miarę kąta w radianach.

Użycie

Funkcja Sin pobiera jako argument kąt i zwraca stosunek długości dwóch boków trójkąta prostokątnego. Stosunek ten jest obliczany przez podzielenie przyprostokątnej leżącej naprzeciw kąta przez długość przeciwprostokątnej.

Wartościami funkcji są liczby z przedziału od -1 do 1.

Aby przeliczyć stopnie na radiany, należy pomnożyć wartość wyrażoną w stopniach przez pi/180. Aby przeliczyć radiany na stopnie, należy pomnożyć wartość wyrażoną w radianach przez 180/pi.


Sqr - funkcja

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

Składnia

Sqr(liczba)

Obowiązkowy argument liczba może być liczbą typu Double lub dowolnym poprawnym wyrażeniem numerycznym o wartości większej lub równej zero.


Tan - funkcja

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

Składnia

Tan(liczba)

Obowiązkowy argument liczba może być liczbą typu Double lub dowolnym poprawnym wyrażeniem numerycznym wyrażającym miarę kąta w radianach.

Użycie

Funkcja Tan pobiera jako argument kąt i zwraca stosunek długości dwóch boków trójkąta prostokątnego. Stosunek ten jest obliczany przez podzielenie długości przyprostokątnej leżącej naprzeciw kąta przez długość przyprostokątnej przyległej do kąta.

Aby przeliczyć stopnie na radiany, należy pomnożyć wartość wyrażoną w stopniach przez pi/180. Aby przeliczyć radiany na stopnie, należy pomnożyć wartość wyrażoną w radianach przez 180/pi.


Funkcje matematyczne pochodne

Poniżej przedstawiono listę funkcji matematycznych, które mogą zostać obliczone na podstawie funkcji wewnętrznych.

Funkcja	Sposób zastąpienia
Secans	Sec(X) = 1 / Cos(X)
Cosecans	Cosec(X) = 1 / Sin(X)
Cotangens	Cotan(X) = 1 / Tan(X)
Arcusinus	Arcsin(X) = Atn(X / Sqr(-X * X + 1))
Arcuscosinus	Arccos(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
Arcussecans	Arcsec(X) = Atn(X / Sqr(X * X – 1)) + Sgn((X) – 1) * (2 * Atn(1))
Arcuscosecans	Arccosec(X) = Atn(X / Sqr(X * X – 1)) + (Sgn(X) – 1) * (2 * Atn(1))
Arcuscotangens	Arccotan(X) = Atn(X) + 2 * Atn(1)
Sinus hiperboliczny	Hsin(X) = (Exp(X) - Exp(–X)) / 2
Cosinus hiperboliczny	HCos(X) = (Exp(X) + Exp(–X)) / 2
Cotangens hiperboliczny	HTan(X) = (Exp(X) – Exp(-X)) / (Exp(X) + Exp(–X))
Secans hiperboliczny	HSec(X) = 2 / (Exp(X) + Exp(–X))
Cosecans hiperboliczny	HCosec(X) = 2 / (Exp(X) – Exp(–X))
Cotangens hiperboliczny	HCotan(X) = (Exp(X) + Exp(–X)) / (Exp(X) – Exp(–X))
Arcussinus hiperboliczny	HArcsin(X) = Log(X + Sqr(X * X + 1))
Arcuscosinus hiperboliczny	HArccos(X) = Log(X + Sqr(X * X – 1))
Arcustangens hiperboliczny	HArctan(X) = Log((1 + X) / (1 – X)) / 2
Arcussecans hiperboliczny	HArcsec(X) = Log((Sqr(–X * X + 1) + 1) / X)
Arcuscosecans hiperboliczny	HArccosec(X) = Log((Sgn(X) * Sqr(X * X + 1) + 1) / X)
Arcuscotangens hiperboliczny	HArccotan(X) = Log((X + 1) / (X – 1)) / 2
Logarytm o podstawie N	LogN(X) = Log(X) / Log(N)


Metoda Add - przykład

W tym przykładzie użyto metody Add do dodawania obiektów Inst (wystąpień klasy o nazwie Class1 zawierającej zmienną Public o nazwie NazwaInstancji) do kolekcji o nazwie MojeKlasy. Aby zobaczyć działanie tego przykładu, należy wstawić moduł klasy i zadeklarować zmienną publiczną o nazwie NazwaInstancji na poziomie modułu klasy Class1 (należy napisać: Public NazwaInstancji). Zmienna ta będzie służyła do przechowywania nazw każdego wystąpienia. Należy pozostawić nazwę domyślną Class1. Poniższy kod programu należy przekopiować do procedury obsługi zdarzenia Form_Load modułu formularza.

Dim MojeKlasy As New Collection	' Utwórz obiekt Collection.

Dim Num As Integer	' Licznik do rozróżniania kluczy.

Dim Kom

Dim Nazwa	' Dla nazw wprowadzanych przez użytkownika.

Do

Dim Inst As New Class1	' Utwórz nowe wystąpienie klasy Class1.

Num = Num + 1	' Zwiększ licznik Num, a potem pobierz nazwę.

Kom = "Wprowadź nazwę tego obiektu." & Chr(13) _

 & "Aby zobaczyć nazwy w kolekcji, naciśnij Cancel."

Nazwa = InputBox(Kom, "Nazwy elementów kolekcji ")

Inst.InstanceName = Nazwa	' Nadaj tę nazwę wystąpieniu klasy.

' Jeśli wprowadzono nazwę, dodaj ją do kolekcji.

If Inst.InstanceName <> "" Then

' Dodaj nazwany obiekt do kolekcji.

MojeKlasy.Add item := Inst, key := CStr(Num)

End If

' Wyczyść bieżące odwołanie, przygotowując je dla

' następnego wystąpienia.

Set Inst = Nothing

Loop Until Nazwa = ""

For Each x In MojeKlasy

MsgBox x.instancename, , "Nazwa wystąpienia"

Next


Metoda Clear - przykład

W tym przykładzie użyto metody Clear obiektu Err do nadania wartości zerowych numerycznym właściwościom obiektu Err oraz przypisania ciągów o długości zerowej właściwościom znakowym tego obiektu. Jeśli w poniższym kodzie programu pominięto by metodę Clear, okno dialogowe z komunikatem o błędzie byłoby wyświetlane za każdym obiegiem pętli (po wystąpieniu błędu), niezależnie od tego, czy w kolejnym obliczeniu rzeczywiście wystąpił błąd. Przejrzyj poniższy kod i zwróć uwagę na wynik jego działania.

Dim Wynik(10) As Integer	' Zadeklaruj tablicę, której

' elementy łatwo się przepełnią.

Dim ind

On Error Resume Next	' Odłóż przechwytywanie błędów.

Do Until ind = 10

' Generuj przypadkowy błąd lub zapamiętaj wynik,

 	'jeśli nie było błędu.

Wynik(ind) = Rnd * ind * 20000

If Err.Number <> 0 Then

MsgBox Err, , "Zgłoszono błąd: ", Err.HelpFile, Err.HelpContext

Err.Clear	' Wyczyść właściwości obiektu Err.

End If

ind = ind + 1

Loop


Metoda Item - przykład

W tym przykładzie wykorzystano metodę Item do pobrania odwołania do obiektu znajdującego się w kolekcji. Przy założeniu, że DatyUrodzin jest obiektem typu Collection, poniższy kod programu pobiera z tej kolekcji odwołania do obiektów reprezentujących daty urodzin Jana Nowaka i daty urodzin Jerzego Nowaka, używając jako argumentu indeks kluczy "JanNowak" i "JerzyNowak". Zauważmy, że w pierwszym wywołaniu metoda Item jest podana jawnie, natomiast w drugim wywołaniu metoda ta nie występuje. Oba wywołania działają jednakowo, gdyż metoda Item jest domyślną metodą obiektu Collection. Odwołania, przypisane zmiennym JanNowakBD i JerzyNowakBD za pomocą polecenia Set, mogą być stosowane do dostępu do metod i właściwości tych obiektów. Aby uruchomić ten przykład, należy przedtem utworzyć kolekcję i umieścić w niej przynajmniej te dwa elementy, do których odwołuje się przykład.

Dim JanNowakBD As Object

Dim JerzyNowakBD As Object

Dim DatyUrodzin

Set JanNowakBD = DatyUrodzin.Item("JanNowak")

Set JerzyNowakBD = DatyUrodzin("JerzyNowak")


Metoda Print - przykład

W tym przykładzie zastosowano metodę Print do wyświetlenia wartości zmiennej MojaZmienna w polu bezpośrednim okna Analiza programu. Zauważmy, że metoda Print stosuje się tylko do tych obiektów, które mogą wyświetlać tekst.

Dim MojaZmienna

MojaZmienna = "Zobacz mnie w polu bezpośrednim!"

Debug.Print MojaZmienna


Metoda Raise - przykład

W tym przykładzie zastosowano metodę Raise obiektu Err do zasygnalizowania błędu wewnątrz obiektu automatyzacji napisanego w języku Visual Basic. Obiekt ten ma identyfikator programowy Proj.Obiekt.

Const IdKontekstu = 1010407	' Zdefiniuj stałą dla

' identyfikatora kontekstu.

Function SprawdźNazwę(BieżącaNazwa, NowaNazwa)

If Instr(NowaNazwa, "jaś") Then	' Sprawdź poprawność

 	' argumentu NowaNazwa.

' Zgłoś wyjątek

Err.Raise vbObjectError + 27, "Proj.Obiekt", _

"""jaś"" nie jest dopuszczalne w imieniu", "c:\Proj\Pomoc.Hlp", _

IdKontekstu

End If

End Function


Metoda Remove - przykład

W tym przykładzie pokazano, jak za pomocą metody Remove usuwać obiekty z obiektu Collection o nazwie MojeKlasy. Podany fragment programu przy każdym obiegu pętli usuwa z kolekcji obiekt o indeksie równym 1.

Dim Num, MojeKlasy

For Num = 1 To MojeKlasy.Count

MojeKlasy.Remove 1	' Usuń za każdym razem

' pierwszy obiekt, aż kolekcja

' stanie się pusta.

Next Num


Add - metoda

Dodaje składową do obiektu typu Collection.

Składnia

obiekt.Add item, key, before, after

Składnia metody Add ma następujący kwalifikator obiektu i nazwane argumenty:

Argument	Opis
obiekt	Element obowiązkowy. Wyrażenie obiektowe określające obiekt z listy Dotyczy.
item	Argument obowiązkowy. Wyrażenie dowolnego typu określające dodawany do kolekcji składnik.
key	Argument nieobowiązkowy. Unikatowe wyrażenie znakowe określające ciąg znaków klucza, którego można używać zamiast indeksu pozycyjnego przy dostępie do składnika kolekcji.
before	Argument nieobowiązkowy. Wyrażenie określające względne położenie w kolekcji. Dodawany składnik jest umieszczany przed obiektem określonym argumentem before. W przypadku wyrażenia numeryczngo, argument before przyjmuje wartości od 1 do właściwości Count kolekcji. W przypadku ciągu znaków, argument before musi być zgodny z argumentem key podanym podczas dodawania tego składnika do kolekcji. W danym wywołaniu metody może być określony tylko jeden z argumentów określających położenie elementu: before lub after.
after	Argument nieobowiązkowy. Wyrażenie określające względne położenie w kolekcji. Dodawany składnik jest umieszczany po obiekcie określonym przez argument after. W przypadku wyrażeń numerycznych, argument after przyjmuje wartości od 1 do właściwości Count kolekcji. W przypadku ciągu znaków, argument after musi być zgodny z argumentem key podanym podczas dodawania tego składnika do kolekcji. W danym wywołaniu metody może być określony tylko jeden z argumentów określających położenie elementu: before lub after.
Użycie

Niezależnie od tego, czy argument before lub after jest wyrażeniem znakowym, czy numerycznym, musi się on odwoływać do istniejącego składnika kolekcji; w przeciwnym przypadku wystąpi błąd.

Przyczyną błędu może być także podanie takiej wartości argumentu key, która już istnieje dla innego składnika tej kolekcji.


Clear - metoda

Usuwa wszystkie ustawienia właściwości dla obiektu Err.

Składnia

obiekt.Clear

obiekt jest zawsze obiektem typu Err.

Użycie

Należy jawnie używać metody Clear, aby wyczyścić obiekt Err po wystąpieniu błędu, np. przy stosowaniu opóźnionej obsługi błędów z wykorzystaniem On Error Resume Next. Metoda Clear jest wywoływana automatycznie zawsze, gdy wykonywana jest którakolwiek z następujących instrukcji:

•	Dowolny rodzaj instrukcji Resume,

•	Exit Sub, Exit Function, Exit Property,

•	Dowolny rodzaj instrukcji On Error.

Uwaga   Przy obsłudze błędów generowanych podczas dostępu do obiektów wygodniej jest użyć konstrukcji On Error Resume Next niż On Error GoTo. Sprawdzanie Err po każdym odwołaniu do obiektu eliminuje niebezpieczeństwo niejednoznaczności odnośnie tego, do którego obiektu odwoływał się program. W ten sposób zawsze będzie wiadomo, który obiekt umieścił kod błędu w polu Err.Number, a także, który obiekt spowodował ten błąd (obiekt podany w polu Err.Source).


Item - metoda

Zwraca składowe obiektu Collection na podstawie położenia lub klucza.

Składnia

obiekt.Item(indeks)

Składnia metody Item ma następujący kwalifikator obiektu i element:

Element	Opis
obiekt	Element obowiązkowy. Wyrażenie obiektowe określające obiekt z listy Dotyczy.
indeks	Element obowiązkowy. Wyrażenie określające położenie składnika kolekcji. W przypadku wyrażenia numerycznego, indeks musi zawierać się w przedziale od 1 do wartości właściwości Count danej kolekcji. W przypadku wyrażenia znakowego, indeks musi być zgodny z argumentem key podanym podczas dodawania tego składnika do kolekcji.
Użycie

Jeśli wartość podana jako indeks nie odpowiada żadnemu składnikowi kolekcji, zostanie wygenerowany błąd.

Ponieważ metoda Item jest domyślną metodą zbioru, dlatego poniższe wiersze programu są sobie równoważne:

Print MyCollection(1)

Print MyCollection.Item(1)


Print - metoda

Drukuje tekst w okienku Bezpośrednim okna Analiza programu.

Składnia

obiekt.Print [lista_wyj]

Składnia metody Print ma następujący kwalifikator obiektu i element:

Element	Opis
obiekt	Element obowiązkowy. Wyrażenie obiektowe określające obiekt z listy Dotyczy.
lista_wyj	Element nieobowiązkowy. Wyrażenie lub lista wyrażeń przeznaczonych do drukowania. Brak argumentu powoduje wydrukowanie pustego wiersza.
Argument lista_wyj ma następującą składnię i argumenty:

{Spc(n) | Tab(n)} wyrażenie poz_znaku

Argument	Opis
Spc(n)	Argument nieobowiązkowy. Używany do wstawiania spacji w tekście do wydruku, przy czym n oznacza liczbę wstawianych znaków spacji.
Tab(n)	Argument nieobowiązkowy. Używany w celu przeniesienia punktu wstawiania do kolumny określonej wartością n. Aby umieścić punkt wstawiania na początku następnej strefy drukowania, należy użyć parametru Tab bez argumentów.
wyrażenie	Element nieobowiązkowy. Wyrażenie numeryczne lub wyrażenie znakowe przeznaczone do wydruku.
poz_znaku	Element nieobowiązkowy. Określa położenie punktu wstawiania dla następnego znaku. Aby umieścić punkt wstawiania bezpośrednio po ostatnim wyświetlonym znaku, należy użyć średnika (;). Aby umieścić punkt wstawiania w określonej kolumnie, należy użyć elementu Tab(n). Aby umieścić punkt wstawiania na początku następnej strefy drukowania, należy użyć parametru Tab bez argumentów. Brak parametru poz_znaku powoduje, że następny znak zostanie wydrukowany w nowym wierszu.
Użycie

Wyrażenia, jeśli jest ich kilka, mogą być rozdzielane spacją lub średnikiem.

Wszystkie dane drukowane w oknie Immediate są formatowane za pomocą separatora dziesiętnego określonego w ustawieniach regionalnych systemu. Słowa kluczowe są wprowadzane w języku odpowiednim dla aplikacji głównej.

Dla danych typu Boolean drukowane są wartości True lub False. Słowa kluczowe True i False są tłumaczone zgodnie z ustawieniami regionalnymi systemu.

Dane typu Date są wyświetlane w standardowym formacie rozpoznawanym przez system użytkownika. Brak daty, czasu lub zerowa wartość któregokolwiek z tych parametrów powoduje wyświetlenie tylko tych danych, które są podane.

Jeśli element listy_wyj ma wartość Empty, nie pojawią się żadne dane. Jeśli jednak wartość elementu listy_wyj jest Null, pojawi się wartość Null. Słowo kluczowe Null będzie odpowiednio przetłumaczone.

W przypadku błędnych danych wyświetlony zostanie komunikat Błąd <kod_błędu>. Słowo kluczowe Error będzie odpowiednio przetłumaczone.

W przypadku użycia tej metody poza modułem, posiadającym domyślną przestrzeń wyświetlania, niezbędne jest podanie argumentu obiekt. Na przykład, błąd powstaje w przypadku wywołania metody w module standardowym bez podania obiektu. Jeśli jednak metoda wywoływana jest w module formularza, wartość argumentu lista_wyj jest wyświetlana na formularzu.

Uwaga Ponieważ metoda Print domyślnie stosuje czcionkę proporcjonalną, liczba wydrukowanych znaków nie wyznacza liczby kolumn o stałej szerokości zajmowanych przez te znaki. Na przykład, szeroka litera, jak np. "W", zajmuje więcej miejsca niż jedna kolumna, natomiast wąska litera, jak "i", zajmuje mniej niż jedną kolumnę. Aby zapewnić wystarczającą ilość miejsca dla szerokich liter, należy odpowiednio ustawić kolumny tabulatorów. Innym rozwiązaniem może być korzystanie z czcionek o stałej szerokości znaków, np. Courier.


Raise - metoda

Generuje błąd wykonania.

Składnia

obiekt.Raise number, source, description, helpfile, helpcontext

Metoda Raise ma następujący kwalifikator obiektu i argumenty nazwane:

Element	Opis
obiekt	Element obowiązkowy. Jest to zawsze obiekt Err.
number	Argument obowiązkowy. Jest to wartość całkowita typu Long określająca rodzaj błędu. Kody błędów języka Visual Basic (zarówno wbudowane, jak i zdefiniowane przez użytkownika) należą do zakresu 0-65535. Przypisanie do właściwości Number własnego kodu błędu w module klasy powoduje dodanie tej wartości do stałej vbObjectError. Na przykład, aby wygenerować numer błędu 1050, należy właściwości Number nadać wartość vbObjectError + 1050.
source	Argument nieobowiązkowy. Jest to wyrażenie znakowe określające nazwę obiektu lub aplikacji generującej błąd. Przy ustawianiu tej właściwości obiektu należy użyć następującej konwencji: projekt.klasa. Jeśli źródło nie zostanie podane, to zostanie użyty identyfikator programowy bieżącego projektu Visual Basic.
description	Argument nieobowiązkowy. Jest to wyrażenie znakowe opisujące błąd. Jeśli parametr ten nie jest określony, sprawdzana jest wartość właściwości Number. Jeśli wartość ta może być odwzorowana na kod błędu języka Visual Basic, jako Description zostanie użyty ciąg zwrócony przez funkcję Error. Jeśli nie istnieje w języku Visual Basic błąd o kodzie równym wartości właściwości Number, wyświetlony zostanie komunikat "Błąd zdefiniowany w obiekcie lub aplikacji".
helpfile	Argument nieobowiązkowy. Określa on pełną ścieżkę do pliku Pomocy Microsoft Windows, w którym znajduje się opis błędu. Jeśli wartość ta nie jest określona, Visual Basic użyje pełnej ścieżki do pliku Pomocy dla języka Visual Basic.
helpcontext	Argument nieobowiązkowy. Jest to identyfikator tematu Pomocy w helpfile zawierającym opis błędu. Jeśli wartość ta nie jest określona i istnieje standardowy błąd języka Visual Basic o kodzie równym wartości właściwości Number, to zostanie użyty opis tego błędu z pliku Pomocy dla języka Visual Basic.
Użycie

Wszystkie argumenty oprócz argumentu number są nieobowiązkowe. Użycie metody Raise bez niektórych argumentów w przypadku, gdy obiekt Err ma ustawione odpowiednie właściwości, powoduje, że jako argumenty zostaną użyte te właściwości.

Metoda Raise jest używana do generacji błędów wykonania i może być stosowana zamiast instrukcji Error. Metoda Raise jest wygodniejsza w użyciu w modułach klas ze względu na obiekt Err, który zwraca więcej informacji niż można uzyskać w przypadku użycia funkcji Error. Na przykład, przy stosowaniu metody Raise, można określić źródło błędu za pomocą właściwości Source, można odwołać się do pliku Pomocy z opisem błędu, itd..


Remove - metoda

Usuwa składowe z obiektu typu Collection.

Składnia

obiekt.Remove indeks

Składnia metody Remove ma następujący kwalifikator obiektu i elementy:

Element	Opis
obiekt	Element obowiązkowy. Wyrażenie obiektowe określające obiekt z listy Dotyczy.
indeks	Element obowiązkowy. Wyrażenie określające położenie składnika w kolekcji. W przypadku wyrażenia numerycznego, indeks musi zawierać się w przedziale od 1 do wartości właściwości Count kolekcji. Dla wyrażenia numerycznego, indeks musi być zgodny z argumentem key podanym podczas dodawania tego składnika do kolekcji.
Użycie

Jeśli wartość podana jako indeks nie odpowiada żadnemu składnikowi kolekcji, zostanie wygenerowany błąd.


Instrukcja AppActivate - przykład

Niniejszy przykład ilustruje kilka zastosowań instrukcji AppActivate do uaktywnienia okna aplikacji. W instrukcjach Shell zakłada się, że aplikacje znajdują się na podanych ścieżkach. W systemie Macintosh można użyć funkcji MacID w celu określenia sygnatury aplikacji zamiast jej nazwy. Instrukcja AppActivate jest dostępna w systemach Macintosh w wersji 7.0 i późniejszych.

Dim MojaApID, WartZwrac

' W Microsoft Windows:

AppActivate "Microsoft Word"	' Uaktywnij program

' Microsoft Word.

' Instrukcja AppActivate może używać wartości

' zwróconej przez funkcję Shell.

MojaApID = Shell("C:\WORD\WINWORD.EXE", 1)

' Uruchom program Microsoft Word.

AppActivate MojaApID	' Uaktywnij program Microsoft

' Word.

' Można również użyć wartości zwróconej przez

' funkcję Shell.

WartZwrac = Shell("c:\EXCEL\EXCEL.EXE",1)

' Uruchom program Microsoft Excel.

AppActivate	WartZwrac ' Uaktywnij program Microsoft

' Excel.


Instrukcja Beep - przykład

W tym przykładzie wykorzystano instrukcję Beep do wygenerowania przez głośnik komputera trzech kolejnych dźwięków.

Dim I

For I = 1 To 3	' Wykonaj 3 razy.

Beep	' Wysłanie dźwięku.

Next I


Funkcja Command - przykład

W tym przykładzie wykorzystano funkcję Command do odczytania argumentów wiersza polecenia w funkcji zwracającej te argumenty w zmiennej typu Variant zawierającej tablicę.

Function ParametryWierszaPolec(Optional MaxArg)

'Deklaracje zmiennych.

Dim C, Polecenie, DlugPolec, CzyArg, I, LiczbaArg

'Czy podano MaxArg?

If IsMissing(MaxArg) Then MaxArg = 10

'Utworzenie tablicy o wymaganej wielkości.

ReDim TablicaArg(MaxArg)

LiczbaArg = 0: CzyArg = False

'Odczytanie argumentów wiersza polecenia.

Polecenie = Command()

DlugPolec = Len(Polecenie)

'Przeglądanie wiersza polecenia znak po znaku.

For I = 1 To DlugPolec

C = Mid(Polecenie, I, 1)

'Czy spacja lub znak tabulacji?

If (C <> " " And C <> vbTab) Then

'Ani nie spacja, ani nie znak tabulacji.

'Czy argument zaczął się wcześniej?

If Not CzyArg Then

'Rozpoczyna się nowy argument.

'Sprawdzenie, czy nie za dużo argumentów.

If LiczbaArg = MaxArg Then Exit For

LiczbaArg = LiczbaArg + 1

CzyArg = True

End If

'Dodanie znaku do bieżącego argumentu.

TablicaArg(LiczbaArg)=TablicaArg(LiczbaArg)+C

Else

'To jest spacja lub znak tabulacji.

'Ustawienie flagi CzyArg na wartość False.

CzyArg = False

End If

Next I

'Zmiana wymiaru tablicy zgodnie z liczbą

'argumentów.

ReDim Preserve TablicaArg(LiczbaArg)

'Zwrócenie tablicy przez funkcję.

ParametryWierszaPolec = TablicaArg()

End Function


Funkcja InputBox - przykład

Ten przykład ilustruje kilka różnych sposobów wykorzystania funkcji InputBox do zażądania od użytkownika wprowadzenia danych. Jeśli pozycje x oraz y są pominięte, okno dialogowe jest automatycznie ustawiane pośrodku względem odpowiednich osi. Zmienna MojaWart zawiera wartość wprowadzoną przez użytkownika, jeśli kliknie on przycisk OK lub naciśnie klawisz ENTER. Jeśli użytkownik kliknie przycisk Anuluj, zwracany jest ciąg o długości zerowej.

Dim Kom, Tytuł, Domyślne, MojaWart

Kom = "Podaj wartość pomiędzy 1 i 3"

' Ustaw tekst monitu.

Tytuł = "Demo InputBox"	' Ustaw tytuł.

Domyślne = "1"	' Ustaw wartość domyślną.

' Wyświetl komunikat, tytuł i wartość domyślną.

MojaWart = InputBox(Kom, Tytuł, Domyślne)

' Wykorzystaj plik Pomocy i kontekst. Przycisk Pomoc

' jest dodawany automatycznie.

MojaWart = InputBox(Kom, Tytuł, , , , "DEMO.HLP", 10)

' Wyświetl okno dialogowe na pozycji 100, 100.

MojaWart = InputBox(Kom, Tytuł, Domyślne, 100, 100)


Funkcja MsgBox - przykład

W tym przykładzie wykorzystywano funkcję MsgBox do wyświetlenia w oknie dialogowym komunikatu o błędzie krytycznym, razem z przyciskami Tak i Nie. Domyślny jest przycisk Nie. Wartość zwracana przez funkcję MsgBox zależy od przycisku, który kliknie użytkownik. W przykładzie zakłada się, że plik DEMO.HLP jest plikiem Pomocy zawierającym temat o kontekście Pomocy równym 1000.

Dim Kom, Styl, Tytuł, Pomoc, Kontekst, Odp, MójCiąg

Kom = "Czy kontynuować?"	' Zdefiniowanie komunikatu.

Styl = vbYesNo + vbCritical + vbDefaultButton2

' Zdefiniowanie przycisków.

Tytuł = "Demo MsgBox"	' Ustawienie tytułu.

Pomoc = "DEMO.HLP"	' Zdefiniowanie pliku Pomocy.

Kontekst = 1000	' Zdefiniowanie kontekstu Pomocy.

' Wyświetlenie komunikatu.

Odp = MsgBox(Kom, Styl, Tytuł, Pomoc, Kontekst)

If Odp = vbYes Then	' Użytkownik wybrał przycisk Tak.

MójCiąg = "Tak"	' Wykonanie pewnych czynności.

Else	' Użytkownik wybrał przycisk Nie.

MójCiąg = "Nie"	' Wykonanie pewnych czynności.

End If


Instrukcja SendKeys - przykład

W tym przykładzie wykorzystano funkcję Shell do uruchomienia aplikacji Kalkulator systemu Microsoft Windows. Za pomocą funkcji SendKeys symulowane są naciśnięcia klawiszy w celu dodania liczb i zakończenia pracy Kalkulatora. Instrukcja SendKeys nie jest dostępna w systemie Macintosh. (Aby obejrzeć działanie tego przykładu, należy wkleić go do procedury, a następnie wykonać ją. Ponieważ instrukcja AppActivate przekazuje fokus do Kalkulatora, nie można wykonywać tego kodu programu krokowo.)

Dim ZwracWart, I

ZwracWart = Shell("CALC.EXE", 1) ' Uruchom Kalkulator.

AppActivate ZwracWart 	' Uaktywnij Kalkulator.

For I = 1 To 100	' Rozpocznij pętlę.

SendKeys I & "{+}", True

 ' Wysyłaj naciśnięcia klawiszy do Kalkulatora,

Next I	 ' aby dodać każdą kolejną wartość I.

SendKeys "=", True	' Wyświetl sumę końcową.

SendKeys "%{F4}", True

 ' Wyślij kombinację ALT+F4, aby zamknąć Kalkulator.


AppActivate - instrukcja

Uaktywnia okno aplikacji.

Składnia

AppActivate title[, wait]

Składnia instrukcji AppActivate zawiera następujące nazwane argumenty:

Argument	Opis
title	Argument obowiązkowy. Wyrażenie znakowe określające tekst umieszczony na pasku tytułu uaktywnianego okna aplikacji. W celu uaktywnienia aplikacji zamiast argumentu title można również użyć identyfikatora zadania zwracanego przez funkcję Shell.
wait	Argument nieobowiązkowy. Wartość typu Boolean która określa, czy aplikacja wołająca inną aplikację ma fokus. Wartość False (domyślnie) powoduje, że wywoływana aplikacja jest uaktywniana niezależnie od tego, czy aplikacja miała fokus. Wartość True powoduje, że aplikacja wołająca czeka, aż zostanie do niej przekazany fokus, a następnie uaktywnia podaną aplikację.
Użycie

Instrukcja AppActivate przenosi fokus na podaną aplikację lub okno, ale nie wpływa na to, czy aplikacja jest minimalizowana czy maksymalizowana. Fokus jest przenoszony z okna uaktywnionej aplikacji, gdy użytkownik wykonuje czynność związaną ze zmianą fokusu lub zamyka okno dialogowe. Aby uruchomić aplikację lub ustawić styl okna, należy użyć funkcji Shell.

Podczas określania, która aplikacja ma zostać uaktywniona, argument title jest porównywany z tytułami wszystkich aktualnie działających aplikacji. Jeśli żaden z tytułów okien nie jest zgodny z porównywanym wzorcem, uruchamiana jest ta aplikacja, dla której początkowa część tytułu odpowiada wartości argumentu title. Jeśli istnieje więcej instancji aplikacji o podanym title, zostanie wybrana jedna w nich.


Beep - instrukcja

Wydaje dźwięk za pośrednictwem głośnika komputera.

Składnia

Beep

Użycie

Częstotliwość i czas trwania dźwięku zależy od sprzętu i oprogramowania systemowego i może różnić się między komputerami.


Command - funkcja

Zwraca argumenty podane w wierszu poleceń użytego do uruchomienia środowiska Microsoft Visual Basic lub programu napisanego w języku Visual Basic.

Składnia

Command

Użycie

Przy uruchamianiu środowiska Visual Basic z wiersza poleceń każda część wiersza polecenia następująca po /cmd zwracana jest do programu jako argument należący do wiersza polecenia. W poniższym przykładzie argumenty będzie wynikiem zwróconym przez funkcję Command.

VB /cmd argumenty

W przypadku aplikacji utworzonych w języku Visual Basic i skompilowanych jako plik exe funkcja Command zwraca argumenty pojawiające się w wierszu polecenia po nazwie aplikacji. Na przykład:

MojaApl argumenty

Aby dowiedzieć się jak poprzez interfejs użytkownika danej aplikacji można zmieniać argumenty wiersza polecenia, odszukaj w Pomocy temat “argumenty wiersza polecenia”.


InputBox - funkcja

Wyświetla monit, czeka na wprowadzenie tekstu lub kliknięcie przycisku przez użytkownika, po czym zwraca String będący zawartością pola tekstowego.

Składnia

InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])

Funkcja InputBox ma następujące nazwane argumenty:

Argument	Opis
prompt	Argument obowiązkowy. Wyrażenie znakowe wyświetlane jako komunikat w oknie dialogowym. Maksymalna długość prompt wynosi około 1024 znaki, zależnie od szerokości znaków w zastosowanej czcionce. Jeśli prompt składa się z kilku wierszy, należy je rozdzielić, wstawiając znak powrotu karetki (Chr(13)), znak nowego wiersza (Chr(10)), lub kombinację znaków: powrót karetki–nowy wiersz (Chr(13) & Chr(10)).
title	Argument nieobowiązkowy. Wyrażenie znakowe wyświetlane na pasku tytułu okna dialogowego. Brak argumentu title spowoduje, że na pasku tytułu zostanie umieszczona nazwa aplikacji.
default	Argument nieobowiązkowy. Wyrażenie znakowe wyświetlane w polu tekstowym, jeśli nie zostanie podany inny tekst. Brak parametru default spowoduje, że pole tekstowe będzie puste.
xpos	Argument nieobowiązkowy. Wyrażenie numeryczne określające, w jednostkach zwanych “twips”, odległość lewej krawędzi okna dialogowego od lewej krawędzi ekranu. Brak argumentu xpos spowoduje, ze okno dialogowe zostanie umieszczone w równej odległości od lewej i prawej krawędzi ekranu.
ypos	Argument nieobowiązkowy. Wyrażenie numeryczne określające, w jednostkach zwanych “twips”, odległość górnej krawędzi okna dialogowego od górnej krawędzi ekranu. Brak argumentu ypos spowoduje, ze okno dialogowe zostanie umieszczone na poziomie dwóch trzecich wysokości ekranu.
helpfile	Argument nieobowiązkowy. Wyrażenie znakowe, które określa plik Pomocy zawierający pomoc kontekstową, dotyczącą okna dialogowego. Argument helpfile musi być zawsze podany z argumentem context.
context	Argument nieobowiązkowy. Wyrażenie numeryczne określające identyfikator tematu w pliku Pomocy. Jeśli podany jest argument context, to musi być również podany argument helpfile.
Użycie

Kiedy podane są argumenty helpfile i context, to temat Pomocy określony argumentem context jest dostępny dla użytkownika po naciśnięciu klawisza F1. Niektóre aplikacje główne, jak na przykład Microsoft Excel, automatycznie dodają do okna dialogowego przycisk Pomoc. Kliknięcie przycisku OK lub naciśnięcie klawisza ENTER powoduje, że funkcja InputBox zwraca zawartość pola tekstowego. Funkcja zwróci ciąg o zerowej długości (""), jeśli użytkownik klinie przycisk Anuluj.

Uwaga   Jeżeli ma wystąpić którykolwiek z argumentów nieobowiązkowych, funkcja InputBox musi zostać użyta w wyrażeniu. Aby opuścić tylko niektóre argumenty., należy pominąć wartości, pozostawiając same przecinki.


MsgBox - funkcja

Wyświetla komunikat w oknie dialogowym, czeka na kliknięcie przycisku, po czym zwraca wartość typu Integer określającą kliknięty przycisk.

Składnia

MsgBox(prompt[, buttons] [, title] [,helpfile, context])

Funkcja MsgBox ma następujące nazwane argumenty:

Argument	Opis
prompt	Argument obowiązkowy. Wyrażenie znakowe wyświetlane jako komunikat w oknie dialogowym. Maksymalna długość prompt wynosi około 1024 znaki, zależnie od szerokości znaków w zastosowanej czcionce. Jeśli prompt składa się z kilku wierszy, należy je rozdzielić, wstawiając znak powrotu karetki (Chr(13)), znak nowego wiersza (Chr(10)) lub kombinację znaków: powrót karetki–nowy wiersz (Chr(13) & Chr(10)).
buttons	Argument nieobowiązkowy. Wyrażenie numeryczne określające liczbę i typ wyświetlanych przycisków i ich rodzaj, styl używanych ikon, identyfikator domyślnego przycisku oraz modalność okna komunikatu. Brak parametru buttons spowoduje przyjęcie wartości domyślnej równej 0.
title	Argument nieobowiązkowy. Wyrażenie znakowe wyświetlane na pasku tytułu okna dialogowego. Brak argumentu title spowoduje, że na pasku tytułu zostanie umieszczona nazwa aplikacji.
helpfile	Argument nieobowiązkowy. Wyrażenie znakowe określające plik Pomocy zawierający pomoc kontekstową. Argument helpfile musi być zawsze podany z argumentem context.
context	Argument nieobowiązkowy. Wyrażenie numeryczne określające identyfikator tematu w pliku Pomocy. Jeśli podany jest argument context, to musi być również podany argument helpfile.
Ustawienia

Ustawienia argumentu buttons są następujące:

Stała	Wartość	Opis
vbOKOnly	0	Wyświetl tylko przycisk OK.
VbOKCancel	1	Wyświetl przyciski OK i Anuluj.
VbAbortRetryIgnore	2	Wyświetl przyciski Przerwij, Ponów i Ignoruj.
VbYesNoCancel	3	Wyświetl przyciski Tak, Nie i Anuluj.
VbYesNo	4	Wyświetl przyciski Tak i Nie.
VbRetryCancel	5	Wyświetl przyciski Ponów i Anuluj.
VbCritical	16	Wyświetl ikonę Komunikat krytyczny.
VbQuestion	32	Wyświetl ikonę Pytanie ostrzegawcze.
VbExclamation	48	Wyświetl ikonę Komunikat ostrzegawczy.
VbInformation	64	Wyświetl ikonę Komunikat informacyjny.
VbDefaultButton1	0	Domyślnym przyciskiem jest przycisk pierwszy.
VbDefaultButton2	256	Domyślnym przyciskiem jest przycisk drugi.
VbDefaultButton3	512	Domyślnym przyciskiem jest przycisk trzeci.
VbDefaultButton4	768	Domyślnym przyciskiem jest przycisk czwarty.
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.
Pierwsza grupa wartości (0–5) opisuje liczbę i typy przycisków; druga grupa (16, 32, 48, 64) opisuje rodzaje ikon; grupa trzecia (0, 256, 512) określa domyślny przycisk okna; grupa czwarta (0, 4096) definiuje modalność okna komunikatu. Tworząc wartość argumentu buttons, z każdej grupy należy wybrać tylko jedną wartość i te wartość zsumować.

Uwaga   Podane stałe są definiowane przez język Visual Basic for Applications i mogą być wykorzystywane w programie zamiast odpowiadających im wartości liczbowych.

Zwracane wartości

Stan	Wartość	Opis
vbOK	1	OK
vbCancel	2	Anuluj
vbAbort	3	Przerwij
vbRetry	4	Ponów
vbIgnore	5	Ignoruj
vbYes	6	Tak
vbNo	7	Nie
Użycie

Kiedy podane są argumenty helpfile i context, to temat Pomocy określony argumentem context jest dostępny dla użytkownika po naciśnięciu klawisza F1. Niektóre aplikacje główne, jak na przykład Microsoft Excel, automatycznie dodają do okna dialogowego przycisk Pomoc.

Jeśli okno dialogowe ma przycisk Anuluj, to naciśnięcie klawisza ESC da ten sam efekt, co naciśnięcie przycisku Anuluj. Jeśli okno dialogowe ma przycisk Pomoc, to można uzyskać pomoc kontekstową na temat tego okna. Jednakże funkcja nie zwróci żadnej wartości, dopóki użytkownik nie kliknie dowolnego innego przycisku.

Uwaga   Jeśli ma wystąpić którykolwiek z argumentów nieobowiązkowych, funkcja MsgBox musi zostać użyta w wyrażeniu. Aby opuścić tylko niektóre argumenty, należy pominąć wartości, pozostawiając same przecinki.


SendKeys - instrukcja

Wysyła do aktywnego okna dane generowane przez naciśnięcie klawiszy, tak jakby zostały one wprowadzone z klawiatury.

Składnia

SendKeys string[, wait]

Instrukcja SendKeys ma następujące nazwane argumenty:

Argument	Opis
string	Argument obowiązkowy. Wyrażenie znakowe określające naciśnięcia klawiszy.
wait	Argument nieobowiązkowy. Wartość typu Boolean określająca typ czekania. Wartość False (domyślnie) oznacza, że sterowanie powróci do procedury zaraz po wysłaniu sekwencji naciśnięć klawiszy. Wartość True oznacza, że sterowanie powróci do procedury po przetworzeniu wysłanych naciśnięć klawiszy.
Użycie

Każdy klawisz jest reprezentowany przez jeden lub więcej znaków. Aby przesłać jeden znak umieszczony na klawiaturze, jako wartość należy podać ten znak. Na przykład, aby przesłać literę A, argumentowi string należy nadać wartość "A". Aby przesłać więcej niż jeden znak, należy dołączać kolejne znaki do ciągu. I tak, aby przesłać litery A, B i C, argumentowi string należy nadać wartość "ABC".

Znaki plus (+), daszek (^), procent (%), tylda (~) i nawiasy okrągłe ( ) mają w instrukcji SendKeys specjalne znaczenie. Aby przesłać dowolny z tych znaków, należy umieścić je w nawiasach klamrowych {}. Na przykład, aby przesłać znak plus, należy napisać{+}. Nawiasy kwadratowe ([ ]) nie mają specjalnego znaczenia w instrukcji SendKeys, jednakże muszą być one umieszczane w nawiasach okrągłych. Mogą one mieć znaczenie w innych aplikacjach, np. przy dynamicznej wymianie danych (DDE). Aby przesłać nawiasy klamrowe, należy wpisać {{} i {}}.

Znaki, które nie są wyświetlane po naciśnięciu klawisza, takie jak ENTER czy TAB, oraz klawisze oznaczające akcje a nie znaki są reprezentowane przez następujące kody:

Klawisz	Kod
BACKSPACE	{BACKSPACE}, {BS} lub {BKSP}
BREAK	{BREAK}
CAPS LOCK	{CAPSLOCK}
DEL lub DELETE	{DELETE} lub {DEL}
STRZAŁKA W DÓŁ	{DOWN}
END	{END}
ENTER	{ENTER}lub ~
ESC	{ESC}
HELP	{HELP}
HOME	{HOME}
INS lub INSERT	{INSERT} lub {INS}
STRZAŁKA W LEWO	{LEFT}
NUM LOCK	{NUMLOCK}
PAGE DOWN	{PGDN}
PAGE UP	{PGUP}
PRINT SCREEN	{PRTSC}
STRZAŁKA W PRAWO	{RIGHT}
SCROLL LOCK	{SCROLLLOCK}
TAB	{TAB}
STRZAŁKA W GÓRĘ	{UP}
F1	{F1}
F2	{F2}
F3	{F3}
F4	{F4}
F5	{F5}
F6	{F6}
F7	{F7}
F8	{F8}
F9	{F9}
F10	{F10}
F11	{F11}
F12	{F12}
F13	{F13}
F14	{F14}
F15	{F15}
F16	{F16}
Aby przesłać kombinację klawisza z klawiszami SHIFT, CTRL, lub ALT, należy poprzedzić kod klawisza odpowiednimi kodami z poniższej tabeli:

Klawisz	Kod
SHIFT	+
CTRL	^
ALT	%
Aby określić, że klawisze SHIFT, CTRL lub ALT mają być wciśnięte w momencie naciskania kilku innych klawiszy, należy kody tych klawiszy ująć w nawias. Na przykład, aby określić, że ma być wciśnięty klawisz SHIFT, podczas naciskania klawiszy E i C,  należy napisać "+(EC)". Aby określić, że klawisz SHIFT ma być wciśnięty tylko podczas naciskania klawisza E, należy napisać "+EC".

Aby określić kolejne naciśnięcia tego samego klawisza, należy napisać{klawisz liczba}. Parametry klawisz i liczba muszą być rozdzielone spacją. Na przykład, {LEFT 42} oznacza, że kod klawisza STRZAŁKA W LEWO ma zostać wysłany 42 razy; {h 10} oznacza, że kod klawisza H zostanie wysłany 10 razy.

Uwaga   Za pomocą funkcji SendKeys nie można wysyłać naciśnięć klawiszy do aplikacji, która nie została zaprojektowana dla systemu Microsoft Windows. Sendkeys nie umożliwia również wysłania klawisza PRINT SCREEN {PRTSC} do żadnej aplikacji.


Tablica znaków (0–127)

0	•	32	[spacja]	64	@	96	`
1	•	33	!	65	A	97	a
2	•	34	"	66	B	98	b
3	•	35	#	67	C	99	c
4	•	36	$	68	D	100	d
5	•	37	%	69	E	101	e
6	•	38	&	70	F	102	f
7	•	39	'	71	G	103	g
8	* *	40	(	72	H	104	h
9	* *	41	)	73	I	105	i
10	* *	42	*	74	J	106	j
11	•	43	+	75	K	107	k
12	•	44	,	76	L	108	l
13	* *	45	-	77	M	109	m
14	•	46	.	78	N	110	n
15	•	47	/	79	O	111	o
16	•	48	0	80	P	112	p
17	•	49	1	81	Q	113	q
18	•	50	2	82	R	114	r
19	•	51	3	83	S	115	s
20	•	52	4	84	T	116	t
21	•	53	5	85	U	117	u
22	•	54	6	86	V	118	v
23	•	55	7	87	W	119	w
24	•	56	8	88	X	120	x
25	•	57	9	89	Y	121	y
26	•	58	:	90	Z	122	z
27	•	59	;	91	[	123	{
28	•	60	<	92	\	124	|
29	•	61	=	93	]	125	}
30	•	62	>	94	^	126	~
31	•	63	?	95	_	127	•
•	Te znaki nie są obsługiwane przez system Microsoft Windows.

* *	Wartości 8, 9, 10 i 13 oznaczają odpowiednio kod znaku cofania (backspace), tabulatora, wysuwu wiersza i powrotu karetki. Znaki te nie mają graficznych odpowiedników, ale w niektórych aplikacjach mogą mieć wpływ na postać wyświetlanego tekstu.


IMEStatus - funkcja

Zwraca wartość typu Integer określającą bieżący tryb Input Method Editor (IME) dla systemu Microsoft Windows; funkcja dostępna tylko w dalekowschodnich wersjach językowych.

Składnia

IMEStatus

Zwracane wartości

Wartości zwracane dla ustawień lokalnych języka japońskiego są następujące:

Stała	Wartość	Opis
vbIMENoOP	0	Brak instalacji trybu IME
vbIMEOn	1	Tryb IME włączony
vbIMEOff	2	Tryb IME wyłączony
vbIMEDisable	3	Tryb IME nie aktywny
vbIMEHiragana	4	Dwubajtowe kodowanie znaków (DBC) - Hirakana
vbIMEKatakanaDbl	5	DBC - Katakana
vbIMEKatakanaSng	6	Jednobajtowe kodowanie znaków (SBC) - Katakana
vbIMEAlphaDbl	7	Alfanumeryczne DBC
vbIMEAlphaSng	8	Alfanumeryczne SBC
Wartości zwracane dla ustawień regionalnych języka chińskiego (tradycyjnego i uproszczonego) są następujące:

Stała	Wartość	Opis
vbIMENoOP	0	Brak instalacji trybu IME
vbIMEOn	1	Tryb IME włączony
vbIMEOff	2	Tryb IME wyłączony
W przypadku ustawień regionalnych dla języka koreańskiego, pierwszych pięć zwracanych bitów jest następujących:

Bit	Wartość	Opis	Wartość	Opis
0	0	Brak instalacji trybu IME	1	Tryb IME zainstalowany
1	0	Tryb IME nie aktywny	1	Tryb IME aktywny
2	0	Tryb IME angielski	1	Tryb Hangeul
3	0	Tryb Banja (SBC)	1	Tryb Junja (DBC)
4	0	Tryb zwykły	1	Tryb konwersji Hanja


W trybie przerwania nie można wykonywać kodu programu.

Tryb przerwania ma miejsce wówczas, gdy wykonywanie kodu programu zostaje zawieszone. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Próbowano uruchomić kod programu z okna dialogowego Makro, ale Visual Basic wykonywał już kod programu, pomimo iż w tej chwili znajduje się w trybie przerwania.

Kontynuuj wykonywanie bieżącego kodu programu lub zakończ go przed uruchomieniem kodu programu z okna dialogowego Makro. Możliwe, że tryb przerwania został wprowadzony niejawnie, na przykład z powodu błędu składni lub błędu wykonania. Można naprawić ten błąd i następnie wybrać przycisk Kontynuuj; nie należy natomiast powracać do okna dialogowego makr i próbować ponownie uruchomić makro.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


W trybie przerwania nie można wykonywać kodu programu.
Nie można wywołać procedury typu Friend z obiektu nie będącego wystąpieniem klasy definiującej. (Błąd 97)

Procedura typu Friend może być wywoływana z modułami, które znajdują się poza klasą, ale są częścią projektu, w którym klasa ta jest zdefiniowana. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Próbowano wywołać procedurę typu Friend pewnej klasy, lecz mimo że poprawnie zdefiniowano typ zmiennej reprezentującej odwołanie, to wskazuje ona na wystąpienie nie będące wystąpieniem danej klasy.

Na przykład, ten błąd może wystąpić, jeśli istnieją dwie klasy, klasax i klasay, i pomyłkowo przypisano wystąpienie klasy klasay do wystąpienia klasy klasax.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można zakończyć trybu projektowania, ponieważ nie można utworzyć formantu.

Przed zakończeniem trybu projektowania muszą być utworzone wszystkie formanty. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Nie udało się utworzyć formantu wskazanego w oknie dialogowym komunikatu o błędzie.

Przejście do wykonywania programu jest możliwe dopiero po utworzeniu i poprawnym dołączeniu wszystkich formantów. Przed powtórzeniem operacji sprawdź, czy są dostępne wszystkie pliki wymagane przez ten formant.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Obiekt nie jest źródłem zdarzeń automatyzacji.

Obiekt musi dostarczyć domyślny interfejs źródłowy, żeby można było pisać procedury obsługi zdarzeń tego obiektu. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Próbowano zapisać procedurę obsługi zdarzenia obiektu, ale poza obiektem zdarzenie to nie jest dostępne.

Przejrzyj dokumentację obiektu. Możliwe, że sposób obsługi określonego zdarzenia jest bardziej skomplikowany.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Operacja jest niedozwolona w bibliotece DLL.

Nie wszystkie instrukcje języka Visual Basic są dozwolone w biblioteca dołączanej dynamicznie (DLL). Ten błąd ma następującą przyczynę i rozwiązanie:

•	Próbowano utworzyć bibliotekę DLL z klasy zawierającej instrukcję, która nie może być wykonana w bibliotece DLL.

Sprawdź klasę, poszukując instrukcji, które nie mogą być wykonywane w bibliotece DLL, np. instrukcji End. Usuń wszystkie takie instrukcje.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nieprawidłowa poza definicją typu Enum.

Enum jest typem służącym do tworzenia grup jawnych stałych (zwanych wyliczeniami), które są ze sobą powiązane. Ten błąd ma następujące przyczyny i rozwiązania:

•	Użyto instrukcji End Enum poza blokiem definicji typu Enum.

Sprawdź, czy pomiędzy ciałem definicji typu Enum a instrukcją End Enum nie ma jakiegoś tekstu.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Dokument ten został otwarty z opcją Wyłącz makra.

Aplikacja główna może włączać lub wyłączać makra. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Dokument został otwarty z opcją Wyłącz makra.

Zamknij dokument i otwórz go ponownie, wybierając opcję Włącz makra.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Bieżący projekt nie odwołuje się do biblioteki zawierającej ten symbol i dlatego symbol ten nie jest zdefiniowany. Czy dodać
Bieżący projekt nie odwołuje się do biblioteki zawierającej ten symbol i dlatego symbol ten nie jest zdefiniowany. Czy dodać odwołanie do tej biblioteki?

Informacje o typach i obiektach są zawarte w bibliotekach. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Definicja tego symbolu znajduje się w bibliotece typów.

Jeżeli chcesz zdefiniować symbol z podanej biblioteki, wybierz przycisk OK, aby dodać do projektu odwołanie do tej biblioteki.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Dla obiektu nie zdefiniowano procedury Property Let.

Nie można przypisać wartości do właściwości, dopóki nie zdefiniowano dla niej metody Property Let. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Próbowano przypisać wartość do właściwości, dla której nie zdefiniowano metody Property Let.

Do tej właściwości nie można przypisać wartości bezpośrednio. Jeżeli użytkownik jest autorem klasy, może zmodyfikować jej interfejs, umieszczając na nim metodę Property Let. W przeciwnym razie powinien skorzystać z dokumentacji składnika, aby dowiedzieć się, czy istnieje jakaś pośrednia metoda przypisywania wartości.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Pomoc niedostępna.

Nie wszystkie błędy są objęte systemem Pomocy. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Wystąpił błąd nie objęty systemem Pomocy.

Przejrzyj plik informacji dodatkowych. W tym pliku często można znaleźć ostatnie uaktualnienia i uzupełnienia Pomocy na temat błędów przerwania.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można przyjąć zdarzeń tego obiektu, ponieważ generuje on już zdarzenia adresowane do maksymalnej dopuszczalnej liczby
Nie można przyjąć zdarzeń tego obiektu, ponieważ generuje on już zdarzenia adresowane do maksymalnej dopuszczalnej liczby odbiorców zdarzeń. (Błąd 96)

Każdy obiekt określa maksymalną liczbę jednoczesnych odbiorców swoich zdarzeń. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Próbowano użyć instrukcji Set w stosunku do zmiennej typu WithEvents formantu na formularzu.

W tym przypadku nie można użyć instrukcji Set w stosunku do zmiennej WithEvents, ponieważ liczba odbiorców tych zdarzeń jest ograniczona.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można odnaleźć punktu wejścia DLL ~ w ~.

Punkt wejścia jest nazwą procedury biblioteki DLL lub liczbą porządkową reprezentującą procedurę. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Biblioteka typów niepoprawnie opisuje ten punkt wejścia, prawdopodobnie błędnie podając jego nazwę lub błędnie określając liczbę porządkową.

Skontaktuj się z dostawcą, aby otrzymać poprawioną bibliotekę typów.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Nie można wykonać wskazanego programu.

Podczas konwersji kodu programu do postaci wykonywalnej konieczne jest użycie dodatkowych programów. Ten błąd ma następujące przyczyny i rozwiązania:

•	Ilość wolnej pamięci lub zasoby systemu są niewystarczające, aby uruchomić generator kodu lub program łączący.

Zamknij jak najwięcej uruchomionych aplikacji, aby zwolnić pamięć i pozostałe zasoby systemu.

•	System Visual Basic został nieprawidłowo zainstalowany.

Ponownie zainstaluj system Visual Basic.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Powtórzone zasoby o tym samym typie i nazwie.

Plik zasobów Windows zazwyczaj zawiera mapy bitowe, ciągi znaków i inne dane wykorzystywane przez aplikacje. Ten błąd ma następującą przyczynę i rozwiązanie:

•	Plik zasobów Windows użyty w projekcie zawiera dwa lub więcej zasobów tego samego typu o takiej samej nazwie, albo też plik ten zawiera zasób, który jest automatycznie tworzony przez system Visual Basic.

Użyj innego pliku zasobów lub odtwórz błędny plik i usuń jeden z powtórzonych zasobów.

W celu uzyskania dodatkowych informacji zaznacz element i naciśnij klawisz F1.


Activate, Deactivate - zdarzenia

Zdarzenie Activate występuje, gdy obiekt staje się oknem aktywnym. Zdarzenie Deactivate występuje, gdy obiekt przestaje być oknem aktywnym.

Składnia

Private Sub obiekt_Activate()

Private Sub obiekt_Deactivate()

Element obiekt reprezentuje wyrażenie obiektowe określające obiekt znajdujący na liście Dotyczy.

Użycie

Obiekt można uaktywnić, stosując w kodzie programu metodę Show.

Zdarzenie Activate może wystąpić tylko wtedy, gdy obiekt jest widoczny. Obiekt UserForm załadowany metodą Load nie jest widoczny, dopóki nie zostanie użyta metoda Show.

Zdarzenia Activate i Deactivate występują tylko w przypadku przenoszenia fokusu w ramach aplikacji. Przenoszenie fokusu na obiekt lub z obiektu w innej aplikacji nie wyzwala żadnego z tych zdarzeń.

Zdarzenie Deactivate nie pojawia się podczas usuwania obiektu.


Initialize - zdarzenie

Występuje po załadowaniu obiektu, ale przed jego uwidocznieniem.

Składnia

Private Sub obiekt_Initialize()

Element obiekt reprezentuje wyrażenie obiektowe określające obiekt z listy Dotyczy.

Użycie

Zdarzenie Initialize wykorzystywane jest zwykle do przygotowania aplikacji lub obiektu UserForm do użycia. Zmiennym przypisywane są wartości początkowe, a położenie i rozmiar formantów mogą ulec zmianie stosownie do wartości inicjujących.


QueryClose - zdarzenie

Występuje przed zamknięciem obiektu UserForm.

Składnia

Private Sub UserForm_QueryClose(anuluj As Integer, tryb As Integer)

Składnia zdarzenia QueryClose zawiera następujące elementy:

Element	Opis
anuluj	Wartość całkowita. Nadanie temu argumentowi wartości różnej od 0 wstrzymuje zdarzenie QueryClose we wszystkich załadowanych formularzach i uniemożliwia zamknięcie obiektu UserForm i aplikacji.
tryb	Wartość lub stała wskazująca przyczyny wystąpienia zdarzenia QueryClose.
Wartości zwracane

Argument tryb zwraca następujące wartości:

Stała	Wartość	Opis
vbFormControlMenu	0	Użytkownik wybrał polecenie Zamknij z menu sterowania obiektu UserForm.
vbFormCode	1	Instrukcja Unload jest wywoływana z kodu programu.
vbAppWindows	2	Zakończenie bieżącej sesji środowiska Windows.
vbAppTaskManager	3	Menedżer zadań systemu Windows zamyka aplikację.
Spis stałych znajdują się w bibliotece obiektowej systemu Visual Basic for Applications w oknie Przeglądarka obiektów. Należy zauważyć, że w oknie Przeglądarka obiektów jest także określona stała vbFormMDIForm, ale nie jest jeszcze ona uwzględniana.

Użycie

Zdarzenie to służy zwykle do sprawdzenia, czy w trakcie zamykania aplikacji na formularzach nie są wykonywane żadne zadania. Na przykład, jeżeli użytkownik nie zapisał nowych danych umieszczonych w obiekcie UserForm, aplikacja może zażądać od użytkownika zapisania tych danych.

Podczas zamykania aplikacji można użyć procedury obsługi zdarzenia QueryClose do ustawienia właściwości Cancel na wartość True, anulując proces zamykania.


Resize - zdarzenie

Występuje, gdy obiekt jest wyświetlany po raz pierwszy lub gdy stan okna danego obiektu ulega zmianie, na przykład gdy obiekt UserForm jest minimalizowany lub przywracany do poprzedniego rozmiaru.

Składnia

Private Sub UserForm_Resize()

Private Sub obiekt_Resize(wysokość As Single, szerokość As Single)

Składnia zdarzenia Resize zawiera następujące elementy:

Element	Opis
obiekt	Wyrażenie obiektowe, określające obiekt z listy Dotyczy.
wysokość	Liczba określająca nową wysokość formularza.
szerokość	Liczba określająca nową szerokość formularza.
Użycie

Procedura obsługi zdarzenia Resize służy do zmiany położenia lub rozmiaru formantu, gdy zmienia się rozmiar obiektu nadrzędnego UserForm. Procedurę tego zdarzenia można także zastosować do ponownego obliczenia wartości zmiennej lub właściwości.


Terminate - zdarzenie

Występuje, gdy wszystkie odwołania do wystąpienia obiektu są usuwane z pamięci przez ustawienie na wartość Nothing wszystkich zmiennych, które odwołują się do tego obiektu, lub gdy ostatnie odwołanie do obiektu wychodzi poza zakres.

Składnia

Private Sub obiekt_Terminate( )

Element obiekt reprezentuje wyrażenie obiektowe określające obiekt z listy Dotyczy.

Użycie

Zdarzenie Terminate występuje po usunięciu obiektu z pamięci. Zdarzenie Terminate nie jest wyzwalane przy usuwaniu z pamięci wystąpień obiektu UserForm lub klasy w sytuacji, gdy aplikacja nie zakończyła się w sposób prawidłowy. Na przykład, jeżeli aplikacja wywoła instrukcję End przed usunięciem z pamięci wszystkich istniejących wystąpień klasy lub obiektu UserForm, to dla tej klasy lub obiektu UserForm zdarzenie Terminate nie jest wyzwalane.


Zdarzenia Activate i Deactivate - przykład

W poniższym fragmencie programu użyto dwóch obiektów UserForm o nazwach Form1 i Form2. Podane procedury należy skopiować do modułu zawierającego formularz Form1, a następnie dodać formularz Form2. Podpis formularza o nazwie Form1 jest tworzony w procedurze obsługi zdarzenia Activate. Kiedy użytkownik kliknie obszar klienta formularza Form1, zostanie załadowany i pokazany formularz Form2, wyzwalając przy tym zdarzenie Deactivate formularza Form1, które z kolei zmieni podpisy formularzy.

' Uaktywnij zdarzenie Activate formularza Form1

Private Sub UserForm_Activate()

    Form1.Caption = "Kliknij obszar klienta"

End Sub

' Zdarzenie Click formularza Form1

Private Sub UserForm_Click()

    Load Form2

    Form2.StartUpPosition = 3

    Form2.Show

End Sub

' Zdarzenie Deactivate formularza Form1

Private Sub UserForm_Deactivate()

    Form1.Caption = "Właśnie straciłem fokus!"

    Form2.Caption = "Fokus właśnie opuścił Form1 i przeszedł do mnie."

End Sub


Zdarzenie Initialize - przykład

W poniższym przykładzie zakłada się, że w programie istnieją dwa obiekty UserForm. W zdarzeniu Initialize formularza Form1 zostaje załadowany i pokazany formularz Form2. Kiedy użytkownik kliknie formularz Form2, zostanie on ukryty, a pojawi się formularz Form1. Po kliknięciu formularza Form1, formularz Form2 pokaże się znowu.

' To jest procedura obsługi zdarzenia Initialize formularza Form1

Private Sub UserForm_Initialize()

Load Form2

Form2.Show

End Sub

' To jest zdarzenie Click formularza Form2

Private Sub UserForm_Click()

Form2.Hide

End Sub

' To jest zdarzenie Click formularza Form1

Private Sub UserForm_Click()

Form2.Show

End Sub


Zdarzenie QueryClose - przykład

Poniższy fragment programu zmusza użytkownika do kliknięcia obszaru klienta obiektu UserForm w celu zamknięcia tego formularza. Jeżeli użytkownik spróbuje użyć pola Zamknij na pasku tytułu, wówczas parametr Cancel zostanie ustawiony na wartość niezerową, co uniemożliwi zamknięcie formularza. Jeżeli jednak użytkownik kliknął obszar klienta, wówczas parametr CloseMode przyjmuje wartość 1 i wykona się instrukcja Unload Me.

Private Sub UserForm_Activate()

    Form1.Caption = "Musisz mnie kliknąć, żeby mnie zabić!"

End Sub

Private Sub UserForm_Click()

  Unload Me

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

    'Nie pozwól użytkownikowi na zamknięcie przy użyciu pola Zamknij na pasku tytułu.

    If CloseMode <> 1 Then Cancel = 1

    Form1.Caption = "Pole Zamknij nie zadziała! Kliknij mnie!"

End Sub


Zdarzenie Resize - przykład

W poniższym przykładzie wykorzystano zdarzenia Activate i Click, aby zademonstrować wyzwalanie zdarzenia Resize obiektu UserForm. W miarę jak użytkownik klika na formularzu obszar klienta, formularz zwiększa się lub zmniejsza, a jego nowa wysokość jest podawana na pasku tytułu. Zauważmy, że do przechowania początkowej wysokości obiektu UserForm użyto właściwości Tag.

' Zdarzenie Activate formularza Form1

Private Sub UserForm_Activate()

Form1.Caption = "Kliknij mnie, bym stał się wyższy!"

Tag = Height	' Zapamiętaj wysokość początkową.

End Sub

' Zdarzenie Click formularza Form1

Private Sub UserForm_Click()

Dim NowaWysokość As Single

NowaWysokość = Height

' Jeżeli formularz jest mały, powiększ go.

If NowaWysokość = Val(Tag) Then

Height = Val(Tag) * 2

Else

' Jeżeli formularz jest duży, zmniejsz go.

Height = Val(Tag)

End If

End Sub

' Zdarzenie Resize formularza Form1

Private Sub UserForm_Resize()

Form1.Caption = "Nowa wysokość: " & Height & "  " & "Kliknij mnie, by zmienić mój rozmiar!"

End Sub


Zdarzenie Terminate - przykład

Poniższe procedury obsługi zdarzeń sprawiają, że kiedy użytkownik kliknie obszar klienta, aby zamknąć formularz, wówczas obiekt UserForm przez kilka sekund wydaje sygnał dźwiękowy.

Private Sub UserForm_Activate()

    Form1.Caption = "Kliknij mnie, by mnie zabić!"

End Sub

Private Sub UserForm_Click()

  Unload Me

End Sub

Private Sub UserForm_Terminate()

    Dim Licz As Integer

    For Licz = 1 To 100

        Beep

    Next

End Sub


Hide - metoda

Ukrywa obiekt, ale go nie usuwa.

Składnia

obiekt.Hide

Argument obiekt reprezentuje wyrażenie obiektowe, którego wartość odpowiada obiektowi z listy Dotyczy. Jeśli argument obiekt jest pominięty, przyjmowany jest domyślnie obiekt UserForm posiadający fokus.

Użycie

Ukrycie obiektu polega na usunięciu go z ekranu i ustawieniu jego właściwości Visible na False. Formanty ukrytego obiektu nie są dostępne dla użytkownika, ale mogą być używane programowo przez wykonywaną aplikację, inne procesy komunikujące się z aplikacją poprzez mechanizm dynamicznej wymiany danych (DDE) lub automatyzację oraz przez zdarzenia formantu Timer.

Gdy ukryty zostanie obiekt UserForm, aplikacja pozostaje niedostępna dla użytkownika, dopóki całkowicie nie zakończy się wykonywanie kodu procedury obsługi zdarzenia, która spowodowała ukrycie obiektu UserForm.

Jeśli obiekt UserForm nie jest załadowany w momencie wykonywania metody Hide, to obiekt UserForm zostaje załadowany i pozostaje nie wyświetlony.


Load - instrukcja

Ładuje obiekt, ale go nie wyświetla.

Składnia

Load obiekt

Argument obiekt reprezentuje wyrażenie obiektowe, którego wartość odpowiada obiektowi z listy Dotyczy.

Użycie

Obiekt po załadowaniu znajduje się w pamięci, ale nie jest widoczny. Aby go wyświetlić, należy zastosować metodę Show. Dopóki obiekt jest niewidoczny, nie jest dostępny dla użytkownika, ale jest dostępny programowo w swojej procedurze obsługi zdarzenia Initialize.


PrintForm - metoda

Wysyła do drukarki dokładny obraz obiektu UserForm, bit po bicie.

Składnia

obiekt.PrintForm

Argument obiekt reprezentuje wyrażenie obiektowe, którego wartość odpowiada obiektowi z listy Dotyczy. Jeśli argument obiekt jest pominięty, przyjmowany jest domyślnie obiekt UserForm posiadający fokus.

Użycie

Metoda PrintForm drukuje wszystkie widoczne obiekty i mapę bitową obiektu UserForm. Metoda PrintForm drukuje również rysunki wstawione do obiektu UserForm.

Drukarka, jakiej używa metoda PrintForm, jest określona przez ustawienia Panelu sterowania systemu operacyjnego.


Show - metoda

Wyświetla obiekt UserForm.

Składnia

[obiekt.]Show

Opcjonalny argument obiekt reprezentuje wyrażenie obiektowe, którego wartość odpowiada obiektowi z listy Dotyczy. Jeśli argument obiekt jest pominięty, przyjmowany jest domyślnie obiekt UserForm związany z aktywnym modułem.

Użycie

Jeśli podany obiekt nie jest załadowany w momencie wykonywania metody Show, to system Visual Basic automatycznie go ładuje.

Obiekt UserForm jest zawsze modalny; z tego powodu użytkownik musi wykonać jakąś czynność na formularzu, zanim będzie mógł używać jakiegokolwiek innego elementu aplikacji. Dopóki obiekt UserForm nie zostanie ukryty lub usunięty, nie jest wykonywany żaden inny kod programu.

Gdy wyświetlany jest obiekt UserForm, inne formularze są nieaktywne; jednak inne aplikacje wciąż są dostępne.


Unload - instrukcja

Usuwa obiekt z pamięci.

Składnia

Unload obiekt

Obowiązkowy argument obiekt reprezentuje wyrażenie obiektowe, którego wartość odpowiada obiektowi z listy Dotyczy.

Użycie

Usuwany obiekt zostaje wymazany z pamięci, a cała pamięć z nim związana zostaje zwolniona. Obiekt nie jest dostępny ani dla użytkownika, ani programowo, dopóki nie zostanie ponownie załadowany do pamięci przy użyciu instrukcji Load.


WhatsThisMode - metoda

Powoduje, że wskaźnik myszy zmienia się na wskaźnik Co to jest? i przygotowuje aplikację do wyświetlenia tekstu Pomocy na temat wybranego obiektu.

Składnia

obiekt.WhatsThisMode

Argument obiekt reprezentuje wyrażenie obiektowe, którego wartość odpowiada obiektowi z listy Dotyczy. Jeśli argument obiekt jest pominięty, przyjmowany jest domyślnie obiekt UserForm posiadający fokus.

Użycie

Wykonanie metody WhatsThisMode przenosi aplikację do takiego samego stanu, jak kliknięcie przycisku Co to jest? na pasku tytułowym. Gdy użytkownik kliknie obiekt, właściwość WhatsThisHelpID tego obiektu jest używana do wywołania kontekstowej Pomocy.


Metoda Hide - przykład

W tym przykładzie zakłada się, że w programie zostały wcześniej utworzone dwa obiekty UserForm: Formularz1 i Formularz2. W obsłudze zdarzenia Initialize dla formularza Formularz1 ładowany i pokazywany jest Formularz2. W momencie, gdy użytkownik kliknie Formularz2, formularz ten zostanie ukryty i pojawi się Formularz1. Następnie, jeśli użytkownik kliknie Formularz1, to Formularz2 pojawi się ponownie.

' To jest procedura obsługi zdarzenia Initialize dla formularza Formularz1.

Private Sub UserForm_Initialize()

Load Formularz2

Formularz2.Show

End Sub

' To jest procedura obsługi zdarzenia Click dla formularza Formularz2.

Private Sub UserForm_Click()

Formularz2.Hide

End Sub

' To jest procedura obsługi zdarzenia Click dla formularza Formularz1.

Private Sub UserForm_Click()

Formularz2.Show

End Sub


Instrukcja Load - przykład

W tym przykładzie zaprezentowano możliwość ładowania formularza Formularz2 w trakcie obsługi zdarzenia Initialize dla formularza Formularz1. Każde kolejne kliknięcie formularza Formularz2 przez użytkownika spowoduje pojawienie się formularza Formularz1.

' To jest procedura obsługi zdarzenia Initialize dla formularza Formularz1.

Private Sub UserForm_Initialize()

Load Formularz2

Formularz2.Show

End Sub

' To jest procedura obsługi zdarzenia Click dla formularza Formularz2.

Private Sub UserForm_Click()

Formularz2.Hide

End Sub

' To jest procedura obsługi zdarzenia Click dla formularza Formularz1.

Private Sub UserForm_Click()

Formularz2.Show

End Sub


Metoda PrintForm - przykład

W tym przykładzie zademonstrowano drukowanie obszaru klienta na formularzu, jako reakcję na kliknięcie tego formularza przez użytkownika.

' To jest procedura obsługi zdarzenia Click dla formularza Formularz1.

Private Sub UserForm_Click()

Formularz1.PrintForm

End Sub


Metoda Show - przykład

W tym przykładzie zakłada się, że w programie zostały wcześniej utworzone dwa obiekty UserForm: Formularz1 i Formularz2. W obsłudze zdarzenia Initialize dla formularza Formularz1 ładowany i pokazywany jest formularz Formularz2. W momencie, gdy użytkownik kliknie Formularz2, formularz ten zostanie ukryty i pojawi się Formularz1. Następnie, jeśli użytkownik kliknie Formularz1, to Formularz2 pojawi się ponownie.

' To jest procedura obsługi zdarzenia Initialize dla formularza Formularz1.

Private Sub UserForm_Initialize()

Load Formularz2

Formularz2.Show

End Sub

' To jest procedura obsługi zdarzenia Click dla formularza Formularz2.

Private Sub UserForm_Click()

Formularz2.Hide

End Sub

' To jest procedura obsługi zdarzenia Click dla formularza Formularz1.

Private Sub UserForm_Click()

Formularz2.Show

End Sub


Instrukcja Unload - przykład

W tym przykładzie zakłada się, że w programie zostały wcześniej utworzone dwa obiekty UserForm: Formularz1 i Formularz2. W obsłudze zdarzenia Initialize dla formularza Formularz1 ładowany i pokazywany jest formularz Formularz2. W momencie, gdy użytkownik kliknie Formularz2, formularz ten zostanie usunięty i pojawi się Formularz1. Następnie, jeśli użytkownik kliknie Formularz1, to formularz ten także zostanie usunięty.

' To jest procedura obsługi zdarzenia Initialize dla formularza Formularz1.

Private Sub UserForm_Initialize()

Load Formularz2

Formularz2.Show

End Sub

' To jest procedura obsługi zdarzenia Click dla formularza Formularz2.

Private Sub UserForm_Click()

Unload Formularz2

End Sub

' To jest procedura obsługi zdarzenia Click dla formularza Formularz1.

Private Sub UserForm_Click()

Unload Formularz1

End Sub


Metoda WhatsThisMode - przykład

W tym przykładzie zaprezentowano możliwość zamiany postaci wskaźnika myszy na wskaźnik ”Co to jest” (znak zapytania) w momencie, gdy użytkownik kliknie stworzony przez siebie obiekt UserForm. Jeżeli obie właściwości "WhatsThisHelp" i "WhatsThisButton" będą ustawione na True w oknie dialogowym Właściwości, to przedstawione w poniższym przykładzie wywołanie metody WhatsThisMode nie przyniesie żadnego efektu.

Private Sub UserForm_Click()

' Zamień postać wskaźnika myszy na wskaźnik "Co to jest" (znak zapytania).

WhatsThisMode

End Sub


Obiekt UserForm, kolekcja UserForms

Obiekt UserForm jest oknem lub oknem dialogowym, które stanowi część interfejsu użytkownika aplikacji.

Kolekcja UserForms jest kolekcją, której elementy reprezentują każdy z załadowanych w aplikacji obiektów UserForm. Kolekcja UserForms ma właściwość Count, właściwość Item oraz metodę Add. Właściwość Count określa liczbę elementów w kolekcji; właściwość Item (składowa domyślna) określa wskazaną składową kolekcji; metoda Add umieszcza w kolekcji nowy element UserForm.

Składnia

UserForm

UserForms[.Item](indeks)

Argument indeks reprezentuje liczbę całkowitą z zakresu od 0 do UserForms.Count – 1. Właściwość Item kolekcji jest składową domyślną kolekcji UserForms i nie wymaga podania.

Użycie

Kolekcji UserForms można używać do wyliczania wszystkich formularzy użytkownika załadowanych w aplikacji. Kolekcja ta identyfikuje wbudowaną, globalną zmienną o nazwie UserForms. Wartość UserForms(indeks) można przekazać do funkcji, której argument jest klasy UserForm.

Formularze użytkownika mają właściwości, które określają wygląd formularzy, czyli atrybuty takie jak położenie, rozmiar i kolor, oraz sposób działania formularzy.

Formularze użytkownika mogą również odpowiadać na zdarzenia zainicjowane przez użytkownika lub wyzwolone przez system. Na przykład, można napisać kod procedury obsługi zdarzenia Initialize obiektu UserForm, aby przed wyświetleniem obiektu UserForm zainicjować zmienne poziomu modułu.

Ponadto, obok właściwości i zdarzeń, można w kodzie programu stosować metody służące do programowego operowania formularzami użytkownika. Na przykład, do zmiany położenia i rozmiaru obiektu UserForm można użyć metody Move.

Projektując formularze użytkownika, należy ustawić właściwość BorderStyle w celu zdefiniowania obramowania formularza oraz właściwość Caption w celu umieszczenia tekstu na pasku tytułu. Ponadto, w kodzie programu można użyć metod Show i Hide, aby w czasie wykonywania przekazywać lub ukrywać obiekt UserForm.

Obiekt UserForm jest typem danych Object. Zmienne można deklarować jako typu UserForm przed przypisaniem do nich wystąpienia typu UserForm zadeklarowanego w czasie projektowania. Podobnie, argument przekazany do procedury może być typu UserForm. Programowo można tworzyć wiele wystąpień formularzy użytkownika, używając słowa kluczowego New w instrukcjach Dim, Set i Static.

Za pośrednictwem kolekcji Controls można uzyskać dostęp do kolekcji formantów w obiekcie UserForm. Na przykład, aby ukryć wszystkie formanty obiektu UserForm, można zastosować kod programu podobny do przedstawionego poniżej:

For Each Formant in UserForm1.Controls

Formant.Visible = False

Next Formant


Calendar - właściwość

Zwraca lub ustawia wartość określającą typ kalendarza stosowanego w projekcie.

Dla właściwości Calendar można używać jednego z dwóch ustawień:

Ustawienie	Wartość	Opis
vbCalGreg	0	Stosowanie kalendarza Gregoriańskiego (domyślne).
vbCalHijri	1	Stosowanie kalendarza Hijri.
Uwagi

Właściwość Calendar może być ustawiana tylko programowo. Na przykład, aby ustawić kalendarz Hijri, należy podać:

Calendar = vbCalHijri


StartUpPosition - właściwość

Zwraca lub ustawia wartość określającą umiejscowienie obiektu UserForm, gdy jest on wyświetlany po raz pierwszy.

Dla właściwości StartUpPosition można używać jednego z następujących ustawień:

Ustawienie	Wartość	Opis
Manual	0	Bez konkretnego położenia początkowego.
CenterOwner	1	Wyśrodkowany względem elementu, do którego należy obiekt UserForm.
CenterScreen	2	Wyśrodkowany względem całego ekranu.
Windows Default	3	Umieszczony w górnym lewym rogu ekranu.
Uwagi

Właściwość StartUpPosition można ustawiać programowo lub z okna Właściwości.


WhatsThisButton - właściwość

Zwraca wartość typu Boolean określającą, czy na pasku tytułowym obiektu UserForm ma się pojawić przycisk Co to jest? W czasie wykonywania jest to właściwość przeznaczona tylko do odczytu.

Użycie

Właściwość WhatsThisButton ma następujące ustawienia:

Ustawienie	Opis
True	Przycisk Co to jest? jest widoczny.
False	(Domyślne) Przycisk Co to jest? jest niewidoczny.
Uwagi

Jeśli właściwość WhatsThisButton ma wartość True, to właściwość WhatsThisHelp też musi mieć wartość True.


WhatsThisHelp - właściwość

Zwraca wartość typu Boolean określającą, czy pomoc kontekstowa używa podręcznego okna Pomocy systemu Windows 95, czy też głównego okna Pomocy. W czasie wykonywania jest to właściwość przeznaczona tylko do odczytu.

Użycie

Właściwość WhatsThisHelp ma następujące ustawienia:

Ustawienie	Opis
True	Aplikacja używa jednej z technik „Co to jest?” do uruchomienia systemu Pomocy Windows i ładuje temat określony przez właściwość WhatsThisHelpID.
False	(Domyślne) Aplikacja używa klawisza F1 do uruchomienia systemu Pomocy Windows i ładuje temat Pomocy określony przez właściwość HelpContextID.
Uwagi

W aplikacji dostępne są dwie techniki dostępu do Pomocy „Co to jest?” Dla wszystkich właściwość WhatsThisHelp musi być ustawiona na True.

•	Umieszczenie przycisku Co to jest? na pasku tytułu obiektu UserForm Formularza użytkownika za pomocą właściwości WhatsThisButton. Wskaźnik myszy przyjmuje kształt „Co to jest?” (strzałka ze znakiem zapytania). Wyświetlany temat jest określony przez właściwość WhatsThisHelpID formantu klikniętego przez użytkownika.

•	Wywołanie metody WhatsThisMode obiektu UserForm. Program zachowuje się tak samo, jak po kliknięciu przycisku Co to jest?, ale bez użycia przycisku. Tę metodę można wywołać na przykład po wybraniu polecenia z menu aplikacji.


Właściwość StartUpPosition - przykład

W tym przykładzie wykorzystano instrukcję Load i metodę Show w zdarzeniu Click formularza UserForm1 do załadowania formularza UserForm2 o właściwości StartUpPosition ustawionej na wartość 3 (oznaczającą położenie domyślne w systemie Windows).  Następnie metoda Show sprawia, iż formularz UserForm2 staje się widoczny.

Private Sub UserForm1_Click()

Load UserForm2

UserForm2.StartUpPosition = 3

UserForm2.Show

End Sub


Nie można odnaleźć słowa kluczowego

W Pomocy systemu Visual Basic nie można odnaleźć zaznaczonego słowa kluczowego. Słowo kluczowe jest błędnie napisane, zaznaczono zbyt dużo lub za mało tekstu lub też podane słowo nie jest słowem kluczowym języka Visual Basic.

Słowo kluczowe, na temat którego potrzebna jest Pomoc, może być zawarte w bibliotece obiektowej, do której nie istnieje odwołanie. Sprawdź, czy są ustawione odwołania do bibliotek obiektów dla wszystkich obiektów używanych w kodzie programu.

Aby uzyskać Pomoc na temat słowa kluczowego, najłatwiej ustawić punkt wstawiania wewnątrz tego słowa i nacisnąć klawisz F1. Nie trzeba zaznaczać całego słowa kluczowego. Jeśli zostanie zaznaczona tylko część słowa lub też zaznaczenie obejmie więcej niż pojedyncze słowo, to potrzebny temat nie zostanie odnaleziony w Pomocy.

Informacje na temat właściwości Value są wyświetlane, jeśli przy naciskaniu klawisza F1 punkt wstawiania będzie ustawiony między literami "a" i "l" w słowie kluczowym Value, jak pokazano na poniższym przykładzie.

Worksheets(1).Range ("A2").value=3.14159

Aby użyć wbudowanego w system okna dialogowego służącego do wyszukiwania tematów Pomocy, wybierz polecenie Spis treści i indeks z menu Pomoc.


Collection (Przeglądarka obiektów)

Moduł Collection zawiera procedury przeznaczone do wykonywania operacji na obiekcie Collection. Procedury te mogą być używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych procedurach:

1	Wybierz procedurę spośród elementów listy Składowe 'Collection'.

2	Kliknij przycisk [image].


ColorConstants (Przeglądarka obiektów)

Moduł Color Constants zawiera predefiniowane stałe opisujące kolory. Stałe te mogą być używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych stałych:

1	Wybierz stałą spośród elementów listy Składowe 'ColorConstants'.

2	Kliknij przycisk [image].


Constants (Przeglądarka obiektów)

Moduł Constants zawiera różnorakie stałe. Stałe te mogą być używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych stałych:

1	Wybierz stałą spośród elementów listy Składowe 'Constants'.

2	Kliknij przycisk [image].


Conversion (Przeglądarka obiektów)

Moduł Conversion zawiera procedury służące do wykonywania różnych konwersji. Procedury te mogą być używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych procedurach:

1	Wybierz procedurę spośród elementów listy Składowe 'Conversion'.

2	Kliknij przycisk [image].

Uwaga   Podczas pracy ze zmiennymi typu Variant, jawne konwersje typów danych są niepotrzebne.


DateTime (Przeglądarka obiektów)

Moduł DateTime zawiera procedury i właściwości używane do operacji na datach i godzinach. Mogą być one używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych procedurach lub właściwościach:

1	Wybierz procedurę lub właściwość spośród elementów listy Składowe 'DateTime'.

2	Kliknij przycisk [image].


ErrObject (Przeglądarka obiektów)

Moduł ErrObject zawiera procedury i właściwości służące do identyfikacji i obsługi błędów wykonania programu przy użyciu obiektu Err. Mogą być one używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych procedurach lub właściwościach:

1	Wybierz procedurę lub właściwość spośród elementów listy Składowe 'ErrObject'.

2	Kliknij przycisk [image].


FileSystem (Przeglądarka obiektów)

Moduł FileSystem zawiera procedury używane do wykonywania operacji na plikach, katalogach, folderach oraz operacji systemowych. Procedury te mogą być używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych procedurach:

1	Wybierz procedurę spośród elementów listy Składowe 'FileSystem'.

2	Kliknij przycisk [image].


Financial (Przeglądarka obiektów)

Moduł Financial zawiera procedury używane do wykonywania operacji finansowych. Procedury te mogą być używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych procedurach:

1	Wybierz procedurę spośród elementów listy Składowe 'Financial'.

2	Kliknij przycisk [image].


Global (Przeglądarka obiektów)

Moduł Global zawiera procedury i właściwości używane do wykonywania operacji na obiekcie UserForm. Mogą być one używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych procedurach i właściwościach:

1	Wybierz procedurę spośród elementów listy Składowe 'Global'.

2	Kliknij przycisk [image].


Information (Przeglądarka obiektów)

Moduł Information zawiera procedury używane do przekazywania, sprawdzania i weryfikacji informacji. Procedury te mogą być używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych procedurach:

1	Wybierz procedurę spośród elementów listy Składowe 'Information'.

2	Kliknij przycisk [image].


Interaction (Przeglądarka obiektów)

Moduł Interaction zawiera procedury używane do komunikowania się z obiektami, aplikacjami i systemami. Procedury te mogą być używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych procedurach:

1	Wybierz procedurę spośród elementów listy Składowe 'Interaction'.

2	Kliknij przycisk [image].


KeycodeConstants (Przeglądarka obiektów)

Moduł KeyCodeConstants zawiera predefiniowane stałe dla kodów klawiszy. Stałe te mogą być używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych stałych:

1	Wybierz stałą spośród elementów listy Składowe 'KeyCodeConstants'.

2	Kliknij przycisk [image].


Math (Przeglądarka obiektów)

Moduł Math zawiera procedury używane do wykonywania operacji matematycznych. Procedury te mogą być używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych procedurach:

1	Wybierz procedurę spośród elementów listy Składowe 'Math'.

2	Kliknij przycisk [image].


String (Przeglądarka obiektów)

Moduł String zawiera procedury służące do operacji na ciągach znaków. Procedury te mogą być używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych procedurach:

1	Wybierz procedurę spośród elementów listy Składowe 'String'.

2	Kliknij przycisk [image].


SystemColorConstants (Przeglądarka obiektów)

Moduł System ColorConstants zawiera stałe identyfikujące różne części graficznego interfejsu użytkownika. Stałe te mogą być używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych stałych:

1	Wybierz stałą spośród elementów listy Składowe 'SystemColorConstants'.

2	Kliknij przycisk [image].


VbAppWinStyle (Przeglądarka obiektów)

Wyliczenie VbAppWinStyle zawiera stałe wykorzystywane przez funkcję Shell do kontrolowania stylu okna aplikacji. Stałe te mogą być używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych stałych:

1	Wybierz stałą spośród elementów listy Składowe 'VbAppWinStyle'.

2	Kliknij przycisk [image].


VbCalendar (Przeglądarka obiektów)

Wyliczenie VbCalendar zawiera stałe używane do określenia typu kalendarza używanego przez system Visual Basic. Stałe te mogą być używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych stałych:

1	Wybierz stałą spośród elementów listy Składowe 'VbCalendar'.

2	Kliknij przycisk [image].


VbCompareMethod (Przeglądarka obiektów)

Wyliczenie VbCompareMethod zawiera stałe używane do określenia sposobu porównywania ciągów znaków podczas korzystania z funkcji Instr i StrComp. Stałe te mogą być używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych stałych:

1	Wybierz stałą spośród elementów listy Składowe 'VbCompareMethod'.

2	Kliknij przycisk [image].


VbDayOfWeek (Przeglądarka obiektów)

Wyliczenie VbDayOfWeek zawiera stałe używane do identyfikacji dni tygodnia podczas korzystania z funkcji DateDiff, DatePart i Weekday. Stałe te mogą być używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych stałych:

1	Wybierz stałą spośród elementów listy Składowe 'VbDayOfWeek'.

2	Kliknij przycisk [image].


VbFileAttribute (Przeglądarka obiektów)

Wyliczenie VbFileAttribute zawiera stałe używane do identyfikacji atrybutów plików wykorzystywanych przez funkcje Dir, GetAttr i SetAttr. Stałe te mogą być używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych stałych:

1	Wybierz stałą spośród elementów listy Składowe 'VbFileAttribute'.

2	Kliknij przycisk [image].


VbFirstWeekOfYear (Przeglądarka obiektów)

Wyliczenie VbFirstWeekOfYear zawiera stałe używane do określenia, jak podczas korzystania z funkcji DateDiff i DatePart wyznaczany jest pierwszy tydzień roku. Stałe te mogą być używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych stałych:

1	Wybierz stałą spośród elementów listy Składowe 'VbFirstWeekOfYear'.

2	Kliknij przycisk [image].


VbIMEStatus (Przeglądarka obiektów)

Wyliczenie VbIMEStatus, dostępne jedynie w dalekowschodnich wersjach programu, zawiera stałe używane podczas korzystania z funkcji IMEStatus do określania rodzaju edytora IME (Input Method Editor). Stałe te mogą być używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych stałych:

1	Wybierz stałą spośród elementów listy Składowe 'VbIMEStatus'.

2	Kliknij przycisk [image].


VbMsgBoxResult (Przeglądarka obiektów)

Wyliczenie VbMsgBoxResult zawiera stałe używane do określania, który przycisk został wciśnięty w oknie dialogowym wyświetlonym za pomocą funkcji MsgBox. Stałe te mogą być używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych stałych:

1	Wybierz stałą spośród elementów listy Składowe 'VbMsgBoxResult'.

2	Kliknij przycisk [image].


VbMsgBoxStyle (Przeglądarka obiektów)

Wyliczenie VbMsgBoxStyle zawiera stałe używane do określania zachowania się okna dialogowego oraz wyświetlanych w nim symboli i przycisków, gdy okno to jest wyświetlane za pomocą funkcji MsgBox. Stałe te mogą być używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych stałych:

1	Wybierz stałą spośród elementów listy Składowe 'VbMsgBoxStyle'.

2	Kliknij przycisk [image].


VbQueryClose (Przeglądarka obiektów)

Wyliczenie VbQueryClose zawiera stałe używane do określania przyczyny wystąpienia zdarzenia QueryClose. Stałe te mogą być używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych stałych:

1	Wybierz stałą spośród elementów listy Składowe 'VbQueryClose'.

2	Kliknij przycisk [image].


VbStrConv (Przeglądarka obiektów)

Wyliczenie VbStrConv zawiera stałe używane do określania typu konwersji wykonywanych na ciągach znaków za pomocą funkcji StrConv. Stałe te mogą być używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych stałych:

1	Wybierz stałą spośród elementów listy Składowe 'VbStrConv'.

2	Kliknij przycisk [image].


VbVarType (Przeglądarka obiektów)

Wyliczenie VbVarType zawiera stałe używane do identyfikacji różnych typów danych, które mogą być zawarte w zmiennej typu Variant. Stałe te są zgodne z wartościami zwracanymi przez funkcję VarType i mogą być używane w dowolnym miejscu programu.

Aby uzyskać informacje o poszczególnych stałych:

1	Wybierz stałą spośród elementów listy Składowe 'VbVarType'.

2	Kliknij przycisk [image].


Obiekt Collection - przykład

W tym przykładzie tworzony jest obiekt Collection o nazwie MojeKlasy, a następnie okno dialogowe, w którym użytkownicy mogą dodawać do tej kolekcji obiekty. Aby zobaczyć działanie tego przykładu, należy z menu Wstaw wybrać polecenie Moduł klasy, po czym na poziomie modułu klasy Class1 zadeklarować zmienną publiczną o nazwie InstanceName (czyli należy wpisać: Public InstanceName). Zmienna ta będzie przechowywać nazwy kolejnych wystąpień klasy. Należy pozostawić domyślną nazwę klasy Class1. Poniższy kod programu należy skopiować do sekcji (Ogólne) innego modułu, a następnie rozpocząć ten moduł instrukcją ClassNamer umieszczoną w pewnej procedurze. (Ten przykład będzie działał tylko z takimi aplikacjami głównymi, które obsługują klasy.)

Sub ClassNamer()

Dim MojeKlasy As New Collection	' Utwórz obiekt Collection.

Dim Num	' Licznik do identyfikowania kluczy.

Dim Kom As String	' Zmienna na tekst kierowany do użytkownika.

Dim Nazwa, MojObiekt, ListaNazw	' Zmienne wariantowe przechowujące informacje.

Do

Dim Inst As New Class1	' Utwórz nowe wystąpienie klasy Class1.

Num = Num + 1	' Zwiększ licznik o 1 i pobierz nazwę.

Kom = "Wprowadź nazwę tego obiektu." & Chr(13) _

 & "Aby zobaczyć nazwy z kolekcji, naciśnij Anuluj."

Nazwa = InputBox(Kom, "Nazwy elementów kolekcji")

Inst.InstanceName = Nazwa	' Wstaw nazwę do wystąpienia obiektu.

' Jeśli użytkownik wprowadził nazwę, dodaj ją do kolekcji.

If Inst.InstanceName <> "" Then

' Dodaj do kolekcji nazwany obiekt.

MojeKlasy.Add item := Inst, key := CStr(Num)

End If

' Wyczyść bieżące odwołanie, przygotowując je na nową wartość.

Set Inst = Nothing

Loop Until Nazwa = ""

For Each MojObiekt In MojeKlasy	' Utwórz listę nazw.

ListaNazw = ListaNazw & MojObiekt.InstanceName & Chr(13)

Next MojObiekt

' Wyświetl listę nazw w oknie komunikatu.

MsgBox ListaNazw, , "Nazwy obiektów z kolekcji MojeKlasy"

For Num = 1 To MojeKlasy.Count	' Usuń nazwę z kolekcji.

MojeKlasy.Remove 1	' Ponieważ kolekcje są przeindeksowywane

' automatycznie, w każdej iteracji

Next	' usuń pierwszy element kolekcji.

End Sub


Obiekt Err - przykład

W tym przykładzie wykorzystano właściwości obiektu Err do utworzenia okna dialogowego z komunikatem o błędzie. Zauważmy, że jeśli błąd systemu Visual Basic powstał w wyniku wywołania metody Raise, ale uprzednio użyto metody Clear, to właściwości obiektu Err przyjmą wartości domyślne systemu Visual Basic.

Dim Kom

' Jeśli wystąpił błąd, utwórz komunikat o błędzie.

On Error Resume Next	' Odłóż obsługę błędów.

Err.Clear

Err.Raise 6	' Wygeneruj błąd typu "Nadmiar".

' Sprawdź, czy są błędy, po czym pokaż komunikat.

If Err.Number <> 0 Then

Kom = "Błąd nr" & Str(Err.Number) & " spowodowany przez " _

& Err.Source & Chr(13) & Err.Description & "."

MsgBox Kom, , "Błąd", Err.Helpfile, Err.HelpContext

End If


Collection - obiekt

Obiekt Collection jest uporządkowanym zbiorem elementów, do którego można odwoływać się jak do pojedynczego obiektu.

Użycie

Obiekt Collection umożliwia odwoływanie się do grupy pokrewnych elementów jak do pojedynczego obiektu. Pokrewieństwo między elementami lub składowymi takiego obiektu może polegać po prostu na ich przynależności do tej samej kolekcji. Składowe kolekcji nie muszą być tego samego typu danych.

Kolekcję można utworzyć podobnie jak inne obiekty. Na przykład:

Dim X As New Collection

Po utworzeniu kolekcji składowe mogą być dodawane do niej za pomocą metody Add, a usuwane za pomocą metody Remove. Wartości poszczególnych składowych mogą być zwrócone z kolekcji, za pomocą metody Item, natomiast do pobrania wartości z całej kolekcji można użyć instrukcji For Each...Next.


Debug - obiekt

W czasie przeprowadzania analizy błędów w czasie wykonywania obiekt Debug wysyła wyniki działania do okna Bezpośrednie.


Err - obiekt

Zawiera informacje o błędzie wykonania.

Użycie

Wartości właściwości obiektu Err są ustawiane w zależności od tego, co, lub kto, jest przyczyną wystąpienia błędu: język Visual Basic, jakiś obiekt czy programista języka Visual Basic.

Właściwością domyślną obiektu Err jest właściwość Number. Ponieważ nazwa Err może reprezentować właściwość domyślną, nie trzeba modyfikować wcześniejszego kodu programu, w którym użyto funkcji Err lub instrukcji Err.

Wystąpienie błędu wykonania powoduje przypisanie do właściwości obiektu Err dokładnych informacji o błędzie oraz sposobie jego obsługi. Aby w kodzie programu wygenerować błąd wykonania, należy użyć metody Raise.

Po użyciu wewnątrz procedury obsługi błędu bloku instrukcji Resume lub On Error albo instrukcji Exit Sub, Exit Function lub Exit Property, właściwościom obiektu Err przypisywane są zera lub ciągi o długości zerowej (""). Za pomocą metody Clear można jawnie przywrócić stan początkowy właściwości obiektu Err.

Aby wygenerować błąd wykonania dla modułu klasy, należy zamiast instrukcji Error użyć metody Raise. Używanie metody Raise w innych fragmentach kodu programu zależy od ilości rodzaju informacji, które mają być uzyskane. W przypadku, gdy do generowania błędu zamiast metody Raise używana jest instrukcja Error, właściwościom obiektu Err przypisywane są wartości domyślne podane w poniższej tabeli:

Właściwość	Wartość
Number	Wartość podana jako argument instrukcji Error. Może to być dowolny poprawny numer błędu.
Source	Nazwa bieżącego projektu w języku Visual Basic.
Description	Jeżeli istnieje jakiś ciąg, to odpowiada on wartości zwracanej przez funkcję Error dla podanej właściwości Number. Jeżeli ciąg nie istnieje, właściwość Description zawiera ciąg "Błąd zdefiniowany w obiekcie lub aplikacji".
HelpFile	Pełne określenie nazwy dysku, ścieżki dostępu oraz nazwy pliku Pomocy języka Visual Basic.
HelpContext	Identyfikator tematu z pliku Pomocy języka Visual Basic, który dotyczy błędu związanego z właściwością Number.
LastDLLError	Występuje jedynie w 32-bitowych systemach operacyjnych Microsoft Windows; zawiera kod błędu systemowego ostatniego odwołania do biblioteki dołączanej dynamicznie (DLL) (DLL). LastDLLError służy tylko do odczytu.
Używanie obiektu Err oraz instrukcji Error nie zmusza do zmian w istniejącym już kodzie programu, może jednak wywołać niezamierzone skutki. Na przykład, nawet gdy właściwościom obiektu Err zostaną wcześniej przypisane pewne wartości, w chwili wykonywania instrukcji Error zostaną one zastąpione przez wartości domyślne podane w powyższej tabeli. Mimo, że nadal można używać instrukcji Error do generowania błędów wykonania w języku Visual Basic, możliwość ta wynika głównie z potrzeb zachowania zgodności z istniejącym kodem programu. Jednak do generowania błędów systemowych w nowym kodzie programu, szczególnie w kodzie modułów klas, należy używać obiektu Err, metody Raise i metody Clear.

Obiekt Err jest obiektem wewnętrznym o zakresie globalnym. Nie ma potrzeby tworzenia jego instancji w kodzie programu.


Operator ^ - przykład
Operator ^ (przykład)

W tym przykładzie zastosowano operator ^ do podniesienia liczby do potęgi.

Dim MojaWartość

MojaWartość = 2 ^ 2	' Wynik: 4

MojaWartość = 3 ^ 3 ^ 3	' Wynik: 19683

MojaWartość = (-5) ^ 3	' Wynik: -125


Operator + - przykład
Operator + (przykład)

W tym przykładzie zastosowano operator + do obliczenia sumy liczb. Operator + może także służyć do łączenia ze sobą ciągów znaków. Dla uniknięcia niejednoznaczności, lepiej jednak używać do tego celu operatora &. Jeśli składniki w wyrażeniu z użyciem operatora + zawierają zarówno ciągi znaków, jak i liczby, wówczas wynikiem jest liczba. Jeśli wszystkie składniki są ciągami znaków, wynikiem jest ciąg znaków powstały ze złączenia ze sobą operandów.

Dim MojaWartość, Zm1, Zm2

MojaWartość = 2 + 2	' Wynik: 4

MojaWartość = 4257.04 + 98112	' Wynik: 102369.04

Zm1 = "34": Zm2 = 6	' Nadaj zmiennym wartości różnych typów.

MojaWartość = Zm1 + Zm2	' Wynik: 40

Zm1 = "34": Zm2 = "6"	' Przypisz obu zmiennym ciągi znaków.

MojaWartość = Zm1 + Zm2	' Wynik: "346" (złączenie ciągów znaków).


Operator - - przykład
Operator - (przykład)

W tym przykładzie zastosowano operator - do obliczenia różnicy dwóch liczb.

Dim MojaWartość

MojaWartość = 4 - 2	' Wynik: 2

MojaWartość = 459.35 - 334.90	' Wynik: 124.45


Operator * - przykład
Operator * (przykład)

W tym przykładzie zastosowano operator * do obliczenia iloczynu dwóch liczb.

Dim MojaWartość

MojaWartość = 2 * 2	' Wynik: 4

MojaWartość = 459.35 * 334.90 	' Wynik: 153836.315


Operator / - przykład
Operator / (przykład)

W tym przykładzie zastosowano operator / do zmiennoprzecinkowego podzielenia dwóch liczb.

Dim MojaWartość

MojaWartość = 10 / 4	' Wynik: 2.5

MojaWartość = 10 / 3	' Wynik: 3.333333


Operator \ - przykład
Operator \ (przykład)

W tym przykładzie zastosowano operator \ do realizacji dzielenia całkowitego.

Dim MojaWartość

MojaWartość = 11 \ 4	' Wynik: 2

MojaWartość = 9 \ 3	' Wynik: 3

MojaWartość = 100 \ 3	' Wynik: 33


Operator Mod - przykład
Operator Mod (przykład)

W tym przykładzie zastosowano operator Mod do podzielenia dwóch liczb i zwrócenia jedynie reszty z tego dzielenia. Jeśli którykolwiek operand jest liczbą zmiennoprzecinkową, wówczas przed operacją jest zaokrąglany do liczby całkowitej.

Dim MojaWartość

MojaWartość = 10 Mod 5	' Wynik: 0.

MojaWartość = 10 Mod 3	' Wynik: 1.

MojaWartość = 12 Mod 4.3	' Wynik: 0.

MojaWartość = 12.6 Mod 5	' Wynik: 3.


Operator & - przykład
Operator & (przykład)

W tym przykładzie zastosowano operator & do złączenia ze sobą ciągów znaków.

Dim MójCiąg

MójCiąg = "Pozdrawiam" & " wszystkich"	' Wynik: "Pozdrawiam wszystkich"

MójCiąg = "Stop " & 123 & " Stop"	' Wynik: "Stop 123 Stop"


Operatory porównania - przykład
Operatory porównania (przykład)

W tym przykładzie pokazano różne zastosowania operatorów porównania służących do porównywania wyrażeń.

Dim MójWarunek, Zm1, Zm2

MójWarunek = (45 < 35)	' Wynik: False

MójWarunek = (45 = 45)	' Wynik: True

MójWarunek = (4 <> 3)	' Wynik: True

MójWarunek = ("5" > "4")	' Wynik: True

Zm1 = "5": Zm2 = 4	' Zainicjuj zmienne.

MójWarunek = (Zm1 > Zm2)	' Wynik: True

Zm1 = 5: Zm2 = Empty

MójWarunek = (Zm1 > Zm2)	' Wynik: True

Zm1 = 0: Zm2 = Empty

MójWarunek = (Zm1 = Zm2)	' Wynik: True


Operator And - przykład
Operator And (przykład)

W tym przykładzie zastosowano operator And do realizacji operacji iloczynu logicznego dwóch wyrażeń.

Dim A, B, C, D, MójWarunek

A = 10: B = 8: C = 6: D = Null	' Zainicjuj zmienne.

MójWarunek = A > B And B > C	' Wynik: True

MójWarunek = B > A And B > C	' Wynik: False

MójWarunek = A > B And B > D	' Wynik: Null

MójWarunek = A And B	' Wynik: 8 (operacja bitowa)


Operator Eqv - przykład
Operator Eqv (przykład)

W tym przykładzie zastosowano operator Eqv do realizacji operacji logicznej równoważności dwóch wyrażeń.

Dim A, B, C, D, MójWarunek

A = 10: B = 8: C = 6: D = Null	' Zainicjuj zmienne.

MójWarunek = A > B Eqv B > C	' Wynik: True

MójWarunek = B > A Eqv B > C	' Wynik: False

MójWarunek = A > B Eqv B > D	' Wynik: Null

MójWarunek = A Eqv B	' Wynik: -3 (operacja bitowa)


Operator Imp - przykład
Operator Imp (przykład)

W tym przykładzie zastosowano operator Imp do realizacji operacji logicznej implikacji dwóch wyrażeń.

Dim A, B, C, D, MójWarunek

A = 10: B = 8: C = 6: D = Null	' Zainicjuj zmienne.

MójWarunek = A > B Imp B > C	' Wynik: True

MójWarunek = A > B Imp C > B	' Wynik: False

MójWarunek = B > A Imp C > B	' Wynik: True

MójWarunek = B > A Imp C > D	' Wynik: True

MójWarunek = C > D Imp B > A	' Wynik: Null

MójWarunek = B Imp A	' Wynik: -1 (operacja bitowa)


Operator Not - przykład
Operator Not (przykład)

W tym przykładzie zastosowano operator Not do realizacji operacji logicznej negacji wyrażenia.

Dim A, B, C, D, MójWarunek

A = 10: B = 8: C = 6: D = Null	' Zainicjuj zmienne.

MójWarunek = Not(A > B)	' Wynik: False

MójWarunek = Not(B > A)	' Wynik: True

MójWarunek = Not(C > D)	' Wynik: Null

MójWarunek = Not A	' Wynik: -11 (operacja bitowa)


Operator Or - przykład
Operator Or (przykład)

W tym przykładzie zastosowano operator Or do realizacji operacji sumy logicznej dwóch wyrażeń.

Dim A, B, C, D, MójWarunek

A = 10: B = 8: C = 6: D = Null	' Zainicjuj zmienne.

MójWarunek = A > B Or B > C	' Wynik: True

MójWarunek = B > A Or B > C	' Wynik: True

MójWarunek = A > B Or B > D	' Wynik: True

MójWarunek = B > D Or B > A	' Wynik: Null

MójWarunek = A Or B	' Wynik: 10 (operacja logiczna)


Operator Xor - przykład
Operator Xor (przykład)

W tym przykładzie zastosowano operator Xor do realizacji operacji logicznej nierównoważności (wykluczania) dwóch wyrażeń.

Dim A, B, C, D, MójWarunek

A = 10: B = 8: C = 6: D = Null	' Zainicjuj zmienne.

MójWarunek = A > B Xor B > C	' Wynik: False

MójWarunek = B > A Xor B > C	' Wynik: True

MójWarunek = B > A Xor C > B	' Wynik: False

MójWarunek = B > D Xor A > B	' Wynik: Null

MójWarunek = A Xor B	' Wynik: 2 (operacja bitowa)


Operator Like - przykład
Operator Like (przykład)

W tym przykładzie zastosowano operator Like do porównania ciągu znaków ze wzorcem.

Dim MójWarunek

MójWarunek = "aBBBa" Like "a*a"	' Wynik: True

MójWarunek = "F" Like "[A-Z]"	' Wynik: True

MójWarunek = "F" Like "[!A-Z]"	' Wynik: False

MójWarunek = "a2a" Like "a#a"	' Wynik: True

MójWarunek = "aM5b" Like "a[L-P]#[!c-e]"	' Wynik: True

MójWarunek = "BAT123khg" Like "B?T*"	' Wynik: True

MójWarunek = "CAT123khg" Like "B?T*"	' Wynik: False


Operator Is - przykład
Operator Is (przykład)

W tym przykładzie zastosowano operator Is do porównania dwóch odwołań obiektowych. Nazwy występujących tu zmiennych obiektowych nie mają żadnego szczególnego znaczenia poza tym przykładem.

Dim MójObiekt, TwójObiekt, TenObiekt, InnyObiekt, TamtenObiekt, MójWarunek

Set TwójObiekt = MójObiekt	' Przypisz odwołania obiektowe.

Set TenObiekt = MójObiekt

Set TamtenObiekt = InnyObiekt

MójWarunek = TwójObiekt Is TenObiekt	' Wynik: True

MójWarunek = TamtenObiekt Is TenObiekt	' Wynik: False

' Załóżmy, że MójObiekt <> InnyObiekt

MójWarunek = MójObiekt Is TamtenObiekt	' Wynik: False


Operatory - podsumowanie

Operatory	Opis
Operatory arytmetyczne	Operatory stosowane do wykonywania obliczeń matematycznych.
Operatory porównania	Operatory stosowane do wykonywania porównań.
Operatory łączące	Operatory stosowane do łączenia ciągów.
Operatory logiczne	Operatory stosowane do wykonywania operacji logicznych.


Kolejność operatorów

Jeżeli wyrażenie zawiera wiele operacji, wówczas poszczególne jego części są obliczane i rozwiązywane według z góry ustalonego porządku, nazywanego kolejnością operatorów.

Jeżeli wyrażenie zawiera operatory należące do różnych kategorii, wówczas jako pierwsze zadziałają operatory arytmetyczne. Następnie zadziałają operatory porównania, a w ostatniej kolejności — operatory logiczne. Wszystkie operatory porównania mają równy priorytet; oznacza to, że są one uruchamiane w kolejności od lewej do prawej, w porządku ich występowania. Operatory arytmetyczne i logiczne są uruchamiane według następującej kolejności:

Arytmetyczne	Porównania	Logiczne
Potęgowanie (^)	Równość (=)	Not
Negacja (–)	Nierówność (<>)	And
Mnożenie i dzielenie (*, /)	Mniejsze niż (<)	Or
Dzielenie całkowite (\)	Większe niż (>)	Xor
Reszta z dzielenia (Mod)	Mniejsze lub równe (<=)	Eqv
Dodawanie i odejmowanie (+, –)	Większe lub równe (>=)	Imp
Łączenie ciągów (&)	Like Is
Jeżeli w wyrażeniu znajdzie się jednocześnie mnożenie i dzielenie, operacje te zostaną wykonane w kolejności ich występowania, od lewej do prawej. Podobnie, jeżeli w wyrażeniu znajdzie się jednocześnie dodawanie i odejmowanie, operacje te zostaną wykonane w porządku, w jakim występują, w kolejności od lewej do prawej. Do zmiany kolejności operatorów i do wymuszenia, aby pewne części wyrażenia zostały obliczone wcześniej niż inne, można użyć nawiasów. Operacje umieszczone w nawiasach są zawsze wykonywane wcześniej niż te, które znajdują się poza nimi. Niemniej jednak, wewnątrz nawiasów zachowana jest zwykła kolejność operatorów.

Operator łączenia ciągów (&) nie jest operatorem arytmetycznym, jednak pod względem kolejności występuje po wszystkich operatorach arytmetycznych, a przed wszystkimi operatorami porównania.

Operator Like jest pod względem kolejności równy wszystkim operatorom porównania, chociaż w rzeczywistości jest on operatorem dopasowania wzorców.

Operator Is jest operatorem porównania odwołań do obiektów. Nie porównuje on obiektów ani ich wartości; sprawdza tylko, czy dwa odwołania do obiektów odnoszą się do tego samego obiektu.


Operatory arytmetyczne

^ (operator)

* (operator)

/ (operator)

\ (operator)

Mod (operator)

+ (operator)

–  (operator)


Operatory łączące

& (operator)

+ (operator)


Operatory logiczne

And (operator)

Eqv (operator)

Imp (operator)

Not (operator)

Or (operator)

Xor (operator)


^ (operator)

Podnosi liczbę do potęgi określonej w wykładniku.

Składnia

wynik = liczba^wykładnik

Składnia operatora ^ zawiera następujące elementy:

Element	Opis
wynik	Element obowiązkowy. Jest to dowolna zmienna numeryczna.
Liczba	Element obowiązkowy. Jest to dowolne wyrażenie numeryczne.
wykładnik	Element obowiązkowy. Jest to dowolne wyrażenie numeryczne.
Użycie

Liczba może być ujemna tylko wtedy, gdy wykładnik jest wartością całkowitą. Jeżeli w jednym wyrażeniu przeprowadzane jest więcej niż jedno potęgowanie, operacje ^ są wykonywane w porządku ich występowania, w kolejności od lewej do prawej.

Najczęściej typ danych wyniku to typ Double lub typ Variant, zawierający typ Double. Jeżeli jednak liczba lub wykładnik stanowi wyrażenie o wartości Null, wówczas jako wynik również otrzymamy Null.


+ (operator)

Sumuje dwie liczby.

Składnia

wynik = wyrażenie1+wyrażenie2

Składnia operatora + zawiera następujące elementy:

Element	Opis
wynik	Element obowiązkowy. Jest to dowolna zmienna numeryczna.
wyrażenie1	Element obowiązkowy. Jest to dowolne wyrażenie.
wyrażenie2	Element obowiązkowy. Jest to dowolne wyrażenie.
Użycie

Użycie operatora + może sprawić, że nie da się rozstrzygnąć, czy wykonywane jest dodawanie, czy też następuje połączenie ciągów. Aby uniknąć takiej dwuznaczności i jednocześnie zastosować kod programu, który nie wymaga dodatkowego opisu, należy do łączenia ciągów używać operatora &.

Jeżeli przynajmniej jedno wyrażenie nie jest typu Variant, stosowane są następujące reguły:

Jeżeli	...to
oba wyrażenia należą do numerycznych typów danych (Byte, Boolean, Integer, Long, Single, Double, Date, Currency lub Decimal)	wykonywane jest dodawanie.
oba wyrażenia są typu String	wykonywane jest łączenie.
jedno z wyrażeń jest typu numerycznego, a drugie dowolnego typu Variant nie zawierającego wartości Null	wykonywane jest dodawanie.
jedno z wyrażeń jest typu String, a drugie dowolnego typu Variant nie zawierającego wartości Null	wykonywane jest łączenie.
jedno z wyrażeń jest typu Variant i ma wartość Empty	jako wynik zwracane jest drugie wyrażenie.
jedno z wyrażeń jest typu numerycznego, a drugie typu String	zgłaszany jest błąd Niezgodność typów.
jedno z wyrażeń ma wartość Null	wynikiem jest Null.
Jeżeli oba wyrażenia są typu Variant, stosuje się następujące reguły:

Jeżeli	...to
oba wyrażenia typu Variant są numeryczne	wykonywane jest dodawanie.
oba wyrażenia typu Variant to ciągi	wykonywane jest łączenie.
jedno z wyrażeń typu Variant jest numeryczne, a drugie stanowi ciąg	wykonywane jest dodawanie.
W przypadku prostego arytmetycznego dodawania związanego tylko z wyrażeniami typu numerycznego, typ wyniku jest na ogół taki sam, jak typ danych tego wyrażenia, które ma największą precyzję. Kolejność precyzji, od najmniejszej do największej, jest następująca: Byte, Integer, Long, Single, Double, Currency i Decimal. Oto wyjątki od stosowania powyższej kolejności:

Jeżeli	...to wynik jest
dodawane są liczby typu Single i Long	typu Double.
wynik jest wartością typu Variant o podtypie Long, Single lub Date, przekraczającą dopuszczalny zakres	przekształcany na zmienną typu Variant o podtypie Double.
wynik jest wartością typu Variant o podtypie Byte, przekraczającą dopuszczalny zakres	przekształcany na zmienną typu Variant o podtypie Integer.
wynik jest wartością typu Variant o podtypie Integer, przekraczającą dopuszczalny zakres	przekształcany na zmienną typu Variant o podtypie Long.
wykonywane jest dodawanie typu Date do dowolnego innego typu danych	typu Date.
Jeżeli jedno lub oba wyrażenia są wyrażeniami o wartości Null, wynikiem jest wartość Null. Jeżeli oba wyrażenia mają wartość Empty, wynik jest typu Integer. Jeżeli jednak tylko jedno z wyrażeń ma wartość Empty, jako wynik zwracane jest drugie, nie zmienione wyrażenie.

Uwaga   Kolejność precyzji stosowana podczas dodawania i odejmowania nie jest taka sama, jak kolejność precyzji stosowana podczas mnożenia.


– (operator)

Operator ten stosuje się do znajdowania różnicy dwóch liczb lub do zaznaczania ujemnej wartości wyrażenia numerycznego.

Składnia 1

wynik = liczba1–liczba2

Składnia 2

–liczba

Składnia operatora – zawiera następujące elementy:

Element	Opis
wynik	Element obowiązkowy. Jest to dowolna zmienna numeryczna.
liczba	Element obowiązkowy. Jest to dowolne wyrażenie numeryczne.
liczba1	Element obowiązkowy. Jest to dowolne wyrażenie numeryczne.
liczba2	Element obowiązkowy. Jest to dowolne wyrażenie numeryczne.
Użycie

W przypadku zastosowania Składni 1 operator – jest operatorem arytmetycznego odejmowania, stosowanym do znalezienia różnicy dwóch liczb. W przypadku zastosowania Składni 2 operator – jest traktowany jako jednoargumentowy operator negacji, wskazujący ujemną wartość wyrażenia.

Na ogół typ wyniku jest taki sam, jak typ danych, z którym związane jest wyrażenie o największej precyzji. Kolejność precyzji, od najmniejszej do największej, jest następująca: Byte, Integer, Long, Single, Double, Currency i Decimal. Oto wyjątki od stosowania powyższej kolejności:

Jeżeli	...to wynik jest
w odejmowaniu biorą udział typy danych Single i Long	przekształcany na wartość typu Double.
wynik jest wartością typu Variant o podtypie Long, Single lub Date, przekraczającą dopuszczalny zakres	przekształcany na zmienną typu Variant o podtypie Double.
wynik jest wartością typu Variant o podtypie Byte, przekraczającą dopuszczalny zakres	przekształcany na zmienną typu Variant o podtypie Integer.
wynik jest wartością typu Variant o podtypie Integer, przekraczającą dopuszczalny zakres	przekształcany na zmienną typu Variant o podtypie Long.
w odejmowaniu bierze udział typ Date i inny dowolny typ danych	typu Date.
w odejmowaniu biorą udział dwa wyrażenia typu Date	typu Double.
Jeżeli jedno lub oba wyrażenia są wyrażeniami o wartości Null, wynikiem jest wartość Null. Wyrażenie o wartości Empty jest traktowane jak 0.

Uwaga   Kolejność precyzji stosowana podczas dodawania i odejmowania nie jest taka sama, jak kolejność precyzji stosowana podczas mnożenia.


* (operator)

Wykonuje mnożenie dwóch liczb.

Składnia

wynik = liczba1*liczba2

Składnia operatora * zawiera następujące elementy:

Element	Opis
wynik	Element obowiązkowy. Jest to dowolna zmienna numeryczna.
liczba1	Element obowiązkowy. Jest to dowolne wyrażenie numeryczne.
liczba2	Element obowiązkowy. Jest to dowolne wyrażenie numeryczne.
Użycie

Na ogół typ wyniku jest taki sam, jak typ danych, z którym związane jest wyrażenie o największej precyzji. Kolejność precyzji, od najmniejszej do największej, jest następująca: Byte, Integer, Long, Single, Currency, Double i Decimal. Oto wyjątki od stosowania powyższej kolejności:

Jeżeli	...to wynik jest
w mnożeniu biorą udział typy danych Single i Long	przekształcany na wartość typu Double.
wynik jest wartością typu Variant o podtypie Long, Single lub Date, przekraczającą dopuszczalny zakres	przekształcany na zmienną typu Variant o podtypie Double.
wynik jest wartością typu Variant o podtypie Byte, przekraczającą dopuszczalny zakres	przekształcany na zmienną typu Variant o podtypie Integer.
wynik jest wartością typu Variant o podtypie Integer, przekraczającą dopuszczalny zakres	przekształcany na zmienną typu Variant o podtypie Long.
Jeżeli jedno lub oba wyrażenia są wyrażeniami o wartości Null, wynikiem jest wartość Null. Wyrażenie o wartości Empty jest traktowane jak 0.

Uwaga   Kolejność precyzji stosowana podczas mnożenia nie jest taka sama, jak kolejność precyzji stosowana podczas dodawania i odejmowania.


/ (operator)

Wykonuje dzielenie dwóch liczb i zwraca wynik w postaci zmiennoprzecinkowej.

Składnia

wynik = liczba1/liczba2

Składnia operatora / zawiera następujące elementy:

Element	Opis
wynik	Element obowiązkowy. Jest to dowolna zmienna numeryczna.
liczba1	Element obowiązkowy. Jest to dowolne wyrażenie numeryczne.
liczba2	Element obowiązkowy. Jest to dowolne wyrażenie numeryczne.
Użycie

Na ogół typ wyniku jest typ danych Double lub typ danych Variant o podtypie Double. Oto wyjątki od stosowania tej reguły:

Jeżeli	...to wynik jest
oba wyrażenia są wyrażeniami typu Byte, Integer lub Single	typu Single, chyba że przekroczony został dopuszczalny dla tego typu zakres, co spowoduje wystąpienie błędu.
oba wyrażenia są wartościami typu Variant o podtypie Byte, Integer lub Single	zmienną typu Variant o podtypie Single, chyba że przekroczony został dopuszczalny dla tego typu zakres; w takim przypadku wynikiem jest zmienna typu Variant o podtypie Double.
w dzieleniu bierze udział typ danych Decimal i dowolny inny typ danych	typu Decimal.
Jeżeli jedno lub oba wyrażenia są wyrażeniami o wartości Null, wynikiem jest wartość Null. Każde wyrażenie o wartości Empty jest traktowane jak 0.


\ (operator)

Wykonuje dzielenie dwóch liczb i zwraca wynik w postaci liczby całkowitej.

Składnia

wynik = liczba1\liczba2

Składnia operatora \ zawiera następujące elementy:

Element	Opis
wynik	Element obowiązkowy. Jest to dowolna zmienna numeryczna.
liczba1	Element obowiązkowy. Jest to dowolne wyrażenie numeryczne.
liczba2	Element obowiązkowy. Jest to dowolne wyrażenie numeryczne.
Użycie

Przed wykonaniem dzielenia wyrażenia numeryczne są zaokrąglane do wyrażeń typu Byte, Integer lub Long.

Na ogół typ wyniku jest typ danych Byte, typ danych Variant o podtypie Byte, typ danych Integer, typ danych Variant o podtypie Integer, typ danych Long lub typ danych Variant o podtypie Long, niezależnie od tego, czy wynik jest liczbą całkowitą. Jakakolwiek część ułamkowa zostanie odrzucona. Jeżeli jednak któreś wyrażenie ma wartość Null, wynikiem jest wartość Null. Każde wyrażenie o wartości Empty jest traktowane jak 0.


Mod (operator)

Wykonuje dzielenie dwóch liczb i zwraca tylko resztę z przeprowadzonego dzielenia.

Składnia

wynik = liczba1 Mod liczba2

Składnia operatora Mod zawiera następujące elementy:

Element	Opis
wynik	Element obowiązkowy. Jest to dowolna zmienna numeryczna.
liczba1	Element obowiązkowy. Jest to dowolne wyrażenie numeryczne.
liczba2	Element obowiązkowy. Jest to dowolne wyrażenie numeryczne.
Użycie

Operator reszty z dzielenia, nazywany też operatorem modulo, wykonuje dzielenie liczby1 przez liczbę2 (zaokrąglając liczby zmiennoprzecinkowe do całkowitych) i jako wynik zwraca jedynie resztę z dzielenia. Na przykład, w poniższym wyrażeniu A (wynik) równa się 5.

A = 19 Mod 6.7

Na ogół typ wyniku jest typ danych Byte, typ danych Variant o podtypie Byte, typ danych Integer, typ danych Variant o podtypie Integer, typ danych Long lub typ danych Variant o podtypie Long, niezależnie od tego, czy wynik jest liczbą całkowitą. Jakakolwiek część ułamkowa zostanie odrzucona. Jeżeli jednak któreś z wyrażeń ma wartość Null, wynikiem jest wartość Null. Każde wyrażenie o wartości Empty jest traktowane jak 0.


& (operator)

Wymusza przeprowadzenie operacji łączenia ciągów w odniesieniu do dwóch wyrażeń.

Składnia

wynik = wyrażenie1 & wyrażenie2

Składnia operatora & zawiera następujące elementy:

Element	Opis
wynik	Element obowiązkowy. Jest to dowolna zmienna typu String lub Variant.
wyrażenie1	Element obowiązkowy. Jest to dowolne wyrażenie.
wyrażenie2	Element obowiązkowy. Jest to dowolne wyrażenie.
Użycie

Jeżeli wyrażenie nie jest ciągiem, zostaje przekształcone na wartość typu Variant o podtypie String. Jeżeli oba wyrażenia są wyrażeniami znakowymi, to typ wyniku jest String. Jeżeli oba wyrażenia mają wartość Null, wynikiem jest wartość Null. Jeżeli jednak tylko jedno wyrażenie ma wartość Null, jest ono podczas łączenia z drugim wyrażeniem traktowane jak ciąg o długości zerowej (""). Każde wyrażenie o wartości Empty jest również traktowane jak ciąg o długości zerowej.


Operatory porównania

Operatory te stosuje się do porównywania wyrażeń.

Składnia

wynik = wyrażenie1 operator_porównania wyrażenie2

wynik = obiekt1 Is obiekt2

wynik = ciąg Like wzorzec

Składnia operatorów porównania zawiera następujące elementy:

Element	Opis
wynik	Element obowiązkowy. Jest to dowolna zmienna numeryczna.
wyrażenie	Element obowiązkowy. Jest to dowolne wyrażenie.
operator_ porównania	Element obowiązkowy. Jest to dowolny operator porównania.
obiekt	Element obowiązkowy. Jest to dowolna nazwa obiektu.
ciąg	Element obowiązkowy. Jest dowolne wyrażenie znakowe.
wzorzec	Element obowiązkowy. Jest to dowolne wyrażenie znakowe lub oznaczenie zakresu znaków.
Użycie

Poniższa tabela zawiera listę operatorów porównania i warunki decydujące o tym, czy wynik ma wartość True, False czy Null:

Operator	Wartość True, jeżeli	Wartość False, jeżeli	Wartość Null, jeżeli
< (Mniejsze niż)	wyrażenie1 < wyrażenie2	wyrażenie1 >= wyrażenie2	wyrażenie1 lub wyrażenie2 = Null
<= (Mniejsze lub równe)	wyrażenie1 <= wyrażenie2	wyrażenie1 > wyrażenie2	wyrażenie1 lub wyrażenie2 = Null
> (Większe niż)	wyrażenie1 > wyrażenie2	wyrażenie1 <= wyrażenie2	wyrażenie1 lub wyrażenie2 = Null
>= (Większe lub równe)	wyrażenie1 >= wyrażenie2	wyrażenie1 < wyrażenie2	wyrażenie1 lub wyrażenie2 = Null
= (Równe)	wyrażenie1 = wyrażenie2	wyrażenie1 <> wyrażenie2	wyrażenie1 lub wyrażenie2 = Null
<> (Nierówne)	wyrażenie1 <> wyrażenie2	wyrażenie1 = wyrażenie2	wyrażenie1 lub wyrażenie2 = Null
Uwaga   Operatory Is i Like pełnią specyficzne funkcje porównawcze, a zasady ich działania są inne niż w przypadku operatorów wymienionych w powyższej tabeli.

Przy porównywaniu dwóch wyrażeń może się okazać, że trudno jest rozstrzygnąć, czy wyrażenia te są porównywane jako liczby, czy też jako ciągi. Poniższa tabela odnosi się do przypadku, gdy przynajmniej jedno z wyrażeń nie jest typu Variant. W tabeli pokazano sposób porównywania wyrażeń lub wynik tego porównania:

Jeżeli	...to
oba wyrażenia wykorzystują numeryczne typy danych (Byte, Boolean, Integer, Long, Single, Double, Date, Currency lub Decimal)	wykonywane jest porównanie numeryczne.
oba wyrażenia są typu String	wykonywane jest porównanie ciągów znaków.
jedno wyrażenie wykorzystuje numeryczny typ danych, a drugie jest typu Variant, który zawiera, lub może zawierać, wartość numeryczną	wykonywane jest porównanie numeryczne.
jedno z wyrażeń wykorzystuje numeryczny typ danych, a drugie jest typu Variant, zawierającego ciąg, który nie może być przekształcony na wartość numeryczną	zgłaszany jest błąd Niezgodność typów.
jedno z wyrażeń jest typu String, a drugie dowolnego typu Variant nie zawierającego wartości Null	wykonywane jest porównanie znakowe.
jedno z wyrażeń ma wartość Empty, a drugie wykorzystuje numeryczny typ danych	wykonywane jest porównanie numeryczne, w którym jako wyrażenie o wartości Empty wykorzystuje się 0.
jedno z wyrażeń ma wartość Empty, a drugie jest typu String	wykonywane jest porównanie znakowe, w którym jako wyrażenie o wartości Empty wykorzystuje się ciąg o długości zerowej ("").
Jeżeli zarówno wyrażenie1, jak i wyrażenie2 jest wyrażeniem typu Variant, o sposobie porównywania decyduje typ danych przechowywanych w wyrażeniu. W poniższej tabeli pokazano sposób porównywania wyrażeń lub wynik takiego porównywania, w zależności od typu danych przechowywanych w zmiennej typu Variant:

Jeżeli	...to
oba wyrażenia typu Variant są numeryczne	wykonywane jest porównanie numeryczne.
oba wyrażenia typu Variant są ciągami	wykonywane jest porównanie znakowe.
jedno z wyrażeń typu Variant jest numeryczne, a drugie jest ciągiem	wyrażenie numeryczne jest mniejsze niż wyrażenie znakowe.
jedno z wyrażeń typu Variant ma wartość Empty, a drugie jest wyrażeniem numerycznym	wykonywane jest porównanie numeryczne, w którym jako wyrażenie o wartości Empty wykorzystuje się 0.
jedno z wyrażeń typu Variant ma wartość Empty, a drugie jest ciągiem	wykonywane jest porównanie znakowe, w którym jako wyrażenie o wartości Empty wykorzystuje się ciąg o długości zerowej ("").
oba wyrażenia typu Variant mają wartość Empty	wyrażenia są równe.
Gdy wartość typu Single jest porównywana z wartością typu Double, wartość typu Double zostaje zaokrąglona do precyzji typu danych Single.

Jeżeli wartość typu Currency jest porównywana z wartością typu Single lub Double, wartość typu Single lub Double jest przekształcana na wartość typu Currency. Podobnie, kiedy wartość typu Decimal jest porównywana z wartością typu Single lub Double, wartość typu Single lub Double jest przekształcana na wartość typu Decimal. W przypadku typu Currency, każda wartość ułamkowa mniejsza niż 0,0001 może zostać utracona; w przypadku typu Decimal, może zostać utracona każda wartość ułamkowa mniejsza niż 1E-28, może też wystąpić błąd przepełnienia. Tego rodzaju utrata wartości ułamkowej może spowodować, że przy porównywaniu dwie wartości zostaną uznane za równe, mimo że w rzeczywistości różnią się od siebie.


And (operator)

Operator ten służy do wyznaczania iloczynu logicznego dwóch wyrażeń.

Składnia

wynik = wyrażenie1 And wyrażenie2

Składnia operatora And zawiera następujące elementy:

Element	Opis
wynik	Element obowiązkowy. Jest to dowolna zmienna numeryczna.
wyrażenie1	Element obowiązkowy. Jest to dowolne wyrażenie.
wyrażenie2	Element obowiązkowy. Jest to dowolne wyrażenie.
Użycie

Jeżeli oba wyrażenia mają wartość True, wynikiem jest wartość True. Jeżeli któreś z wyrażeń ma wartość False, wynikiem jest wartość False. Poniższa tabela ilustruje sposób wyznaczania wyniku:

Jeżeli expression1 ma wartość	...a expression2 ma wartość	...to result jest wartość
True	True	True
True	False	False
True	Null	Null
False	True	False
False	False	False
False	Null	False
Null	True	Null
Null	False	False
Null	Null	Null
Za pomocą operatora And można również wykonywać porównywanie bitowe jednakowo usytuowanych bitów należących do dwóch wyrażeń numerycznych. Odpowiedni bit wyniku jest ustawiany zgodnie z poniższą tabelą:

Jeżeli bit w expression1 ma wartość	...a bit w expression2 ma wartość	...to result ma wartość
0	0	0
0	1	0
1	0	0
1	1	1


Eqv (operator)

Operator ten służy do sprawdzania logicznej równoważności dwóch wyrażeń.

Składnia

wynik = wyrażenie1 Eqv wyrażenie2

Składnia operatora Eqv zawiera następujące elementy:

Element	Opis
wynik	Element obowiązkowy. Jest to dowolna zmienna numeryczna.
wyrażenie1	Element obowiązkowy. Jest to dowolne wyrażenie.
wyrażenie2	Element obowiązkowy. Jest to dowolne wyrażenie.
Użycie

Jeżeli któreś z wyrażeń ma wartość Null, wynikiem jest również wartość Null. Gdy żadne z wyrażeń nie ma wartości Null, wynik jest wyznaczany zgodnie z poniższą tabelą:

Jeżeli expression1 ma wartość	...a expression2 ma wartość	...to result jest wartość
True	True	True
True	False	False
False	True	False
False	False	True
Za pomocą operatora Eqv można wykonywać porównywanie bitowe jednakowo usytuowanych bitów należących do dwóch wyrażeń numerycznych. Odpowiedni bit wyniku jest ustawiany zgodnie z poniższą tabelą:

Jeżeli bit w expression1 ma wartość	...a bit w expression2 ma wartość	...to result ma wartość
0	0	1
0	1	0
1	0	0
1	1	1


Imp (operator)

Operator ten służy do wyznaczania logicznej implikacji dwóch wyrażeń.

Składnia

wynik = wyrażenie1 Imp wyrażenie2

Składnia operatora Imp zawiera następujące elementy:

Element	Opis
wynik	Element obowiązkowy. Jest to dowolna zmienna numeryczna.
wyrażenie1	Element obowiązkowy. Jest to dowolne wyrażenie.
wyrażenie2	Element obowiązkowy. Jest to dowolne wyrażenie.
Użycie

Poniższa tabela ilustruje sposób wyznaczania wyniku:

Jeżeli expression1 ma wartość	...a expression2 ma wartość	...to result jest wartość
True	True	True
True	False	False
True	Null	Null
False	True	True
False	False	True
False	Null	True
Null	True	True
Null	False	Null
Null	Null	Null
Za pomocą operatora Imp można wykonywać porównywanie bitowe jednakowo usytuowanych bitów należących do dwóch wyrażeń numerycznych. Odpowiedni bit wyniku jest ustawiany zgodnie z poniższą tabelą:

Jeżeli bit w expression1 ma wartość	...a bit w expression2 ma wartość	...to result ma wartość
0	0	1
0	1	1
1	0	0
1	1	1


Not (operator)

Operator ten służy do wyznaczania logicznej negacji wyrażenia.

Składnia

wynik = Not wyrażenie

Składnia operatora Not zawiera następujące elementy:

Element	Opis
wynik	Element obowiązkowy. Jest to dowolna zmienna numeryczna.
wyrażenie	Element obowiązkowy. Jest to dowolne wyrażenie.
Użycie

Poniższa tabela ilustruje sposób wyznaczania wyniku:

Jeżeli expression ma wartość	...to result jest wartość
True	False
False	True
Null	Null
Ponadto operator Not służy do wykonywania inwersji wartości bitów w dowolnej zmiennej. Odpowiedni bit wyniku jest ustawiany zgodnie z poniższą tabelą:

Jeżeli bit w expression ma wartość	...to bit w result  ma wartość
0	1
1	0


Or (operator)

Operator ten służy do wyznaczania alternatywy logicznej dwóch wyrażeń.

Składnia

wynik = wyrażenie1 Or wyrażenie2

Składnia operatora Or zawiera następujące elementy:

Element	Opis
wynik	Element obowiązkowy. Jest to dowolna zmienna numeryczna.
wyrażenie1	Element obowiązkowy. Jest to dowolne wyrażenie.
wyrażenie2	Element obowiązkowy. Jest to dowolne wyrażenie.
Użycie

Jeżeli jedno lub oba wyrażenia mają wartość True, wynikiem jest wartość True. Poniższa tabela ilustruje sposób wyznaczania wyniku:

Jeżeli expression1 ma wartość	...a expression2 ma wartość	...to result jest wartość
True	True	True
True	False	True
True	Null	True
False	True	True
False	False	False
False	Null	Null
Null	True	True
Null	False	Null
Null	Null	Null
Za pomocą operatora Or można również wykonywać porównywanie bitowe jednakowo usytuowanych bitów należących do dwóch wyrażeń numerycznych. Odpowiedni bit wyniku jest ustawiany zgodnie z poniższą tabelą:

Jeżeli bit w expression1 ma wartość	...a bit w expression2 ma wartość	...to result ma wartość
0	0	0
0	1	1
1	0	1
1	1	1


Xor (operator)

Operator ten służy do wyznaczania różnicy symetrycznej dwóch wyrażeń.

Składnia

[wynik =] wyrażenie1 Xor wyrażenie2

Składnia operatora Xor zawiera następujące elementy:

Element	Opis
wynik	Element nieobowiązkowy. Jest to dowolna zmienna numeryczna.
wyrażenie1	Element obowiązkowy. Jest to dowolne wyrażenie.
wyrażenie2	Element obowiązkowy. Jest to dowolne wyrażenie.
Użycie

Jeżeli jedno i tylko jedno z wyrażeń ma wartość True, wynikiem jest wartość True. Jeżeli jednak któreś z wyrażeń ma wartość Null, wynikiem jest wartość Null. Gdy żadne z wyrażeń nie ma wartości Null, wynik jest wyznaczany zgodnie z poniższą tabelą:

Jeżeli expression1 ma wartość	...a expression2 ma wartość	...to result jest wartość
True	True	False
True	False	True
False	True	True
False	False	False
Operator Xor może być wykorzystywany zarówno jako operator logiczny, jak i jako operator działający na poziomie bitowym. Porównywanie bitowe dwóch wyrażeń wykonane przy użyciu alternatywy wykluczającej daje wynik, który wyznaczany jest zgodnie z poniższą tabelą:

Jeżeli bit w expression1 ma wartość	...a bit w expression2 ma wartość	...to result ma wartość
0	0	0
0	1	1
1	0	1
1	1	0


Is (operator)

Operator ten służy do porównywania zmiennych obiektowych.

Składnia

wynik = obiekt1 Is obiekt2

Składnia operatora Is zawiera następujące elementy:

Element	Opis
wynik	Element obowiązkowy. Jest to dowolna zmienna numeryczna.
obiekt1	Element obowiązkowy. Jest to dowolna nazwa obiektu.
obiekt2	Element obowiązkowy. Jest to dowolna nazwa obiektu.
Użycie

Jeżeli zarówno obiekt1, jak i obiekt2 odwołują się do tego samego obiektu, wynikiem jest wartość True; w przeciwnym razie wynikiem jest wartość False. Chcąc sprawić, aby dwie zmienne odwoływały się do tego samego obiektu, można zastosować kilka sposobów.

W poniższym przykładzie zmienna A zostaje ustawiona tak, aby odwoływała się do tego samego obiektu, co zmienna B:

Set A = B

Poniższy przykład sprawia, że zmienne A i B odwołują się do tego samego obiektu, co zmienna C:

Set A = C

Set B = C


Like (operator)

Operator ten służy do porównywania ciągów.

Składnia

wynik = ciąg Like wzorzec

Składnia operatora Like zawiera następujące elementy:

Element	Opis
wynik	Element obowiązkowy. Jest to dowolna zmienna numeryczna.
ciąg	Element obowiązkowy. Jest to dowolne wyrażenie znakowe.
wzorzec	Element obowiązkowy. Jest to dowolne wyrażenie znakowe zgodne z konwencjami tworzenia wzorca, opisanymi w punkcie Użycie.
Użycie

Jeżeli ciąg pasuje do wzorca, wynikiem jest wartość True; w przypadku braku dopasowania, wynikiem jest wartość False. Jeżeli ciąg lub wzorzec ma wartość Null, wynikiem jest wartość Null.

Sposób działania operatora Like zależy od instrukcji Option Compare. Domyślną metodą porównania ciągów znaków dla wszystkich modułów jest Option Compare Binary.

W wyniku działania instrukcji Option Compare Binary porównania ciągów odbywają się w oparciu o porządek sortowania, wynikający z wewnętrznej binarnej reprezentacji znaków. W środowisku Microsoft Windows o porządku sortowania decyduje strona kodowa. W poniższym przykładzie pokazano typowy binarny porządek sortowania:

A < B < E < Z < a < b < e < z < Ŕ < Ę < Ř < ŕ < ę < ř

W wyniku działania instrukcji Option Compare Text porównania ciągów odbywają się w oparciu o nie uwzględniający wielkości liter, tekstowy porządek sortowania, określany przez ustawienia regionalne systemu. Sortując te same znaki przy użyciu instrukcji Option Compare Text, otrzymuje się następujący porządek:

(A=a) < (Ŕ=ŕ) < (B=b) < (E=e) < (Ę=ę) < (Z=z) < (Ř=ř)

Wbudowany mechanizm dopasowywania według wzorca stanowi wszechstronne narzędzie do porównywania ciągów. Możliwości tego mechanizmu pozwalają na stosowanie dowolnych kombinacji symboli wieloznacznych, list znaków i zakresów znaków. W poniższej tabeli zamieszczono znaki, których stosowanie dopuszcza się we wzorcu, wskazując jednocześnie, do jakich znaków są one dopasowywane:

Znaki argumentu pattern	Pasujące znaki string
?	Dowolny pojedynczy znak.
*	Dowolna liczba znaków lub brak znaku.
#	Dowolna pojedyncza cyfra (0–9).
[lista_znaków]	Dowolny pojedynczy znak należący do listy_znaków.
[!lista_znaków]	Dowolny pojedynczy znak nie należący do listy_znaków.
Grupa zawierająca jeden lub więcej znaków (lista_znaków) ujętych w nawiasy kwadratowe ([ ]) może zostać użyta w celu dopasowania do wzorca dowolnego pojedynczego znaku ciągu i może zawierać niemal każdy kod znaku, łącznie z cyframi.

Uwaga   W celu dopasowania do wzorca znaków specjalnych, takich jak lewy nawias kwadratowy ([), znak zapytania (?), oznaczenie liczby (#) czy gwiazdka (*), znaki te należy umieszczać w nawiasach. Gdy prawy nawias kwadratowy (]) występuje wewnątrz grupy, nie można go użyć w celu dopasowania do samego siebie, można wykorzystać go poza grupą jako pojedynczy znak.

Można sprawić, by lista_znaków określała zakres znaków, posługując się łącznikiem (–) w celu oddzielenia górnej i dolnej granicy zakresu. Na przykład, [A-Z] daje właściwe dopasowanie, gdy odpowiednia pozycja ciągu zawiera dowolną wielką literę z zakresu od A do Z. Większą liczbę zakresów umieszcza się w nawiasach bez stosowania znaków rozdzielających.

Znaczenie podanego zakresu zależy od sposobu porządkowania znaków obowiązującego w czasie wykonywania (o sposobie tym decyduje instrukcja Option Compare i ustawienia regionalne systemu, na którym wykonywany jest kod programu). W zamieszczonym powyżej przykładzie dla instrukcji Option Compare Binary do zakresu [A–E] zostaną dopasowane znaki A, B i E. W przypadku instrukcji Option Compare Text, do zakresu [A–E] zostaną dopasowane znaki A, a, Ŕ, ŕ, B, b, E, e. Do podanego zakresu nie zostaną dopasowane znaki Ę ani ę, ponieważ w porządku sortowania znaki tego typu występują po wszystkich znakach podstawowych.

Oto inne ważne reguły dotyczące dopasowywania według wzorca:

•	Wykrzyknik (!) umieszczony na początku listy_znaków oznacza, że dopasowanie nastąpi wtedy, gdy w ciągu znajdzie się dowolny znak, który nie znajduje się na liście_znaków. Poza nawiasem kwadratowym wykrzyknik oznacza sam siebie.

•	Jeżeli łącznik (–) ma oznaczać sam siebie, to musi on występować na początku listy_znaków (po wykrzykniku, jeżeli użyto wykrzyknika) lub na jej końcu. W każdym innym miejscu łącznik jest stosowany do oznaczenia zakresu znaków.

•	Znaki użyte do zdefiniowania zakresu muszą występować zgodnie z rosnącym porządkiem sortowania (od najmniejszego do największego). [A-Z] jest wzorcem prawidłowym, nie jest nim natomiast [Z-A].

•	Sekwencja znaków [] jest traktowana jako ciąg o długości zerowej ("").

W niektórych językach występują specjalne znaki alfabetu, oznaczające dwa inne, oddzielne znaki. Na przykład, w wielu językach stosowany jest znak "ć" reprezentujący znaki "a" oraz "e" w przypadku, gdy występują one obok siebie. Operator Like uznaje wówczas pojedynczy znak specjalny za równoznaczny dwóm oddzielnym znakom.

Jeżeli język, w którym używa się znaków specjalnych, został podany w ustawieniach lokalnych systemu, wystąpienie znaku specjalnego zarówno we wzorcu jak i w ciągu powoduje dopasowanie go do odpowiedniej 2-znakowej sekwencji innego ciągu. Podobnie, pojedynczy znak specjalny wzorca umieszczony w nawiasach kwadratowych (samodzielnie lub jako element listy bądź zakresu) zostaje dopasowany do równoznacznej 2-znakowej sekwencji w ciągu.


Właściwość Count - przykład

W tym przykładzie wykorzystano właściwość Count obiektu Collection do określenia liczby iteracji, jakie należy wykonać w celu usunięcia wszystkich elementów kolekcji MojeKlasy. Kolekcje są indeksowane liczbowo, poczynając domyślnie od liczby 1. Poniższy kod usuwa za każdą iteracją pierwszy element z kolekcji, ponieważ po każdym usunięciu indeksy są tworzone od nowa.

Dim Num, MojeKlasy

For Num = 1 To MojeKlasy.Count ' Usuń nazwę z kolekcji.

MojeKlasy.Remove 1 ' Domyślnie, indeksy liczbowe

Next	                ' kolekcji rozpoczynają się od 1


Właściwość Description - przykład

W tym przykładzie komunikat zdefiniowany przez użytkownika jest przypisywany właściwości Description obiektu Err.

Err.Description = "Brak dostępu do obiektu " _

& "potrzebnego w tej operacji."


Właściwość HelpContext - przykład

W tym przykładzie wykorzystano właściwość HelpContext obiektu Err do wyświetlenia treści Pomocy systemu Visual Basic na temat błędu typu Przepełnienie.

Dim Kom

Err.Clear

On Error Resume Next

Err.Raise 6 ' Generuj błąd typu "Przepełnienie".

If Err.Number <> 0 Then

Kom = "Naciśnij klawisz F1 lub przycisk Pomoc, " _

& "aby wyświetlić temat " _

 	& "Pomocy " & Err.HelpFile & " dla " _

& "następującej wartości HelpContext: " _

& Err.HelpContext

MsgBox Kom, , "Błąd: " & Err.Description, _

Err.HelpFile, Err.HelpContext

End If


Właściwość HelpFile - przykład

W tym przykładzie wykorzystano właściwość HelpFile obiektu Err do uruchomienia systemu Pomocy Microsoft Windows. Domyślnie, właściwość HelpFile zawiera nazwę pliku Pomocy Visual Basic.

Dim Kom

Err.Clear

On Error Resume Next	' Wstrzymaj błędy dla celów

' przykładu.

Err.Raise 6	' Generuj błąd typu "Przepełnienie".

Kom = "Naciśnij klawisz F1 lub przycisk Pomoc, " _

& "aby wyświetlić temat " _

& "Pomocy " & Err.HelpFile _

& " dla tego błędu."

MsgBox Kom, , "Błąd: " & Err.Description, _

Err.HelpFile, Err.HelpContext


Właściwość LastDLLError - przykład

Poniższy kod programu wstawiony do modułu formularza próbuje wywołać funkcję DLL. Próba jest nieudana, gdyż przesyłany argument (pusty wskaźnik) generuje błąd, a także ponieważ w żadnym zdarzeniu nie można anulować aparatu obsługi SQL, jeśli nie jest on uruchomiony. Kod programu umieszczony za wywołaniem funkcji DLL sprawdza wartość zwróconą z wywołania oraz wyświetla właściwość LastDLLError obiektu Err, zawierającą kod błędu.

Private Declare Function SQLCancel Lib "ODBC32.dll" _

(ByVal hstmt As Long) As Integer

Private Sub UserForm_Click()

Dim ZwrWart

' Wywołanie z błędnym argumentem.

ZwrWart = SQLCancel(mojedojście&)

' Sprawdzenie kodu błędu SQL.

If ZwrWart = -2 Then

'Wyświetlenie kodu błędu.

MsgBox "Kod błędu wynosi :" & Err.LastDllError

    End If

End Sub


Właściwość Number - przykład

Pierwszy przykład ilustruje typowe zastosowanie właściwości Number w procedurze obsługi błędu. W drugim przykładzie wartość właściwości Number obiektu Err określa, czy błąd zwrócony przez obiekt automatyzacji został zdefiniowany przez ten obiekt, czy też został odwzorowany na błąd zdefiniowany przez Visual Basic. Należy zauważyć, że stała vbObjectError jest bardzo dużą liczbą ujemną dodawaną przez obiekt do własnego kodu błędu w celu zaznaczenia, że błąd jest zdefiniowany przez serwer. Przez odjęcie jej od wartości Err.Number można więc z powrotem uzyskać kod błędu. Jeśli błąd jest zdefiniowany przez obiekt, jego bazowy kod jest zapisywany w zmiennej MójBłąd i wyświetlany w oknie komunikatu razem z wartością źródłową. Jeśli wartość Err.Number określa błąd systemu Visual Basic, to numer tego błędu jest wyświetlany w oknie komunikatu.

' Typowe wykorzystanie właściwości Number

Sub Test()

On Error GoTo out

Dim x, y

x = 1 / y	' Generuj błąd dzielenia przez zero

Exit Sub

out:

MsgBox Err.Number

MsgBox Err.Description

' Sprawdź, czy błąd dzielenia przez zero

If Err.Number = 11 Then

y = y + 1

End If

Resume

End Sub

' Wykorzystanie właściwości Number przy błędzie

' pochodzącym z obiektu automatyzacji

Dim MójBłąd, Kom

' Odjęcie stałej dodanej przez obiekt w celu

' określenia, że jest to jeden z jego własnych błędów.

MójBłąd = Err.Number - vbObjectError

' Jeśli po odjęciu stałej vbObjectError liczba wciąż

' mieści się w zakresie 0-65535, to jest to kod błędu

' zdefiniowany przez obiekt.

If MójBłąd > 0 And MójBłąd < 65535 Then

Kom = "Obiekt, do którego był dokonywany dostęp," _

& " przypisał do błędu wartość: " _

 	& MójBłąd & ". Wartość źródłowa błędu to: " _

& Err.Source & ". Naciśnij klawisz F1, aby " _

& "wyświetlić temat Pomocy dotyczący " _

& "wartości źródłowej."

' W przeciwnym wypadku jest to kod błędu systemu Visual Basic.

Else

Kom = "Ten numer (" & Err.Number & ") określa " _

& "błąd systemu Visual Basic. Naciśnij " _

& "przycisk Pomoc lub klawisz F1, aby " _

& "wyświetlić tekst pomocy na temat " _

& "tego błędu."

End If

MsgBox Kom, , "Błąd obiektu", Err.HelpFile, Err.HelpContext


Właściwość Source - błąd

W tym przykładzie identyfikator programowy obiektu automatyzacji utworzonego w systemie Visual Basic jest przypisywany do zmiennej MójIdObiektu, a następnie wartość ta jest przypisywana do właściwości Source obiektu Err, gdy generuje on błąd za pomocą metody Raise. Podczas programowej obsługi błędów nie należy wykorzystywać właściwości Source (ani żadnej innej właściwości obiektu Err poza właściwością Number). Właściwości inne niż Number mogą służyć tylko do wyświetlenia wyczerpujących informacji dla użytkownika, jeśli program sam nie potrafi obsłużyć błędu. W tym przykładzie założono, że obiekt typu MojaKlasa i obiekt App mają prawidłowe odwołania.

Dim MojaKlasa, MójIdObiektu, MójPlikPomocy

Dim MójKontekstPomocy

' Obiekt typu MojaKlasa generuje błąd i wypełnia

' wszystkie właściwości obiektu Err, łącznie z

' właściwością Source, do której wpisywana jest wartość

' MójIdObiektu będąca połączeniem właściwości Title

' obiektu App i właściwości Name obiektu MojaKlasa.

MójIdObiektu = App.Title & "." & MojaKlasa.Name

Err.Raise	Number := vbObjectError + 894, _

Source := MójIdObiektu, _

Description := "Nie można zakończyć zadania", _

HelpFile := MójPlikPomocy, _

HelpContext := MójKontekstPomocy


Count - właściwość

Zwraca wartość typu Long (long integer) równą liczbie obiektów w danej kolekcji. Służy tylko do odczytu.


Description - właściwość

Zwraca lub ustawia wartość wyrażenia znakowego stanowiącą opis obiektu. Służy do odczytu lub zapisu.

Dla obiektu Err właściwość Description zwraca lub ustawia wartość skojarzonego z błędem ciągu, stanowiącą opis błędu.

Użycie

Ustawienie właściwości Description składa się z krótkiego opisu błędu. Właściwości tej należy użyć, aby poinformować użytkownika o błędzie, który z jakiegoś powodu nie jest obsługiwany. Przy generowaniu błędu zdefiniowanego przez użytkownika, do właściwości Description należy przypisać krótki opis błędu. Jeśli wartość właściwości Description nie została podana, a właściwość Number ma wartość zgodną z kodem standardowego błędu wykonania języka Visual Basic, to właściwości Description zostanie nadana wartość ciągu zwracana przez funkcję Error podczas generowania błędu.


HelpContext - właściwość

Zwraca lub ustawia wartość wyrażenia znakowego zawierającego identyfikator tematu w pliku Pomocy Microsoft Windows. Właściwość służy do odczytu lub zapisu.

Użycie

Właściwość HelpContext służy do automatycznego wyświetlania tematu Pomocy wskazanego przez właściwość HelpFile. Jeśli żadna z właściwości HelpFile i HelpContext nie jest ustawiona, sprawdzana jest wartość właściwości Number. Jeśli jest ona zgodna z kodem standardowego błędu wykonania języka Visual Basic, to zostanie użyty identyfikator tematu Pomocy języka Visual Basic dla tego błędu. Jeśli wartość właściwości Number nie jest równa kodowi żadnego błędu języka Visual Basic, to zostanie wyświetlony spis treści pliku Pomocy języka Visual Basic.

Uwaga W programie użytkownika powinny być zawarte procedury obsługi popularnych błędów. Programując w technice obiektowej, aby podnieść jakość obsługi błędów lub wyświetlić komunikat o błędzie nieodwracalnym, można wykorzystać plik Pomocy danego obiektu.


HelpFile - właściwość

Zwraca lub ustawia wartość wyrażenia znakowego zawierającego pełną ścieżkę dostępu do pliku Pomocy Microsoft Windows. Właściwość służy do odczytu lub zapisu.

Użycie

Jeśli we właściwości HelpFile określono jakiś plik Pomocy, to klikając przycisk Help w oknie dialogowym komunikatu lub naciskając klawisz F1 można go automatycznie wywołać. Jeśli właściwość HelpContext zawiera poprawny identyfikator tematu Pomocy z danego pliku, to temat ten zostanie automatycznie wyświetlony. Jeśli właściwość HelpFile nie ma określonej wartości, to zostanie wyświetlony plik Pomocy języka Visual Basic.

Uwaga W programie użytkownika powinny być zawarte procedury obsługi popularnych błędów. Programując w technice obiektowej, aby podnieść jakość obsługi błędów lub wyświetlić komunikat o błędzie nieodwracalnym, można wykorzystać plik Pomocy danego obiektu.


LastDLLError - właściwość

Zwraca kod błędu systemowego wygenerowany przy wywołaniu biblioteki dołączanej dynamicznie (DLL) (DLL). Właściwość służy tylko do odczytu.

Użycie

Właściwość LastDLLError odnosi się tylko do wywołań bibliotek DLL z kodu programu pisanego w języku Visual Basic. Wywoływana w ten sposób funkcja zwykle zwraca kod oznaczający, czy zakończyła się ona pomyślnie, i nadaje tę wartość właściwości LastDLLError. Znaczenie poszczególnych kodów zwracanych przy wywołaniu bibliotek DLL można odnaleźć w dokumentacji. Właściwość LastDLLError powinna być sprawdzana przez aplikację języka Visual Basic po każdym wystąpieniu błędu. Jeśli właściwość LastDLLError jest ustawiona, nie jest zgłaszany żaden wyjątek.


Number - właściwość

Zwraca lub ustawia wartość numeryczną określającą błąd. Number jest domyślną właściwością obiektu Err. Właściwość służy do odczytu lub zapisu.

Użycie

Aby obiekt zwracał kod błędu zdefiniowany przez użytkownika, należy przypisać właściwości Err.Number liczbę, równą sumie wybranego kodu błędu i wartości stałej vbObjectError. Na przykład, następujący fragment kodu programu zwróci jako kod błędu liczbę 1051:

Err.Raise Number := vbObjectError + 1051, Source:= "DowolnaKlasa"


Source - właściwość

Zwraca lub ustawia wyrażenie znakowe określające nazwę obiektu lub aplikacji, która wygenerowała błąd. Właściwość służy do odczytu lub zapisu.

Użycie

Właściwość Source określa wyrażenie znakowe identyfikujące obiekt, który wygenerował błąd; wyrażenie jest zazwyczaj nazwą klasy obiektu lub identyfikatorem programowym. Właściwości Source należy używać do przekazania informacji, gdy program nie może obsłużyć błędu wygenerowanego przy dostępie do obiektu. Na przykład, gdy po odwołaniu do programu Microsoft Excel zostanie wygenerowany błąd Dzielenie przez zero, program Microsoft Excel przypisze właściwości Err.Number odpowiedni dla tego błędu kod, ustawiając wartość właściwości Source na Excel.Application.

Przy generowaniu błędu z kodu programu właściwość Source stanowi identyfikator aplikacji użytkownika. Dla modułu klasy, właściwość Source należy ustawić na nazwę w postaci projekt.klasa. Natomiast w przypadku, kiedy w programie wystąpi nieoczekiwany błąd, właściwość Source zostanie ustawiona automatycznie. Dla błędów w module standardowym, właściwość Source zawiera nazwę projektu, a dla błędów w modułach klas, właściwość Source zawiera nazwę w formacie: projekt.klasa.


Instrukcja DeleteSetting - przykład

W tym przykładzie najpierw wykonywana jest instrukcja SaveSetting, która tworzy dla aplikacji MojaApl pozycje w rejestrze Windows (lub w pliku INI w przypadku 16-bitowych systemów Windows). Następnie pozycje te są usuwane za pomocą instrukcji DeleteSetting. Ponieważ nie podano żadnego argumentu key, usuwana jest cała sekcja, łącznie z jej nazwą i wszystkimi kluczami.

' Wstaw jakieś ustawienia do rejestru.

SaveSetting appname := "MojaApl", section := "Startup", _

            key := "Top", setting := 75

SaveSetting "MojaApl","Startup", "Left", 50

' Usuń z rejestru sekcję i wszystkie jej ustawienia.

DeleteSetting "MojaApl", "Startup"


Funkcja GetAllSettings - przykład

W tym przykładzie najpierw wykonywana jest instrukcja SaveSetting, która tworzy dla aplikacji określonej parametrem appname pozycje w rejestrze Windows (lub w pliku INI w przypadku 16-bitowych systemów Windows). Następnie wywoływana jest funkcja GetAllSettings, która wyświetla ustawienia tych pozycji. Zauważmy, że za pomocą funkcji GetAllSettings nie można odczytać ani nazwy aplikacji, ani nazwy sekcji section. Na końcu przykładu wszystkie pozycje odpowiadające danej aplikacji są usuwane z rejestru za pomocą funkcji DeleteSetting.

' Zmienna typu Variant przechowuje 2-wymiarową tablicę zwracaną przez GetAllSettings.

' Zmienna typu Integer przechowuje licznik.

Dim MojeUstaw As Variant, intUstaw As Integer

' Umieść jakieś pozycje w rejestrze.

SaveSetting appname := "MojaApl", section := "Startup", _

key := "Top", setting := 75

SaveSetting "MojaApl","Startup", "Left", 50

' Odczytaj ustawienia.

MySettings = GetAllSettings(appname := "MojaApl", section := "Startup")

For intUstaw = LBound(MojeUstaw, 1) To UBound(MojeUstaw, 1)

Debug.Print MojeUstaw(intUstaw, 0), MojeUstaw(intUstaw, 1)

Next intUstaw

DeleteSetting "MojaApl", "Startup"


Funkcja GetSetting - przykład

W tym przykładzie najpierw wykonywana jest instrukcja SaveSetting, która tworzy dla aplikacji określonej parametrem appname pozycje w rejestrze Windows (lub w pliku INI w przypadku 16-bitowych systemów Windows). Następnie wywoływana jest funkcja GetSetting, która wyświetla jedno z tych ustawień. Ponieważ podano argument default, na pewno zostanie zwrócona jakaś wartość. Zauważmy, że za pomocą funkcji GetSetting nie można odczytać nazwy sekcji. Na końcu przykładu wszystkie pozycje odpowiadające danej aplikacji są usuwane z rejestru za pomocą funkcji DeleteSetting.

' Zmienna typu Variant przechowuje 2-wymiarową tablicę zwracaną przez GetSetting.

Dim MojeUstaw As Variant

' Umieść jakieś pozycje w rejestrze.

SaveSetting "MojaApl","Startup", "Top", 75

SaveSetting "MojaApl","Startup", "Left", 50

Debug.Print GetSetting(appname := "MojaApl", section := "Startup", _

                       key := "Left", default := "25")

DeleteSetting "MojaApl", "Startup"


Instrukcja SaveSetting - przykład

W tym przykładzie najpierw wykonywana jest instrukcja SaveSetting, która tworzy dla aplikacji MojaApl pozycje w rejestrze Windows (lub w pliku INI w przypadku 16-bitowych systemów Windows). Następnie pozycje te są usuwane za pomocą instrukcji DeleteSetting.

' Umieść jakieś pozycje w rejestrze.

SaveSetting appname := "MojaApl", section := "Startup", _

            key := "Top", setting := 75

SaveSetting "MojaApl","Startup", "Left", 50

' Usuń z rejestru sekcję i wszystkie jej ustawienia.

DeleteSetting "MojaApl", "Startup"


DeleteSetting - instrukcja

Usuwa sekcję lub ustawienie klucza z pozycji aplikacji w rejestrze Windows.

Składnia

DeleteSetting appname, section[, key]

Instrukcja DeleteSetting ma następujące nazwane argumenty:

Argument	Opis
appname	Argument obowiązkowy. Jest to wyrażenie znakowe zawierające nazwę aplikacji lub projektu, których dotyczy dana sekcja lub klucz.
section	Argument obowiązkowy. Wyrażenie znakowe zawierające nazwę sekcji, z której usuwane jest ustawienie klucza. Jeśli podana jest tylko appname z section, to wszystkie klucze tej sekcji zostaną usunięte.
key	Argument nieobowiązkowy. Wyrażenie znakowe zawierające nazwę usuwanego ustawienia klucza.
Użycie

Jeśli podane są wszystkie argumenty, usunięty zostanie podany klucz. Instrukcja DeleteSetting nie usunie żadnych ustawień, jeśli podana sekcja lub klucz nie istnieją.


GetAllSettings - funkcja

Zwraca listę ustawień kluczy oraz ich wartości (pierwotnie utworzonych przez instrukcję SaveSetting) funkcji dla pozycji w rejestrze Windows odpowiadającej podanej aplikacji.

Składnia

GetAllSettings(appname, section)

Instrukcja GetAllSettings ma następujące nazwane argumenty:

Element	Opis
appname	Argument obowiązkowy. Jest to wyrażenie znakowe zawierające nazwę aplikacji lub projektu, dla których odczytywane są ustawienia kluczy.
section	Argument obowiązkowy. Jest to wyrażenie znakowe zawierające nazwę sekcji, z której odczytywane są ustawienia kluczy. Funkcja GetAllSettings zwraca wartość typu Variant w postaci dwuwymiarowej tablicy ciągów znakowych zawierającej ustawienia kluczy z podanej sekcji oraz ich wartości.
Użycie

Jeśli appname lub section nie istnieją, funkcja GetAllSettings zwraca nie zainicjalizowany wynik typu Variant.


GetSetting - funkcja

Zwraca wartość klucza dla pozycji podanej aplikacji w rejestrze Windows.

Składnia

GetSetting(appname, section, key[, default])

Instrukcja GetSetting ma następujące nazwane argumenty:

Argument	Opis
appname	Argument obowiązkowy. Jest to wyrażenie znakowe zawierające nazwę aplikacji lub projektu, dla których odczytywane jest ustawienie klucza.
Section	Argument obowiązkowy. Jest to wyrażenie znakowe zawierające nazwę sekcji, w której znajduje się podany klucz.
Key	Argument obowiązkowy. Jest to wyrażenie znakowe zawierające nazwę zwracanego przez funkcję ustawienia klucza.
Default	Argument nieobowiązkowy. Jest to wyrażenie zawierające wartość zwracaną w przypadku, gdy dane ustawienie klucza nie ma żadnej wartości; przy braku wartości parametru default zwracany jest ciąg o zerowej długości ("").
Użycie

Jeśli którykolwiek z elementów określonych argumentami funkcji GetSetting nie istnieje, to zwracana jest wartość argumentu default.


SaveSetting - instrukcja

Zapisuje lub tworzy wpis w rejestrze Windows.

Składnia

SaveSetting appname, section, key, setting

Instrukcja SaveSetting przyjmuje następujące nazwane argumenty:

Argument	Opis
appname	Argument obowiązkowy. Jest to wyrażenie znakowe zawierające nazwę aplikacji lub projektu, których dotyczy dane ustawienie klucza.
section	Argument obowiązkowy. Jest to wyrażenie znakowe zawierające nazwę sekcji, w której zostanie zapisane ustawienie klucza.
key	Argument obowiązkowy. Jest to wyrażenie znakowe zawierające nazwę zapisywanego ustawienia klucza.
setting	Argument obowiązkowy. Jest to wyrażenie zawierające wartość, która zostanie nadana key.
Użycie

Jeśli ustawienie klucza nie może zostać zapisane, wystąpi błąd.


Funkcja Chr - przykład

W tym przykładzie wykorzystano funkcję Chr do określenia znakowej reprezentacji kodu znaku.

Dim MójZnak

MójZnak = Chr(65)	' Wynik: A

MójZnak = Chr(97)	' Wynik: a

MójZnak = Chr(62)	' Wynik: >

MójZnak = Chr(37)	' Wynik: %


Funkcja Format - przykład

W tym przykładzie zaprezentowano użycie funkcji Format do różnych sposobów formatowania wartości, zarówno przy użyciu formatów nazwanych, jak i formatów zdefiniowanych przez użytkownika. Sposób prezentacji separatora daty (/), separatora godziny (:) i literałów AM/PM zależy od ustawień środowiska, w którym kod poniższego przykładu będzie wykonywany. Jeżeli kod będzie wykonywany w środowisku projektowania, to krótkie formaty daty i godziny będą takie, jak dla tego środowiska. Jeżeli będzie wykonywany program wynikowy, to formaty te będą takie, jak określono w ustawieniach regionalnych systemu. Mogą wystąpić różnice w zobrazowaniu tych samych wartości dla obu przypadków. W tekście przykładu przyjęto założenie, że aktualne są ustawienia regionalne dla wersji amerykańskiej.

W środowisku projektowania, wartości zmiennych MójCzas i MojaData wyświetlane są w aktualnych dla systemu krótkich formatach godziny i daty.

Dim MójCzas, MojaData, MójWynik

MójCzas = #17:04:23#

MojaData = #January 27, 1993#

' Funkcja zwraca aktualną godzinę systemową w zdefiniowanym przez system długim formacie godziny.

MójWynik = Format(Time, "Long Time")

' Funkcja zwraca aktualną datę systemową w zdefiniowanym przez system długim formacie daty.

MójWynik = Format(Date, "Long Date")

MójWynik = Format(MójCzas, "h:m:s")	' Wynik: "17:4:23"

MójWynik = Format(MójCzas, "hh:mm:ss AMPM")	' Wynik: "05:04:23 PM"

MójWynik = Format(MojaData, "dddd, mmm d yyyy")	' Wynik: "Wednesday,

' Jan 27 1993"

' Jeżeli format nie został podany, to funkcja zwraca ciąg znaków.

MójWynik = Format(23)	' Wynik: "23"

' Formaty zdefiniowane przez użytkownika.

MójWynik = Format(5459.4, "##,##0.00")	' Wynik: "5,459.40"

MójWynik = Format(334.9, "###0.00")	' Wynik: "334.90"

MójWynik = Format(5, "0.00%")	' Wynik: "500.00%"

MójWynik = Format("WITAM", "<")	' Wynik: "witam"

MójWynik = Format("To jest to", ">")	' Wynik: "TO JEST TO"


Funkcja Hex - przykład

W tym przykładzie wykorzystano funkcję Hex do uzyskania postaci szesnastkowej podanej liczby.

Dim MójHeks

MójHeks = Hex(5)	' Wynik: 5

MójHeks = Hex(10)	' Wynik: A

MójHeks = Hex(459)	' Wynik: 1CB


Funkcja InStr - przykład

W tym przykładzie wykorzystano funkcję InStr do określenia pozycji pierwszego wystąpienia podanego ciągu wewnątrz innego ciągu znaków.

Dim Ciąg, SzukanyZnak, MojaPozycja

Ciąg ="XXpXXpXXPXXP"	' Przeszukiwany ciąg znaków.

SzukanyZnak = "P"	' Szukaj pierwszego wystąpienia ciągu "P".

' Porównanie znakowe począwszy od czwartej pozycji w przeszukiwanym ciągu. Funkcja zwraca wartość 6.

MojaPozycja = Instr(4, Ciąg, SzukanyZnak, 1)

' Porównanie binarne począwszy od pierwszej pozycji w przeszukiwanym ciągu. Funkcja zwraca wartość 9.

MojaPozycja = Instr(1, Ciąg, SzukanyZnak, 0)

' Jeśli ostatni argument funkcji zostanie pominięty, to domyślnie wykonywane jest porównanie binarne.

MojaPozycja = Instr(Ciąg, SzukanyZnak)	' Funkcja zwraca wartość 9.

MojaPozycja = Instr(1, Ciąg, "W")	' Funkcja zwraca wartość 0.


Funkcja LCase - przykład

W tym przykładzie wykorzystano funkcję LCase do zamiany liter w ciągu znaków na małe.

Dim WielkieLitery, MałeLitery

WielkieLitery = "Pozdrawiam Wszystkich 1234"	' Ciąg znaków do zamiany.

MałeLitery = Lcase(WielkieLitery)	' Wynik: "pozdrawiam wszystkich 1234"


Funkcja Left - przykład

Użyta w tym przykładzie funkcja Left zwraca określoną liczbę kolejnych znaków z podanego ciągu, począwszy od skrajnego lewego znaku w tym ciągu.

Dim CałyCiąg, MójCiąg

CałyCiąg = "Pozdrawiam wszystkich"	' Zdefiniuj ciąg wzorcowy.

MójCiąg = Left(CałyCiąg, 1)	' Wynik: "P"

MójCiąg = Left(CałyCiąg, 7)	' Wynik: "Pozdrów"

MójCiąg = Left(CałyCiąg, 21)	' Wynik: "Pozdrawiam wszystkich"


Funkcja Len - przykład

W tym przykładzie wykorzystano funkcję Len do określenia liczby znaków w ciągu i liczby bajtów potrzebnych do przechowywania zmiennej. Jeśli instrukcje Type...End Type, które definiują blok DaneKlienta, występują w module klasy, to muszą być poprzedzone słowem kluczowym Private. Jeśli instrukcje te występują w module standardowym, to instrukcja Type może być poprzedzona słowem kluczowym Public.

Type DaneKlienta	' Zdefiniuj nowy typ.

ID As Integer	' Tę definicję należy umieścić w

Nazwa As String * 10	' module standardowym.

Adres As String * 30

End Type

Dim JedenKlient As DaneKlienta	' Zadeklaruj zmienne.

Dim MojaCałk As Integer, MojaWaluta As Currency

Dim MójCiąg, MojaDługość

MójCiąg = "Pozdrawiam wszystkich"	' Zainicjuj zmienną.

MojaDługość = Len(MojaCałk)	' Wynik: 2

MojaDługość = Len(JedenKlient)	' Wynik: 42

MojaDługość = Len(MójCiąg)	' Wynik: 11

MojaDługość = Len(MojaWaluta)	' Wynik: 8


Instrukcja Lset - przykład

W tym przykładzie wykorzystano instrukcję LSet do skopiowania ciągu znaków do zainicjowanej zmiennej znakowej. Kopiowany ciąg jest wyrównywany do lewej wewnątrz zainicjowanej zmiennej. Instrukcję LSet można także stosować do kopiowania zmiennej typu zdefiniowanego przez użytkownika do zmiennej innego, ale zgodnego z nim, typu zdefiniowanego przez użytkownika. Nie jest to jednak zalecane z powodu różnic w implementacji struktur danych na różnych platformach systemowych. Takie użycie instrukcji LSet może mieć ujemny wpływ na przenośność kodu.

Dim MójCiąg

MójCiąg = "0123456789"	' Zainicjuj ciąg.

Lset MójCiąg = "<-Lewo"	' MójCiąg ma teraz wartość "<-Lewo    ".


Funkcje LTrim, Rtrim i Trim - przykład

W tym przykładzie wykorzystano funkcje LTrim do usuwania znaków spacji wiodących i RTrim do usuwania znaków spacji końcowych, ze zmiennej znakowej. Pokazano także użycie funkcji Trim do usuwania obu spacji z obu stron jednocześnie.

Dim MójCiąg, WyciętyCiąg

MójCiąg = "  <-Wytnij spacje->  "	' Zainicjuj ciąg.

WyciętyCiąg = LTrim(MójCiąg)	' WyciętyCiąg = "<-Wytnij spacje->  ".

WyciętyCiąg = RTrim(MójCiąg)	' WyciętyCiąg = "  <-Wytnij spacje->".

WyciętyCiąg = LTrim(RTrim(MójCiąg))	' WyciętyCiąg = "<-Wytnij spacje->".

' Identyczny efekt można osiągnąć przy użyciu funkcji Trim:

WyciętyCiąg = Trim(MójCiąg)	' WyciętyCiąg = "<-Wytnij spacje->".


Funkcja Mid - przykład

Użyta w tym przykładzie funkcja Mid zwraca określoną liczbę znaków z podanego ciągu znaków.

Dim MójCiąg, PierwszyWyraz, OstatniWyraz, ŚrodkoweWyrazy

MójCiąg = "Wykorzystanie funkcji Mid"	' Utwórz ciąg.

PierwszyWyraz = Mid(MójCiąg, 1, 13)	' Wynik: "Wykorzystanie"

OstatniWyraz = Mid(MójCiąg, 24, 3)	' Wynik: "Mid"

ŚrodkoweWyrazy = Mid(MójCiąg, 15)	' Wynik: "funkcji Mid"


Instrukcja Mid - przykład

W tym przykładzie wykorzystano instrukcję Mid do zamiany podanej liczby znaków w zmiennej znakowej znakami z innego ciągu.

Dim MójCiąg

MójCiąg = "Ten pies skacze"	' Zainicjuj ciąg.

Mid(MójCiąg, 5, 3) = "kot"	' MójCiąg = "Ten kot skacze"

Mid(MójCiąg, 5) = "koń"	' MójCiąg = "Ten koń skacze"

Mid(MójCiąg, 5) = "koń przeskoczył"	' MójCiąg = "Ten koń przesk"

Mid(MójCiąg, 5, 3) = "kaczor"	' MójCiąg = "Ten kac przesk"


Funkcja Oct - przykład

W tym przykładzie wykorzystano funkcję Oct do uzyskania postaci ósemkowej podanej liczby.

Dim MojaÓsem

MojaÓsem = Oct(4) 	' Wynik: 4

MojaÓsem = Oct(8)	' Wynik: 10

MojaÓsem = Oct(459)	' Wynik: 713


Funkcja Right - przykład

Użyta w tym przykładzie funkcja Right zwraca określoną liczbę kolejnych znaków z podanego ciągu, z których ostatni zajmuje skrajną prawą pozycję w tym ciągu.

Dim CałyCiąg, MójCiąg

CałyCiąg = "Pozdrawiam wszystkich"	' Zdefiniuj ciąg.

MójCiąg = Right(CałyCiąg, 1)	' Wynik: "h"

MójCiąg = Right(CałyCiąg, 6)	' Wynik: "stkich"

MójCiąg = Right(CałyCiąg, 21)	' Wynik: "Pozdrawiam wszystkich"


Instrukcja RSet - przykład

W tym przykładzie wykorzystano instrukcję RSet do skopiowania ciągu znaków do zainicjowanej zmiennej znakowej. Kopiowany ciąg jest wyrównywany do prawej wewnątrz zainicjowanej zmiennej.

Dim MójCiąg

MójCiąg = "0123456789"	' Zainicjuj ciąg.

Rset MójCiąg = "Prawo->"	' MójCiąg ma teraz wartość "   Prawo->".


Funkcja Space - przykład

W tym przykładzie wykorzystano funkcję Space do utworzenia ciągu wypełnionego określoną liczbą znaków spacji.

Dim MójCiąg

' Funkcja zwraca ciąg zawierający 10 spacji.

MójCiąg = Space(10)

' Wstaw 10 spacji między dwa ciągi znaków.

MójCiąg = "Pozdrawiam" & Space(10) & "wszystkich"


Funkcja Str - przykład

W tym przykładzie wykorzystano funkcję Str do uzyskania znakowej reprezentacji liczby. Pierwsza cyfra w znakowej reprezentacji liczby jest zawsze poprzedzona spacją lub znakiem tej liczby.

Dim MójCiąg

MójCiąg = Str(459)	' Wynik: " 459"

MójCiąg = Str(-459.65)	' Wynik: "-459.65"

MójCiąg = Str(459.001)	' Wynik: " 459.001"


Funkcja StrComp - przykład

W tym przykładzie zaprezentowano użycie funkcji StrComp do porównania dwóch ciągów. Jeżeli trzeci argument funkcji ma wartość 1, to funkcja dokona porównania znakowego obu ciągów. Jeżeli trzeci argument funkcji ma wartość 0 lub zostanie pominięty, to funkcja dokona porównania binarnego obu ciągów.

Dim MójCiąg1, MójCiąg2, MojePorów

MójCiąg1 = "ABCD": MójCiąg2 = "abcd"	' Zdefiniuj zmienne.

MojePorów = StrComp(MójCiąg1, MójCiąg2, 1)	' Wynik: 0

MojePorów = StrComp(MójCiąg1, MójCiąg2, 0)	' Wynik: -1

MojePorów = StrComp(MójCiąg2, MójCiąg1)	' Wynik: 1


Funkcja String - przykład

W tym przykładzie wykorzystano funkcję String do utworzenia ciągu znaków wypełnionego określoną liczbą powtarzających się znaków.

Dim MójCiąg

MójCiąg = String(5, "*")	' Wynik: "*****"

MójCiąg = String(5, 42)	' Wynik: "*****"

MójCiąg = String(10, "ABC")	' Wynik: "AAAAAAAAAA"


Funkcja UCase - przykład

W tym przykładzie wykorzystano funkcję UCase do zamiany liter w ciągu znaków na wielkie.

Dim MałeLitery, WielkieLitery

MałeLitery = "Pozdrawiam wszystkich 1234"	' Ciąg znaków do zamiany.

WielkieLitery = UCase(MałeLitery)	' Wynik: "POZDRAWIAM WSZYSTKICH 1234"


Chr - funkcja

Zwraca wartość typu String zawierającą znak odpowiadający podanemu kodowi znaku.

Składnia

Chr(kod_znaku)

Obowiązkowy argument kod_znaku jest typu Long i identyfikuje znak.

Użycie

Liczby od 0 do 31 są równoważne standardowym znakom niedrukowalnym z zestawu znaków ASCII. Na przykład Chr(10) zwraca znak wysuwu wiersza. Zazwyczaj kod_znaku przyjmuje wartości z zakresu od 0 do 255. Jednak w systemach DBCS kod_znaku przyjmuje wartości z zakresu od -32768 do 65536.

Uwaga   Funkcja ChrB jest stosowana do danych bajtowych zawartych w danych typu String. Nie zwraca ona znaku, który może składać się z jednego lub dwóch bajtów, lecz pojedynczy bajt. Funkcja ChrW zawsze zwraca wartość typu String zawierającą znak w formacie Unicode z wyjątkiem platform gdzie format Unicode nie jest obsługiwany, w tym przypadku funkcja ChrW zachowuje się identycznie jak funkcja Chr.


Format - funkcja

Zwraca wartość typu Variant (String) zawierającą wyrażenie sformatowane zgodnie z instrukcjami zawartymi w wyrażeniu formatującym.

Składnia

Format(wyrażenie[, format[, pierwszy_dzień_tygodnia [, pierwszy_tydzień_roku]]])

Składnia funkcji Format zawiera następujące elementy:

Element	Opis
wyrażenie	Element obowiązkowy. Jest to dowolne poprawne wyrażenie.
format	Element nieobowiązkowy. Jest to poprawne nazwane lub zdefiniowane przez użytkownika wyrażenie formatujące.
pierwszy_dzień_tygodnia	Element nieobowiązkowy. Jest to stała określająca pierwszy dzień tygodnia.
pierwszy_tydzień_roku	Element nieobowiązkowy. Jest to stała określająca pierwszy tydzień roku.
Dopuszczalne wartości

Argument pierwszy_dzień_tygodnia może przyjąć jedną z następujących wartości:

Stała	Wartość	Opis
vbUseSystem	0	Używana jest wartość z ustawień NLS API.
VbSunday	1	Niedziela (wartość domyślna)
vbMonday	2	Poniedziałek
vbTuesday	3	Wtorek
vbWednesday	4	Środa
vbThursday	5	Czwartek
vbFriday	6	Piątek
vbSaturday	7	Sobota
Argument pierwszy_tydzień_roku może przyjąć jedną z następujących wartości:

Stała	Wartość	Opis
vbUseSystem	0	Używana jest wartość z ustawień NLS API.
vbFirstJan1	1	Tydzień, w którym przypada 1 stycznia (wartość domyślna).
vbFirstFourDays	2	Pierwszy tydzień zawierający co najmniej cztery dni roku.
vbFirstFullWeek	3	Pierwszy pełen tydzień roku.
Użycie

Aby sformatować	Należy
Liczby	Użyć predefiniowanych nazwanych formatów numerycznych lub utworzyć własne, niestandardowe formaty numeryczne.
Daty i godziny	Użyć predefiniowanych nazwanych formatów daty i godziny lub utworzyć własne formaty daty i godziny.
Liczby seryjne daty i godziny	Użyć formatów daty i godziny lub formatów numerycznych.
Ciągi znaków	Utworzyć własne, niestandardowe formaty ciągów znaków.
Jeśli liczba będzie formatowana bez określenia formatu, funkcja Format zachowa się podobnie jak funkcja Str, uwzględniając przy tym ustawienia międzynarodowe. Liczby dodatnie formatowane jako ciągi znaków przy użyciu funkcji Format nie zawierają spacji wiodącej przeznaczonej na znak liczby; liczby formatowane za pomocą funkcji Str zawierają taką spację.


Nazwane formaty numeryczne (funkcja Format)

Poniższa tabela zawiera nazwy predefiniowanych formatów numerycznych:

Nazwa formatu	Opis
General Number	Wyświetla liczby bez separatorów tysięcy.
Currency	Wyświetla liczby z separatorami tysięcy, jeśli jest to konieczne; wyświetla dwie cyfry na prawo od separatora dziesiętnego. Postać wyświetlanej wartości zależy od ustawień regionalnych systemu.
Fixed	Wyświetla co najmniej jedną cyfrę na lewo i dwie cyfry na prawo od separatora dziesiętnego.
Standard	Wyświetla liczbę z separatorem tysięcy, co najmniej jedną cyfrę na lewo i dwie cyfry na prawo od separatora dziesiętnego.
Percent	Wyświetla liczbę pomnożoną przez 100 ze znakiem procentu dołączonym z prawej strony; zawsze są wyświetlane dwie cyfry na prawo od separatora dziesiętnego.
Scientific	Używa standardowej notacji wykładniczej.
Yes/No	Wyświetla No, jeśli liczba jest równa 0, w przeciwnym przypadku wyświetla Yes.
True/False	Wyświetla False jeśli liczba jest równa 0, w przeciwnym przypadku wyświetla True.
On/Off	Wyświetla Off, jeśli liczba jest równa 0, w przeciwnym przypadku wyświetla On.


Formaty numeryczne definiowane przez użytkownika (funkcja Format)

Poniższa tabela zawiera znaki, które mogą być używane do tworzenia definiowanych przez użytkownika formatów liczb.

Znak	Opis
Brak	Wyświetla liczbę bez formatowania.
(0)	Miejsce zarezerwowane na cyfrę dziesiętną. Powoduje wyświetlenie cyfry lub zera. Jeśli w wyrażeniu znajduje się cyfra w miejscu, w którym w ciągu formatującym znajduje się 0, to zostanie ona wyświetlona. W przeciwnym przypadku w miejscu tym będzie wyświetlone zero. Jeśli liczba ma mniej cyfr niż jest zer (po którejkolwiek ze stron separatora dziesiętnego) w wyrażeniu formatującym, wyświetlone zostaną początkowe lub końcowe zera. Jeśli liczba ma więcej cyfr na prawo od separatora dziesiętnego niż jest zer na prawo od separatora dziesiętnego w wyrażeniu formatującym, liczba zostanie zaokrąglona do tylu miejsc dziesiętnych, ile jest zer. Jeśli liczba ma więcej cyfr na lewo od separatora dziesiętnego niż jest zer na lewo od separatora dziesiętnego w wyrażeniu formatującym, dodatkowe cyfry zostaną wyświetlone bez zmian.
(#)	Miejsce zarezerwowane na cyfrę dziesiętną. Powoduje wyświetlenie cyfry lub niewyświetlenie żadnego znaku. Jeśli w wyrażeniu znajduje się cyfra w miejscu, w którym w ciągu formatującym znajduje się znak #, zostanie ona wyświetlona. W przeciwnym przypadku w tym miejscu nic nie zostanie wyświetlone. Ten symbol ma znaczenie podobne do symbolu 0, z wyjątkiem początkowych i końcowych zer, które nie są wyświetlane, jeśli liczba ma tyle samo lub mniej cyfr niż liczba znaków # po którejkolwiek ze stron separatora dziesiętnego w wyrażeniu formatującym.
(.)	Miejsce zarezerwowane na znak separatora dziesiętnego. Dla niektórych ustawień regionalnych jako znak separatora dziesiętnego jest używany przecinek. Miejsce zarezerwowane na separator określa, ile cyfr jest wyświetlanych na lewo i prawo od separatora dziesiętnego. Jeśli wyrażenie formatujące zawiera jedynie znaki numeru (#) na lewo od tego symbolu, liczby mniejsze niż 1 rozpoczynają się od separatora dziesiętnego. Aby wyświetlić początkowe 0 przed cyframi części ułamkowej, należy użyć 0 jako pierwszego oznaczenia miejsca cyfry dziesiętnej na lewo od separatora dziesiętnego. Faktyczny znak używany jako symbol separatora dziesiętnego w sformatowanym ciągu wyjściowym zależy od formatu liczb używanego przez system.
(%)	Znak procentu. Wyrażenie jest mnożone przez 100. Znak procentu (%) jest wstawiany na pozycji, na której znajduje się w ciągu formatującym.
(,)	Separator tysięcy. W niektórych ustawieniach regionalnych jako separator tysięcy używana jest kropka lub spacja. Separator ten oddziela tysiące od setek w liczbie posiadającej więcej niż cztery cyfry na lewo od separatora dziesiętnego. Separator działa w standardowy sposób, jeśli w ciągu formatującym znajduje się między symbolami cyfr dziesiętnych (0 lub #). Dwa sąsiadujące ze sobą separatory tysięcy lub też separator tysięcy znajdujący się bezpośrednio na lewo od separatora dziesiętnego (niezależnie od tego, czy istnieje część ułamkowa) oznacza "skaluj liczbę, dzieląc ją przez 1000 i zaokrąglając wynik, jeśli trzeba ". Na przykład, ciąg formatujący "##0,," może służyć do reprezentowania 100 milionów przez liczbę 100. Liczby mniejsze niż 1 milion są wyświetlane jako 0. Dwa sąsiadujące ze sobą separatory tysięcy znajdujące się na innym miejscu niż na lewo od separatora dziesiętnego są traktowane jak pojedynczy znak separatora tysięcy. Faktyczny znak używany jako separator tysięcy w sformatowanym ciągu wyjściowym zależy od formatu liczb używanego przez system.
(:)	Separator godziny. W niektórych ustawieniach regionalnych do reprezentowania separatora godziny mogą być używane inne znaki. Separator godziny oddziela godziny, minuty i sekundy przy formatowaniu wartości godziny. Faktyczny znak stosowany jako separator godziny w sformatowanym ciągu wyjściowym zależy od ustawień systemu.
(/)	Separator daty. W niektórych ustawieniach regionalnych do reprezentowania separatora daty mogą być używane inne znaki. Separator daty oddziela dzień, miesiąc i rok w sformatowanej dacie. Faktyczny znak używany jako separator daty w sformatowanym ciągu wyjściowym zależy od ustawień systemu.
(E- E+ e- e+)	Format wykładniczy. Jeśli wyrażenie formatujące zawiera co najmniej jeden symbol cyfry dziesiętnej (0 lub #) na prawo od znaków E-, E+, e- lub e+, to liczba jest wyświetlana w formacie wykładniczym, a znak E lub e zostaje wstawiony między liczbę a jej wykładnik. Liczba symboli oznaczających cyfry dziesiętne na prawo określa liczbę cyfr wykładnika. Znaki E- lub e- powodują umieszczenie znaku minus przed wykładnikami ujemnymi. Znaki E+ lub e+ powodują umieszczenie znaku minus przed wykładnikami ujemnymi, a znaku plus przed wykładnikami dodatnimi.
- + $ ( )	Wyświetla literalnie podany znak. Aby wyświetlić znak inny niż tu wymieniony, należy poprzedzić go kreską ukośną lewą (\) lub umieścić go w podwójnym cudzysłowie (" ").
(\)	Wyświetla następny znak z ciągu formatującego. Aby wyświetlić znak, który samodzielnie występujący ma specjalne znaczenie, należy poprzedzić go kreską ukośną lewą. (\). Sam znak kreski ukośnej lewej nie jest wyświetlany. Użycie tego znaku jest równoważne ujęciu następującego po nim znaku w podwójny cudzysłów. Aby wyświetlić kreskę ukośną lewą, należy użyć dwóch takich znaków (\\). Przykładami znaków, które nie mogą być wyświetlane literalnie, są znaki formatujące datę i godzinę (a, c, d, h, m, n, p, q, s, t, w, y, /, :), znaki formatujące liczby (#, 0, %, E, e, przecinek i kropka) oraz znaki formatujące ciągi znaków (@, &, <, >, !).
("ABC")	Wyświetla ciąg znaków znajdujący się między znakami cudzysłowu (" "). Aby z poziomu programu umieścić w argumencie format ciąg znaków, należy w celu ujęcia tekstu w cudzysłów użyć funkcji Chr(34) (34 jest kodem dla znaku cudzysłowu (")).


Różne formaty dla różnych wartości numerycznych (funkcja Format)

Zdefiniowane przez użytkownika wyrażenie formatujące dla liczb może zawierać do czterech sekcji oddzielonych średnikami. Jeśli argument format zawiera jeden z nazwanych formatów numerycznych, dozwolona jest tylko jedna sekcja.

Użyto	Efekt
Tylko jednej sekcji	Wyrażenie formatujące jest stosowane do wszystkich wartości.
Dwóch sekcji	Pierwsza sekcja jest stosowana do wartości dodatnich i zerowych, a druga do wartości ujemnych.
Trzech sekcji	Pierwsza sekcja jest stosowana do wartości dodatnich, druga do wartości ujemnych, a trzecia do zerowych.
Czterech sekcji	Pierwsza sekcja jest stosowana do wartości dodatnich, druga do wartości ujemnych, trzecia do zerowych, a czwarta do wartości Null.
Następujące przykłady zawierają dwie sekcje: pierwsza z nich definiuje format dla wartości dodatnich i zerowych; druga sekcja definiuje formaty dla wartości ujemnych.

"$#,##0;($#,##0)"

Jeśli między dwoma średnikami nie ma innych znaków, to brakująca sekcja jest drukowana przy zastosowaniu formatu dla wartości dodatnich. Na przykład, poniższy format wyświetla wartości dodatnie i ujemne zgodnie z formatem pierwszej sekcji oraz wyświetla napis "Zero", jeśli wartość jest równa zero.

"$#,##0;;\Z\e\r\o"


Przykład numerycznych wyrażeń formatujących definiowanych przez użytkownika

Następująca tabela zawiera kilka przykładów wyrażeń formatujących dla liczb. (W przykładach tych przyjęto, że ustawienia regionalne systemu to English-U.S.) Pierwsza kolumna zawiera ciągi formatujące; pozostałe kolumny zawierają wyniki otrzymane po zastosowaniu odpowiednich formatów do danych o wartościach podanych w nagłówku tabeli.

Format (format)	Dodatnia liczba 5	Ujemna liczba 5	Ułamek 0,5	Null
Ciąg znaków o długości zerowej ("")	5	-5	0.5
0	5	-5	1
0.00	5.00	-5.00	0.50
#,##0	5	-5	1
#,##0.00;;;Nil	5.00	-5.00	0.50	Nil
$#,##0;($#,##0)	$5	($5)	$1
$#,##0.00;($#,##0.00)	$5.00	($5.00)	$0.50
0%	500%	-500%	50%
0.00%	500.00%	-500.00%	50.00%
0.00E+00	5.00E+00	-5.00E+00	5.00E-01
0.00E-00	5.00E00	-5.00E00	5.00E-01


Nazwane formaty daty i godziny (funkcja Format)

Poniższa tabela zawiera nazwy predefiniowanych formatów daty i godziny:

Nazwa formatu	Opis
General Date	Wyświetla datę i/lub godzinę. Dla liczb rzeczywistych wyświetla datę i godzinę, na przykład 93-03-04 17:53. Jeśli nie ma części ułamkowej, wyświetlana jest wyłącznie data, na przykład 93-03-04. Jeśli nie na części całkowitej, wyświetlana jest wyłącznie godzina, na przykład 17:53. Sposób wyświetlania daty jest określony przez ustawienia systemu.
Long Date	Wyświetla datę, we właściwym dla systemu długim formacie daty.
Medium Date	Wyświetla datę, stosując pośredni format danych właściwy dla wersji językowej aplikacji głównej.
Short Date	Wyświetla datę we właściwym dla systemu krótkim formacie daty.
Long Time	Wyświetla godzinę, używając właściwego dla systemu długiego formatu godziny; zawiera godziny, minuty i sekundy.
Medium Time	Wyświetla godzinę w formacie 12-godzinnym, używając godziny, minuty i oznaczenia AM/PM.
Short Time	Wyświetla godzinę w formacie 24-godzinnym, na przykład 17:45.


Formaty daty i godziny definiowane przez użytkownika (funkcja Format)

Poniższa tabela podaje znaki służące do tworzenia definiowanych przez użytkownika formatów daty i godziny.

Znak	Opis
(:)	Separator godziny. W niektórych ustawieniach regionalnych separator czasu może być reprezentowany przez inny znak. Separator ten oddziela godziny, minuty i sekundy przy formatowaniu wartości oznaczających godzinę (czas). Faktyczny znak używany jako separator godziny w sformatowanym ciągu wyjściowym jest określony przez ustawienia systemu.
(/)	Separator daty. W niektórych ustawieniach regionalnych separator daty może być reprezentowany przez inny znak. Separator daty oddziela dzień, miesiąc i rok przy formatowaniu wartości oznaczających datę. Faktyczny znak używany jako separator daty w sformatowanym ciągu wyjściowym jest określony przez ustawienia systemu.
c	Wyświetla datę w postaci ddddd i godzinę w postaci  ttttt, w podanej kolejności. Wyświetla jedynie dane dotyczące daty, jeśli liczba seryjna daty nie ma części ułamkowej; wyświetla jedynie godzinę, jeśli liczba seryjna nie ma części całkowitej.
d	Wyświetla dzień jako liczbę nie poprzedzoną zerem (1 – 31).
dd	Wyświetla dzień jako liczbę poprzedzoną zerem (01 – 31).
ddd	Wyświetla skróconą nazwę dnia (Pn – N).
dddd	Wyświetla pełną nazwę dnia (poniedziałek– niedziela).
ddddd	Wyświetla pełną datę (zawierającą dzień, miesiąc i rok) sformatowaną zgodnie z systemowymi ustawieniami krótkiego formatu daty. W systemie Microsoft Windows domyślnym krótkim formatem daty jest yy/mm/dd.
dddddd	Wyświetla pełną datę (zawierającą dzień, miesiąc i rok) sformatowaną zgodnie z systemowymi ustawieniami długiego formatu daty. W systemie Microsoft Windows domyślnym długim formatem daty jest dd mmmm yyyy.
w	Wyświetla dzień tygodnia jako liczbę (1 dla niedzieli, 7 dla soboty).
ww	Wyświetla numer tygodnia w roku jako liczbę (1 – 54).
m	Wyświetla miesiąc jako liczbę nie poprzedzoną zerem (1 – 12). Jeśli m następuje bezpośrednio po h lub hh, zamiast miesiąca wyświetlane są minuty.
mm	Wyświetla miesiąc jako liczbę poprzedzoną zerem (1 – 12). Jeśli m następuje bezpośrednio po h lub hh, zamiast miesiąca wyświetlane są minuty.
mmm	Wyświetla skróconą nazwę miesiąca (Sty – Gru).
mmmm	Wyświetla pełną nazwę miesiąca (styczeń – grudzień).
q	Wyświetla kwartał roku jako liczbę (1 – 4).
y	Wyświetla dzień roku jako numer (1 – 366).
yy	Wyświetla rok jako liczbę dwucyfrową (00 – 99).
yyyy	Wyświetla rok jako liczbę czterocyfrową (100 – 9999).
h	Wyświetla godzinę jako liczbę nie poprzedzoną zerem (0 – 23).
hh	Wyświetla godzinę jako liczbę poprzedzoną zerem (00 – 23).
n	Wyświetla minutę jako liczbę nie poprzedzoną zerem (0 – 59).
nn	Wyświetla minutę jako liczbę poprzedzoną zerem (00 – 59).
s	Wyświetla sekundę jako liczbę nie poprzedzoną zerem (0 – 59).
ss	Wyświetla sekundę jako liczbę poprzedzoną zerem (00 – 59).
t t t t t	Wyświetla pełną godzinę (zawierającą godzinę, minutę i sekundę) sformatowaną z użyciem separatora godziny określonego w stosowanym przez system formacie godziny. Początkowe zero jest wyświetlane, jeśli w ustawieniach regionalnych wybrano odpowiednią opcję, oraz jeśli godzina jest wcześniejsza niż 10:00. W systemie Microsoft Windows domyślnym formatem godziny jest h:mm:ss.
AM/PM	Stosuje 12-godzinny format godziny i dla godzin przedpołudniowych wyświetla napis AM wielkimi literami; a dla godzin między południem a 23:59 wyświetla napis PM (także wielkimi literami).
am/pm	Stosuje 12-godzinny format godziny i dla godzin przedpołudniowych wyświetla napis AM małymi literami; a dla godzin między południem a 23:59 wyświetla napis PM (także małymi literami).
A/P	Stosuje 12-godzinny format godziny i dla godzin przedpołudniowych wyświetla napis A wielkimi literami; a dla godzin między południem a 23:59 wyświetla napis P (także wielkimi literami).
a/p	Stosuje 12-godzinny format godziny i dla godzin przedpołudniowych wyświetla napis A małymi literami; a dla godzin między południem a 23:59 wyświetla napis P (także małymi literami).
AMPM	Używa 12-godzinnego formatu godziny i dla godzin przedpołudniowych wyświetla literały znakowe AM w postaci zdefiniowanej przez system; wyświetla literał znakowy PM w postaci zdefiniowanej przez system dla godzin między południem a 23:59. Napis AMPM może być pisany zarówno wielkimi, jak i małymi literami, lecz wielkość liter ciągu wyświetlanego odpowiada ciągowi zdefiniowanemu w systemie. W systemie Microsoft Windows domyślnym formatem jest AM/PM.


Przykład formatów daty i godziny definiowanych przez użytkownika

Poniższa tabela zawiera przykłady zdefiniowanych przez użytkownika formatów daty i godziny dla 7 grudnia 1958.

Format	Ciąg wyjściowy
m/d/yy	12/7/58
d-mmm	7-Gru
d-mmmm-yy	7-grudnia-58
d mmmm	7 grudnia
mmmm yy	grudzień 58
hh:mm AM/PM	08:50 PM
h:mm:ss a/p	8:50:35 p
h:mm	20:50
h:mm:ss	20:50:35
yy-mm-dd h:mm	58-12-7 20:50


Formaty ciągów znaków definiowane przez użytkownika (funkcja Format)

Znaki znajdujące się w poniższej tabeli mogą zostać użyte przy tworzeniu wyrażeń formatujących dla ciągów znaków:

Znak	Opis
@	Miejsce zarezerwowane na znak. Powoduje wyświetlenie znaku lub odstępu. Jeśli ciąg zawiera znak w miejscu, w którym w ciągu formatującym występuje symbol handlowego "przy" (@), to zostanie on wyświetlony. W przeciwnym przypadku w tym miejscu zostanie wyświetlony odstęp. Miejsca zarezerwowane są wypełniane od strony prawej do lewej, o ile w ciągu formatującym nie wystąpi wykrzyknik (!).
&	Miejsce zarezerwowane na znak. Powoduje wyświetlenie znaku lub niewyświetlenie niczego. Jeśli ciąg zawiera znak w miejscu, w którym w ciągu formatującym występuje symbol handlowego "I" (&), to zostanie on wyświetlony. W przeciwnym przypadku w tym miejscu nie zostanie wyświetlony żaden znak. Miejsca zarezerwowane są wypełniane od strony prawej do lewej, o ile w ciągu formatującym nie wystąpi wykrzyknik (!).
<	Wymusza użycie małych liter. Wyświetla wszystkie znaki przy użyciu małych liter.
>	Wymusza użycie wielkich liter. Wyświetla wszystkie znaki przy użyciu wielkich liter.
!	Wymusza wypełnienie miejsc zarezerwowanych na znaki od strony lewej do prawej. Domyślnie, miejsca zarezerwowane na znaki są wypełniane od strony prawej do lewej.


Różne formaty dla różnych wartości ciągów znakowych (funkcja Format)

Wyrażenie formatujące dla ciągów znaków może składać się z jednej lub dwóch sekcji oddzielonych średnikiem (;).

Użyto	Efekt
Jedynie jednej sekcji	Format jest stosowany do wszystkich ciągów.
Dwóch sekcji	Pierwsza sekcja jest stosowana do ciągów z danymi, druga do wartości Null i ciągów znaków o długości zerowej ("").


Hex - funkcja

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

Składnia

Hex(liczba)

Obowiązkowy argument liczba jest dowolnym poprawnym wyrażeniem numerycznym lub wyrażeniem znakowym.

Użycie

Jeśli liczba nie jest liczbą całkowitą, przed obliczeniem wartości funkcji jest zaokrąglana do najbliższej liczby całkowitej.

Jeśli number jest równa	Funkcja Hex zwraca
Null	Null.
Empty	zero (0).
dowolnej innej wartości	do ośmiu znaków szesnastkowych.
Liczby mogą być bezpośrednio reprezentowane w postaci szesnastkowej przez poprzedzenie liczby znakami &H. Na przykład, liczba &H10 to postać szesnastkowa dziesiętnej liczby 16.


InStr - funkcja

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

Składnia

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

Funkcja InStr ma następujące argumenty:

Argument	Opis
start	Argument nieobowiązkowy. Jest to wyrażenie numeryczne służące do ustalenia pozycji początkowej przeszukiwania. Jeśli argument został pominięty, przeszukiwanie zaczyna się od pierwszego znaku. Jeśli argument start zawiera wartość Null, wystąpi błąd. Argument start jest obowiązkowy, jeśli występuje argument compare.
string1	Argument obowiązkowy. Przeszukiwane wyrażenie znakowe.
string2	Argument obowiązkowy. Poszukiwane wyrażenie znakowe.
compare	Argument nieobowiązkowy. Określa typ porównania ciągów znaków. Argument compare może zostać pominięty lub może przyjąć wartość 0, 1 lub 2. Wartość 0 (domyślna) oznacza porównanie binarne. Wartość 1 oznacza porównanie tekstowe, przy którym nie jest brana pod uwagę wielkość liter. Wartość 2 ma sens tylko przy korzystaniu z bazy danych Microsoft Access i służy do przeprowadzenia porównania na podstawie informacji zawartej w bazie danych. Jeśli wartość elementu compare wynosi Null, wystąpi błąd. Jeśli pominięto wartość compare, to typ porównania jest określony przez ustawienie parametru Option Compare.
Zwracane wartości

Jeżeli	Funkcja InStr zwraca
string1 ma długość zerową	0.
string1 ma wartość Null	Null.
string2 ma długość zerową	start.
string2 ma wartość Null	Null.
string2 nie został znaleziony	0.
string2 został znaleziony w string1	pozycję, na której znaleziono pasujący ciąg.
start > string2	0.
Użycie

Funkcja InStrB jest używana do danych bajtowych zawartych w ciągu znaków. Zamiast zwracania pozycji znakowej, na której po raz pierwszy jeden ciąg występuje w drugim, funkcja InStrB zwraca pozycję bajtową.


LCase - funkcja

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

Składnia

LCase(ciąg)

Obowiązkowy argument ciąg jest dowolnym poprawnym wyrażeniem znakowym. Jeśli ciąg zawiera wartość Null, zwracana jest wartość Null.

Użycie

Na małe litery zamieniane są tylko wielkie litery; wszystkie małe litery i znaki nie będące literami pozostają nie zmienione.


Left - funkcja

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

Składnia

Left(string, length)

Funkcja Left ma następujące nazwane argumenty:

Argument	Opis
string	Argument obowiązkowy. Jest to wyrażenie znakowe, z którego lewej strony są zwracane znaki. Jeśli string zawiera wartość Null, zwracana jest wartość Null.
length	Argument obowiązkowy typu Variant (Long). Jest to wyrażenie numeryczne określające liczbę zwracanych znaków. Jeśli wartość tego argumentu równa jest 0, zwracany jest ciąg znaków a długości zerowej (""). Jeśli wartość ta jest większa lub równa liczbie znaków w string, zwracany jest cały ciąg.
Użycie

Aby określić liczbę znaków w string, należy użyć funkcji Len.

Uwaga Do danych bajtowych zawartych w ciągu znaków należy stosować funkcję LeftB. W takim przypadku element length określa liczbę bajtów, a nie liczbę znaków.


Len - funkcja

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

Składnia

Len(ciąg | nazwa_zmiennej)

Składnia funkcji Len zawiera następujące elementy:

Element	Opis
ciąg	Dowolne poprawne wyrażenie znakowe. Jeśli ciąg zawiera wartość Null, zwracana jest wartość Null.
nazwa_zmiennej	Dowolna poprawna nazwa zmiennej. Jeśli ta zmienna zawiera wartość Null, zwracana jest wartość Null. Jeśli zmienna jest wartością typu Variant, to funkcja Len traktuje ją jak wartość typu String i zawsze zwraca liczbę zawartych w niej znaków.
Użycie

Obowiązkowe jest użycie jednego (i tylko jednego) argumentu. W przypadku typu zdefiniowanego przez użytkownika funkcja Len zwraca rozmiar, jaki miałyby dane zapisywane do pliku.

Uwaga   Do danych bajtowych zawartych w ciągu należy stosować funkcję LenB. W takim przypadku funkcja LenB zwraca liczbę bajtów potrzebnych do reprezentacji tego ciągu, a nie liczbę znaków w ciągu. W przypadku typów zdefiniowanych przez użytkownika, funkcja LenB zwraca rozmiar typu w pamięci, wliczając w to ewentualne wypełnienie przerw między elementami.

Uwaga   Funkcja Len może nie być w stanie określić rzeczywistego rozmiaru ciągów o zmiennej długości zastosowanych w typach danych zdefiniowanych przez użytkownika.


LSet - instrukcja

Wyrównuje do lewej ciąg znaków zawarty w zmiennej znakowej lub kopiuje zmienną jednego typu zdefiniowanego przez użytkownika do innej zmiennej typu zdefiniowanego przez użytkownika.

Składnia

LSet zmienna_znakowa = ciąg

LSet nazwa_zmiennej_1 = nazwa_zmiennej_2

Składnia instrukcji LSet zawiera następujące elementy:

Element	Opis
zmienna_znakowa	Element obowiązkowy. Jest to nazwa zmiennej znakowej.
ciąg	Element obowiązkowy. Jest to wyrażenie znakowe, które ma być wyrównane do lewej wewnątrz zmiennej_znakowej.
nazwa_zmiennej_1	Element obowiązkowy. Jest to nazwa zmiennej typu zdefiniowanego przez użytkownika, do której następuje kopiowanie.
nazwa_zmiennej_2	Element obowiązkowy. Jest to nazwa kopiowanej zmiennej typu zdefiniowanego przez użytkownika.
Użycie

Funkcja LSet zamienia na spacje wszystkie pozostałe znaki zmiennej_znakowej.

Jeśli ciąg jest dłuższy niż zmienna_znakowa, funkcja LSet umieszcza w zmiennej_znakowej jedynie tyle znaków (od lewej), ile wynosi długość zmiennej_znakowej.

Ostrzeżenie   Nie jest zalecane używanie funkcji LSet do kopiowania zmiennej typu zdefiniowanego przez użytkownika do zmiennej innego typu zdefiniowanego przez użytkownika. Kopiowanie danych jednego typu danych w obszar przeznaczony dla innego typu danych może dać nieprzewidziane efekty.

Podczas kopiowania zmiennej jednego typu zdefiniowanego przez użytkownika do zmiennej innego typu, binarne dane jednej zmiennej są kopiowane do obszaru pamięci zajmowanego przez drugą zmienną, bez brania pod uwagę typów danych elementów składowych tych zmiennych.


LTrim, Rtrim i Trim - funkcje

Każda z tych funkcji zwraca wartość typu Variant (String) zawierającą kopię podanego ciągu znaków: bez spacji wiodących (LTrim), bez spacji końcowych (RTrim) lub bez spacji wiodących i końcowych (Trim).

Składnia

LTrim(ciąg)

RTrim(ciąg)

Trim(ciąg)

Obowiązkowy argument ciągu jest dowolnym poprawnym wyrażeniem znakowym. Jeżeli ciąg ma wartość Null, zwracana jest wartość Null.


Mid - funkcja

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

Składnia

Mid(string, start[, length])

Funkcja Mid ma następujące nazwane argumenty:

Argument	Opis
string	Argument obowiązkowy. Jest to wyrażenie znakowe, z którego zwracane są znaki. Jeżeli string zawiera wartość Null, zwracana jest wartość Null.
start	Argument obowiązkowy typu Long. Określa początkową pozycję znaków pobieranych z string. Jeżeli wartość start jest większa niż liczba znaków w string, funkcja Mid zwraca ciąg znaków o długości zerowej ("").
length	Argument nieobowiązkowy typu Variant (Long). Określa liczbę zwracanych znaków. Jeśli pominięto tę wartość lub też jeśli tekst zawiera mniej znaków niż length (łącznie ze znakiem na pozycji start), zwracane są wszystkie znaki począwszy od pozycji start aż do końca ciągu.
Użycie

Aby określić liczbę znaków w string, należy stosować funkcję Len.

Uwaga   Do danych bajtowych zawartych w ciągu znaków należy używać funkcji MidB. W takim przypadku argumenty określają liczbę bajtów, a nie liczbę znaków


Mid - instrukcja

Zastępuje podaną liczbę znaków w zmiennej typu Variant (String) znakami z innego ciągu znaków.

Składnia

Mid(zmienna_znakowa, początek[, długość]) = ciąg

Składnia instrukcji Mid zawiera następujące elementy:

Element	Opis
zmienna_znakowa	Element obowiązkowy. Jest to nazwa modyfikowanej zmiennej znakowej.
początek	Element obowiązkowy typu Variant (Long). Jest to pozycja znakowa w zmiennej_znakowej, od której rozpoczyna się zastępowany tekst.
długość	Element nieobowiązkowy typu Variant (Long). Jest to liczba zastępowanych znaków. W przypadku pominięcia, zastępowany jest cały ciąg.
ciąg	Element obowiązkowy. Jest to wyrażenie znakowe, którego wartość zastępuje część zmiennej_znakowej.
Użycie

Liczba zastępowanych znaków jest zawsze mniejsza lub równa liczbie znaków w zmiennej_znakowej.

Uwaga Do danych bajtowych zawartych w ciągu znaków należy stosować instrukcję MidB. W instrukcji MidB element początek określa pozycję bajtową w zmiennej_znakowej, od której rozpoczyna się zastępowanie, zaś długość określa liczbę zastępowanych bajtów.


Oct - funkcja

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

Składnia

Oct(liczba)

Obowiązkowy argument liczba jest dowolnym poprawnym wyrażeniem numerycznym lub wyrażeniem znakowym.

Użycie

Jeśli liczba nie jest liczbą całkowitą, przed obliczeniem wartości funkcji jest zaokrąglana do najbliższej liczby całkowitej.

Jeśli number jest równa	Funkcja Oct zwraca
Null	Null.
Empty	zero (0).
dowolnej innej liczbie	do 11 znaków oktalnych (ósemkowych).
Liczby mogą być bezpośrednio reprezentowane w postaci ósemkowej przez poprzedzenie liczby znakami &O. Na przykład, liczba &O10 to postać ósemkowa dziesiętnej liczby 8.


Right - funkcja

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

Składnia

Right(string, length)

Funkcja Right ma następujące nazwane argumenty:

Argument	Opis
string	Argument obowiązkowy. Jest to wyrażenie znakowe, z którego prawej strony zwracane są znaki. Jeśli string zawiera wartość Null, zwracana jest wartość Null.
length	Argument obowiązkowy typu Variant (Long). Jest to wyrażenie numeryczne określające liczbę zwracanych znaków. Jeśli wartość tego argumentu jest równa 0, zwracany jest ciąg znaków o długości zerowej (""). Jeśli wartość ta jest większa lub równa liczbie znaków w string, zwracany jest cały ciąg znaków.
Użycie

Aby określić liczbę znaków w string, należy użyć funkcji Len.

Uwaga   Do danych bajtowych zawartych w ciągu znaków należy stosować funkcję RightB. W takim przypadku, element length określa liczbę zwracanych bajtów, a nie liczbę znaków.


RSet - instrukcja

Wyrównuje do prawej ciąg znaków zawarty w zmiennej znakowej.

Składnia

RSet zmienna_znakowa = ciąg

Składnia instrukcji RSet zawiera następujące elementy:

Element	Opis
zmienna_znakowa	Element obowiązkowy. Jest to nazwa zmiennej znakowej.
ciąg	Element obowiązkowy. Jest to wyrażenie znakowe, które ma być wyrównane w prawo wewnątrz zmiennej_znakowej.
Użycie

Jeżeli zmienna_znakowa jest dłuższa niż ciąg, instrukcja RSet zastępuje spacjami wszystkie pozostałe znaki w zmiennej_znakowej, aż do jej początku.

Uwaga   Instrukcja RSet nie może być stosowana z typami danych zdefiniowanych przez użytkownika.


Space - funkcja

Zwraca wartość typu Variant (String) składającą się z podanej liczby spacji.

Składnia

Space(liczba)

Obowiązkowy argument liczba oznacza liczbę spacji, które mają znaleźć się w ciągu znaków.

Użycie

Funkcja Space jest używana do ciągów wyjściowych i usuwania danych z ciągów znaków o stałej długości.


Str - funkcja

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

Składnia

Str(liczba)

Obowiązkowy argument liczba jest wartością typu Long zawierającą dowolne poprawne wyrażenie numeryczne.

Użycie

Podczas zamiany liczby na ciąg znaków na znak liczby rezerwowana jest zawsze spacja. Jeżeli liczba jest dodatnia, zwracany ciąg zawiera na początku spację, co oznacza znak plus.

Funkcja Format służy do zamiany wartości numerycznych, które mają być sformatowane jako daty, godziny lub wartości pieniężne. W odróżnieniu od funkcji Str, funkcja Format nie umieszcza na początku spacji przeznaczonej na znak liczby.

Uwaga   Funkcja Str rozpoznaje jedynie kropkę (.) jako znak separatora dziesiętnego. Jeśli w tym celu stosowany jest inny znak (na przykład w aplikacjach międzynarodowych), do zamiany liczby na ciąg znaków należy użyć funkcji CStr.


StrComp - funkcja

Zwraca wartość typu Variant (Integer) wskazującą wynik porównania ciągów znaków.

Składnia

StrComp(string1, string2[, compare])

Funkcja StrComp ma następujące nazwane argumenty:

Argument	Opis
string1	Argument obowiązkowy. Jest to dowolne poprawne wyrażenie znakowe.
string2	Argument obowiązkowy. Jest to dowolne poprawne wyrażenie znakowe.
compare	Argument nieobowiązkowy. Określa typ porównania ciągów. Argument compare może być pominięty lub jego wartość może być równa 0, 1 lub 2. Wartość 0 (domyślna) oznacza porównanie binarne. Wartość 1 oznacza porównanie tekstowe. Wartość 2 ma sens tylko przy korzystaniu z bazy danych Microsoft Access i służy do przeprowadzenia porównania na podstawie informacji zawartej w bazie danych. Jeśli element compare jest równy Null, wystąpi błąd. Jeśli pominięto wartość compare, to typ porównania jest określony przez ustawienie parametru Option Compare.
Zwracane wartości

Jeżeli	Funkcja StrComp zwraca
string1 jest mniejszy niż string2	-1.
string1 i string2 są równe	0.
string1 jest większy niż string2	1.
string1 lub string2 są równe Null	Null.


StrConv - funkcja

Zwraca wartość typu Variant (String) poddaną żądanej konwersji.

Składnia

StrConv(string, conversion)

Funkcja StrConv ma następujące nazwane argumenty:

Argument	Opis
string	Argument obowiązkowy. Jest to wyrażenie znakowe podlegające konwersji.
conversion	Argument obowiązkowy typu Integer. Jest to suma wartości określających typ przeprowadzanych konwersji.
Ustawienia

Dopuszczalne są następujące wartości argumentu conversion:

Stała	Wartość	Opis
vbUpperCase	1	Zamienia znaki ciągu na wielkie litery.
vbLowerCase	2	Zamienia znaki ciągu na małe litery.
vbProperCase	3	Zamienia pierwszą literę każdego wyrazu w ciągu na wielką literę.
vbWide*	4*	Zamienia jednobajtowe (wąskie) znaki ciągu na znaki dwubajtowe (szerokie).
vbNarrow*	8*	Zamienia dwubajtowe (szerokie) znaki ciągu na znaki jednobajtowe (wąskie).
vbKatakana**	16**	Zamienia w ciągu znaki alfabetu Hiragana na znaki alfabetu Katakana.
vbHiragana**	32**	Zamienia w ciągu znaki alfabetu Katakana na znaki alfabetu Hiragana.
vbUnicode	64	Zamienia ciąg na postać Unicode, stosując domyślną stronę kodową systemu.
VbFromUnicode	128	Zamienia ciąg z postaci Unicode na znaki z domyślnej strony kodowej systemu.
*	Używane w ustawieniach regionalnych dla Dalekiego Wschodu.

**	Używane wyłącznie w Japonii.

Uwaga   Te stałe są zdefiniowane w systemie Visual Basic for Applications. Dlatego też mogą być używane w dowolnym miejscu kodu programu, zastępując ich wartości liczbowe. Większość z nich może być używana jednocześnie, na przykład vbUpperCase + vbWide, z wyjątkiem tych przypadków, gdy ich działanie wzajemnie się wyklucza, na przykład vbUnicode + vbFromUnicode. Stałe vbWide, vbNarrow, vbKatakana i vbHiragana powodują wystąpienie błędów wykonania, jeśli są używane z ustawieniami regionalnymi, dla których jest to pozbawione sensu.

Podczas ustalania wielkości liter następujące wartości są poprawnymi separatorami wyrazów: Null (Chr$(0)), tabulacja pozioma (Chr$(9)), wysuw wiersza (Chr$(10)), tabulacja pionowa (Chr$(11)), wysuw strony (Chr$(12)), powrót karetki (Chr$(13)), spacja (SBCS) (Chr$(32)). Dla DBCS, wartości odpowiadające spacji stosowane w różnych krajach mogą się różnić.


String - funkcja

Zwraca wartość typu Variant (String) zawierającą ciąg składający się ze znaku powtórzonego podaną liczbę razy.

Składnia

String(number, character)

Funkcja String ma następujące nazwane argumenty:

Argument	Opis
number	Argument obowiązkowy typu Long. Jest to długość zwracanego ciągu. Jeżeli argument number zawiera Null, zwracana jest wartość Null.
character	Argument obowiązkowy typu Variant. Jest to kod określający znak lub wyrażenie znakowe, którego pierwszy znak służy do utworzenia zwracanego ciągu. Jeśli element character zawiera Null, zwracana jest wartość Null.
Użycie

Jeśli wartość oznaczająca character jest większa niż 255, funkcja String zamienia tę wartość na poprawny kod znaku według wzoru:

character Mod 256


UCase - funkcja

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

Składnia

UCase(ciąg)

Obowiązkowy argument ciąg jest dowolnym poprawnym wyrażeniem znakowym. Jeżeli ciąg zawiera Null, zwracana jest wartość Null.

Użycie

Na wielkie litery zamieniane są jedynie małe litery; wszystkie wielkie litery i znaki nie będące literami pozostają nie zmienione.


Słowa kluczowe według kategorii

Kategoria	Opis
Tablice	Tworzenie, usuwanie i korzystanie z tablic
Dyrektywy dla kompilatora	Sterowanie przebiegiem kompilacji
Sterowanie przebiegiem programu	Realizacja pętli i sterowanie wykonywaniem kodu procedur
Konwersja	Konwersje liczb i dat
Typy danych	Typy danych i podtypy danych wariantowych
Daty i godziny	Konwersje i korzystanie z wyrażeń oznaczających daty i godziny
Katalogi i pliki	Zarządzanie systemem plików i przetwarzanie plików
Błędy	Przechwytywanie błędów i zwracanie wartości identyfikujących błędy
Operacje finansowe	Wykonywanie obliczeń finansowych
Operacje wejścia i wyjścia	Wczytywanie danych wejściowych i wyświetlanie lub drukowanie danych wyjściowych
Operacje matematyczne	Realizacja obliczeń trygonometrycznych i innych operacji matematycznych
Inne	Uruchamianie innych aplikacji i przetwarzanie zdarzeń
Operatory	Porównywanie wyrażeń i realizacja innych operacji
Operacje na ciągach	Operowanie na ciągach znaków
Zmienne i stałe	Deklarowanie i definiowanie zmiennych i stałych


Słowa kluczowe dla operacji na tablicach - podsumowanie

Operacja	Słowa kluczowe
Sprawdź, czy tablica.	IsArray
Utwórz tablicę.	Array
Zmień domyślne ograniczenie dolne.	Option Base
Zadeklaruj i zainicjuj tablicę.	Dim, Private, Public, ReDim, Static
Znajdź ograniczenia tablicy.	LBound, UBound
Ponownie zainicjuj tablicę.	Erase, ReDim


Słowa kluczowe dla operacji na kolekcjach obiektów - podsumowanie

Operacja	Słowa kluczowe
Utwórz obiekt Collection.	Collection
Dodaj obiekt do kolekcji.	Add
Usuń obiekt z kolekcji.	Remove
Wskaż element kolekcji.	Item


Słowa kluczowe oznaczające dyrektywy dla kompilatora - podsumowanie

Operacja	Słowa kluczowe
Zdefiniuj stałą kompilacji.	#Const
Skompiluj jedynie wyznaczone bloki kodu programu.	#If...Then...#Else


Słowa kluczowe służące do sterowania przebiegiem programu - podsumowanie

Operacja	Słowa kluczowe
Przejdź do wskazanego punktu programu.	GoSub...Return, Go To, On Error, On...GoSub, On...GoTo
Zakończ lub wstrzymaj wykonywanie programu.	DoEvents, End, Exit, Stop
Pętla programowa	Do...Loop, For...Next, For Each...Next, While...Wend, With
Rozgałęzienie decyzyjne	Choose, If...Then...Else, Select Case, Switch
Wywołanie lub deklaracja procedury	Call, Function, Property Get, Property Let, Property Set, Sub


Słowa kluczowe dla konwersji - podsumowanie

Operacja	Słowa kluczowe
Zamiana wartości ANSI na ciąg znaków	Chr
Zmiana wielkości liter w ciągu znaków	Format, LCase, UCase
Zamiana daty na numer seryjny	DateSerial, DateValue
Zmiana podstawy liczenia	Hex, Oct
Zamiana liczby na ciąg znaków	Format, Str
Konwersja typu danych	CBool, CByte, CCur, CDate, CDbl, CDec, CInt, CLng, CSng, CStr, CVar, CVErr, Fix, Int
Wydobycie z daty dnia, dnia tygodnia, miesiąca lub roku	Day, Month, Weekday, Year
Wydobycie z czasu dnia godziny, minuty lub sekundy	Hour, Minute, Second
Zamiana ciągu znaków na wartość ASCII	Asc
Zamiana ciągu znaków na liczbę	Val
Zamiana godziny na numer seryjny	TimeSerial, TimeValue


Słowa kluczowe dotyczące typów danych - podsumowanie

Operacja	Słowa kluczowe
Konwersje typów danych	CBool, CByte, CCur, CDate, CDbl, CDec, CInt, CLng, CSng, CStr, CVar, CVErr, Fix, Int
Nadanie wbudowanego typu danych	Boolean, Byte, Currency, Date, Double, Integer, Long, Object, Single, String, Vriant (domyślny)
Sprawdzenie typu danych	IsArray, IsDate, IsEmpty, IsError, IsMissing, IsNull, IsNumeric, IsObject


Słowa kluczowe dla operacji na datach i godzinach - podsumowanie

Operacja	Słowa kluczowe
Pobierz bieżącą datę i godzinę.	Date, Now, Time
Wykonaj obliczenia na datach.	DateAdd, DateDiff, DatePart
Podaj datę.	DateSerial, DateValue
Podaj godzinę.	TimeSerial, TimeValue
Ustaw datę lub godzinę.	Date, Time
Mierz czas pracy procesu.	Timer


Słowa kluczowe dla operacji na katalogach i plikach - podsumowanie

Operacja	Słowa kluczowe
Zmień katalog lub folder.	ChDir
Zmień dysk.	ChDrive
Skopiuj plik.	FileCopy
Utwórz katalog lub folder.	MkDir
Usuń katalog lub folder.	RmDir
Zmień nazwę pliku, katalogu lub folderu.	Name
Podaj bieżącą ścieżkę.	CurDir
Podaj datę i godzinę pliku.	FileDateTime
Podaj atrybuty pliku, katalogu i etykiety.	GetAttr
Podaj rozmiar pliku.	FileLen
Podaj nazwę pliku lub etykietę woluminu.	Dir
Ustaw atrybuty pliku.	SetAttr


Słowa kluczowe dla operacji na błędach - podsumowanie

Operacja	Słowa kluczowe
Generowanie błędów wykonania	Clear, Error, Raise
Podaj komunikat o błędzie.	Error
Podaj informacje o błędzie.	Err
Zwróć do zmiennej wariantowej obiekt Error.	CVErr
Przechwytywanie błędów w trakcie wykonywania programu	On Error, Resume
Sprawdź, czy błąd.	IsError


Słowa kluczowe dla operacji finansowych - podsumowanie

Operacja	Słowa kluczowe
Oblicz amortyzację.	DDB, SLN, SYD
Oblicz wartość przyszłą.	FV
Oblicz stopę oprocentowania.	Rate
Oblicz wewnętrzną stopę zwrotu.	IRR, MIRR
Oblicz liczbę okresów.	NPer
Oblicz płatności.	IPmt, Pmt, PPmt
Oblicz wartość bieżącą.	NPV, PV


Słowa kluczowe dla operacji wejścia i wyjścia - podsumowanie

Operacja	Słowa kluczowe
Uzyskaj dostęp do pliku lub utwórz plik.	Open
Zamknij plik lub pliki.	Close, Reset
Ustal wygląd danych wyjściowych.	Format, Print, Print #, Spc, Tab, Width #
Skopiuj plik.	FileCopy
Podaj informacje o pliku.	EOF, FileAttr, FileDateTime, FileLen, FreeFile, GetAttr, Loc, LOF, Seek
Zarządzaj plikami.	Dir, Kill, Lock, Unlock, Name
Czytaj z pliku.	Get, Input, Input #, Line Input #
Podaj rozmiar pliku.	FileLen
Ustaw lub podaj atrybuty pliku.	FileAttr, GetAttr, SetAttr
Ustaw dla pliku pozycję następnej operacji odczytu lub zapisu.	Seek
Pisz do pliku.	Print #, Put, Write #


Słowa kluczowe dla operacji matematycznych - podsumowanie

Operacja	Słowa kluczowe
Funkcje trygonometryczne	Atn, Cos, Sin, Tan
Obliczenia ogólne	Exp, Log, Sqr
Generacja liczb losowych	Randomize, Rnd
Obliczenie wartości bezwzględnej	Abs
Znak wartości wyrażenia	Sgn
Konwersje numeryczne	Fix, Int


Inne słowa kluczowe - podsumowanie

Operacja	Słowa kluczowe
Przetwórz zgłoszone zdarzenie.	DoEvents
Uruchom inny program.	AppActivate, Shell
Wyślij naciśnięcia klawiszy do aplikacji.	SendKeys
Zasygnalizuj dźwiękiem.	Beep
System	Environ
Podaj treść wiersza polecenia.	Command
Macintosh	MacID, MacScript
Automatyzacja	CreateObject, GetObject
Kolor	QBColor, RGB


Słowa kluczowe określające operatory - podsumowanie

Operacja	Słowa kluczowe
Arytmetyka	^, – , *, /, \, Mod, +, &
Porównywanie	=, <>, <, >, <=, >=, Like, Is
Operacje logiczne	Not, And, Or, Xor, Eqv, Imp


Słowa kluczowe dla operacji na Rejestrze - podsumowanie

Operacja	Słowa kluczowe
Usuń ustawienia dotyczące programu.	DeleteSetting
Odczytaj ustawienia dotyczące programu.	GetSetting, GetAllSettings
Zapisz ustawienia dotyczące programu.	SaveSetting


Słowa kluczowe dla operacji na ciągach znaków - podsumowanie

Operacja	Słowa kluczowe
Porównaj dwa ciągi znaków.	StrComp
Dokonaj konwersji ciągu znaków.	StrConv
Zmień wielkość liter.	Format, LCase, UCase
Utwórz ciąg składający się z jednego znaku powtórzonego wielokrotnie.	Space, String
Podaj długość ciągu znaków.	Len
Sformatuj ciąg znaków.	Format
Wyrównaj ciąg znaków.	LSet, RSet
Operacje różne	InStr, Left, LTrim, Mid, Right, RTrim, Trim
Ustal reguły porównywania ciągów znaków.	Option Compare
Operacje na wartościach ASCII i ANSI.	Asc, Chr


Słowa kluczowe dla operacji na zmiennych i stałych - podsumowanie

Operacja	Słowa kluczowe
Przypisz wartość.	Let
Zadeklaruj zmienną lub stałą.	Const, Dim, Private, Public, New, Static
Zadeklaruj moduł jako prywatny.	Option Private Module
Podaj informacje o zmiennej wariantowej.	IsArray, IsDate, IsEmpty, IsError, IsMissing, IsNull, IsNumeric, IsObject, TypeName, VarType
Odwołaj się do bieżącego obiektu.	Me
Zażądaj jawnych deklaracji zmiennych.	Option Explicit
Ustal domyślny typ danych.	Deftype


Błędy przechwytywalne

Błędy przechwytywalne występują zazwyczaj w trakcie wykonywania aplikacji. Niektóre błędy przechwytywalne mogą również wystąpić w czasie projektowania lub w czasie kompilacji. Wykrywanie tego typu błędów oraz reagowanie na nie można realizować za pomocą instrukcji On Error oraz posługując się obiektem Err. Numery błędów od 1 do 1000 są aktualnie nie wykorzystane i są zarezerwowane dla przyszłych wersji systemu Visual Basic.

Kod	Komunikat
3	Instrukcja Return bez instrukcji GoSub.
5	Nieprawidłowe wywołanie procedury.
6	Przepełnienie.
7	Za mało pamięci
9	Indeks poza zakresem.
10	Ta tablica ma stały rozmiar lub jest chwilowo zablokowana.
11	Dzielenie przez zero.
13	Niezgodność typów.
14	Brak miejsca na ciąg znaków
16	Wyrażenie jest zbyt skomplikowane.
17	Nie można wykonać żądanej operacji.
18	Wystąpiło przerwanie użytkownika.
20	Instrukcja Resume bez wystąpienia błędu.
28	Brak miejsca na stosie
35	Procedura Sub, Function lub Property nie została zdefiniowana.
47	Za dużo klientów aplikacji DLL
48	Błąd ładowania biblioteki DLL.
49	Błędna konwencja wywołania biblioteki DLL.
51	Błąd wewnętrzny.
52	Błędna nazwa lub numer pliku.
53	Nie można odnaleźć podanego pliku.
54	Błędny tryb pliku.
55	Plik jest już otwarty.
57	Błąd urządzenia podczas operacji we-wy.
58	Plik już istnieje.
59	Błędna długość rekordu.
61	Brak miejsca na dysku
62	Próba odczytu poza końcem pliku.
63	Błędny numer rekordu.
67	Za dużo plików
68	Urządzenie nie jest dostępne.
70	Brak uprawnień
71	Dysk nie jest gotowy.
74	Nie można zmienić nazwy, używając nazwy innego dysku.
75	Błąd dostępu do pliku/ścieżki.
76	Nie można odnaleźć ścieżki.
91	Zmienna obiektowa lub zmienna bloku With nie jest ustawiona.
92	Nie zainicjowana pętla For.
93	Nieprawidłowy ciąg znaków wzorca.
94	Błędne użycie Null.
97	Nie można wywołać procedury typu Friend z obiektu nie będącego wystąpieniem klasy definiującej.
298	Nie można załadować podanej systemowej biblioteki DLL.
320	W nazwach plików nie można używać znakowych nazw urządzeń.
321	Nieprawidłowy format pliku.
322	Nie można utworzyć niezbędnego pliku tymczasowego.
325	Nieprawidłowy format w pliku zasobów.
327	Nie odnaleziono wartości danej o podanej nazwie.
328	Niedozwolony parametr. Nie można zapisać tablic.
335	Brak dostępu do rejestru systemowego
336	Składnik ActiveX został niepoprawnie zarejestrowany.
337	Nie można odnaleźć składnika ActiveX.
338	Składnik ActiveX nie został uruchomiony poprawnie.
360	Obiekt został już załadowany.
361	Nie można załadować tego obiektu lub usunąć go z pamięci.
363	Nie odnaleziono podanego formantu ActiveX.
364	Obiekt został usunięty z pamięci.
365	Zwolnienie pamięci w tym kontekście nie jest możliwe.
368	Nieprawidłowa wersja podanego pliku. Ten program wymaga późniejszej wersji.
371	W wywołaniu metody Show() nie można użyć określonego obiektu jako formularza nadrzędnego.
380	Nieprawidłowa wartość właściwości.
381	Nieprawidłowy indeks tablicy właściwości.
382	Procedura Property Set nie może być wykonana w trybie wykonywania programu.
383	Procedura Property Set nie może być wykonana na właściwości przeznaczonej tylko do odczytu.
385	Niezbędny jest indeks tablicy właściwości.
387	Procedura Property Set jest niedozwolona.
393	Procedura Property Get nie może być wykonana w trybie wykonywania programu.
394	Procedura Property Get nie może być wykonana na właściwości przeznaczonej tylko do zapisu.
400	Formularz jest już wyświetlany; nie można pokazać go modalnie.
402	Należy najpierw zamknąć lub ukryć formularz modalny znajdujący się na wierzchu.
419	Brak uprawnień do użycia obiektu.
422	Nie można odnaleźć właściwości.
423	Nie można odnaleźć właściwości lub metody.
424	Wymagany jest obiekt.
425	Nieprawidłowe użycie obiektu.
429	Składnik ActiveX nie może utworzyć obiektu lub zwrócić odwołania do tego obiektu.
430	Klasa nie obsługuje automatyzacji.
432	Podczas operacji automatyzacji nie można odnaleźć nazwy pliku lub klasy.
438	Obiekt nie obsługuje tej właściwości lub metody.
440	Błąd automatyzacji.
442	Utracono połączenie z biblioteką typów lub biblioteką obiektów procesu zdalnego.
443	Obiekt automatyzacji nie ma składowej domyślnej.
445	Obiekt nie obsługuje tej operacji.
446	Obiekt nie obsługuje argumentów nazwanych.
447	Obiekt nie obsługuje bieżących ustawień regionalnych.
448	Argument nazwany został już podany.
449	Argument obowiązkowy.
450	Błędna liczba argumentów lub nieprawidłowe przypisanie do właściwości.
451	Obiekt nie jest kolekcją.
452	Nieprawidłowa liczba porządkowa.
453	Nie można odnaleźć podanej funkcji DLL.
454	Nie odnaleziono zasobów programowych.
455	Błąd blokowania zasobów programowych.
457	Ten klucz jest już skojarzony z elementem tej kolekcji.
458	Zmienna używa typu, który nie jest obsługiwany przez system Visual Basic.
459	Ten składnik nie obsługuje zdarzeń.
460	Nieprawidłowy format Schowka.
461	Podany format nie zgadza się z formatem danych.
480	Nie można utworzyć obrazu AutoRedraw.
481	Nieprawidłowy rysunek.
482	Błąd drukarki.
483	Sterownik drukarki nie obsługuje podanej właściwości.
484	Nie można uzyskać od systemu informacji o drukarce, upewnij się, że drukarka jest prawidłowo zainstalowana.
485	Nieprawidłowy typ rysunku.
486	Ten typ drukarki nie może wydrukować obrazu formularza.
520	Nie można opróżnić Schowka.
521	Nie można otworzyć Schowka.
735	Nie można zapisać pliku w katalogu TEMP.
744	Nie można odnaleźć poszukiwanego tekstu.
746	Ciągi zamiany są zbyt długie.
31001	Za mało pamięci
31004	Brak obiektu
31018	Klasa nie jest ustawiona.
31027	Nie można uaktywnić obiektu.
31032	Nie można utworzyć obiektu osadzonego.
31036	Błąd podczas zapisu do pliku.
31037	Błąd podczas odczytu z pliku.


Zestaw znaków (128 – 255)

128	•	160	[odstęp]	192	Ŕ	224	ŕ
129	•	161	ˇ	193	Á	225	á
130	•	162	˘	194	Â	226	â
131	•	163	Ł	195	Ă	227	ă
132	•	164	¤	196	Ä	228	ä
133	•	165	Ą	197	Ĺ	229	ĺ
134	•	166	¦	198	Ć	230	ć
135	•	167	§	199	Ç	231	ç
136	•	168	¨	200	Č	232	č
137	•	169	©	201	É	233	é
138	•	170	Ş	202	Ę	234	ę
139	•	171	«	203	Ë	235	ë
140	•	172	¬	204	Ě	236	ě
141	•	173	­	205	Í	237	í
142	•	174	®	206	Î	238	î
143	•	175	Ż	207	Ď	239	ď
144	•	176	°	208	Đ	240	đ
145	‘	177	±	209	Ń	241	ń
146	’	178	˛	210	Ň	242	ň
147	•	179	ł	211	Ó	243	ó
148	•	180	´	212	Ô	244	ô
149	•	181	µ	213	Ő	245	ő
150	•	182	¶	214	Ö	246	ö
151	•	183	·	215	×	247	÷
152	•	184	¸	216	Ř	248	ř
153	•	185	ą	217	Ů	249	ů
154	•	186	ş	218	Ú	250	ú
155	•	187	»	219	Ű	251	ű
156	•	188	Ľ	220	Ü	252	ü
157	•	189	˝	221	Ý	253	ý
158	•	190	ľ	222	Ţ	254	ţ
159	•	191	ż	223	ß	255	˙
•	Te znaki nie są interpretowane przez system Microsoft Windows.