Voorbeeld van de stuurinstructie #Const

Dit voorbeeld maakt gebruik van de stuurinstructie #Const om voorwaardelijke compileerconstanten te declareren voor gebruik in #If...#Else...#End If-constructies.

#Const DebugVersion = 1	' Will evaluate true in #If block.


Voorbeeld van de stuurinstructie #If...Then...#Else

Dit voorbeeld geeft voorwaardelijke compileerconstanten in een constructie van het type #If...Then...#Else om te bepalen of bepaalde instructies moeten worden gecompileerd.

' If Mac evaluates as true, do the statements following the #If.

#If Mac Then

'. Place exclusively Mac statements here.

'.

'.

' Otherwise, if it is a 32-bit Windows program, do this:

#ElseIf Win32 Then

'. Place exclusively 32-bit Windows statements here.

'.

'.

' Otherwise, if it is neither, do this:

#Else

'. Place other platform statements here.

'.

'.

#End If


#Const, stuurinstructie

Wordt gebruikt om de voorwaardelijke compileerconstanten voor Visual Basic te definiëren.

Syntaxis

#Const constnaam = expressie

De syntaxis van de stuurinstructie #Const heeft de volgende onderdelen:

Onderdeel	Beschrijving
constname	Vereist; Variant (String). De naam van de constante. Voor deze naam gelden de standaardregels voor de naamgeving van een variabele.
expressie	Vereist. Een letterlijke reeks, een andere voorwaardelijke compileerconstante of een willekeurige combinatie van wiskundige of logische operatoren, uitgezonderd Is.
Notities

Voorwaardelijke compileerconstanten hebben altijd de waarde Private voor de module waarin ze verschijnen. U kunt met de stuurinstructie #Const geen Public-compileerconstanten maken. Deze kunt u alleen maken in de gebruikersinterface.

In expressie kunnen alleen voorwaardelijke compileerconstanten en letterlijke reeksen worden gebruikt. Er treedt een fout op als u een standaardconstante, een constante die is gedefinieerd met Const, of een niet-gedefinieerde constante gebruikt. Constanten die zijn gedefinieerd met het sleutelwoord #Const kunnen alleen voor voorwaardelijk compileren worden gebruikt.

Voorwaardelijke compileerconstanten worden altijd op moduleniveau geëvalueerd, ongeacht hun plaats in de programmacode.


#If...Then...#Else, stuurinstructie

Voorwaardelijke compilatie van geselecteerde blokken Visual Basic-code.

Syntaxis

#If expressie Then

instructies

[#ElseIf expressie-n Then

[elseif-instructies]]

[#Else

[andersinstructies]]

#End If

De syntaxis van de stuurinstructie #If...Then...#Else heeft de volgende onderdelen:

Onderdeel	Beschrijving
expressie	Vereist. Een willekeurige expressie bestaande uit een of meer voorwaardelijke compileerconstanten, letterlijke reeksen en operatoren, die wordt geëvalueerd in True of False.
instructies	Vereist. Visual Basic-programmaregels of compiler-stuurinstructies die worden geëvalueerd als de daaraan gekoppelde expressie True is.
expressie-n	Optioneel. Een willekeurige expressie uitsluitend bestaande uit een of meer voorwaardelijke compileerconstanten, letterlijke reeksen en operatoren die wordt geëvalueerd als True of False.
Andersindieninstructies	Optioneel. Een of meer programmaregels of compiler-stuurinstructies die worden geëvalueerd als expressie-n True is.
andersinstructies	Optioneel. Een of meer programmaregels of compiler-stuurinstructies die worden geëvalueerd als geen vorige expressie of expressie-n True is.
Notities

De stuurinstructie #If...Then...#Else gedraagt zich hetzelfde als de instructie If...Then...Else, met dit verschil dat er geen eenregelige vorm is van de stuurinstructies #If, #Else, #ElseIf en #End If. Dit wil zeggen dat er geen andere code op dezelfde regel als een van de stuurinstructies kan staan. Voorwaardelijke compilatie wordt gewoonlijk gebruikt om hetzelfde programma voor verschillende platformen te compileren. Voorwaardelijke compilatie wordt ook gebruikt om te voorkomen dat de foutopsporingscode in uitvoerbare bestanden verschijnt. Code die niet is opgenomen tijdens voorwaardelijke compilatie, wordt volledig uit het uiteindelijke uitvoerbare bestand weggelaten en heeft geen effect op de grootte of werking hiervan.

Alle expressies moeten worden geëvalueerd, ongeacht het resultaat van een evaluatie. Daarom moeten alle constants in expressies worden gedefinieerd. Niet-gedefinieerde constanten worden geëvalueerd als Empty.

Opmerking   De instructie Option Compare heeft geen invloed op expressies in de instructies #If en #ElseIf. Expressies in een voorwaardelijke compilerstuurinstructie worden altijd geëvalueerd met Option Compare Text.


Constanten in Visual Basic

In Visual Basic for Applications zijn constanten gedefinieerd die het programmeren vereenvoudigen. De volgende constanten kunt u overal in uw programmacode gebruiken in plaats van de eigenlijke waarden:

Kalenderconstanten

CallType. constanten

Kleurenconstanten

Vergelijking, constanten

Compileerconstanten

Datum, constanten

Datumnotatie, constanten

Dir, GetAttr en SetAttr, constanten

DriveType, constanten

Bestandkenmerk, constanten

Invoeren/uitvoeren van bestand, constanten

Form, constanten

IMEStatus, constanten

Sleutelcodeconstanten

Diverse constanten

MsgBox, constanten

QueryClose, constanten

Shell, constanten

SpecialFolder, constanten

StrConv, constanten

Systeemkleurenconstanten

Tristate, constanten

VarType, constanten

Constanten in Visual Basic


QueryClose, constanten

De volgende constanten kunt u overal in uw programmacode gebruiken in plaats van de eigenlijke waarden:

Constante	Waarde	Beschrijving
vbFormControlMenu	0	De gebruiker heeft de opdracht Sluiten gekozen in het Systeemmenu van het formulier.
vbFormCode	1	De instructie Unload is opgeroepen in de programmacode.
vbAppWindows	2	De sessie van het huidige Microsoft Windows besturingssysteem wordt beëindigd.
vbAppTaskManager	3	Taakoverzicht van Windows gaat de toepassing afsluiten.


Kalenderconstanten

De volgende constanten kunt u overal in uw programmacode gebruiken in plaats van de eigenlijke waarden:

Constante	Waarde	Beschrijving
vbCalGreg	0	Geeft aan dat de Gregoriaanse kalender wordt gebruikt.
vbCalHijri	1	Geeft aan dat de Hijri-kalender wordt gebruikt.


Compileerconstanten

In Visual Basic for Applications zijn constanten gedefinieerd voor exclusief gebruik met de instructie #If...Then...#Else. Deze constanten hebben dezelfde werking als de constanten die u definieert met de instructie #If...Then...#Else. Het verschil is echter dat de compileerconstanten een globaal bereik hebben en dus overal in een project kunnen worden opgenomen.

Voor 16-bits ontwikkelplatformen zijn de volgende compileerconstanten gedefinieerd:

Constante	Waarde	Beschrijving
Win16	True	Geeft aan dat het een 16-bits ontwikkelomgeving betreft.
Win32	False	Geeft aan dat het geen 32-bits ontwikkelomgeving betreft.
Voor 32-bits ontwikkelplatformen zijn de volgende compileerconstanten gedefinieerd:

Constante	Waarde	Beschrijving
Vba6	True	Geeft aan dat het een Visual Basic for Applications, versie 6.0-ontwikkelomgeving betreft.
Vba6	False	Geeft aan dat het geen Visual Basic for Applications, versie 6.0-ontwikkelomgeving betreft.
Win16	False	Geeft aan dat het geen 16-bits ontwikkelomgeving betreft.
Win32	True	Geeft aan dat het een 32-bits ontwikkelomgeving betreft.
Mac	False	Geeft aan dat het geen Macintosh-ontwikkelomgeving betreft.
Win16	False	Geeft aan dat het geen 16-bits ontwikkelomgeving betreft.
Win32	False	Geeft aan dat het geen 32-bits ontwikkelomgeving betreft.
Mac	True	Geeft aan dat het een Macintosh-ontwikkelomgeving betreft.
Opmerking   Aangezien de bovengenoemde constanten worden gedefinieerd door Visual Basic, kunt u nergens constanten met dezelfde naam definiëren.


Date, constanten

De volgende constanten kunt u overal in uw programmacode gebruiken in plaats van de eigenlijke waarden:

Argumentwaarden

Het argument eerstedagvanweek heeft de volgende waarden:

Constante	Waarde	Beschrijving
vbUseSystem	0	De NLS API-instelling.
vbSunday	1	zondag (standaardinstelling)
vbMonday	2	maandag
vbTuesday	3	dinsdag
vbWednesday	4	woensdag
vbThursday	5	donderdag
vbFriday	6	vrijdag
vbSaturday	7	zaterdag
Het argument eerstedagvanjaar heeft de volgende waarden:

Constante	Waarde	Beschrijving
vbUseSystem	0	De NLS API-instelling.
VbUseSystem DayOfWeek	0	De dag die in uw systeeminstellingen als de eerste dag van de week is opgegeven.
VbFirstJan1	1	De week waarin 1 januari valt (standaardinstelling).
vbFirstFourDays	2	Begint met de eerste week waarvan ten minste vier dagen in het nieuwe jaar vallen.
vbFirstFullWeek	3	De eerste volledige week in het nieuwe jaar.
Resultaatwaarden

Constante	Waarde	Beschrijving
vbSunday	1	zondag
vbMonday	2	maandag
vbTuesday	3	dinsdag
vbWednesday	4	woensdag
vbThursday	5	donderdag
vbFriday	6	vrijdag
vbSaturday	7	zaterdag


Dir, GetAttr en SetAttr, constanten

De volgende constanten kunt u overal in uw programmacode gebruiken in plaats van de eigenlijke waarden:

Constante	Waarde	Beschrijving
vbNormal	0	Normaal (standaardinstelling voor Dir en SetAttr)
vbReadOnly	1	Alleen-lezen
vbHidden	2	Verborgen
vbSystem	4	Systeembestand
vbVolume	8	Volumelabel
vbDirectory	16	Directory of map
vbArchive	32	Bestand is gewijzigd nadat voor het laatst een reservekopie is gemaakt
vbAlias	64	Op de Macintosh is de aanduiding een alias.
Op de Macintosh zijn alleen VbNormal, vbReadOnly, vbHidden en vbAlias beschikbaar.


IMEStatus, constanten

De volgende constanten kunt u overal in uw programmacode gebruiken in plaats van de eigenlijke waarden.

De constanten voor de Japanse lokale instellingen zijn als volgt:

Constante	Waarde	Beschrijving
vbIMEModeNoControl	0	Geen IME-besturing (standaard)
vbIMEModeOn	1	IME aan.
vbIMEModeOff	2	IME uit.
vbIMEModeDisable	3	IME uitgeschakeld.
vbIMEModeHiragana	4	Hiragana-modus volledige breedte
vbIMEModeKatakana	5	Katakana-modus volledige breedte
vbIMEModeKatakanaHalf	6	Katakana-modus halve breedte
vbIMEModeAlphaFull	7	Alfanumerieke modus volledige breedte
vbIMEModeAlpha	8	Alfanumerieke modus halve breedte
De constante waarden voor de Koreaanse lokale instellingen zijn als volgt:

Constante	Waarde	Beschrijving
vbIMEModeNoControl	0	Geen IME-besturing (standaard)
vbIMEModeAlphaFull	7	Alfanumerieke modus volledige breedte
vbIMEModeAlpha	8	Alfanumerieke modus halve breedte
vbIMEModeHangulFull	9	Hangul-modus volledige breedte
vbIMEModeHangul	10	Hangul-modus halve breedte
De constante waarden voor de Chinese lokale instellingen zijn als volgt:

Constante	Waarde	Beschrijving
vbIMEModeNoControl	0	Geen IME-besturing (standaard)
vbIMEModeOn	1	IME aan.
vbIMEModeOff	2	IME uit.


Vergelijking, constanten

De volgende constanten zijn gedefinieerd in de typebibliotheek van Visual Basic for Applications en kunt u overal in uw programmacode gebruiken in plaats van de eigenlijke waarden:

Constante	Waarde	Beschrijving
vbUseCompareOption	-1	Voert een vergelijking uit op basis van de instelling van de instructie Option Compare.
vbBinaryCompare	0	Voert een binaire vergelijking uit.
vbTextCompare	1	Voert een tekstvergelijking uit.
vbDatabaseCompare	2	Voor Microsoft Access (alleen Windows); voert een vergelijking uit die is gebaseerd op gegevens uit uw database.


Diverse constanten

De volgende constanten zijn gedefinieerd in de typebibliotheek van Visual Basic for Applications en kunt u overal in uw programmacode gebruiken in plaats van de eigenlijke waarden:

Constante	Equivalent	Beschrijving
vbCrLf	Chr(13) + Chr(10)	Regelterugloop/regelinvoer- combinatie
vbCr	Chr(13)	Regelterugloopteken
vbLf	Chr(10)	Regelinvoerteken
vbNewLine	Chr(13) + Chr(10)  of, op de Macintosh, Chr(13)	Platformafhankelijk nieuwe regelteken; welke van toepassing is op het huidige platform
vbNullChar	Chr(0)	Teken met waarde 0
vbNullString	tekenreeks met waarde 0	Niet hetzelfde als een tekenreeks zonder gegevens (""); wordt gebruikt voor het oproepen van externe procedures
vbObjectError	-2147221504	Door de gebruiker gedefinieerde foutnummers moeten groter zijn dan deze waarde. Bijvoorbeeld: Err.Raise Number = vbObjectError + 1000
vbTab	Chr(9)	Tabteken
vbBack	Chr(8)	Backspace-teken
vbFormFeed	Chr(12)	Niet nuttig in Microsoft Windows of op de Macintosh
vbVerticalTab	Chr(11)	Niet nuttig in Microsoft Windows of op de Macintosh


MsgBox, constanten

De volgende constanten kunt u overal in uw programmacode gebruiken in plaats van de eigenlijke waarden:

Argumenten van MsgBox

Constante	Waarde	Beschrijving
vbOKOnly	0	Alleen de knop OK (standaardinstelling)
vbOKCancel	1	De knoppen OK en Cancel
vbAbortRetryIgnore	2	De knoppen Abort, Retry en Ignore
vbYesNoCancel	3	De knoppen Yes, No en Cancel
vbYesNo	4	De knoppen Yes en No
vbRetryCancel	5	De knoppen Retry en Cancel
vbCritical	16	Noodsignaal
vbQuestion	32	Waarschuwingsvraag
vbExclamation	48	Waarschuwingsbericht
vbInformation	64	Informatief bericht
vbDefaultButton1	0	De eerste knop is de standaardknop (standaardinstelling)
vbDefaultButton2	256	De tweede knop is de standaardknop
vbDefaultButton3	512	De derde knop is de standaardknop
vbDefaultButton4	768	De vierde knop is de standaardknop
vbApplicationModal	0	Berichtvenster op toepassingsniveau (standaardinstelling)
vbSystemModal	4096	Berichtvenster op systeemniveau
vbMsgBoxHelpButton	16384	Voegt knop Help toe aan berichtvenster
VbMsgBoxSetForeground	65536	Definieert het berichtvenster als het voorgrondvenster
vbMsgBoxRight	524288	Tekst is rechts uitgelijnd
vbMsgBoxRtlReading	1048576	Geeft op dat tekst moet worden weergegeven voor van rechts naar links lezen op Hebreeuwse en Arabische systemen
Resultaatwaarden van MsgBox

Constante	Waarde	Beschrijving
vbOK	1	De knop OK is ingedrukt.
vbCancel	2	De knop Cancel is ingedrukt.
vbAbort	3	De knop Abort is ingedrukt.
vbRetry	4	De knop Retry is ingedrukt.
vbIgnore	5	De knop Ignore is ingedrukt.
vbYes	6	De knop Yes is ingedrukt.
vbNo	7	De knop No is ingedrukt.


Shell, constanten

De volgende constanten kunt u overal in uw programmacode gebruiken in plaats van de eigenlijke waarden:

Constante	Waarde	Beschrijving
vbHide	0	Venster is verborgen en de focus wordt gegeven aan het verborgen venster.
VbNormalFocus	1	Venster heeft de focus en wordt weergegeven in het oorspronkelijke formaat en op de oorspronkelijke positie.
VbMinimizedFocus	2	Venster wordt weergegeven als pictogram met focus.
VbMaximizedFocus	3	Venster wordt als maximumvenster weergegeven, met focus.
VbNormalNoFocus	4	Venster wordt weergegeven in het meest recente formaat en de meest recente positie. Het huidige actieve venster blijft actief.
VbMinimizedNoFocus	6	Venster wordt weergegeven als pictogram. Het huidige actieve venster blijft actief.
Op de Macintosh plaatsen vbNormalFocus, vbMinimizedFocus en vbMaximizedFocus allemaal de toepassing op de voorgrond en plaatsen vbHide, vbNoFocus en vbMinimizedFocus allemaal de toepassing op de achtergrond.


StrConv, constanten

De volgende constanten kunt u overal in uw programmacode gebruiken in plaats van de eigenlijke waarden:

Constante	Waarde	Beschrijving
vbUpperCase	1	Zet de tekenreeks om in hoofdletters.
vbLowerCase	2	Zet de tekenreeks om in kleine letters.
vbProperCase	3	Maakt van de eerste letter van elk woord in de tekenreeks een hoofdletter.
vbWide	4	Converteert smalle (enkelvoudige bytes) tekens in de tekenreeks naar brede (dubbele bytes) tekens. Van toepassing op Aziatische lokale instellingen.
vbNarrow	8	Converteert brede (dubbele bytes) tekens in de tekenreeks naar smalle (enkelvoudige bytes) tekens. Alleen van toepassing op Aziatische lokale instellingen.
vbKatakana	16	Converteert smalle Hiragana-tekens in de tekenreeks naar brede Katakana-tekens. Alleen van toepassing op Japan.
vbHiragana	32	Converteert brede Katakana-tekens naar smalle Hiragana-tekens. Alleen van toepassing op Japan.
vbUnicode	64	Converteert de tekenreeks naar Unicode met behulp van de standaardcodetabel van het systeem. (Niet beschikbaar op de Macintosh.)
vbFromUnicode	128	Converteert de tekenreeks van Unicode naar de standaardcodetabel van het systeem. (Niet beschikbaar op de Macintosh.)


VarType, constanten

De volgende constanten kunt u overal in uw programmacode gebruiken in plaats van de eigenlijke waarden:

Constante	Waarde	Beschrijving
vbEmpty	0	Niet geïnitialiseerd (standaardinstelling)
vbNull	1	Bevat geen geldige gegevens
vbInteger	2	Integer
vbLong	3	Lang geheel getal
vbSingle	4	Een getal met enkelvoudige precisie en drijvende komma
vbDouble	5	Een getal met dubbele precisie en drijvende komma
vbCurrency	6	Currency
vbDate	7	Date
vbString	8	String
vbObject	9	Object
vbError	10	Error
vbBoolean	11	Boole-waarde
vbVariant	12	Variant-waarde (alleen gebruikt voor matrices van varianten)
vbDataObject	13	DataObject
vbDecimal	14	Decimal
vbByte	17	Byte
vbUserDefinedType	36	Varianten die door de gebruiker gedefinieerde typen bevatten
vbArray	8192	Matrix


Kleurenconstanten

De volgende constanten kunt u overal in uw programmacode gebruiken in plaats van de eigenlijke waarden:

Constante	Waarde	Beschrijving
vbBlack	0x0	Zwart
vbRed	0xFF	Rood
vbGreen	0xFF00	Groen
vbYellow	0xFFFF	Geel
vbBlue	0xFF0000	Blauw
vbMagenta	0xFF00FF	Magenta
vbCyan	0xFFFF00	Cyaan
vbWhite	0xFFFFFF	Wit


Sleutelcodeconstanten

De volgende constanten kunt u overal in uw programmacode gebruiken in plaats van de eigenlijke waarden:

Constante	Waarde	Beschrijving
vbKeyLButton	0x1	Linkermuisknop
vbKeyRButton	0x2	Rechtermuisknop
vbKeyCancel	0x3	Toets ANNULEREN
vbKeyMButton	0x4	Middelste muisknop
vbKeyBack	0x8	Toets BACKSPACE
vbKeyTab	0x9	Toets TAB
vbKeyClear	0xC	Toets CLEAR
vbKeyReturn	0xD	Toets ENTER
vbKeyShift	0x10	Toets SHIFT
vbKeyControl	0x11	Toets CTRL
vbKeyMenu	0x12	Toets MENU
vbKeyPause	0x13	Toets PAUSE
vbKeyCapital	0x14	Toets CAPS LOCK
vbKeyEscape	0x1B	Toets ESC
vbKeySpace	0x20	Toets SPATIEBALK
vbKeyPageUp	0x21	Toets PGUP
vbKeyPageDown	0x22	Toets PGDN
vbKeyEnd	0x23	Toets END
vbKeyHome	0x24	Toets HOME
vbKeyLeft	0x25	Toets PIJL-LINKS
vbKeyUp	0x26	Toets PIJL-OMHOOG
vbKeyRight	0x27	Toets PIJL-RECHTS
vbKeyDown	0x28	Toets PIJL-OMLAAG
vbKeySelect	0x29	Toets SELECT
vbKeyPrint	0x2A	Toets PRINT SCRN
vbKeyExecute	0x2B	Toets EXECUTE
vbKeySnapshot	0x2C	Toets SNAPSHOT
vbKeyInsert	0x2D	Toets INSERT
vbKeyDelete	0x2E	Toets DELETE
vbKeyHelp	0x2F	Toets HELP
vbKeyNumlock	0x90	Toets NUM LOCK
De toetsen A tot en met Z zijn hetzelfde als de ASCII-equivalenten A – Z:

Constante	Waarde	Beschrijving
vbKeyA	65	Toets A
vbKeyB	66	Toets B
vbKeyC	67	Toets C
vbKeyD	68	Toets D
vbKeyE	69	Toets E
vbKeyF	70	Toets F
vbKeyG	71	Toets G
vbKeyH	72	Toets H
vbKeyI	73	Toets I
vbKeyJ	74	Toets J
vbKeyK	75	Toets K
vbKeyL	76	Toets L
vbKeyM	77	Toets M
vbKeyN	78	Toets N
vbKeyO	79	Toets O
vbKeyP	80	Toets P
vbKeyQ	81	Toets Q
vbKeyR	82	Toets R
vbKeyS	83	Toets S
vbKeyT	84	Toets T
vbKeyU	85	Toets U
vbKeyV	86	Toets V
vbKeyW	87	Toets W
vbKeyX	88	Toets X
vbKeyY	89	Toets Y
vbKeyZ	90	Toets Z
De toetsen 0 tot en met 9 zijn hetzelfde als de ASCII-equivalenten 0 – 9:

Constante	Waarde	Beschrijving
vbKey0	48	Toets 0
vbKey1	49	Toets 1
vbKey2	50	Toets 2
vbKey3	51	Toets 3
vbKey4	52	Toets 4
vbKey5	53	Toets 5
vbKey6	54	Toets 6
vbKey7	55	Toets 7
vbKey8	56	Toets 8
vbKey9	57	Toets 9
De volgende constanten representeren toetsen op het numerieke toetsenblok:

Constante	Waarde	Beschrijving
vbKeyNumpad0	0x60	Toets 0
vbKeyNumpad1	0x61	Toets 1
vbKeyNumpad2	0x62	Toets 2
vbKeyNumpad3	0x63	Toets 3
vbKeyNumpad4	0x64	Toets 4
vbKeyNumpad5	0x65	Toets 5
vbKeyNumpad6	0x66	Toets 6
vbKeyNumpad7	0x67	Toets 7
vbKeyNumpad8	0x68	Toets 8
vbKeyNumpad9	0x69	Toets 9
vbKeyMultiply	0x6A	Toets VERMENIGVULDIGEN (*)
vbKeyAdd	0x6B	Toets PLUS (+)
vbKeySeparator	0x6C	Toets ENTER
vbKeySubtract	0x6D	Toets MIN (–)
vbKeyDecimal	0x6E	Toets DECIMALE PUNT (.)
vbKeyDivide	0x6F	Toets DELEN (/)
De volgende constanten representeren functietoetsen:

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


Systeemkleurenconstanten

De volgende constanten kunt u overal in uw programmacode gebruiken in plaats van de eigenlijke waarden:

Constante	Waarde	Beschrijving
vbScrollBars	0x80000000	Kleur schuifbalk
vbDesktop	0x80000001	Kleur bureaublad
vbActiveTitleBar	0x80000002	Kleur van de titelbalk van het actieve venster
vbInactiveTitleBar	0x80000003	Kleur van de titelbalk van het niet-actieve venster
vbMenuBar	0x80000004	Achtergrondkleur menu
vbWindowBackground	0x80000005	Achtergrondkleur venster
vbWindowFrame	0x80000006	Kleur vensterrand
vbMenuText	0x80000007	Kleur van de tekst in menu's
vbWindowText	0x80000008	Kleur van de tekst in vensters
vbTitleBarText	0x80000009	Kleur van de tekst in bijschrift, groottevak en schuifpijl
vbActiveBorder	0x8000000A	Randkleur van het actieve venster
vbInactiveBorder	0x8000000B	Randkleur van het niet-actieve venster
vbApplicationWorkspace	0x8000000C	Achtergrondkleur van toepassingen met interface voor meerdere documenten (MDI-toepassingen)
vbHighlight	0x8000000D	Achtergrondkleur van geselecteerde onderdelen in een besturingselement
vbHighlightText	0x8000000E	Tekstkleur van geselecteerde onderdelen in een besturingselement
vbButtonFace	0x8000000F	Schaduwkleur van de bovenkant van opdrachtknoppen
vbButtonShadow	0x80000010	Schaduwkleur van de zijkant van opdrachtknoppen
vbGrayText	0x80000011	Grijze (uitgeschakeld) tekst
vbButtonText	0x80000012	Tekstkleur van drukknoppen
vbInactiveCaptionText	0x80000013	Tekstkleur van niet-actieve bijschriften
vb3DHighlight	0x80000014	Markeringskleur voor driedimensionale (3-D) weergave-elementen
vb3DDKShadow	0x80000015	Donkerste schaduwkleur voor driedimensionale (3-D) weergave-elementen
vb3DLight	0x80000016	Op één na lichtste driedimensionale (3-D) kleur na vb3Dhighlight
vbInfoText	0x80000017	Tekstkleur van KnopInfo
vbInfoBackground	0x80000018	Achtergrondkleur van KnopInfo


CallType, constanten

De volgende constanten kunt u overal in uw programmacode gebruiken in plaats van de eigenlijke waarden:

Constante	Waarde	Beschrijving
vbMethod	1	Geeft aan dat een methode is opgeroepen.
vbGet	2	Geeft een procedure Property Get aan.
vbLet	4	Geeft een procedure Property Let aan.
vbSet	8	Geeft een procedure Property Set aan.


Form, constanten

De volgende constanten kunt u overal in uw programmacode gebruiken in plaats van de eigenlijke waarden:

Constante	Waarde	Beschrijving
vbModeless	0	UserForm is zonder modus.
vbModal	1	UserForm is modaal (standaard).


Voorbeeld van de instructie Call

Dit voorbeeld laat zien hoe de instructie Call wordt gebruikt om de besturing over te dragen aan een procedure Sub, een intrinsieke functie en een DLL-procedure (Dynamic-Link Library).DLL's worden niet gebruikt op de Macintosh.

' Call a Sub procedure.

Call PrintToDebugWindow("Hallo allemaal")

' The above statement causes control to be passed to the following

' Sub procedure.

Sub PrintToDebugWindow(AnyString)

Debug.Print AnyString	' Print to the Immediate window.

End Sub

' Call an intrinsic function. The return value of the function is

' discarded.

Call Shell(AppName, 1)	' AppName contains the path of the

' executable file.

' Call a Microsoft Windows DLL procedure. The Declare statement must be

' Private in a Class Module, but not in a standard Module.

Private Declare Sub MessageBeep Lib "Gebruiker" (ByVal N As Integer)

Sub CallMyDll()

Call MessageBeep(0)	' Call Windows DLL procedure.

MessageBeep 0	' Call again without Call keyword.

End Sub


Voorbeeld van de functie Choose

Dit voorbeeld maakt gebruik van de functie Choose om een naam weer te geven als reactie op een index die is doorgegeven aan de procedure in de Ind-parameter.

Function GetChoice(Ind As Integer)

GetChoice = Choose(Ind, "Snel", "Groot", "Nationaal")

End Function


Voorbeeld van de functie DoEvents

Dit voorbeeld maakt gebruik van de functie DoEvents om de uitvoering elke 1000 herhalingen van de lus door te geven aan het besturingssysteem. DoEvents geeft het aantal open formulieren in Visual Basic als resultaat, maar alleen wanneer de brontoepassing Visual Basic is.

' Create a variable to hold number of Visual Basic forms loaded

' and visible.

Dim I, OpenForms

For I = 1 To 150000	' Start loop.

If I Mod 1000 = 0 Then 	' If loop has repeated 1000 times.

OpenForms = DoEvents	' Yield to operating system.

End If

Next I	' Increment loop counter.


Voorbeeld van de instructie Do...Loop

Dit voorbeeld laat zien hoe de instructies Do...Loop kunnen worden gebruikt. De binnenste instructie Do...Loop lust 10 keer, stelt de waarde van de vlag in op False en sluit voortijdig af met behulp van de instructie Exit Do. De buitenste lus sluit onmiddellijk af na controle van de waarde van de vlag.

Dim Check, Counter

Check = True: Counter = 0	' Initialize variables.

Do	' Outer loop.

Do While Counter < 20	' Inner loop.

Counter = Counter + 1	' Increment Counter.

If Counter = 10 Then	' If condition is True.

Check = False	' Set value of flag to False.

Exit Do	' Exit inner loop.

End If

Loop

Loop Until Check = False	' Exit outer loop immediately.


Voorbeeld van de instructie End

Dit voorbeeld maakt gebruik van de instructie End om de uitvoering van een programmacode te beëindigen als de gebruiker een ongeldig wachtwoord invoert.

Sub Form_Load

Dim Password, Pword

PassWord = "Knal"

Pword = InputBox("Typ uw wachtwoord")

If Pword <> PassWord Then

MsgBox "Sorry, ongeldig wachtwoord"

End

End If

End Sub


Voorbeeld van de instructie Exit

Dit voorbeeld maakt gebruik van de instructie Exit om een For...Next-lus, een Do...Loop en een procedure Sub af te sluiten.

Sub ExitStatementDemo()

Dim I, MyNum

Do	' Set up infinite loop.

For I = 1 To 1000	' Loop 1000 times.

MyNum = Int(Rnd * 1000)	' Generate random numbers.

Select Case MyNum	' Evaluate random number.

Case 7: Exit For	' If 7, exit For...Next.

Case 29: Exit Do	' If 29, exit Do...Loop.

Case 54: Exit Sub	' If 54, exit Sub procedure.

End Select

Next I

Loop

End Sub


Voorbeeld van de instructie For Each...Next

Dit voorbeeld maakt gebruik van de instructie For Each...Next om in de Text-eigenschap van alle onderdelen in een collectie naar de aanwezigheid van de tekenreeks “Hallo” te zoeken. In het voorbeeld is MijnObject een tekstgeoriënteerd object van de collectie MijnCollectie. Beide zijn algemene namen die alleen ter illustratie worden gebruikt.

Dim Found, MyObject, MyCollection

Found = False	' Initialize variable.

For Each MyObject In MyCollection	' Iterate through each element.

If MyObject.Text = "Hallo" Then	' If Text equals "Hallo".

Found = True	' Set Found to True.

Exit For	' Exit loop.

End If

Next


Voorbeeld van de instructie For...Next

Dit voorbeeld maakt gebruik van de instructie For...Next om een tekenreeks te maken die 10 maal de nummers 0 tot en met 9 bevat, waarbij elke tekenreeks door een enkele spatie van de andere wordt gescheiden. De buitenste lus gebruikt een lustellervariabele die elke keer door de lus wordt verkleind.

Dim Words, Chars, MyString

For Words = 10 To 1 Step -1 	' Set up 10 repetitions.

For Chars = 0 To 9	' Set up 10 repetitions.

MyString = MyString & Chars	' Append number to string.

Next Chars	' Increment counter

MyString = MyString & " "	' Append a space.

Next Words


Voorbeeld van de instructie GoSub...Return

In dit voorbeeld wordt gebruik gemaakt van GoSub om een subroutine binnen een procedure Sub aan te roepen. De instructie Return zorgt ervoor dat de uitvoering direct na de instructie GoSub wordt hervat. De instructie Exit Sub wordt gebruikt om te voorkomen dat de besturing per ongeluk in de subroutine overloopt.

Sub GosubDemo()

Dim Num

' Solicit a number from the user.

Num = InputBox("Voer een positief getal in dat gedeeld moet worden door 2.")

' Only use routine if user enters a positive number.

If Num > 0 Then GoSub MyRoutine

Debug.Print Num

Exit Sub	' Use Exit to prevent an error.

MyRoutine:

Num = Num/2	' Perform the division.

Return	' Return control to statement.

End Sub	' following the GoSub statement.


Voorbeeld van de instructie GoTo

Dit voorbeeld maakt gebruik van de instructie GoTo om naar regelnamen binnen een procedure te vertakken.

Sub GotoStatementDemo()

Dim Number, MyString

Number = 1 	' Initialize variable.

' Evaluate Number and branch to appropriate label.

If Number = 1 Then GoTo Line1 Else GoTo Line2

Line1:

MyString = "Number is gelijk aan 1"

GoTo LastLine	' Go to LastLine.

Line2:

' The following statement never gets executed.

MyString = "Number is gelijk aan 2"

LastLine:

Debug.Print MyString	' Print "Number is gelijk aan 1" in

' the Immediate window.

End Sub


Voorbeeld van de instructie If...Then...Else

Dit voorbeeld toont zowel de eenregelige vormen als de blokvormen van de instructies If...Then...Else. Het geeft ook het gebruik van If TypeOf...Then...Else weer.

Dim Number, Digits, MyString

Number = 53	' Initialize variable.

If Number < 10 Then

Digits = 1

ElseIf Number < 100 Then

' Condition evaluates to True so the next statement is executed.

Digits = 2

Else

Digits = 3

End If

' Assign a value using the single-line form of syntax.

If Digits = 1 Then MyString = "Eén" Else MyString = "Meer dan één"

Gebruik de constructie If TypeOf om vast te stellen of het besturingselement dat aan een procedure is doorgegeven, een tekstvak is.

Sub ControlProcessor(MyControl As Control)

If TypeOf MyControl Is CommandButton Then

Debug.Print "U gaf door een " & TypeName(MyControl)

ElseIf TypeOf MyControl Is CheckBox Then

Debug.Print "U gaf door een " & TypeName(MyControl)

ElseIf TypeOf MyControl Is TextBox Then

Debug.Print "U gaf door een " & TypeName(MyControl)

End If

End Sub


Voorbeeld van de instructie IIf

Dit voorbeeld maakt gebruik van de functie IIf om de parameter TestMe van de procedure CheckIt te evalueren en geeft als resultaat het woord "Groot" als de hoeveelheid groter is dan 1000. In andere gevallen wordt het woord "Klein" als resultaat gegeven.

Function CheckIt (TestMe As Integer)

CheckIt = IIf(TestMe > 1000, "Groot", "Klein")

End Function


Voorbeeld van de instructies On...GoSub en On...GoTo

Dit voorbeeld maakt gebruik van de instructies On...GoSub en On...GoTo om naar respectievelijk subroutines en regelnamen te vertakken.

Sub OnGosubGotoDemo()

Dim Number, MyString

Number = 2	' Initialize variable.

' Branch to Sub2.

On Number GoSub Sub1, Sub2	' Execution resumes here after

' On...GoSub.

On Number GoTo Line1, Line2	' Branch to Line2.

' Execution does not resume here after On...GoTo.

Exit Sub

Sub1:

MyString = "In Sub1" : Return

Sub2:

MyString = "In Sub2" : Return

Line1:

MyString = "In Line1"

Line2:

MyString = "In Line2"

End Sub


Voorbeeld van de functie Partition

Dit voorbeeld gaat ervan uit dat u over een tabel Orders beschikt met daarin het veld Verzendkosten. Dit veld maakt een sortering die het aantal orders telt waarvoor de vrachtkosten binnen elk van de verschillende bereiken vallen. De functie Partition wordt in eerste instantie gebruikt om deze bereiken vast te stellen, vervolgens telt de functie SQL Count het aantal orders in elk bereik. Hierbij zijn de argumenten voor de functie Partition start = 0, stop = 500, interval = 50. Het eerste bereik is zodoende 0:49, enzovoort, tot en met 500.

SELECT DISTINCTROW Partition([freight],0, 500, 50) AS Range,

Count(Orders.Freight) AS Count

FROM Orders

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


Voorbeeld van de instructie Select Case

Dit voorbeeld maakt gebruik van de instructie Select Case om de waarde van een variabele te evalueren. De tweede Case bevat de waarde van de variabele die wordt geëvalueerd en daarom wordt alleen de instructie die daarmee verbonden is uitgevoerd.

Dim Number

Number = 8	' Initialize variable.

Select Case Number	' Evaluate Number.

Case 1 To 5	' Number between 1 and 5, inclusive.

Debug.Print "Tussen 1 en 5"

' The following is the only Case clause that evaluates to True.

Case 6, 7, 8	' Number between 6 and 8.

Debug.Print "Tussen 6 en 8"

Case 9 To 10	' Number is 9 of 10.

Debug.Print "Groter dan 8"

Case Else	' Other values.

Debug.Print "Niet tussen 1 en 10"

End Select


Voorbeeld van de functie Shell

Dit voorbeeld maakt gebruik van de functie Shell om een door de gebruiker opgegeven toepassing te starten. Op de MacIntosh is de standaardstationsaanduiding “HD” en worden onderdelen van de padnaam van elkaar gescheiden door dubbele punten (:) in plaats van backslashes (\). Op soortgelijke wijze geeft u Macintosh-mappen op, in plaats van \Windows.

' Specifying 1 as the second argument opens the application in

' normal size and gives it the focus.

Dim RetVal

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


Voorbeeld van de instructie Stop

Dit voorbeeld maakt gebruik van de instructie Stop om de uitvoering voor elke herhaling via de For...Next-lus uit te stellen.

Dim I

For I = 1 To 10	' Start For...Next loop.

Debug.Print I	' Print I to the Immediate window.

Stop	' Stop during each iteration.

Next I


Voorbeeld van de functie Switch

Dit voorbeeld maakt gebruik van de functie Switch om de naam van een taal te geven die correspondeert met de naam van een stad.

Function MatchUp (CityName As String)

Matchup = Switch(CityName = "Londen", "Engels", CityName _

= "Rome", "Italiaans", CityName = "Parijs", "Frans")

End Function


Voorbeeld van de instructie While...Wend

Dit voorbeeld maakt gebruik van de instructie While...Wend om een tellervariabele te verhogen. De instructies in de lus worden uitgevoerd zolang de voorwaarde Waar als resultaat geeft.

Dim Counter

Counter = 0	' Initialize variable.

While Counter < 20	' Test value of Counter.

Counter = Counter + 1	' Increment Counter.

Wend	' End While loop when Counter > 19.

Debug.Print Counter	' Prints 20 in the Immediate window.


Voorbeeld van de instructie With

Dit voorbeeld maakt gebruik van de instructie With om een reeks instructies uit te voeren voor één object. Het object MyObject en de eigenschappen daarvan zijn algemene namen die alleen ter illustratie worden gebruikt.

With MyObject

.Height = 100	' Same as MyObject.Height = 100.

.Caption = "Hallo allemaal"	' Same as MyObject.Caption = "Hallo allemaal".

With .Font

.Color = Red	' Same as MyObject.Font.Color = Red.

.Bold = True	' Same as MyObject.Font.Bold = True.

End With

End With


Call, instructie

Draagt de besturing over aan een procedure Sub, Function of DLL(dynamic-link library).

Syntaxis

[Call] naam [argumentenlijst]

De instructie Call heeft de volgende argumenten:

Onderdeel	Beschrijving
Call	Optioneel; sleutelwoord. Als u dit argument opgeeft, moet argumentenlijst tussen haakjes worden geplaatst. Bijvoorbeeld:
	Call MijnProc(0)
naam	Vereist. Naam van de aan te roepen procedure.
argumentenlijst	Optioneel. Lijst met door komma gescheiden variabelen, matrices of expressies die aan de procedure worden doorgegeven. De sleutelwoorden ByVal of ByRef kunnen worden opgenomen als onderdeel van argumentenlijst om te beschrijven hoe de argumenten worden behandeld door de opgeroepen procedure. ByVal en ByRef kunnen echter alleen worden gebruikt met Call wanneer een DLL-procedure wordt opgeroepen. Op de Macintosh kunnen ByVal en ByRef worden gebruikt met Call als u een Macintosh-programmacodebron wilt oproepen.
Notities

U hoeft het sleutelwoord Call niet te gebruiken wanneer u een procedure oproept. Wanneer u Call echter gebruikt om een procedure aan te roepen waarvoor argumenten zijn vereist, moet argumentenlijst worden omsloten door haakjes. Wanneer u het sleutelwoord Call weglaat, moet u de haakjes rond argumentenlijst ook weglaten. Als u een van beide typen van de syntaxis van Call gebruikt om een intrinsieke of door de gebruiker gedefinieerde functie aan te roepen, wordt het resultaat van de functie genegeerd.

U kunt een gehele matrix aan een procedure doorgeven door de naam van de matrix te gebruiken en deze te laten volgen door lege haakjes.


Choose, functie

Selecteert een waarde uit een lijst met argumenten en geeft deze waarde als resultaat.

Syntaxis

Choose(index, optie-1[, optie-2, ... [, optie-n]])

De functie Choose heeft de volgende argumenten:

Onderdeel	Beschrijving
index	Vereist. Een numerieke expressie of veld dat resulteert in een waarde tussen 1 en het aantal beschikbare opties.
optie	Vereist. Een Variant-expressie die een van de mogelijke opties bevat.
Notities

Choose geeft als resultaat een waarde uit een lijst met opties, die is gebaseerd op de waarde van index. Als index 1 is, geeft Choose de eerste optie in de lijst als resultaat, als index 2 is, de tweede optie en zo verder.

Met Choose kunt u een waarde in een lijst met opties opzoeken. Als index bijvoorbeeld de waarde 3 heeft en optie-1 = "een", optie-2 = "twee" en optie-3 = "drie", geeft Choose "drie" als resultaat. Deze mogelijkheid komt vooral van pas wanneer index een waarde in een keuzegroep weergeeft.

Hoewel Choose slechts één optie als resultaat geeft, wordt elke optie in de lijst geëvalueerd. Daarom moet u bedacht zijn op ongewenste neveneffecten. Wanneer u bijvoorbeeld de functie MsgBox in alle opties als deel van een expressie gebruikt, wordt voor elke optie een dialoogvenster weergegeven terwijl de optie wordt geëvalueerd, terwijl slechts de waarde van één van de opties als resultaat wordt gegeven.

De functie Choose geeft Null als resultaat als index kleiner is dan 1 of groter dan het aantal opties in de lijst.

Als index geen integer is, wordt het afgerond naar de dichtstbijzijnde integer voordat het wordt geëvalueerd.


DoEvents, functie

Draagt de uitvoering over aan het besturingssysteem zodat andere gebeurtenissen kunnen worden verwerkt.

Syntaxis

DoEvents( )

Notities

De functie DoEvents geeft een Integer als resultaat die de waarde weergeeft van het aantal open formulieren in op zichzelf staande versies van Visual Basic, zoals Visual Basic, Professional Edition. De functie DoEvents geeft nul als resultaat in alle andere toepassingen.

DoEvents draagt de besturing over aan het besturingssysteem. De besturing wordt teruggegeven zodra het besturingssysteem gereed is met het afwerken van de gebeurtenissen in de wachtrij en alle toetsaanslagen in de wachtrij SendKeys zijn verstuurd.

DoEvents is heel handig voor eenvoudige dingen, bijvoorbeeld om een gebruiker toe te staan om een proces (zoals het zoeken naar een bestand) te annuleren, nadat het is gestart. Voor langdurige processen kunt u beter voorrang aan de processor verlenen door een Timer te gebruiken of door de taak over te dragen aan een ActiveX EXE-onderdeel. In het laatste geval kan de taak volledig onafhankelijk van de toepassing worden voortgezet en zorgt het besturingssysteem voor multitasking en tijdsegmentering.

Waarschuwing   Zorg dat de procedure die de besturing heeft overgedragen met DoEvents, niet opnieuw wordt uitgevoerd in een ander deel van uw code voordat de besturing van de eerste oproep van DoEvents weer wordt teruggegeven. Dit kan tot onverwachte resultaten leiden. Gebruik DoEvents verder niet als het mogelijk is dat andere toepassingen op onvoorziene wijze invloed hebben op uw procedure tijdens het moment van overgave van de besturing.


Do...Loop, instructie

Herhaalt een blok instructies terwijl een voorwaarde True is of totdat een voorwaarde True wordt.

Syntaxis

Do [{While | Until} voorwaarde]
[instructies]
[Exit Do]
[instructies]

Loop

U kunt ook de volgende syntaxis gebruiken:

Do
[instructies]
[Exit Do]
[instructies]

Loop [{While | Until} voorwaarde]

De instructie Do Loop heeft de volgende argumenten:

Onderdeel	Beschrijving
voorwaarde	Optioneel. Een numerieke expressie of reeksexpressie die True of False is. Als voorwaarde Null is, wordt voorwaarde behandeld als zijnde False.
instructies	Een of meer instructies die worden herhaald terwijl voorwaarde True is of totdat deze True wordt.
Notities

U kunt een onbeperkt aantal instructies Exit Do binnen Do…Loop plaatsen, zodat u Do…Loop op een alternatieve manier kunt afsluiten. Exit Do wordt vaak gebruikt nadat een bepaalde voorwaarde is geëvalueerd, zoals Exit If…Then. In dit geval geeft de instructie Exit Do de besturing over aan de instructie die onmiddellijk volgt op Loop.

Wanneer Exit Do wordt gebruikt binnen geneste instructies Do…Loop, geeft deze de besturing over aan de lus die zich één genest niveau boven de lus waarin Exit Do voorkomt, bevindt.


End, instructie

Beëindigt een procedure of een blok.

Syntaxis

End

End Function

End If

End Property

End Select

End Sub

End Type

End With

De instructie End heeft de volgende vormen:

Instructie	Beschrijving
End	Beëindigt de uitvoering. Is nooit op zichzelf vereist maar kan overal in een procedure worden geplaatst om bestanden te sluiten die met de instructie Open waren geopend en om variabelen te wissen.
End Function	Vereist om een instructie Function te beëindigen.
End If	Vereist om een instructieblok If…Then…Else te beëindigen.
End Property	Vereist om een procedure Property Let, Property Get of Property Set te beëindigen.
End Select	Vereist om een instructie Select Case te beëindigen.
End Sub	Vereist om een instructie Sub te beëindigen.
End Type	Vereist om een definitie van een door de gebruiker gedefinieerd type (instructie Type) te beëindigen.
End With	Vereist om een instructie With te beëindigen.
Notities

Wanneer de instructie End wordt uitgevoerd, stelt deze alle variabelen op moduleniveau en alle statische lokale variabelen in alle modules in op de beginwaarden. Als u de waarde van deze variabelen wilt behouden, kunt u in plaats van End de instructie Stop gebruiken. U kunt dan verder gaan met de uitvoering terwijl de waarde van de variabelen wordt behouden.

Opmerking   De instructie End brengt een abrupt einde aan de uitvoering van de programmacode, zonder dat daarbij de gebeurtenis Unload, QueryUnload of Terminate, of elke andere Visual Basic-programmacode wordt opgeroepen. Programmacode die u hebt ingevoegd in de gebeurtenissen Unload, QueryUnload en Terminate van formulieren en klassenmodules, wordt niet uitgevoerd. Met behulp van klassenmodules gemaakte objecten worden verwijderd, bestanden die zijn geopend met de instructie Open, worden gesloten en door het programma gebruikt geheugen wordt vrijgemaakt. In andere programma's aanwezige objectverwijzingen worden nietig gemaakt.

Met behulp van de instructie End kunt u de uitvoering van een programma tot stilstand brengen. Voor de normale beëindiging van een Visual Basic-programma dient u ervoor te zorgen dat alle formulieren niet langer zijn geladen. Het programma wordt gesloten zodra er geen programma's meer zijn die verwijzingen bevatten naar objecten die zijn gemaakt vanuit de openbare klassenmodules, en zodra er geen programmacode meer wordt uitgevoerd.


Exit, instructie

Sluit een codeblok Do…Loop, For...Next, Function, Sub of Property af.

Syntaxis

Exit Do

Exit For

Exit Function

Exit Property

Exit Sub

De instructie Exit heeft de volgende vormen:

Instructie	Beschrijving
Exit Do	Hiermee kunt u een instructie Do...Loop afsluiten. Kan alleen binnen een instructie Do...Loop worden gebruikt. Exit Do geeft de besturing over aan de instructie die op Loop volgt. Wanneer Exit Do wordt gebruikt binnen geneste instructies Do...Loop, geeft deze de besturing over aan de lus die zich één genest niveau boven de lus waarin Exit Do voorkomt, bevindt.
Exit For	Hiermee kunt u een lus For afsluiten. Kan alleen in een lus For...Next of For Each...Next worden gebruikt. Exit For draagt de besturing over aan de instructie die op de instructie Next volgt. Wanneer Exit For wordt gebruikt binnen geneste lussen For, draagt deze de besturing over aan de lus die zich één niveau boven de lus waarin Exit For voorkomt, bevindt.
Exit Function	Sluit de procedure Function waarin deze voorkomt, onmiddellijk af. De uitvoering gaat verder met de instructie die volgt op de instructie die de procedure Function heeft opgeroepen.
Exit Property	Sluit de procedure Property waarin deze voorkomt, onmiddellijk af. De uitvoering gaat verder met de instructie die volgt op de instructie die de procedure Property heeft opgeroepen.
Exit Sub	Sluit de procedure Sub waarin deze voorkomt, onmiddellijk af. De uitvoering gaat verder met de instructie die volgt op de instructie die de procedure Sub heeft opgeroepen.
Notities

De instructie Exit is niet hetzelfde als de instructie End. Exit geeft, in tegenstelling tot End, niet het einde van een structuur aan.


For Each...Next, instructie

Herhaalt een groep instructies voor elk element in een matrix of collectie.

Syntaxis

For Each element In groep
[instructies]
[Exit For]
[instructies]

Next [element]

De instructie For...Each...Next heeft de volgende argumenten:

Onderdeel	Beschrijving
element	Vereist. Variabele die de elementen van een collectie of matrix herhaalt. Voor collecties kan element alleen een Variant-variabele, een algemene objectvariabele of een specifieke objectvariabele zijn. Voor matrices kan element alleen een variabele Variant zijn.
Groep	Vereist. Naam van een objectcollectie of matrix (behalve een matrix van een door de gebruiker gedefinieerd type).
instructies	Optioneel. Een of meer instructies die worden uitgevoerd op elk element in groep.
Notities

Het blok For...Each wordt uitgevoerd als zich ten minste een element in groep bevindt. Als de lus eenmaal is begonnen worden alle instructies in de lus uitgevoerd voor het eerste element in groep. Als er meer elementen in groep zijn, worden de instructies in de lus voor ieder element uitgevoerd. Wanneer er geen elementen meer in groep zijn, wordt de lus beëindigd en gaat de uitvoering verder met de instructie die volgt op de instructie Next.

Een willekeurig aantal instructies Exit For mogen overal binnen de lus worden geplaatst als een alternatieve manier om de lus te beëindigen. Exit For wordt vaak gebruikt nadat een bepaalde voorwaarde is geëvalueerd, bijvoorbeeld If…Then, en draagt de besturing over aan de instructie die onmiddellijk volgt op Next.

U kunt lussen For...Each...Next nesten door een lus For...Each...Next binnen een andere te plaatsen. Elk lus-element moet echter uniek zijn.

Opmerking   Als u element uit een instructie Next weglaat, gaat de uitvoering verder alsof element wel was opgenomen. Als er een instructie Next volgt vóór de bijbehorende instructie For, treedt een fout op.

U kunt de instructie For...Each...Next niet gebruiken met een matrix van door de gebruiker gedefinieerde typen, omdat een Variant geen door de gebruiker gedefinieerd type kan bevatten.


For...Next, instructie

Herhaalt een groep instructies een opgegeven aantal keren.

Syntaxis

For teller = beginwaarde To eindwaarde [Step stap]
[instructies]
[Exit For]
[instructies]

Next [teller]

De instructie For…Next heeft de volgende argumenten:

Onderdeel	Beschrijving
teller	Vereist. Een numerieke variabele die wordt gebruikt als teller voor de lus. De variabele kan geen Boole- of matrixelement zijn.
begin	Vereist. De beginwaarde van teller.
einde	Vereist. De eindwaarde van teller.
Stap	Optioneel. De waarde teller wordt elke keer door de lus heen veranderd. Als er niets is opgegeven is de standaardwaarde van stap 1.
instructies	Optioneel. Een of meer instructies tussen For en Next die het opgegeven aantal keren worden uitgevoerd.
Notities

Het argument stap kan ofwel positief of negatief zijn. De waarde van het argument stap bepaalt als volgt hoe de lus verloopt:

Waarde	Lus wordt uitgevoerd indien
Positief of 0	teller <= eindwaarde
negatief is	teller >= eindwaarde
Nadat alle instructies in de lus zijn uitgevoerd, wordt stap opgeteld bij teller. Op dit moment worden de instructies in de lus nogmaals uitgevoerd (afhankelijk van dezelfde test die de lus aanvankelijk begon) of de lus wordt beëindigd en de uitvoering gaat verder met de instructie die volgt op de instructie Next.

Tip Als u de waarde van teller binnen een lus wijzigt, kan het moeilijker worden de code te lezen en fouten op te sporen.

Een willekeurig aantal instructies Exit For kunnen overal in de lus worden geplaatst als een alternatieve wijze om de lus te beëindigen. Exit For wordt vaak gebruikt nadat een voorwaarde is geëvalueerd, bijvoorbeeld If...Then, en draagt de besturing over aan de instructie die onmiddellijk volgt op Next.

U kunt lussen For...Next nesten door een lus For...Next binnen een andere te plaatsen. U dient wel in iedere lus een unieke variabelennaam te geven aan teller. De volgende constructie is juist:

For I = 1 To 10

For J = 1 To 10

For K = 1 To 10

...

Next K

Next J

Next I

Opmerking Als u teller uit een instructie Next weglaat, gaat de uitvoering verder alsof teller wel was opgenomen. Als er een instructie Next volgt vóór de bijbehorende instructie For, treedt een fout op.


GoSub...Return, instructie

Vertakt binnen een procedure naar een subroutine en keert naar de procedure terug.

Syntaxis

GoSub regel
...
regel
...

Return

Het argument regel kan een willekeurige regelnaam of een willekeurig regelnummer zijn.

Notities

U kunt GoSub en Return overal in een procedure gebruiken, maar de instructie GoSub en de bijbehorende instructie Return moeten in dezelfde procedure voorkomen. Een subroutine kan meer dan een instructie Return bevatten, maar de eerste instructie Return die wordt gevonden, doet de uitvoering terugvertakken naar de instructie die onmiddellijk volgt op de meest recent uitgevoerde instructie GoSub.

Opmerking   U kunt geen procedures Sub met GoSub...Return beginnen of beëindigen.

Tip   Een beter gestructureerd alternatief voor het gebruik van GoSub...Return is het creëren van afzonderlijke procedures die kunnen worden opgeroepen.


GoTo, instructie

Vertakt zonder voorwaarde naar een bepaalde regel binnen een procedure.

Syntaxis

GoTo regel

Het vereiste argument regel kan een willekeurige regelnaam of willekeurig regelnummer zijn.

Notities

GoTo kan alleen naar regels vertakken die binnen dezelfde procedure voorkomen.

Opmerking   Het gebruik van teveel instructies GoTo maakt het moeilijk code te lezen en fouten op te sporen. Gebruik waar mogelijk gestructureerde besturingsinstructies (Do...Loop, For...Next, If...Then...Else, Select Case).


If...Then...Else, instructie

Voert een groep instructies voorwaardelijk uit, afhankelijk van de waarde van een expressie.

Syntaxis

If voorwaarde Then [instructies] [Else andersinstructies]

U kunt ook de volgende syntaxis in blokvorm gebruiken:

If voorwaarde Then
[instructies]

[ElseIf voorwaarde-n Then
[andersindieninstructies] ...

[Else
[andersinstructies]]

End If

De instructie If...Then...Else heeft de volgende argumenten:

Onderdeel	Beschrijving
voorwaarde	Vereist. Een of meer van de volgende twee soorten expressie:
	Een numerieke expressie of reeksexpressie die de waarde True of False heeft. Als voorwaarde Null is, wordt voorwaarde behandeld als zijnde False.
	Een expressie van de vorm TypeOf objectnaam Is objecttype. De objectnaam is een willekeurige verwijzing naar een object en objecttype is een willekeurig geldig objecttype. De expressie is True als objectnaam van het objecttype is dat door objecttype is opgegeven, anders is de expressie False.
instructies	Optioneel in blokvorm; vereist in eenregelige syntaxis als er geen Else voorkomt. Een of meer instructies die worden gescheiden door dubbele punten. Deze instructies worden uitgevoerd als voorwaarde True is.
Voorwaarde-n	Optioneel. Hiervoor geldt hetzelfde als voor voorwaarde.
Andersindieninstructies	Optioneel. Een of meer instructies die worden uitgevoerd als de bijbehorende voorwaarde-n True is.
andersinstructies	Optioneel. Een of meer instructies die worden uitgevoerd als geen van de voorgaande voorwaarde- of voorwaarde-n-expressies True is.
Notities

U kunt de eenregelige syntaxis (de eerste genoemde syntaxis) gebruiken voor korte, simpele tests. De blokvorm (tweede genoemde syntaxis) geeft echter meer structuur en flexibiliteit dan de eenregelige vorm en het is meestal gemakkelijker deze te lezen, te onderhouden en fouten op te sporen.

Opmerking   Met de eenregelige vorm is het mogelijk meerdere instructies te laten uitvoeren als resultaat van een If...Then-beslissing. Alle instructies moeten op dezelfde regel voorkomen en worden gescheiden door dubbele punten, zoals in de volgende instructie:

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

Een instructie If in blokvorm moet de eerste instructie op een regel zijn. De onderdelen Else, ElseIf en End If kunnen alleen worden voorafgegaan door een regelnummer of een regelnaam. Het blok If moet worden afgesloten door een instructie End If.

Als u wilt bepalen of een instructie al dan niet een blok If is, kunt u controleren wat er volgt op het sleutelwoord Then. De instructie wordt behandeld als een eenregelige instructie If als er iets anders dan een opmerking voorkomt op dezelfde regel na Then.

Else en ElseIf zijn beide optioneel. U kunt een onbeperkt aantal ElseIf-zinnen in een blok If opnemen, maar deze kunnen niet na een Else-zin voorkomen. Instructies If in blokvorm kunnen worden genest. Dit betekent dat een instructie If zich binnen een andere instructie If bevindt.

Wanneer een instructie If in blokvorm wordt uitgevoerd (tweede syntaxis), wordt voorwaarde geëvalueerd. Als voorwaarde True is, worden de instructies die volgen op Then uitgevoerd. Als voorwaarde False is, wordt elke voorwaarde ElseIf (indien aanwezig) beurtelings geëvalueerd. Zodra een voorwaarde wordt gevonden die True is, worden de instructies uitgevoerd die onmiddellijk volgen op de bijbehorende Then. Als geen van de voorwaarden ElseIf True zijn (of als er geen ElseIf-zinnen zijn), worden de instructies uitgevoerd die volgen op Else. Nadat de instructies die volgen op Then of Else zijn uitgevoerd, gaat de uitvoering verder met de instructie die volgt op End If.

Tip   Select Case Wanneer een enkele expressie moet worden geëvalueerd die verschillende mogelijke acties bevat, kunt u beter Select Case gebruiken. TypeOf objectnaam Is objecttype kan echter niet worden gebruikt met de instructie Select Case.

Opmerking   TypeOf kan niet met andere harde gegevenstypen, zoals Long, Integer, enzovoort, worden gebruikt dan met Object.


IIf, functie

Geeft een van twee onderdelen als resultaat, afhankelijk van de evaluatie van een expressie.

Syntaxis

IIf(expr, truepart, falsepart)

De functie IIf heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
expr	Vereist. Expressie die u wilt evalueren.
Truepart	Vereist. Waarde of expressie die als resultaat wordt gegeven als expr True is.
Falsepart	Vereist. Waarde of expressie die als resultaat wordt gegeven als expr False is.
Notities

IIf evalueert altijd zowel truepart als falsepart, ook al wordt slechts een van hen als resultaat gegeven. Daarom moet u bedacht zijn op ongewenste neveneffecten. Als de evaluatie van falsepart bijvoorbeeld resulteert in een 'delen door nul'-fout, treedt ook indien expr True is, een fout op.


On...GoSub en On...GoTo, instructies

Vertakt naar een van een aantal opgegeven regels, afhankelijk van de waarde van een expressie.

Syntaxis

On expressie GoSub doellijst

On expressie GoTo doellijst

De instructie On...GoSub en On...GoTo hebben de volgende argumenten:

Onderdeel	Beschrijving
expressie	Vereist. Een willekeurige numerieke expressie die een integer tussen 0 en 255 (inclusief) als resultaat geeft. Als expressie geen integer is, wordt het afgerond voordat het wordt geëvalueerd.
Doellijst	Vereist. Lijst met regelnummers of regelnamen die worden gescheiden door komma's.
Notities

De waarde van expressie bepaalt naar welke regel wordt vertakt in doellijst. Als de waarde van expressie kleiner is dan 1 of groter dan het aantal items in de lijst, treedt een van de volgende resultaten op

Als expressie is	Dan
gelijk is aan 0	wordt de besturing overgedragen aan de instructie die volgt op On...GoSub of On...GoTo.
groter is dan het aantal items in de lijst	wordt de besturing overgedragen naar de instructie die volgt op On...GoSub of On...GoTo.
negatief is	treedt een fout op.
Groter is dan 255	treedt een fout op.
U kunt regelnummers en regelnamen in dezelfde lijst combineren. U kunt zoveel regelnamen en -nummers gebruiken als u wilt met On...GoSub en On...GoTo. Als u echter meer regelnamen of -nummers gebruikt dan er op een enkele regel passen, moet u het regelvervolgteken gebruiken om de logische regel verder te laten lopen op de volgende fysieke regel.

Tip   Met Select Case kunt u op een meer gestructureerde en flexibele manier naar meerdere locaties vertakken.


Partition, functie

Geeft als resultaat een Variant (Sring) die aangeeft waar een getal voorkomt binnen een berekende reeks bereiken.

Syntaxis

Partition(number, start, stop, interval)

De functie Partition heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
number	Vereist. Integer die u wilt evalueren tegen de bereiken.
begin	Vereist. Integer die het begin aangeeft van het totale getallenbereik. Kan niet kleiner zijn dan 0.
stop	Vereist. Integer die het einde aangeeft van het totale getallenbereik. Kan niet gelijk zijn aan of kleiner zijn dan start.
Notities

De functie Partition geeft het bepaalde bereik aan waarin number voorkomt en geeft een Variant (String) als resultaat die dat bereik beschrijft. De functie Partition is heel handig in query's. U kunt bijvoorbeeld een selectiequery maken die weergeeft hoeveel orders binnen verschillende bereiken vallen, bijvoorbeeld hoeveel orders tussen de waarden 1 en 1000, 1001 tot 2000 en zo verder.

In de volgende tabel kunt u zien hoe de bereiken worden bepaald door drie keer de argumenten start, stop en interval te gebruiken. De kolommen Eerste bereik en Laatste bereik tonen het resultaat van Partition. De bereiken worden weergegeven door laagstewaarde:hoogstewaarde, waarbij de kleinste waarde van het bereik (laagstewaarde) wordt gescheiden van de grootste waarde van het bereik (hoogstewaarde) door een dubbele punt (:).

begin	stop	interval	Voor eerste	Eerste bereik	Laatste bereik	Na laatste
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:   "
In bovenstaande tabel geeft de derde regel het resultaat weer wanneer start en stop een serie getallen weergeven die niet gelijk kunnen worden gedeeld door interval. Het laatste bereik loopt tot stop (11 getallen) ook al is interval 20.

Indien nodig geeft Partition een bereik als resultaat met voldoende voorloopspaties, zodat links en rechts van de dubbele punt evenveel tekens voorkomen als het aantal tekens in stop, plus een. Op die manier wordt ervoor gezorgd dat, wanneer u Partition met andere getallen gebruikt, de resulterende tekst op de juiste wijze wordt behandeld tijdens een mogelijk volgende sorteerbewerking.

Als interval 1 is, is het bereik number:number, ongeacht de argumenten start en stop. Als interval bijvoorbeeld 1 is, number 100 en stop 1000, dan geeft de functie Partition "  100: 100" als resultaat.  100".

Als een van de argumenten Null is, geeft Partition Null als resultaat.


Select Case, instructie

Voert een van meerdere groepen instructies uit, afhankelijk van de waarde van een expressie.

Syntaxis

Select Case testexpressie
[Case expressielijst-n
[instructies-n]] ...
[Case Else
[andersinstructies]]

End Select

De instructie Select Case heeft de volgende argumenten:

Onderdeel	Beschrijving
testexpressie	Vereist. Een willekeurige numerieke expressie of reeksexpressie.
expressielijst-n	Vereist als Case voorkomt. Door komma's gescheiden lijst volgens een of meer van de volgende vormen: expressie, expressie To expressie, Is vergelijkingsoperator expressie. Het sleutelwoord To geeft een bereik met waarden op. Als u het sleutelwoord To gebruikt, moet de kleinere waarde vóór To worden genoemd. Gebruik het sleutelwoord Is met vergelijkingsoperatoren (behalve Is en Like) om een bereik van waarden op te geven. Als er niets wordt opgegeven, wordt het sleutelwoord Is automatisch ingevoegd.
Instructies-n	Optioneel. Een of meer instructies die worden uitgevoerd als testexpressie overeenkomt met een willekeurig deel van expressielijst-n.
andersinstructies	Optioneel. Een of meer instructies die worden uitgevoerd als testexpressie niet overeenkomt met een willekeurige Case-zin.
Notities

Als testexpressie overeenkomt met een expressie van Case expressielijst worden de instructies die volgen op die Case-zin uitgevoerd tot aan de volgende Case-zin of, voor de laatste zin, tot aan End Select. De besturing wordt dan overgedragen aan de instructie die volgt op End Select. Als testexpressie in meer dan een Case-zin overeenkomt met een expressie van expressielijst, worden alleen de instructies uitgevoerd die volgen op de eerste overeenkomst.

De zin Case Else wordt gebruikt om andersinstructies aan te geven die moeten worden uitgevoerd als er geen overeenkomst wordt gevonden tussen de testexpressie en een expressielijst in een van de andere Case selecties. Hoewel dit niet is vereist, is het een goed idee om een instructie Case Else op te nemen in uw Select Case-blok zodat onvoorziene waarden van testexpressie geen problemen opleveren. Als geen Case expressielijst overeenkomt met testexpressie en er geen instructie Case Else is, gaat de uitvoering verder met de instructie die volgt op End Select.

In elke Case-zin kunt u meerdere expressies of bereiken opgeven. De volgende regel is bijvoorbeeld geldig:

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

Opmerking   De vergelijkingsoperator Is is niet hetzelfde als het sleutelwoord Is van de instructie Select Case.

U kunt ook bereiken en meervoudige expressies opgeven voor tekenreeksen. In het volgende voorbeeld maakt Case een vergelijking tussen reeksen die precies gelijk zijn aan alles, reeksen die in alfabetische volgorde tussen nootjes en soep vallen en de huidige waarde van TestItem:

Case "alles", "nootjes" To "soep", TestItem

Instructies Select Case kunnen worden genest. Elke geneste instructie Select Case moet een bijbehorende instructie End Select hebben.


Shell, functie

Start een uitvoerbaar programma en geeft een Variant (Double) als resultaat die het taak-id weergeeft, wanneer het programma met succes wordt gestart. Als het programma niet met succes wordt gestart is het resultaat nul.

Syntaxis

Shell(pathname[,windowstyle])

De syntaxis van de functie Shell kent de volgende benoemde argumenten:

Onderdeel	Beschrijving
pathname	Vereist; Variant (String). Naam van het uit te voeren programma en de eventuele argumenten of schakelopties voor de opdrachtregel die vereist zijn (eventueel met directory of map en station). Op de Macintosh kunt u met de functie MacID de id van een toepassing opgeven in plaats van de naam. In het volgende voorbeeld wordt de id voor Microsoft Word gebruikt:  Shell MacID("MSWD")
windowstyle	Optioneel. Variant (Integer) die overeenkomt met de stijl van het venster waarin het programma moet worden uitgevoerd. Als windowstyle wordt weggelaten, wordt het programma geminimaliseerd met focus gestart. Op de Macintosh (System 7.0 of recenter) bepaalt windowstyle alleen of de toepassing al dan niet de focus krijgt als deze wordt uitgevoerd.
Het benoemde argument windowstyle heeft de volgende waarden:

Constante	Waarde	Beschrijving
vbHide	0	Venster is verborgen en de focus wordt gegeven aan het verborgen venster. De constante vbHide kan niet worden gebruikt voor Macintosh-systemen.
VbNormalFocus	1	Venster heeft de focus en wordt weergegeven in het oorspronkelijke formaat en op de oorspronkelijke positie.
VbMinimizedFocus	2	Venster wordt weergegeven als pictogram met focus.
VbMaximizedFocus	3	Venster wordt als maximumvenster weergegeven, met focus.
VbNormalNoFocus	4	Venster wordt weergegeven in het meest recente formaat en de meest recente positie. Het huidige actieve venster blijft actief.
VbMinimizedNoFocus	6	Venster wordt weergegeven als pictogram. Het huidige actieve venster blijft actief.
Notities

Als de functie Shell het genoemde bestand met succes start, wordt het taak-id van het gestarte programma als resultaat gegeven. Het taak-id is een uniek getal dat het gestarte programma identificeert. Als de functie Shell het genoemde programma niet kan starten, treedt een fout op.

Op de Macintosh plaatsen vbNormalFocus, vbMinimizedFocus en vbMaximizedFocus allemaal de toepassing op de voorgrond en plaatsen vbHide, vbNoFocus en vbMinimizedFocus allemaal de toepassing op de achtergrond.

Opmerking   Standaard voert de functie Shell andere programma's asynchroon uit. Dit betekent dat een programma dat met Shell wordt gestart, mogelijk niet klaar is met de uitvoering voordat de instructies die volgen op Shell worden uitgevoerd.


Stop, instructie

Onderbreekt de uitvoering.

Syntaxis

Stop

Notities

U kunt instructies Stop overal in een procedure plaatsen om de uitvoering tijdelijk te staken. De instructie Stop komt overeen met het instellen van een onderbrekingspunt in de code.

De instructie Stop onderbreekt de uitvoering, maar in tegenstelling tot de instructie End, worden geen bestanden gesloten of variabelen gewist, tenzij Stop wordt gebruikt in een gecompileerd uitvoerbaar bestand (.exe).


Switch, functie

Evalueert een lijst met expressies en geeft als resultaat een Variant-waarde of een expressie die overeenkomst vertoont met de eerste expressie in de lijst die True is.

Syntaxis

Switch(expr-1, waarde-1[, expr-2, waarde-2 … [, expr-n,waarde-n]])

De functie Switch heeft de volgende argumenten:

Onderdeel	Beschrijving
expr	Vereist. Variant-expressie die u wilt evalueren.
waarde	Vereist. Waarde of expressie die als resultaat moet worden gegeven als de bijbehorende expressie True is.
Notities

De lijst met argumenten van de functie Switch bestaat uit paren expressies en waarden. De expressies worden van links naar rechts geëvalueerd en de waarde die wordt geassocieerd met de eerste expressie die True is, wordt als resultaat gegeven. Als de onderdelen niet juist zijn gepaard, treedt een runtimefout op. Als expr-1 bijvoorbeeld True is, geeft Switch waarde-1 als resultaat. Als expr-1 False is, maar expr-2 is True, geeft Switch waarde-2 als resultaat en zo verder.

Switch geeft een Null-waarde als resultaat indien:

•	geen van de expressies True is.

•	de eerste expressie die True is een corresponderende waarde heeft die Null is.

Switch evalueert alle expressies, ook al wordt slechts een expressie als resultaat gegeven. Daarom moet u bedacht zijn op ongewenste neveneffecten. Als de evaluatie van een van de expressies bijvoorbeeld een 'delen door nul'-fout oplevert, treedt een fout op.


While...Wend, instructie

Voert een reeks instructies uit zolang een bepaalde voorwaarde True is.

Syntaxis

While voorwaarde
[instructies]

Wend

De instructie While...Wend heeft de volgende argumenten:

Onderdeel	Beschrijving
voorwaarde	Vereist. Een numerieke expressie of reeksexpressie die als True of False wordt geëvalueerd. Als voorwaarde Null is, wordt voorwaarde behandeld als zijnde False.
instructies	Optioneel. Een of meer instructies die worden uitgevoerd zolang de voorwaarde True is.
Notities

Als voorwaarde True is, worden alle instructies uitgevoerd totdat de instructie Wend voorkomt. De besturing wordt dan teruggegeven aan de instructie While en voorwaarde wordt opnieuw getest. Als voorwaarde nog steeds True is, wordt dit proces herhaald. Als voorwaarde niet True is, gaat de uitvoering verder met de instructie die volgt op de instructie Wend.

While...Wend-lussen kunnen onbeperkt worden genest. Elke instructie Wend hoort bij de meest recente instructie While.

Tip   De instructie Do...Loop biedt een meer gestructureerde en flexibele manier om met lussen te werken.


With, instructie

Voert een reeks instructies uit op een enkel object of op een door de gebruiker gedefinieerd type.

Syntaxis

With object
[instructies]

End With

De instructie With heeft de volgende argumenten:

Onderdeel	Beschrijving
Object	Vereist. Naam van een object of een door de gebruiker gedefinieerd type.
instructies	Optioneel. Een of meer instructies die moeten worden uitgevoerd op object.
Notities

Met de instructie With kunt u een reeks instructies uitvoeren op een opgegeven object zonder de naam van het object steeds opnieuw te hoeven aanduiden. Als u bijvoorbeeld een aantal verschillende eigenschappen wilt wijzigen voor één object, plaatst u de instructies die de eigenschap toewijzen binnen de With-besturingsstructuur. U verwijst dan één keer naar het object in plaats van met iedere eigenschapstoewijzing. Het volgende voorbeeld illustreert het gebruik van de instructie With om waarden toe te wijzen aan verschillende eigenschappen van hetzelfde object.

With MijnNaam

.Height = 2000

.Width = 2000

.Caption = "Dit is MijnNaam"

End With

Opmerking   Zodra een With-blok is ingevoerd, kan object niet meer worden gewijzigd. Daarom kunt u niet één enkele instructie With gebruiken om een aantal verschillende objecten te beïnvloeden.

U kunt instructies With nesten door een With-blok in een ander blok te plaatsen. U moet er wel voor zorgen dat er in een ingesloten With-blok een volledige objectverwijzing voorkomt naar ieder deel van een object in het omvattende blok. Dit is nodig omdat delen van het omvattende blok worden gemaskeerd binnen het ingesloten blok.

Opmerking   Over het algemeen is het aan te bevelen om niet in of uit With-blokken te springen.

Als de instructies in een With-blok zijn uitgevoerd, maar de instructie With of End With niet is uitgevoerd, blijft een tijdelijke variabele met een verwijzing naar het object in het geheugen totdat u de procedure afsluit.


Voorbeeld van de functie Asc

Dit voorbeeld maakt gebruik van de functie Asc om een tekencode te geven die correspondeert met de eerste letter in de tekenreeks.

Dim MyNumber

MyNumber = Asc("A")	' Returns 65.

MyNumber = Asc("a")	' Returns 97.

MyNumber = Asc("Appel")	' Returns 65.


Voorbeeld van de functie CBool

Dit voorbeeld maakt gebruik van de functie CBool om een expressie naar een Boole–waarde te converteren. Als de expressie evalueert naar een niet-nul-waarde, geeft CBool als resultaat True. Anders is het resultaat False.

Dim A, B, Check

A = 5: B = 5	' Initialize variables.

Check = CBool(A = B)	' Check contains True.

A = 0	' Define variable.

Check = CBool(A)	' Check contains False.


Voorbeeld van de functie CByte

Dit voorbeeld maakt gebruik van de functie CByte om een expressie naar een Byte te converteren.

Dim MyDouble, MyByte

MyDouble = 125.5678	' MyDouble is a Double.

MyByte = CByte(MyDouble)	' MyByte contains 126.


Voorbeeld van de functie CDate

Dit voorbeeld maakt gebruik van de functie CDate om een tekenreeks naar een Date te converteren. Over het algemeen worden hard gecodeerde datums en tijden als tekenreeksen (zoals in dit voorbeeld) niet aangeraden. Gebruik in plaats daarvan letterlijke datumreeksen en letterlijke tijdreeksen (zoals #2/12/1969#, #4:45:23 PM#).

Dim MyDate, MyShortDate, MyTime, MyShortTime

MyDate = "12 februari 1969"	' Define date.

MyShortDate = CDate(MyDate)	' Convert to Date data type.

MyTime = "4:35:47 PM"	' Define time.

MyShortTime = CDate(MyTime)	' Convert to Date data type.


Voorbeeld van de functie CCur

Dit voorbeeld maakt gebruik van de functie CCur om een expressie naar een Currency te converteren.

Dim MyDouble, MyCurr

MyDouble = 543,214588	' MyDouble is a Double.

MyCurr = CCur(MyDouble * 2)	' Convert result of MyDouble * 2

' (1086.429176) to a

' Currency (1086.4292).


Voorbeeld van de functie CDbl

Dit voorbeeld maakt gebruik van de functie CDbl om een expressie naar een Double te converteren.

Dim MyCurr, MyDouble

MyCurr = CCur(234.456784)	' MyCurr is a Currency.

MyDouble = CDbl(MyCurr * 8.2 * 0.01)	' Convert result to a Double.


Voorbeeld van de functie CInt

Dit voorbeeld maakt gebruik van de functie CInt om een waarde naar een Integer te converteren.

Dim MyDouble, MyInt

MyDouble = 2345,5678	' MyDouble is a Double.

MyInt = CInt(MyDouble)	' MyInt contains 2346.


Voorbeeld van de functie CLng

Dit voorbeeld maakt gebruik van de functie CLng om een waarde naar een Long te converteren.

Dim MyVal, MyVal2, MyLong1, MyLong2

MyVal1 = 25427.45: MyVal2 = 25427.55	' MyVal1, MyVal2 are Doubles.

MyLong1 = CLng(MyVal1)	' MyLong1 contains 25427.

MyLong2 = CLng(MyVal2)	' MyLong2 contains 25428.


Voorbeeld van de functie CSng

Dit voorbeeld maakt gebruik van de functie CSng om een waarde naar een Single te converteren

Dim MyDouble1, MyDouble2, MySingle1, MySingle2

' MyDouble1, MyDouble2 are Doubles.

MyDouble1 = 75.3421115: MyDouble2 = 75.3421555

MySingle1 = CSng(MyDouble1)	' MySingle1 contains 75.34211.

MySingle2 = CSng(MyDouble2)	' MySingle2 contains 75.34216.


Voorbeeld van de functie CStr

Dit voorbeeld maakt gebruik van de functie CStr om een numerieke waarde naar een String te converteren.

Dim MyDouble, MyString

MyDouble = 437.324	' MyDouble is a Double.

MyString = CStr(MyDouble)	' MyString contains "437.324".


Voorbeeld van de functie CVar

Dit voorbeeld maakt gebruik van de functie CVar om een expressie naar een Variant te converteren.

Dim MyInt, MyVar

MyInt = 4534	' MyInt is an Integer.

MyVar = CVar(MyInt & "000")	' MyVar contains the string

' 4534000.


Voorbeeld van de functie CVErr

Dit voorbeeld maakt gebruik van de functie CVErr om een Variant te geven waarvan het VarType gelijk is aan vbError (10) is. De door de gebruiker gedefinieerde functie CalculateDouble geeft een fout als het ingevoerde argument geen getal is. Met behulp van CVErr kunt u door de gebruiker gedefinieerde fouten als resultaat geven op basis van door de gebruiker gedefinieerde procedures of de afhandeling van een fout tijdens de uitvoering uitstellen. Gebruik de functie IsError om te controleren of de waarde een fout aangeeft.

' Call CalculateDouble with an error-producing argument.

Sub Test()

Debug.Print CalculateDouble("345.45robert")

End Sub

' Define CalculateDouble Function procedure.

Function CalculateDouble(Number)

If IsNumeric(Number) Then

CalculateDouble = Number * 2	' Return result.

Else

CalculateDouble = CVErr(2001)	' Return a user-defined error

End If	' number.

End Function


Voorbeeld van de functie Val

Dit voorbeeld maakt gebruik van de functie Val om de getallen in een tekenreeks te geven.

Dim MyValue

MyValue = Val("2457")	' Returns 2457.

MyValue = Val(" 2 45 7")	' Returns 2457.

MyValue = Val("24 en 57")	' Returns 24.


Voorbeeld van de functie CDec

Dit voorbeeld maakt gebruik van de functie CDec om een numerieke waarde naar een Decimal te converteren.

Dim MyDecimal, MyCurr

MyCurr = 10000000.0587	' MyCurr is a Currency.

MyDecimal = CDec(MyCurr) 	' MyDecimal is a Decimal.


Conversiefuncties

Asc, functie

CBool, functie

CByte, functie

CCur, functie

CDate, functie

CDec, functie

CDbl, functie

Chr, functie

CInt, functie

CLng, functie

CSng, functie

CStr, functie

CVar, functie

CVErr, functie

Format, functie

Hex, functie

Oct, functie

Str, functie

Val, functie


Asc, functie

Geeft als resultaat een Integer-waarde met de tekencode van de eerste letter in een tekenreeks.

Syntaxis

Asc(tekenreeks)

Het vereiste argument tekenreeks kan elke geldige tekenreeksexpressie zijn. Als tekenreeks geen tekens bevat, treedt een runtimefout op.

Notities

Het bereik voor resultaatwaarden ligt tussen 0 en 255 op niet-DBCS-systemen, maar tussen -32768 en 32767 op DBCS-systemen.

Opmerking   Gebruik de functie AscB voor byte-gegevens in een tekenreeks. In plaats van de tekencode voor het eerste teken, geeft AscB de eerste byte als resultaat. De functie AscW geeft als resultaat de Unicode-tekencode, behalve op platformen waar Unicode niet wordt ondersteund. In dat geval is het gedrag hetzelfde als de functie Asc.

Opmerking   Visual Basic voor de Macintosh ondersteunt geen Unicode-tekenreeksen. Daarom kan AscW(n) niet als resultaat alle Unicode-tekens voor waarden n in het bereik van 128 – 65.535 geven, zoals dat wel gebeurt in de Windows-omgeving. In plaats daarvan probeert AscW(n) te "raden" naar Unicode-waarden n die groter zijn dan 127. Gebruik AscW daarom niet in de Macintosh-omgeving.


CVErr, functie

Geeft als resultaat een Variant van het subtype Error met een foutwaarde die is opgegeven door de gebruiker.

Syntaxis

CVErr(foutwaarde)

Het vereiste argument foutwaarde kan elke geldige foutwaarde zijn.

Notities

U gebruikt de functie CVErr om door de gebruiker gedefinieerde fouten op te nemen in door de gebruiker gemaakte procedures. Als u bijvoorbeeld een functie maakt waarin verschillende argumenten worden geaccepteerd en die normaal gesproken een tekenreeks als resultaat geeft, kunt u de invoerargumenten laten evalueren door de functie, zodat u zeker weet dat de argumenten binnen het geaccepteerde bereik vallen. Wanneer de argumenten niet binnen het geldende bereik vallen, geeft de functie waarschijnlijk niet het resultaat dat u verwacht. In dit geval kunt u CVErr gebruiken voor het opvragen van een foutwaarde die aangeeft hoe de gebruiker het probleem kan oplossen.

Impliciete conversie van een Error is niet toegestaan. U kunt bijvoorbeeld de resultaatwaarde van CVErr niet direct aan een variabele toewijzen die niet van het type Variant is. Het is echter wel mogelijk de resultaatwaarde van CVErr expliciet naar een geschikt gegevenstype te converteren (met behulp van CInt, CDbl, enzovoort).


Val, functie

Geeft een numerieke resultaatwaarde van de getallen in een tekenreeks.

Syntaxis

Val(tekenreeks)

Het vereiste argument tekenreeks kan elke geldige tekenreeksexpressie zijn.

Notities

Bij het eerste teken in een tekenreeks dat geen deel uitmaakt van een getal en dus niet wordt herkend, stopt de functie Val met het lezen van de tekenreeks. Symbolen en tekens die vaak worden beschouwd als onderdeel van een numerieke waarde, zoals valutatekens en scheidingstekens voor duizendtallen, worden niet herkend. De radixvoorvoegsels &O (voor octaal) en &H (voor hexadecimaal) worden echter wel herkend. Spaties, tabs en regelinvoer worden uit het argument verwijderd.

De volgende code geeft de waarde 1981615 als resultaat:

Val("    198 1615 BN Roosendaal")

Bij de volgende code geeft Val als resultaat de decimale waarde -1 voor de weergegeven hexadecimale waarde:

Val("&HFFFF")

Opmerking   De functie Val herkent alleen de punt (.) als geldig decimaal scheidingsteken. Als u verschillende decimale scheidingstekens gebruikt (zoals in gelokaliseerde toepassingen), dient u CDbl te gebruiken om een tekenreeks te converteren naar een getal.


Typen conversiefuncties

Elke functie converteert een expressie naar een bepaald gegevenstype.

Syntaxis

CBool(expressie)

CByte(expressie)

CCur(expressie)

CDate(expressie)

CDbl(expressie)

CDec(expressie)

CInt(expressie)

CLng(expressie)

CSng(expressie)

CStr(expressie)

CVar(expressie)

Het vereiste argument expressie kan elke geldige tekenreeksexpressie of numerieke expressie zijn.

Resultaattypen

De functienaam bepaalt het resultaattype, zoals hieronder wordt weergegeven:

Functie	Resultaattype	Bereik voor het argument expressie
CBool	Boolean	Elke geldige tekenreeks- of numerieke expressie.
CByte	Byte	0 tot en met 255.
CCur	Currency	-922,337,203,685,477.5808 tot en met 922,337,203,685,477.5807.
CDate	Date	Elke geldige datumexpressie.
CDbl	Double	-1,79769313486232E308 tot en met -4,94065645841247E-324 voor negatieve waarden; 4,94065645841247E-324 tot 1,79769313486232E308 voor positieve waarden.
CDec	Decimal	+/-79.228.162.514.264.337.593.543.950.335 voor getallen zonder decimalen achter de komma. Voor getallen met 28 decimalen is het bereik  +/-7,9228162514264337593543950335. Het kleinst mogelijke getal (behalve nul) is 0,0000000000000000000000000001.
CInt	Integer	-32.768 tot en met 32.767; breuken worden afgerond.
CLng	Long	-2.147.483.648 tot en met 2.147.483.647; breuken worden afgerond.
CSng	Single	-3,402823E38 tot en met -1,401298E-45 voor negatieve waarden; 1,401298E-45 tot en met 3,402823E38 voor positieve waarden.
CStr	String	Resultaatwaarden voor CStr zijn afhankelijk van het argument expressie.
CVar	Variant	Hetzelfde bereik als Double voor numerieke waarden. Hetzelfde bereik als String voor niet-numerieke waarden.
Notities

Er treedt een fout op als expressie buiten het bereik ligt dat geldt voor het gegevenstype waarnaar wordt geconverteerd.

Vaak kunt u uw programmacode duidelijker maken door met de conversiefuncties voor gegevenstypen aan te geven dat het resultaat van een bewerking niet het standaardgegevenstype moet zijn, maar een ander gegevenstype. U gebruikt bijvoorbeeld CCur om een valutawaarde op te vragen in plaats van een integer of een waarde met enkelvoudige of dubbele precisie.

Gebruik de conversiefuncties van de gegevenstypen in plaats van Val om een willekeurig gegevenstype te converteren naar een ander gegevenstype in overeenstemming met de internationale kenmerken. De verschillende decimale scheidingstekens, scheidingstekens voor duizendtallen en valutatekens worden, afhankelijk van de lokale instellingen op uw computer, juist herkend als u bijvoorbeeld CCur gebruikt.

Als een decimaal getal precies 0,5 is, wordt dit door CInt en CLng altijd afgerond naar het dichtstbijzijnde even getal. 0,5 wordt bijvoorbeeld afgerond naar 0, en 1,5 naar 2. CInt en CLng zijn niet hetzelfde als de functies Fix en Int die decimale getallen afkappen in plaats van afronden. Daarnaast geven Fix en Int altijd eenzelfde type als wat is opgegeven als resultaat.

Gebruik de functie IsDate om te bepalen of date kan worden geconverteerd naar een datum of tijd. Letterlijke datumreeksen, letterlijke tijdreeksen en sommige getallen die binnen het geldige datumbereik vallen, worden door CDate herkend. Bij het converteren van een getal naar een datum wordt het gedeelte voor de komma naar een datum geconverteerd. Het gedeelte achter de komma (indien aanwezig) wordt geconverteerd naar een tijd, waarbij de telling begint om 12 uur 's nachts

Op basis van de lokale instellingen op uw computer wordt de datumnotatie herkend door CDate. Wanneer u de datum typt in een andere notatie dan een van de bekende datumnotaties, kan de juiste volgorde van dag, maand en jaar waarschijnlijk niet worden vastgesteld. Een lange datumnotatie die ook een dagtekenreeks bevat, wordt evenmin herkend.

Ter wille van de compatibiliteit met vorige versies van Visual Basic is ook de functie CVDate beschikbaar. De syntaxis van de functie CVDate is gelijk aan die van de functie CDate. Het verschil is echter dat CVDate geen gegevenstype Date als resultaat geeft, maar een Variant met het subtype Date. CVDate is echter overbodig geworden, omdat er nu een intrinsiek gegevenstype Date is. Hetzelfde gebeurt als u een expressie converteert naar het type Date en daar vervolgens een Variant aan toewijst. Op dezelfde manier worden alle andere intrinsieke typen geconverteerd naar hun Variant-subtypen.

Opmerking   De functie CDec geeft geen discreet gegevenstype als resultaat, maar altijd een Variant waarvan de waarde is geconverteerd naar een subtype Decimal.


Resultaatwaarden voor CStr

Als expressie is	Dan geeft CStr als resultaat
Boolean	Een tekenreeks met True of False.
Date	Een tekenreeks met een datum in de korte datumnotatie van uw systeem.
Null	Een runtimefout.
Empty	Een tekenreeks zonder gegevens ("").
Error	Een tekenreeks met het woord Error gevolgd door de foutwaarde.
Een andere numerieke waarde	Een tekenreeks met het getal.


Boolean, gegevenstype

Boole-variabelen worden bewaard als getallen van 16 bits (2 bytes), maar kunnen alleen de waarde True of False hebben. Boole-variabelen worden weergegeven als True of False (als u Print gebruikt) of als #TRUE# of #FALSE# (als u Write # gebruikt). Gebruik de sleutelwoorden True en False om een van de twee Boole-variabelen toe te wijzen.

Als u andere numerieke gegevens converteert naar Boole-waarden, krijgt 0 de waarde False en alle andere waarden worden True. Als u Boole-waarden converteert naar andere gegevenstypen, krijgt False de waarde 0 en True de waarde -1.


Byte, gegevenstype

Byte-variabelen worden bewaard als enkelvoudige getallen van 8 bits (1 byte) zonder teken met een waarde tussen 0 en 255.

U kunt het gegevenstype Byte gebruiken om binaire gegevens op te slaan.


Currency, gegevenstype

Currency-variabelen worden bewaard als gehele getallen van 64 bits (8 bytes) die gedeeld door 10.000 een getal met vaste komma geven dat bestaat uit 15 cijfers links van het decimale scheidingsteken en 4 getallen rechts van de komma. Deze weergave biedt een bereik van –922.337.203.685.477,5808 tot 922.337.203.685.477,5807. Het typeaanduidingsteken voor Currency is (@).

Het gegevenstype Currency is handig voor het uitvoeren van berekeningen die betrekking hebben op geld en berekeningen met een vaste komma, waar nauwkeurigheid van het grootste belang is.


Overzicht gegevenstypen

De volgende tabel toont de ondersteunde gegevenstypen, inclusief de benodigde geheugenruimte en het bereik van elk gegevenstype.

Gegevenstype	Lengte	Bereik
Byte	1 byte	0 tot 255
Boolean	2 bytes	True of False
Geheel getal	2 bytes	-32.768 tot 32.767
Long (lange integer)	4 bytes	-2.147.483.648 tot 2.147.483.647
Single  (enkelvoudige precisie met drijvende komma)	4 bytes	-3,402823E38 tot -1,401298E-45 voor negatieve waarden; 1,401298E-45 tot 3,402823E38 voor positieve waarden
Double  (dubbele precisie met drijvende komma)	8 bytes	-1,79769313486232E308 tot en met -4,94065645841247E-324 voor negatieve waarden; 4,94065645841247E-324 tot 1,79769313486232E308 voor positieve waarden.
Currency  (geschaalde integer)	8 bytes	-922.337.203.685.477,5808 tot 922.337.203.685.477,5807
Decimal	14 bytes	+/-79.228.162.514.264.337.593.543.950.335 zonder decimale komma;  +/-7,9228162514264337593543950335 met 28 plaatsen rechts van de decimale komma; het kleinste getal met de waarde niet gelijk aan nul is:
Date	8 bytes	1 januari 100 tot 31 december 9999
Object	4 bytes	Elke verwijzing naar Object
String  (variabele lengte)	10 bytes + lengte van tekenreeks	0 tot ongeveer 2 miljard
String (vaste lengte)	Lengte van tekenreeks	1 tot ongeveer 65.400
Variant (met getallen)	16 bytes	Elke numerieke waarde binnen het bereik van het gegevenstype Double
Variant (met tekens)	22 bytes + lengte van tekenreeks	Hetzelfde bereik als voor String met variabele lengte
Door de gebruiker gedefinieerd (met Type)	Getal dat is vereist door de elementen	Het bereik van elk element is hetzelfde als het bereik van het betreffende gegevenstype.
Opmerking   Matrices van elk gegevenstype nemen 20 bytes aan geheugen in beslag voor elke dimensie plus 4 bytes die nodig zijn om de gegevens zelf op te slaan. U kunt de benodigde geheugenruimte voor de gegevens berekenen door het aantal gegevenselementen te vermenigvuldigen met de grootte van elk element. Bij een ééndimensionale matrix met bijvoorbeeld vier gegevenselementen van het type Integer, die elk een omvang van twee bytes hebben, nemen de gegevens dus acht bytes in beslag. De acht bytes voor de gegevens plus de 24 bytes voor de matrix zelf, zorgt dat de matrix totaal 32 bytes in beslag neemt.

Een Variant met een matrix neemt 12 bytes meer in beslag dan alleen de matrix.

Opmerking   Gebruik de functie StrConv om het ene type tekenreeksgegevens naar het andere te converteren.


Date, gegevenstype

Date-variabelen worden bewaard als getallen met een drijvende komma van IEEE 64 bits (8 bytes) die datums in het bereik van 1 januari 100 tot 31 december 9999 en tijden van 0:00:00 tot 23:59:59 weergeven. U kunt elke herkenbare letterlijke datumwaarde toewijzen aan Date-variabelen. Letterlijke datumwaarden moeten tussen hekjes (#) worden geplaatst, bijvoorbeeld, #January 1, 1993# of #1 Jan 93#.

Variabelen van het gegevenstype Date geven datums weer in de korte datumnotatie die door uw systeem wordt herkend. Tijden worden weergegeven in de tijdnotatie (12- of 24-uurs klok) die door uw systeem wordt herkend.

Als u andere numerieke gegevenstypen naar het gegevenstype Date converteert, geven waarden links van het decimaalteken datumgegevens weer en waarden rechts van het decimaalteken tijdsgegevens. Middernacht is 0 en middag is 0.5. Negatieve gehele getallen geven datums voor 30 december 1899 weer.


Decimal, gegevenstype

Decimal-variabelen worden bewaard als integers met voorteken van 96 bits (12 bytes), geschaald door een variabele macht 10. De schalingsfactor macht 10 geeft het aantal getallen op dat rechts van de decimale komma staat en ligt tussen 0 en 28. Met een schaal van 0 (geen decimale plaatsen) is de hoogst mogelijke waarde +/-79.228.162.514.264.337.593.543.950.335. Met 28 decimale plaatsen is de hoogste waarde +/-7,9228162514264337593543950335 en de kleinste waarde niet gelijk aan nul is +/-0,0000000000000000000000000001.

Opmerking   Voorlopig kan het gegevenstype Decimal alleen worden gebruikt binnen een Variant. U kunt dus niet een variabele maken van het gegevenstype Decimal. Als u gebruik maakt van de functie CDec kunt u echter wel een Variant maken, waarvan het subtype Decimal is.


Double, gegevenstype

Variabelen van het gegevenstype Double (dubbele precisie met drijvende komma) worden bewaard als drijvende getallen van IEEE 64 bits (8 bytes) met een waardebereik van -1,79769313486232E308 tot -4,94065645841247E-324 voor negatieve waarden en 4,94065645841247E-324 tot 1,79769313486232E308 voor positieve waarden. Het type-aanduidingsteken voor Double is (#).


Integer, gegevenstype

Integer-variabelen worden bewaard als getallen van 16 bits (2 bytes) met een waardebereik van -32.768 tot 32.767. Het type-aanduidingsteken voor Integer is (%).

U kunt ook met variabelen van het gegevenstype Integer benoemde waarden weergeven. Een benoemde waarde kan een eindige reeks unieke gehele getallen bevatten, die allemaal een speciale betekenis hebben in de context waarin deze worden gebruikt. Met benoemde waarden kunt u op eenvoudige wijze een keuze maken uit een aantal mogelijkheden, bijvoorbeeld, zwart = 0, wit = 1, enzovoort. Het is een goede programmeergewoonte constanten te definiëren met de instructie Const voor elke benoemde waarde.


Long, gegevenstype

Long-variabelen (lange integer) worden bewaard als positieve of negatieve getallen van 32 bits (4 bytes) met een waardebereik van -2.147.483.648 tot 2.147.483.647. Het type-aanduidingsteken voor Long is (&).


Object, gegevenstype

Object-variabelen worden bewaard als adressen van 32 bits (4 bytes) die verwijzen naar objecten. Met behulp van de instructie Set kunt u een variabele die als een Object is gedeclareerd, gebruiken om te verwijzen naar een object dat door de toepassing is gemaakt.

Opmerking   Hoewel een variabele die als een Object is gedeclareerd flexibel genoeg is om een verwijzing te bevatten naar een willekeurig object, is de verbinding met het object waarnaar wordt verwezen altijd laat (runtimeverbinding). Wijs de objectverwijzing toe aan een variabele die is gedeclareerd met een klassenaam om een vroege verbinding te forceren (compiletime-verbinding).


Single, gegevenstype

Single-variabelen (enkelvoudige precisie met drijvende komma) worden bewaard als getallen van 32 bits (4 bytes) met een waardebereik van -3,402823E38 tot -1,401298E-45 voor negatieve waarden en van 1,401298E-45 tot 3,402823E38 voor positieve waarden. Het type-aanduidingsteken voor Single is het uitroepteken (!).


String, gegevenstype

Er zijn twee soorten tekenreeksen: tekenreeksen met variabele lengte en met vaste lengte.

•	Een tekenreeks met variabele lengte kan maximaal ongeveer 2 miljard (2^31) tekens bevatten.

•	Een tekenreeks met vaste lengte kan maximaal ongeveer 64 kB (2^16) aan tekens bevatten.

Opmerking   U kunt voor Public geen tekenreeksen met vaste lengte gebruiken in een klassenmodule.

De codes voor String-tekens hebben een bereik van 0 t/m 255. De eerste 128 tekens (0 - 127) van de tekenset komen overeen met de letters en symbolen op een standaard U.S. toetsenbord. Deze eerste 128 tekens zijn hetzelfde als de tekens van de ASCII-tekenset. De tweede 128 tekens (128–255) geven speciale tekens weer, zoals letters in internationale alfabetten, accenten, valutasymbolen en breuken. Het type-aanduidingsteken voor String is ($).


Door de gebruiker gedefinieerd gegevenstype

Elk gegevenstype dat u met de instructie Type definieert. Door de gebruiker gedefinieerde gegevenstypen kunnen een of meer elementen van elk gegevenstype, elke matrix, of een eerder gedefinieerd gegevenstype bevatten. Bijvoorbeeld:

Type MyType

MyName As String	' String variable stores a name.

MyBirthDate As Date	' Date variable stores a birthdate.

MySex As Integer	' Integer variable stores sex (0 for

End Type	' female, 1 for male).


Variant, gegevenstype

Het gegevenstype Variant is het gegevenstype dat wordt toegekend aan alle variabelen die niet expliciet worden gedeclareerd als een ander type (met instructies zoals Dim, Private, Public of Static). Het gegevenstype Variant heeft geen type-aanduidingsteken.

Een Variant is een speciaal gegevenstype dat elk type gegevens kan bevatten, behalve String-gegevens met een vaste lengte. (Variant-typen ondersteunen nu door de gebruiker gedefinieerde typen.) Een Variant kan bovendien de speciale waarden Empty, Error, Nothing en Null bevatten. Met de functies VarType of TypeName kunt u controleren hoe de gegevens in een Variant worden gebruikt.

Numerieke gegevens kunnen integers of reële getallen zijn met een waardebereik van -1,797693134862315E308 tot -4,94066E-324 voor negatieve waarden en van 4,94066E-324 tot 1,797693134862315E308 voor positieve waarden. In het algemeen worden numerieke gegevens van het type Variant bewaard in het oorspronkelijke gegevenstype binnen de Variant. Als u bijvoorbeeld een Integer aan een Variant toewijst, behandelen de volgende bewerkingen de Variant alsof dit een Integer is. Als u echter een wiskundige bewerking uitvoert op een Variant die een gegevenstype Byte, Integer, Long of Single bevat en het resultaat buiten het normale bereik van het oorspronkelijke gegevenstype valt, wordt het resultaat binnen de Variant vergroot tot het volgende gegevenstype. Het gegevenstype Byte verandert in Integer, Integer verandert in het type Long, de typen Long en Single veranderen in het type Double. Er treedt een fout op wanneer een variabele van het type Variant die de gegevenstypen Currency, Decimal en Double bevat, de respectievelijke bereiken van deze gegevenstypen overschrijdt.

U kunt het gegevenstype Variant gebruiken in plaats van een ander gegevenstype om flexibeler met gegevens te kunnen werken. Als een variabele van het type Variant getallen bevat, worden deze afhankelijk van de context weergegeven als tekenreeks of als de werkelijke waarde. Bijvoorbeeld:

Dim MyVar As Variant

MyVar = 98052

In het bovenstaande voorbeeld bevat MijnVar een numerieke weergave; de werkelijke waarde 98052. Wiskundige operatoren werken naar verwachting voor Variant-variabelen met numerieke waarden of een tekenreeks die als getallen kunnen worden gelezen. Als u de operator + gebruikt om MijnVar op te tellen bij een andere Variant die een getal bevat of bij een variabele van een numeriek gegevenstype, is het resultaat een wiskundige som.

De waarde Empty geeft een Variant-variabele die niet is geïnitialiseerd (waaraan geen initiële waarde is toegewezen). Een Variant met de waarde Empty is 0 als deze in een numerieke context wordt gebruikt en een tekenreeks zonder gegevens ("") als deze in een tekenreekscontext wordt gebruikt.

Verwar Empty niet met Null. Null geeft aan dat de Variant-variabele met opzet geen geldige gegevens bevat.

In een Variant is Error een speciale waarde die wordt gebruikt om aan te geven dat een fout is opgetreden in een procedure. In tegenstelling tot andere fouten vindt geen normale foutbehandeling op toepassingsniveau plaats. Hierdoor kan de programmeur of de toepassing een alternatief gebruiken, gebaseerd op de foutwaarde.

Met de functie CVErr kunt u gewone getallen naar Foutwaarden converteren.


Voorbeeld van de functie Date

Dit voorbeeld maakt gebruik van de functie Date om de huidige systeemdatum te geven.

Dim MyDate

MyDate = Date	' MyDate contains the current system date.


Voorbeeld van de instructie Date

Dit voorbeeld maakt gebruik van de instructie Date om de systeemdatum van de computer in te stellen. In de ontwikkelomgeving wordt de letterlijke datumwaarde met behulp van de lokale instellingen van uw programmacode in korte datumnotatie weergegeven.

Dim MyDate

MyDate = #12 februari 900,38kg	' Een datum toewijzen.

Date = MyDate	' Change system date.


Voorbeeld van de functie DateAdd

Dit voorbeeld neemt een datum en geeft, met behulp van de functie DateAdd, een corresponderende datum een opgegeven aantal maanden in de toekomst weer.

Dim FirstDate As Date	' Declare variables.

Dim IntervalType As String

Dim Number As Integer

Dim Msg

IntervalType = "m"	' "m" geeft maanden als interval.

FirstDate = InputBox("Voer een datum in")

Number = InputBox("Voer aantal op te tellen maanden in")

Msg = "Nieuwe datum: " & DateAdd(IntervalType, Number, FirstDate)

MsgBox Msg


Voorbeeld van de functie DateDiff

Dit voorbeeld maakt gebruik van de functie DateDiff om het aantal dagen tussen de opgegeven datum en vandaag weer te geven.

Dim TheDate As Date	' Declare variables.

Dim Msg

TheDate = InputBox("Voer een datum in")

Msg = "Dagen vanaf vandaag: " & DateDiff("d", Now, TheDate)

MsgBox Msg


Voorbeeld van de functie DatePart

Dit voorbeeld neemt een datum en geeft, met behulp van de functie DatePart, weer in welk kwartaal van het jaar deze valt.

Dim TheDate As Date	' Declare variables.

Dim Msg

TheDate = InputBox("Voer een datum in:")

Msg = "Kwartaal: " & DatePart("k", TheDate)

MsgBox Msg


Voorbeeld van de functie DateSerial

Dit voorbeeld maakt gebruik van de functie DateSerial om de datum te geven voor een opgegeven jaar, maand en dag.

Dim MyDate

' MyDate bevat de datum 12 februari 1969.

MyDate = DateSerial(1969, 2, 12)	' Datum als resultaat.


Voorbeeld van de functie DateValue

Dit voorbeeld maakt gebruik van de functie DateValue om een tekenreeks te converteren naar een datum. U kunt ook gebruik maken van letterlijke datumwaarden om direct een datum aan een Variant- of Date-variabele toe te wijzen, bijvoorbeeld, MyDate = #2/12/69#.

Dim MyDate

MyDate = DateValue("12 februari 1969")	' Datum als resultaat.


Voorbeeld van de functie Day

Dit voorbeeld maakt gebruik van de functie Day om de dag van de maand te bepalen voor een opgegeven datum. In de ontwikkelomgeving wordt de letterlijke datumwaarde met behulp van de lokale instellingen van uw programmacode in korte datumnotatie weergegeven.

Dim MyDate, MyDay

MyDate = #12 februari 1969#	' Een datum toewijzen.

MyDay = Day(MyDate)	' MyDay bevat 12.


Voorbeeld van de functie Hour

Dit voorbeeld maakt gebruik van de functie Hour om het uur voor een opgegeven tijd te verkrijgen. In de ontwikkelomgeving wordt de tijd (letterlijke tijdwaarde) met behulp van de lokale instellingen van uw programmacode in korte datumnotatie weergegeven.

Dim MyTime, MyHour

MyTime = #4:35:17 PM#	' Een tijd toewijzen.

MyHour = Hour(MyTime)	' MyHour bevat 16.


Voorbeeld van de functie Minute

Dit voorbeeld maakt gebruik van de functie Minute om de minuut van het uur voor een opgegeven tijd te verkrijgen. In de ontwikkelomgeving wordt de tijd (letterlijke tijdwaarde) met behulp van de lokale instellingen van uw programmacode in korte datumnotatie weergegeven.

Dim MyTime, MyMinute

MyTime = #4:35:17 PM#	' Een tijd toewijzen.

MyMinute = Minute(MyTime)	' MyMinute bevat 35.


Voorbeeld van de functie Month

Dit voorbeeld maakt gebruik van de functie Month om de maand voor een opgegeven datum te verkrijgen. In de ontwikkelomgeving wordt de letterlijke datumwaarde met behulp van de lokale instellingen van uw programmacode in korte datumnotatie weergegeven.

Dim MyDate, MyMonth

MyDate = #12 februari 1969#	' Een datum toewijzen.

MyMonth = Month(MyDate)	' MyMonth bevat 2.


Voorbeeld van de functie Now

Dit voorbeeld maakt gebruik van de functie Now om de huidige systeemdatum en -tijd te geven.

Dim Today

Today = Now	' Huidige systeemdatum en -tijd toewijzen.


Voorbeeld van de functie Second

Dit voorbeeld maakt gebruik van de functie Second om de seconde van de minuut voor een opgegeven tijd te verkrijgen. In de ontwikkelomgeving wordt de tijd (letterlijke tijdwaarde) met behulp van de lokale instellingen van uw programmacode in korte datumnotatie weergegeven.

Dim MyTime, MySecond

MyTime = #4:35:17 PM#	' Een tijd toewijzen.

MySecond = Second(MyTime)	' MySecond bevat 17.


Voorbeeld van de functie Time

Dit voorbeeld maakt gebruik van de functie Time om de huidige systeemtijd te geven.

Dim MyTime

MyTime = Time	' Huidige systeemdatum als resultaat.


Voorbeeld van de instructie Time

Dit voorbeeld maakt gebruik van de instructie Time om de tijd van het computersysteem in te stellen op een door de gebruiker gedefinieerde tijd.

Dim MyTime

MyTime = #4:35:17 PM#	' Een tijd toewijzen.

Time = MyTime	' Stelt systeemtijd in op MyTime.


Voorbeeld van de functie Timer

Dit voorbeeld maakt gebruik van de functie Timer om de toepassing tijdelijk te onderbreken. Het voorbeeld maakt tevens gebruik van DoEvents om tijdens de onderbreking andere processen te genereren.

Dim PauseTime, Start, Finish, TotalTime

If (MsgBox("Druk op Ja om 5 seconden te pauzeren", 4)) = vbYes Then

PauseTime = 5	' Tijdsduur instellen.

Start = Timer	' Aanvangstijd instellen.

Do While Timer < Start + PauseTime

DoEvents	' Overdragen aan andere processen.

Loop

Finish = Timer	' Eindtijd instellen.

TotalTime = Finish - Start	' Totaaltijd berekenen.

MsgBox "Pauze gedurende " & TotalTime & " seconden"

Else

End

End If


Voorbeeld van de functie TimeSerial

Dit voorbeeld maakt gebruik van de functie TimeSerial om een tijdwaarde voor een opgegeven uur, minuut en seconde te geven.

Dim MyTime

MyTime = TimeSerial(16, 35, 17)	' MyTime bevat seriële

' weergave van 4:35:17 PM.


Voorbeeld van de functie TimeValue

Dit voorbeeld maakt gebruik van de functie TimeValue om een tekenreeks naar een tijd te converteren. U kunt ook letterlijke datumwaarden gebruiken om direct een tijd aan een Variant- of Date-variabele toe te wijzen (bijvoorbeeld MyTime = #4:35:17 PM#).

Dim MyTime

MyTime = TimeValue("4:35:17 PM")	' Een tijd als resultaat.


Voorbeeld van de functie Weekday

Dit voorbeeld maakt gebruik van de functie Weekday om de dag van de week voor een opgegeven datum te verkrijgen.

Dim MyDate, MyWeekDay

MyDate = #12 februari 1969#	' Een datum toewijzen.

MyWeekDay = Weekday(MyDate)	' MyWeekDay bevat 4 omdat

' MyDate een woensdag weergeeft.


Voorbeeld van de functie Year

Dit voorbeeld maakt gebruik van de functie Year om het jaar voor een opgegeven datum te verkrijgen. In de ontwikkelomgeving wordt de letterlijke datumwaarde met behulp van de lokale instellingen van uw programmacode in korte datumnotatie weergegeven.

Dim MyDate, MyYear

MyDate = #12 februari 1969#	' Een datum toewijzen.

MyYear = Year(MyDate)	' MyYear bevat 1969.


Date, functie

Geeft als resultaat een Variant (Date) met de huidige systeemdatum.

Syntaxis

Date

Notities

Gebruik de instructie Date om de systeemdatum in te stellen.

De werking van Date, en als de kalender Gregoriaans is, van Date$, wordt niet gewijzigd door de instelling van de eigenschap Calendar. Als de kalender Hijri is, geeft Date$ als resultaat een reeks van 10 tekens in de notatie mm-dd-jjjj, waarbij mm (01-12), dd (01-30) en jjjj (1400-1523) de Hijri-maand, de Hijri-dag en het Hijri–jaar zijn. Het equivalente Gregoriaanse bereik is 1 jan 1980 tot en met 31 dec 2099.


Date, instructie

Stelt de huidige systeemdatum in.

Syntaxis

Date = datum

Voor computers met Microsoft Windows 95 moet datum een datum zijn tussen 1 januari 1980 en 31 december 2099. Voor computers met Microsoft Windows NT moet datum een datum zijn tussen 1 januari 1980 en 31 december 2079. Voor de Macintosh moet datum een datum zijn tussen 1 januari 1904 en 5 februari 2040.


DateAdd, functie

Geeft als resultaat een Variant (Date) met een datum waaraan een opgegeven tijdsinterval is toegevoegd.

Syntaxis

DateAdd(interval, number, date)

De functie DateAdd heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
interval	Vereist. Een reeksexpressie die het tijdsinterval aangeeft dat u wilt toevoegen.
number	Vereist. Een numerieke  expressie die het aantal intervallen aangeeft dat u wilt toevoegen. De waarde kan positief zijn (voor toekomstige datums) of negatief (voor datums in het verleden).
date	Vereist. Een Variant (Date) of letterlijke datum die de datum aangeeft waar het interval aan wordt toegevoegd.
Instellingen

Het argument interval heeft de volgende instellingen:

Instelling	Beschrijving
yyyy	Jaar
q	Kwartaal
m	Maand
y	Dag van het jaar
d	Dag
w	Dag van de week
ww	Week
h	Uur
m	Minuut
s	Seconde
Notities

U kunt de functie DateAdd gebruiken om een bepaalde tijdsinterval bij een datum op te tellen of van een datum af te trekken. U kunt bijvoorbeeld DateAdd gebruiken om een datum te berekenen die 30 dagen vanaf vandaag of een tijd die 45 minuten vanaf dit moment ligt.

Als u dagen wilt toevoegen aan date kunt u Dag van het jaar ("y"), Dag ("d") of Dag van de week ("w") gebruiken.

De functie DateAdd geeft geen ongeldige datum als resultaat. In het volgende voorbeeld wordt er één maand toegevoegd aan 31 januari:

DateAdd("m", 1, "31 jan 95")

In dit geval geeft DateAdd 28 feb 95 als resultaat en niet 31 feb 95. Als date 31 jan 96 is, is het resultaat 29 feb 96 aangezien 1996 een schrikkeljaar is.

Als de berekende datum aan het jaar 100 zou voorafgaan (indien u meer jaren zou aftrekken dan er in date zijn), treedt er een fout op.

Als number geen waarde van het gegevenstype Long is, wordt dit afgerond naar het dichtstbijzijnde gehele getal voordat het wordt geëvalueerd.

Opmerking   De notatie van de waarde die als resultaat wordt gegeven voor DateAdd wordt bepaald door de instellingen in het Configuratiescherm, niet door de notatie die is opgegeven in het argument date.

Opmerking   Als de instelling van de eigenschap Calendar voor datum Gregoriaans is, moet een Gregoriaanse datum worden opgegeven. Als de kalender Hijri is, moet de opgegeven datum ook Hijri zijn. Als de maandwaarden namen zijn, moet de naam consistent zijn met de huidige instelling van de eigenschap Calendar. Geef numerieke maandwaarden op (korte datumnotatie) om de kans dat maandnamen strijdig zijn met de huidige instelling van de eigenschap Calendar tot een minimum te beperken.


DateDiff, functie

Geeft als resultaat een Variant (Long) waarmee het aantal tijdsintervallen tussen twee opgegeven datums wordt aangeduid.

Syntaxis

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

De functie DateDiff heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
interval	Vereist. Een reeksexpressie die het tijdsinterval aangeeft dat u gebruikt om het verschil tussen date1 en date2 te berekenen.
date1, date2	Vereist. Variant (Date). De twee datums die u in de berekening wilt gebruiken.
eerstedagvanweek	Optioneel. Een constante die de eerste dag van de week aangeeft. Als er niets wordt opgegeven, wordt zondag gebruikt.
eersteweekvanjaar	Optioneel. Een constante die de eerste week van het jaar aangeeft. Als er niets wordt opgegeven, wordt de week gebruikt waarin 1 januari valt.
Instellingen

Het argument interval heeft de volgende instellingen:

Instelling	Beschrijving
yyyy	Jaar
q	Kwartaal
m	Maand
y	Dag van het jaar
d	Dag
w	Dag van de week
ww	Week
h	Uur
m	Minuut
s	Seconde
Het argument firstdayofweek heeft de volgende instellingen:

Constante	Waarde	Beschrijving
vbUseSystem	0	Gebruikt de NLS API-instelling.
vbSunday	1	zondag (standaardinstelling)
vbMonday	2	maandag
vbTuesday	3	dinsdag
vbWednesday	4	woensdag
vbThursday	5	donderdag
vbFriday	6	vrijdag
vbSaturday	7	zaterdag
Constante	Waarde	Beschrijving
vbUseSystem	0	Gebruikt de NLS API-instelling.
vbFirstJan1	1	De week waarin 1 januari valt (standaardinstelling).
vbFirstFourDays	2	Begint met de eerste week waarvan ten minste vier dagen in het nieuwe jaar vallen.
vbFirstFullWeek	3	Begint met de eerste week waarvan alle dagen in het nieuwe jaar vallen.
Notities

U kunt de functie DateDiff gebruiken om vast te stellen hoeveel bepaalde tijdsintervallen tussen twee datums liggen. U kunt DateDiff bijvoorbeeld gebruiken om het aantal weken te berekenen tussen twee datums, of het aantal weken tussen vandaag en het einde van het jaar.

Als u het aantal dagen wilt berekenen tussen date1 en date2 kunt u ofwel Dag van het jaar ('y') gebruiken, ofwel Dag ('d'). Wanneer interval Dag van de week ('w') is, geeft DateDiff het aantal weken tussen de twee datums als resultaat. Als date1 op een maandag valt, telt DateDiff het aantal maandagen tot date2. De functie telt date2 mee, maar niet date1. Als interval echter Week ('ww') is, geeft de functie DateDiff het aantal kalenderweken tussen de twee datums als resultaat. Het aantal zondagen tussen date1 en date2 wordt geteld. Date2 wordt meegeteld als deze op een zondag valt, maar date1 wordt niet meegeteld, ook niet als deze op een zondag valt.

Als date1 naar een later tijdstip verwijst dan date2 geeft de functie DateDiff een negatief getal als resultaat.

Het argument firstdayofweek is van invloed op berekeningen die de intervalsymbolen 'w' en 'ww' gebruiken.

Als datum een letterlijke datum is, wordt het opgegeven jaar een permanent onderdeel van die datum. Indien datum echter is omsloten door dubbele aanhalingstekens (" ") en u het jaar weglaat, wordt het huidige jaar iedere keer dat de expressie datum wordt berekend, in uw code ingevoegd. Hiermee wordt het mogelijk code te schrijven die in verschillende jaren kan worden gebruikt.

Wanneer 31 december wordt vergeleken met 1 januari van het direct daaropvolgende jaar, geeft DateDiff voor Jaar ('yyyy') als resultaat 1, ook al is er slechts één dag verstreken.

Opmerking   Als de instelling van de eigenschap Calendar voor date1 en date2 Gregoriaans is, moet een Gregoriaanse datum worden opgegeven.  Als de kalender Hijri is, moet de opgegeven datum ook Hijri zijn.


DatePart, functie

Geeft als resultaat een Variant (Integer) met het opgegeven deel van een bepaalde datum.

Syntaxis

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

De functie DatePart heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
interval	Vereist. Een reeksexpressie die het tijdsinterval aangeeft dat u als resultaat wilt.
date	Vereist. Variant (Date)-waarde die u wilt evalueren.
eerstedagvanweek	Optioneel. Een constante die de eerste dag van de week aangeeft. Als er niets wordt opgegeven, wordt zondag gebruikt.
eersteweekvanjaar	Optioneel. Een constante die de eerste week van het jaar aangeeft. Als er niets wordt opgegeven, wordt de week gebruikt waarin 1 januari valt.
Instellingen

Het argument interval heeft de volgende instellingen:

Instelling	Beschrijving
yyyy	Jaar
q	Kwartaal
m	Maand
y	Dag van het jaar
d	Dag
w	Dag van de week
ww	Week
h	Uur
m	Minuut
s	Seconde
Het argument firstdayofweek heeft de volgende instellingen:

Constante	Waarde	Beschrijving
vbUseSystem	0	Gebruikt de NLS API-instelling.
vbSunday	1	zondag (standaardinstelling)
vbMonday	2	maandag
vbTuesday	3	dinsdag
vbWednesday	4	woensdag
vbThursday	5	donderdag
vbFriday	6	vrijdag
vbSaturday	7	zaterdag
Voor het argument eersteweekvanjaar kunt u de volgende instellingen opgeven:

Constante	Waarde	Beschrijving
vbUseSystem	0	Gebruikt de NLS API-instelling.
vbFirstJan1	1	De week waarin 1 januari valt (standaardinstelling).
vbFirstFourDays	2	Begint met de eerste week waarvan ten minste vier dagen in het nieuwe jaar vallen.
vbFirstFullWeek	3	Begint met de eerste week waarvan alle dagen in het nieuwe jaar vallen.
Notities

De functie DatePart kan worden gebruikt om een datum te evalueren en een bepaalde tijdsinterval als resultaat te geven. U kunt DatePart bijvoorbeeld gebruiken om de dag van de week of het huidige uur te berekenen.

Het argument firstdayofweek is van invloed op berekeningen die de intervalsymbolen 'w' en 'ww' gebruiken.

Als datum een letterlijke datum is, wordt het opgegeven jaar een permanent onderdeel van die datum. Indien datum echter is omsloten door dubbele aanhalingstekens (" ") en u het jaar weglaat, wordt het huidige jaar iedere keer dat de expressie datum wordt berekend, in uw code ingevoegd. Hiermee wordt het mogelijk code te schrijven die in verschillende jaren kan worden gebruikt.

Opmerking   Als de instelling van de eigenschap Calendar voor datum Gregoriaans is, moet een Gregoriaanse datum worden opgegeven. Als de kalender Hijri is, moet de opgegeven datum ook Hijri zijn.

Het datumonderdeel dat als resultaat wordt gegeven, is uitgedrukt in de tijdsperiode-eenheden van de huidige Arabische kalender.  Als de huidige kalender bijvoorbeeld Hijri is en als het datumonderdeel dat als resultaat moet worden gegeven het jaar is, is de jaarwaarde een Hijri-jaar.


DateSerial, functie

Geeft als resultaat een Variant (Date) voor een bepaald jaar, een bepaalde maand en een bepaalde dag.

Syntaxis

DateSerial(year, month, day)

De functie DateSerial heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
year	Vereist; Integer. Een getal tussen 100 en 9999 (inclusief) of een numerieke expressie.
month	Vereist; Integer. Een willekeurige numerieke expressie.
Day	Vereist; Integer. Een willekeurige numerieke expressie.
Notities

Als u een datum wilt opgeven, bijvoorbeeld 31 december 1991, moet het bereik van de getallen voor ieder argument DateSerial in het toegestane bereik van de eenheid vallen, dat wil zeggen 1 - 31 voor dagen en 1 - 12 voor maanden. U kunt echter ook relatieve datums voor ieder argument opgeven. U gebruikt dan een numerieke expressie die een bepaald aantal dagen, maanden of jaren voor of na een bepaalde datum weergeeft.

In het volgende voorbeeld worden numerieke expressies gebruikt in plaats van absolute datumwaarden. De functie DateSerial geeft hier als resultaat de dag voor de eerste dag (1 – 1), twee maanden voor augustus (8 - 2) en 10 jaar voor 1990 (1990 - 10). Met andere woorden: 31 mei 1980.

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

Onder Windows 98/Windows NT 5 worden jaartallen van twee cijfers voor het argument year geïnterpreteerd op basis van door de gebruiker gedefinieerde computerinstellingen. Standaard worden de waarden tussen 0 en 29 (inclusief) geïnterpreteerd als de jaren 2000–2029. De standaardwaarden tussen 30 en 99 worden geïnterpreteerd als de jaren 1930–1999. Gebruik voor alle andere argumenten year een jaartal van vier cijfers (bijvoorbeeld 1800).

Eerdere versies van Windows interpreteren jaartallen van twee cijfers op basis van de eerder beschreven standaardwaarden. Als u zeker wilt weten dat de functie de juiste waarde als resultaat geeft, gebruikt u een jaartal van vier cijfers.

Wanneer een argument buiten het toegestane bereik voor dat argument valt, wordt de volgende geschikte grotere eenheid gebruikt. Als u bijvoorbeeld 35 dagen opgeeft, wordt dit geëvalueerd als één maand en een bepaald aantal dagen, afhankelijk van het moment in het jaar waarin het wordt toegepast. Als een enkel argument buiten het bereik -32.768 t/m 32.767 valt, treedt een fout op. Als de datum die is opgegeven door de drie argumenten buiten het toegestane datumbereik valt, treedt een fout op.

Opmerking   Als de instelling van de eigenschap Calendar voor year, month en day Gregoriaans is, wordt verondersteld dat de opgegeven waarde ook Gregoriaans is.  Als de instelling van eigenschap Calendar Hijri is, wordt verondersteld dat de opgegeven waarde ook Hijri is.

Het datumonderdeel dat als resultaat wordt gegeven, is uitgedrukt in de tijdsperiode-eenheden van de huidige Visual Basic-kalender.  Als de huidige kalender bijvoorbeeld Hijri is en als het datumonderdeel dat als resultaat moet worden gegeven het jaar is, is de jaarwaarde een Hijri-jaar. Voor het argument year worden waarden tussen 0 en 99 (inclusief) geïnterpreteerd als de jaren 1400-1499. Voor alle andere waarden year gebruikt u een jaartal van vier cijfers (bijvoorbeeld 1520).


DateValue, functie

Geeft als resultaat een Variant (Date).

Syntaxis

DateValue(datum)

Het vereiste argument datum is gewoonlijk een reeksexpressie die een datum weergeeft tussen 1 januari 100 en 31 december 9999. Datum kan echter ook een expressie zijn die een datum, een tijd of zowel een datum als een tijd weergeeft in dat bereik.

Notities

Als datum een reeks is met uitsluitend getallen die door een geldig datumscheidingsteken zijn gescheiden, herkent DateValue de volgorde voor dagen, maanden en jaren volgens de korte datumnotatie die u voor uw systeem hebt ingesteld. DateValue herkent ook ondubbelzinnige datums die namen van maanden bevatten, zowel in lange of korte notatie. DateValue zal dus niet alleen 30-12-1991 en 30-12-91 herkennen, maar ook 30 december 1991 en 30 dec 1991.

Als het jaar uit de datum wordt weggelaten, gebruikt DateValue het huidige jaar van de systeemdatum van uw computer.

Als het argument datum ook tijdsgegevens bevat wordt door DateValue geen resultaat gegeven. Als datum echter ongeldige tijdsgegevens bevat (zoals 89:98), treedt een fout op.

Opmerking   Als de instelling van de eigenschap Calendar voor datum Gregoriaans is, moet een Gregoriaanse datum worden opgegeven. Als de kalender Hijri is, moet de opgegeven datum ook Hijri zijn. Als de opgegeven datum Hijri is, is het argument datum een String die een datum weergeeft van 1-1-100 (Gregoriaans: 2 aug 718) tot en met 4-3-9666 (Gregoriaans: 31 dec 9999).


Day, functie

Geeft als resultaat een Variant (Integer) waarmee een geheel getal tussen 1 en 31 (inclusief) wordt opgegeven dat de dag van de maand aangeeft.

Syntaxis

Day(datum)

Het vereiste argument datum is een willekeurige Variant, numerieke expressie, reeksexpressie of een combinatie daarvan, die een datum weergeeft. Als datum Null bevat, wordt Null als resultaat gegeven.

Opmerking   Als de instelling van de eigenschap Calendar Gregoriaans is, geeft de integer die als resultaat wordt gegeven de Gregoriaanse dag van de maand voor het argument datum weer. Als de kalender Hijri is, geeft de integer die als resultaat wordt gegeven de Hijri-dag van de maand voor het argument datum weer.


Hour, functie

Geeft als resultaat een Variant (Integer) waarmee een geheel getal tussen 0 en 23 (inclusief) wordt opgegeven dat het uur van de dag aangeeft.

Syntaxis

Hour(tijd)

Het vereiste argument tijd is een willekeurige Variant, numerieke expressie, reeksexpressie of een combinatie daarvan, die een tijd weergeeft. Als tijd Null bevat, wordt Null als resultaat gegeven.


Minute, functie

Geeft als resultaat een Variant (Integer) waarmee een geheel getal tussen 0 en 59 (inclusief) wordt opgegeven dat de minuut van het uur aangeeft.

Syntaxis

Minute(tijd)

Het vereiste argument tijd is een willekeurige Variant, numerieke expressie, reeksexpressie of een combinatie daarvan, die een tijd weergeeft. Als tijd Null bevat, wordt Null als resultaat gegeven.


Month, functie

Geeft als resultaat een Variant (Integer) waarmee een geheel getal tussen 1 en 12 (inclusief) wordt opgegeven dat de maand van het jaar aangeeft.

Syntaxis

Month(datum)

Het vereiste argument datum is een willekeurige Variant, numerieke expressie, reeksexpressie of een combinatie daarvan, die een datum weergeeft. Als datum Null bevat, wordt Null als resultaat gegeven.

Opmerking   Als de instelling van de eigenschap Calendar Gregoriaans is, geeft de integer die als resultaat wordt gegeven de Gregoriaanse dag van de week voor het argument datum weer. Als de kalender Hijri is, geeft de integer die als resultaat wordt gegeven de Hijri-dag van de week voor het argument datum weer. Voor Hijri-datums is het argument getal een willekeurige numerieke expressie die een datum en/of tijd kan weergeven van 1-1-100 (Gregoriaans: 2 aug 718) tot en met 4-3-9666 (Gregoriaans: 31 dec 9999).


Now, functie

Geeft als resultaat een Variant (Date) waarmee de huidige datum en tijd wordt opgegeven volgens de systeemdatum en -tijd van uw computer.

Syntaxis

Now


Second, functie

Geeft als resultaat een Variant (Integer) waarmee een geheel getal tussen 0 en 59 (inclusief) wordt opgegeven dat de seconde van de minuut aangeeft.

Syntaxis

Second(tijd)

Het vereiste argument tijd is een willekeurige Variant, numerieke expressie, reeksexpressie of een combinatie daarvan, die een tijd weergeeft. Als tijd Null bevat, wordt Null als resultaat gegeven.


Time, functie

Geeft als resultaat een Variant (Date) waarmee de huidige systeemtijd wordt aangegeven.

Syntaxis

Time

Notities

Als u de systeemtijd wilt instellen, gebruikt u de instructie Time.


Time, instructie

Stelt de systeemtijd in.

Syntaxis

Time = tijd

Het vereiste argument tijd is een willekeurige numerieke expressie, reeksexpressie of een combinatie daarvan, die een tijd weergeeft.

Notities

Als tijd een reeks is, probeert Time deze te converteren naar een tijd door de tijdscheidingstekens die u hebt ingesteld voor uw systeem te gebruiken. Als de reeks niet kan worden geconverteerd naar een geldige tijd, treedt een fout op.


Timer, functie

Geeft als resultaat een Single waarmee het aantal seconden wordt weergegeven dat is verstreken sinds middernacht.

Syntaxis

Timer

Notities

In Microsoft Windows geeft de functie Timer fracties van een seconde als resultaat. Op de Macintosh geeft de functie timer een seconde als kleinste tijdseenheid weer.


TimeSerial, functie

Geeft als resultaat een Variant (Date) die de tijd bevat voor een bepaald uur, een bepaalde minuut en seconde.

Syntaxis

TimeSerial(hour, minute, second)

De functie TimeSerial heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
hour	Vereist; Variant (Integer). Een getal tussen 0 (00:00 uur) en 23 (23:00 uur) (inclusief) of een numerieke expressie.
minute	Vereist; Variant (Integer). Een willekeurige numerieke expressie.
second	Vereist; Variant (Integer). Een willekeurige numerieke expressie.
Notities

Als u een tijd wilt opgeven als 11:59:59, dient het bereik van de getallen voor ieder argument TimeSerial binnen het normale bereik van de eenheid te liggen; dat wil zeggen 0 - 23 voor uren en 0 - 59 voor minuten en seconden. U kunt echter ook relatieve tijden voor ieder argument opgeven. U doet dit door een willekeurige numerieke expressie te gebruiken die een bepaald aantal uren, minuten of seconden voor of na een bepaalde tijd weergeeft. In het volgende voorbeeld worden expressies gebruikt in plaats van absolute tijdwaarden. De functie TimeSerial geeft als resultaat een tijd die vijftien minuten (-15) voor zes, vóór 12 uur 's middags (12 - 6) ligt, oftewel 5:45:00.

TimeSerial(12 - 6, -15, 0)

Wanneer een argument buiten het toegestane bereik voor dat argument valt, wordt de volgende geschikte grotere eenheid gebruikt. Als u bijvoorbeeld 75 minuten opgeeft, wordt dit geëvalueerd als één uur en 15 minuten. Als een enkel argument buiten het bereik -32.768 t/m 32.767 valt, treedt een fout op. Als de tijd die is opgegeven door de drie argumenten de datum buiten het toegestane datumbereik doet vallen, treedt een fout op.


TimeValue, functie

Geeft als resultaat een Variant (Date) die de tijd bevat.

Syntaxis

TimeValue(tijd)

Het vereiste argument tijd is gewoonlijk een reeksexpressie die een tijd weergeeft tussen 0:00:00 en 23:59:59 (inclusief). Tijd kan echter ook een willekeurige expressie zijn die een tijd in dat bereik weergeeft. Als tijd Null bevat, wordt Null als resultaat gegeven.

Notities

U kunt geldige tijden invoeren door een 12- of een 24-uurs klok te hanteren. Zowel "2:24PM" als "14:24" zijn geldige tijdargumenten.

Als het argument tijd ook datumgegevens bevat, wordt dit niet door TimeValue als resultaat gegeven. Als tijd echter ongeldige datumgegevens bevat, treedt een fout op.


Weekday, functie

Geeft als resultaat een Variant (Integer) die een geheel getal bevat waarmee de dag van de week wordt aangegeven.

Syntaxis

Weekday(datum, [firstdayofweek])

De functie Weekday heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
date	Vereist. Een Variant, numerieke expressie, reeksexpressie of een combinatie daarvan, die een datum weergeeft. Als datum Null bevat, wordt Null als resultaat gegeven.
eerstedagvanweek	Optioneel. Een constante die de eerste dag van de week aangeeft. Als er niets wordt opgegeven, wordt vbSunday gebruikt.
Instellingen

Het argument firstdayofweek heeft de volgende instellingen:

Constante	Waarde	Beschrijving
vbUseSystem	0	Gebruikt de NLS API-instelling.
vbSunday	1	zondag (standaardinstelling)
vbMonday	2	maandag
vbTuesday	3	dinsdag
vbWednesday	4	woensdag
vbThursday	5	donderdag
vbFriday	6	vrijdag
vbSaturday	7	zaterdag
Resultaatwaarden

De functie Weekday kan de volgende waarden als resultaat geven:

Constante	Waarde	Beschrijving
vbSunday	1	zondag
vbMonday	2	maandag
vbTuesday	3	dinsdag
vbWednesday	4	woensdag
vbThursday	5	donderdag
vbFriday	6	vrijdag
vbSaturday	7	zaterdag
Notities

Als de instelling van de eigenschap Calendar Gregoriaans is, geeft de integer die als resultaat wordt gegeven de Gregoriaanse dag van de week voor het argument datum weer. Als de kalender Hijri is, geeft de integer die als resultaat wordt gegeven de Hijri-dag van de week voor het argument datum weer. Voor Hijri-datums is het argument getal een willekeurige numerieke expressie die een datum en/of tijd kan weergeven van 1-1-100 (Gregoriaans: 2 aug 718) tot en met 4-3-9666 (Gregoriaans: 31 dec 9999).


Year, functie

Geeft als resultaat een Variant (Integer) die een geheel getal bevat waarmee het jaar wordt aangegeven.

Syntaxis

Year(datum)

Het vereiste argument datum is een willekeurige Variant, numerieke expressie, reeksexpressie of een combinatie daarvan, die een datum weergeeft. Als datum Null bevat, wordt Null als resultaat gegeven.

Opmerking   Als de instelling van de eigenschap Calendar Gregoriaans is, geeft de integer die als resultaat wordt gegeven het Gregoriaanse jaar voor het argument datum weer. Als de kalender Hijri is, geeft de integer die als resultaat wordt gegeven het Hijri-jaar voor het argument datum weer. Voor Hijri-datums is het argument getal een willekeurige numerieke expressie die een datum en/of tijd kan weergeven van 1-1-100 (Gregoriaans: 2 aug 718) tot en met 4-3-9666 (Gregoriaans: 31 dec 9999).


Array, functie

Geeft als resultaat een Variant met een matrix.

Syntaxis

Array(argumenten)

Het vereiste argument argumenten bestaat uit een lijst met waarden die met een komma zijn gescheiden. Deze waarden worden toegewezen aan de onderdelen van de matrix die in de Variant is opgenomen. Als u geen argumenten opgeeft, wordt een matrix met een lengte nul gemaakt.

Notities

De notatie die u gebruikt om te verwijzen naar een onderdeel van een matrix, bestaat uit de naam van de variabele gevolgd door het indexnummer tussen haakjes van het gewenste onderdeel. In het volgende voorbeeld stelt de eerste instructie een variabele A in als Variant. De tweede instructie wijst een matrix toe aan de variabele A. De laatste instructie geeft aan hoe de waarde die in het tweede matrixonderdeel is opgenomen, aan een andere variabele wordt toegewezen.

Dim A As Variant

A = Array(10,20,30)

B = A(2)

De benedengrens van een matrix die met de functie Array wordt gemaakt, wordt bepaald door de benedengrens die is opgegeven bij de instructie Option Base, tenzij Array is gekwalificeerd met de naam van de typebibliotheek (bijvoorbeeld VBA.Array). Als Array is gekwalificeerd met de naam van de typebibliotheek, wordt deze functie niet beïnvloed door Option Base.

Opmerking   Een Variant die niet als een matrix wordt gedeclareerd, kan wel een matrix bevatten. Een variabele van het type Variant kan elk type matrix bevatten, behalve tekenreeksen met een vaste lengte en door de gebruiker gedefinieerde typen. Hoewel een Variant met een matrix conceptueel verschilt van een matrix waarvan de elementen van het type Variant zijn, wordt op dezelfde manier toegang verschaft tot de matrixelementen.


CallByName, functie

Voert een methode van een object uit, stelt een eigenschap van een object in of geeft die eigenschap als resultaat.

Syntaxis

CallByName(object, procnaam, calltype,[args()])

De syntaxis van de functie CallByName kent de volgende benoemde argumenten:

Onderdeel	Beschrijving
Object	Vereist; Variant (Object). De naam van het object waarop de functie wordt uitgevoerd.
Procnaam	Vereist; Variant (String). Een tekenreeksexpressie met de naam van een eigenschap of methode van het object.
calltype	Vereist; Constant. Een constante van het type vbCallType dat het type procedure weergeeft dat wordt opgeroepen.
args()	Optioneel: Variant (Array).
Notities

De functie CallByName wordt gebruikt om een eigenschap op te halen of in te stellen of om tijdens het uitvoeren een methode op te roepen met een tekenreeksnaam.

In het volgende voorbeeld wordt CallByName in de eerste regel gebruikt om de eigenschap MousePointer van een tekstvak in te stellen. In de tweede regel wordt de waarde van de eigenschap MousePointer opgehaald en in de derde regel wordt de methode Move opgeroepen om het tekstvak te verplaatsen:

CallByName Text1, "MousePointer", vbLet, vbCrosshair

Result = CallByName (Text1, "MousePointer", vbGet)

CallByName Text1, "Move", vbMethod, 100, 100


Const, instructie

Declareert constanten voor gebruik in plaats van letterlijke tekenreeksen.

Syntaxis

[Public | Private] Const constnaam [As type] = expressie

De syntaxis van de instructie Const bevat de volgende onderdelen:

Onderdeel	Beschrijving
Public	Optioneel. Een sleutelwoord dat wordt gebruikt op moduleniveau om constanten te declareren die beschikbaar zijn voor alle procedures in alle modules. Dit onderdeel is niet toegestaan in procedures.
Private	Optioneel. Een sleutelwoord dat wordt gebruikt op moduleniveau om constanten te declareren die alleen beschikbaar zijn in de module waarin de declaratie is ingesteld. Dit onderdeel is niet toegestaan in procedures.
constname	Vereist. De naam van de constante. Voor deze naam gelden de standaardconventies voor naamgeving van variabelen.
type	Optioneel. Gegevenstype van de constante. Toegestaan zijn de volgende typen: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (momenteel niet ondersteund), Date, String of Variant. Gebruik een aparte component As type voor elke constante die u declareert.
expressie	Vereist. Een letterlijke tekenreeks, een andere constante of een willekeurige combinatie van wiskundige of logische operatoren, met uitzondering van de operator Is.
Notities

Een constante krijgt standaard de waarde Private toegewezen. Binnen een procedure hebben constanten altijd de waarde Private. U kunt dit niet wijzigen. In standaardmodules kunt u de standaardgebondenheid van moduleniveaus wijzigen met het sleutelwoord Public. In klassenmodules hebben constanten echter altijd de waarde Private. U kunt deze niet openbaar maken met het sleutelwoord Public.

U kunt een aantal declaraties van constanten op dezelfde regel plaatsen wanneer u deze met een komma van elkaar scheidt. Als u declaraties van constanten op deze manier combineert, zijn de sleutelwoorden Public of Private van toepassing op alle declaraties.

U kunt in expressies die zijn toegewezen aan constanten, geen gebruik maken van variabelen, door de gebruiker gedefinieerde functies of intrinsieke Visual Basic-functies (zoals Chr).

Opmerking   Met constanten kunt u uw programma's duidelijker maken en eenvoudiger wijzigen. U kunt constanten, in tegenstelling tot variabelen, niet per ongeluk wijzigen nadat het programma is gestart.

Als u het type constante niet expliciet opgeeft (met de instructie As type), wordt het meest geschikte gegevenstype aan de gegeven expressie toegewezen.

Constanten die u declareert in een procedure Sub, Function of Property, zijn lokale constanten van die procedure. Een constante die u buiten een procedure declareert, is gedefinieerd voor de gehele module waarin u deze hebt gedeclareerd. U kunt constanten overal gebruiken waar u ook een expressie kunt gebruiken.


CreateObject, functie

Maakt en geeft als resultaat een verwijzing naar een ActiveX-object.

Syntaxis

CreateObject(klasse,[servernaam])

De functie CreateObject heeft de volgende argumenten:

Onderdeel	Beschrijving
klasse	Vereist; Variant (String). De toepassingsnaam en de klasse van het object dat u wilt maken.
servernaam	Optioneel; Variant (String). De naam van de netwerkserver waar het object wordt gemaakt. Als servernaam een lege reeks is (""), wordt het lokale systeem gebruikt.
Het argument klasse gebruikt de syntaxis toepnaam.objecttype en bevat de volgende onderdelen:

Onderdeel	Beschrijving
toepnaam	Vereist; Variant (String). De naam van de toepassing die het object beschikbaar stelt.
objecttype	Vereist; Variant (String). Het type of de klasse van het object dat u wilt maken.
Notities

Elke toepassing die automatisering ondersteunt, levert ten minste één type object. Een tekstverwerkingsprogramma kan bijvoorbeeld een object Application, een object Document en een object Toolbar leveren.

Als u een ActiveX-object wilt maken, wijst u het object dat als resultaat voor CreateObject wordt gegeven, toe aan een objectvariabele:

‘ Declare an object variable to hold the object

‘ reference. Dim as Object causes late binding.

Dim ExcelSheet As Object

Set ExcelSheet = CreateObject("Excel.Sheet")

Met deze programmacode wordt de toepassing gestart die het object maakt, in dit geval een Microsoft Excel-werkblad. Zodra een object is gemaakt, geeft u het een verwijzing in de programmacode met de objectvariabele die u hebt opgegeven. In het volgende voorbeeld verschaft u zich toegang tot de eigenschappen en methoden van het nieuwe object met behulp van de objectvariabele ExcelSheet en overige Microsoft Excel-objecten, inclusief het object Application en de collectie Cells.

' Make Excel visible through the Application object.

ExcelSheet.Application.Visible = True

' Place some text in the first cell of the sheet.

ExcelSheet.Application.Cells(1, 1).Value = "Dit is kolom A, rij 1"

' Save the sheet to C:\test.xls directory.

ExcelSheet.SaveAs "C:\TEST.XLS"

' Close Excel with the Quit method on the Application object.

ExcelSheet.Application.Quit

' Release the object variable.

Set ExcelSheet = Nothing

Als u een objectvariabele declareert met de component As Object, maakt u een variabele die een verwijzing naar een willekeurig type object kan bevatten. Toegang tot het object via de variabele is echter met behulp van een late koppeling; dat wil zeggen dat de koppeling optreedt als uw programma wordt uitgevoerd. Als u een objectvariabele wilt maken die resulteert in een vroege koppeling, dat wil zeggen een koppeling die optreedt als het programma wordt gecompileerd, moet u de objectvariabele declareren met een bepaald klassen-id. U kunt bijvoorbeeld de volgende Microsoft Excel-verwijzingen declareren en maken:

Dim xlApp As Excel.Application

Dim xlBook As Excel.Workbook

Dim xlSheet As Excel.WorkSheet

Set xlApp = CreateObject("Excel.Application")

Set xlBook = xlApp.Workbooks.Add

Set xlSheet = xlBook.Worksheets(1)

Verwijzen via een variabele met een vroege koppeling geeft betere prestaties, maar kan alleen een verwijzing bevatten naar de klasse die is opgegeven in de declaratie.

U kunt een object dat als resultaat is gegeven door de functie CreateObject, ook doorgeven aan een functie die een object als argument verwacht. De volgende programmacode maakt bijvoorbeeld een verwijzing naar een object Excel.Application en geeft deze door:

Call MijnSub (CreateObject("Excel.Application"))

U kunt een object op een computer in een extern netwerk maken door de naam van de computer door te geven aan het argument servernaam van CreateObject. Die naam is hetzelfde als het gedeelte Machine Name van een sharenaam: voor een share met de naam "\\MijnServer\Openbaar," is servernaam "MijnServer."

Opmerking   Raadpleeg de COM-documentatie (zie Microsoft Developer Network) voor aanvullende informatie over het zichtbaar maken van een toepassing op een computer in een extern netwerk. Het is mogelijk dat u een Register-sleutel voor de toepassing moet toevoegen.

De volgende programmacode geeft als resultaat het versienummer van een exemplaar van Excel dat op een externe computer met de naam MijnServer wordt uitgevoerd:

Dim xlApp As Object

Set xlApp = CreateObject("Excel.Application", "MijnServer")

Debug.Print xlApp.Version

Als de externe server niet bestaat of niet beschikbaar is, treedt er een runtimefout op.

Opmerking   Gebruik CreateObject als het object niet voorkomt. Als er reeds een object wordt uitgevoerd, wordt een nieuw object gestart en een object van het opgegeven type gemaakt. Gebruik de functie GetObject om de toepassing te starten en het bestand met het object te laden als u het huidige object wilt gebruiken.

Als een object is geregistreerd als een eenmalig object, kan het object slecht één keer voorkomen, ongeacht hoe vaak CreateObject wordt uitgevoerd.


Declare, instructie

Gebruik deze instructie op moduleniveau voor het declareren van verwijzingen naar externe procedures in een DLL (Dynamic-Link Library).

Syntaxis 1

[Public | Private] Declare Sub naam Lib "bibliotheek" [Alias "aliasnaam"] [([argumenten])]

Syntaxis 2

[Public | Private] Declare Function naam Lib "bibliotheek" [Alias "aliasnaam"] [([argumenten])] [As type]

De syntaxis van de instructie Declare bevat de volgende onderdelen:

Onderdeel	Beschrijving
Public	Optioneel. Hiermee declareert u procedures die beschikbaar zijn voor alle andere procedures in alle modules.
Private	Optioneel. Hiermee declareert u procedures die alleen beschikbaar zijn in de module waarin de instructie werd ingesteld.
Sub	Optioneel (Sub of Function moet verschijnen). Geeft aan dat de procedure geen resultaatwaarde geeft.
Functie	Optioneel (Sub of Function moet verschijnen). Geeft aan dat de procedure een resultaatwaarde geeft die u in een expressie kunt gebruiken.
naam	Vereist. Een willekeurige geldige naam van een procedure. Let erop dat DLL's met de juiste hoofdletters/kleine letters worden ingevoerd.
Lib	Vereist. Geeft aan dat een DLL of programmacodebron de procedure bevat die u declareert. De component Lib is vereist voor alle declaraties.
biblnaam	Vereist. De naam van de DLL of de programmacodebron die de gedeclareerde procedure bevat.
Alias	Optioneel. Geeft aan dat de opgeroepen procedure een andere naam heeft in de DLL. Dit is handig als de naam van de externe procedure identiek is aan een sleutelwoord. U kunt Alias ook gebruiken als een DLL-procedure dezelfde naam heeft als een openbare variabele, een constante of een willekeurig andere procedure in hetzelfde bereik. Het onderdeel Alias is ook handig als bepaalde tekens in de DLL-procedure niet zijn toegestaan in namen.
aliasnaam	Optioneel. Naam van de procedure in de DLL of de programmacodebron. Als het eerste teken geen hekje (#) is, is aliasnaam de naam van de ingang van de procedure in de DLL. Als het hekje (#) wel het eerste teken is, moeten alle tekens die volgen, het rangtelnummer van de ingang van de procedure aangeven.
argumenten	Optioneel. Lijst van variabelen die argumenten aangeven die aan de procedure worden doorgegeven wanneer deze wordt opgeroepen.
type	Optioneel. Het gegevenstype van de waarde die als resultaat wordt gegeven door een procedure Function. De volgende typen zijn geldig: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (momenteel niet ondersteund), Date, String (uitsluitend met variabele lengte) of Variant, een door de gebruiker gedefinieerd type of een objecttype.
Het argument argumenten bevat de volgende syntaxis en onderdelen:

[Optional] [ByVal | ByRef] [ParamArray] varnaam[( )] [As type]

Onderdeel	Beschrijving
Optional	Optioneel. Geeft aan dat een argument niet nodig is. Als u dit sleutelwoord gebruikt, moeten alle volgende argumenten in argumenten ook optioneel zijn en worden gedeclareerd met het sleutelwoord Optional. U kunt Optional niet gebruiken voor een argument als u gebruik maakt van het argument ParamArray.
ByVal	Optioneel. Geeft aan dat het argument via een waarde wordt doorgegeven.
ByRef	Geeft aan dat het argument via een verwijzing wordt doorgegeven. De standaardinstelling in Visual Basic is ByRef.
ParamArray	Optioneel. Wordt alleen gebruikt als laatste argument in argumenten om aan te geven dat het laatste argument een Optional matrix is met onderdelen van het type Variant. Met het sleutelwoord ParamArray kunt u een willekeurig aantal argumenten opnemen. U mag ParamArray niet gebruiken met de sleutelwoorden ByVal, ByRef of Optional.
Varnaam	Vereist. De naam van de variabele die het argument aangeeft dat aan de procedure wordt doorgegeven. Hiervoor gelden de standaardregels voor naamgeving van een variabele.
( )	Vereist voor matrixvariabelen. Geeft aan dat varnaam een matrix is.
type	Optioneel. Het gegevenstype van het argument dat wordt doorgegeven aan de procedure. De volgende typen zijn geldig: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (momenteel niet ondersteund), Date, String (uitsluitend met variabele lengte), Object, Variant, een door de gebruiker gedefinieerd type of een objecttype.
Notities

Voor een procedure Function bepaalt het gegevenstype van de procedure het gegevenstype van het resultaat. Plaats een component As achter argumenten om het resultaattype voor de functie op te geven. In argumenten kunt u met een component As het gegevenstype opgegeven van elk van de argumenten die aan de procedure worden doorgegeven. Naast het opgeven van de standaardgegevenstypen kunt u As Any opgeven in argumenten om controle van gegevenstypen te voorkomen en ervoor te zorgen dat elk gegevenstype aan de procedure kan worden doorgegeven.

Lege haakjes geven aan dat de procedure Sub of Function geen argumenten bevat en dat Visual Basic ervoor zorgt dat geen argumenten worden doorgegeven. In het volgende voorbeeld zijn voor Eerste geen argumenten ingesteld. Als u argumenten gebruikt om Eerste aan te roepen, treedt er een fout op:

Declare Sub Eerste Lib "MijnBieb" ()

Als u een argumentenlijst opneemt, wordt het aantal en type argumenten telkens gecontroleerd wanneer u de procedure start. In het volgende voorbeeld is voor Eerste één argument Long opgegeven:

Declare Sub Eerste Lib "MijnBieb" (X As Long)

Opmerking   Tekenreeksen met vaste lengte zijn niet toegestaan in de argumentenlijst van de instructie Declare omdat u alleen tekenreeksen met variabele lengte aan procedures kunt doorgeven. U kunt tekenreeksen met vaste lengte wel gebruiken als procedureargumenten, maar deze worden omgezet in tekenreeksen met variabele lengte voordat ze worden doorgegeven.

Opmerking   De constante vbNullString wordt gebruikt bij het oproepen van externe procedures die een tekenreeks met een nulwaarde vereisen. Dit is niet hetzelfde als een tekenreeks met een lengte nul ("").


Deftype, instructies

Gebruik deze instructie op moduleniveau om het standaardgegevenstype in te stellen voor variabelen, argumenten die zijn doorgegeven aan procedures, en het resultaattype voor de procedures Function en Property Get waarvan de namen beginnen met de opgegeven tekens.

Syntaxis

DefBool letterbereik[, letterbereik] . . .

DefByte letterbereik[, letterbereik] . . .

DefInt letterbereik[, letterbereik] . . .

DefLng letterbereik[, letterbereik] . . .

DefCur letterbereik[, letterbereik] . . .

DefSng letterbereik[, letterbereik] . . .

DefDbl letterbereik[, letterbereik] . . .

DefDec letterbereik[, letterbereik] . . .

DefDate letterbereik[, letterbereik] . . .

DefStr letterbereik[, letterbereik] . . .

DefObj letterbereik[, letterbereik] . . .

DefVar letterbereik[, letterbereik] . . .

Het vereiste argument letterbereik bevat de volgende syntaxis:

letter1[-letter2]

De argumenten letter1 en letter2 bepalen het naambereik waarvoor u een standaardgegevenstype kunt instellen. Elk argument geeft de eerste letter van een variabele, argument, procedure Function of naam van de procedure Property Get weer. Dit kan een willekeurige letter van het alfabet zijn. Voor letterbereik wordt geen onderscheid gemaakt tussen hoofdletters en kleine letters.

Notities

De naam van de instructie bepaalt het gegevenstype:

Instructie	Gegevenstype
DefBool	Boolean
DefByte	Byte
DefInt	Integer
DefLng	Long
DefCur	Currency
DefSng	Single
DefDbl	Double
DefDec	Decimal (momenteel niet ondersteund)
DefDate	Date
DefStr	String
DefObj	Object
DefVar	Variant
In het volgende programmafragment is Bericht bijvoorbeeld een tekenreeksvariabele:

DefStr A-Q

. . .

Bericht = "Onvoldoende stackruimte."

De instructie Deftype is alleen van invloed op de module waarin deze wordt gebruikt. De instructie DefInt in een bepaalde module is bijvoorbeeld alleen van invloed op het standaardgegevenstype van variabelen, argumenten die zijn doorgegeven aan procedures, en procedures Function en Property Get die zijn gedeclareerd in die module. Het standaardgegevenstype van variabelen, argumenten en de resultaatwaarden in andere modules wordt niet beïnvloed. Als u het standaardgegevenstype niet expliciet declareert met een instructie Deftype, is het standaardgegevenstype het gegevenstype Variant voor alle variabelen, alle argumenten en alle procedures Function en Property Get.

Als u een letterbereik opgeeft, wordt gewoonlijk het gegevenstype voor variabelen gedefinieerd die beginnen met letters in het eerste gedeelte van de 128 tekens van de tekenset. Als u echter het letterbereik A–Z opgeeft, stelt u de standaard in op het opgegeven gegevenstype voor alle variabelen, inclusief de variabelen die beginnen met internationale tekens uit het uitgebreide gedeelte van de tekenset (128–255).

Nadat u het bereik A–Z hebt opgegeven, kunt u geen subbereiken voor variabelen instellen met een instructie Deftype. Zodra een bereik is opgegeven, treedt een fout op als u een eerder gedefinieerde letter in een andere instructie Deftype opneemt. U kunt echter het gegevenstype van een willekeurige variabele, al dan niet gedefinieerd, opgeven met de instructie Dim en een component As type. U gebruikt bijvoorbeeld de volgende programmacode op moduleniveau als u een variabele als Double wilt definiëren, zelfs als deze standaard het gegevenstype Integer heeft:

DefInt A-Z

Dim BtwTarief As Double

Instructies Deftype hebben geen invloed op onderdelen van een door de gebruiker gedefinieerd type omdat u deze expliciet moet declareren.


Dim, instructie

Declareert variabelen en wijst geheugenruimte toe.

Syntaxis

Dim [WithEvents] varnaam[([subscripts])] [As [New] type] [, [WithEvents] varnaam[([subscripts])] [As [New] type]] . . .

De syntaxis van de instructie Dim bevat de volgende onderdelen:

Onderdeel	Beschrijving
WithEvents	Optioneel. Een sleutelwoord dat opgeeft dat varnaam een objectvariabele is waarmee u reageert op gebeurtenissen die zijn gestart door een ActiveX-object. WithEvents is alleen geldig in klassenmodules. U kunt met WithEvents zoveel individuele variabelen declareren als u wilt, maar u kunt met WithEvents geen matrices maken. U kunt New niet gebruiken met WithEvents.
Varnaam	Vereist. De naam van de variabele. Voor deze naam gelden de standaardregels voor naamgeving van een variabele.
subscripts	Optioneel. Dimensies van een matrixvariabele. U kunt maximaal 60 meervoudige dimensies declareren. Voor het argument subscripts geldt de volgende syntaxis: [laagste To] hoogste [, [laagste To] hoogste] . . . Als u de benedengrens van een matrix niet expliciet opgeeft met laagste, wordt deze bepaald door de instructie Option Base. De benedengrens is nul als u de instructie Option Base niet hebt opgegeven.
New	Optioneel. Een sleutelwoord waarmee u impliciet een object kunt maken. Als u New gebruikt bij het declareren van een objectvariabele, wordt een nieuw object gemaakt tijdens de eerste verwijzing, zodat u niet de instructie Set hoeft te gebruiken om een objectverwijzing toe te wijzen. U kunt met het sleutelwoord New geen variabelen van een intrinsiek gegevenstype declareren, geen afhankelijke objecten declareren en u kunt New niet gebruiken met WithEvents.
type	Optioneel. Het gegevenstype van de variabele. Toegestane typen zijn: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (momenteel niet ondersteund), Date, String (voor tekenreeksen met variabele lengte), String * lengte (voor tekenreeksen met vaste lengte), Object, Variant, een door de gebruiker gedefinieerd type of een objecttype. Gebruik een aparte component As type voor elke variabele die u declareert.
Notities

De variabelen die u op moduleniveau met Dim declareert, zijn beschikbaar voor alle procedures in de module. Op procedureniveau zijn de variabelen alleen beschikbaar binnen de procedure.

Gebruik de instructie Dim op module- of procedureniveau om het gegevenstype van een variabele te declareren. De volgende instructie declareert de variabele bijvoorbeeld als Integer.

Dim NumberOfEmployees As Integer

U kunt de instructie Dim ook gebruiken om het objecttype van een variabele te declareren. De volgende instructie declareert een variabele voor een nieuw werkblad.

Dim X As New Worksheet

Als het sleutelwoord New niet wordt gebruikt bij het declareren van een objectvariabele, moet de variabele die verwijst naar het object, worden toegewezen aan een bestaand object met behulp van de instructie Set voordat deze kan worden gebruikt. Totdat de gedeclareerde objectvariabele is toegewezen aan een object, heeft deze de speciale waarde Nothing, waarmee wordt aangegeven dat de variabele niet verwijst naar een bepaald object.

U kunt de instructie Dim ook gebruiken met lege haakjes om een dynamische matrix te declareren. Als u dit hebt gedaan, gebruikt u de instructie ReDim in een procedure om het aantal dimensies en onderdelen van de matrix te definiëren. Als u de grootte van een matrixvariabele expliciet hebt opgegeven met de instructie Private, Public of Dim, treedt een fout op als u de dimensie opnieuw declareert.

Als u geen gegevens- of objecttype opgeeft en er geen instructie Deftype in de module is opgenomen, is de variabele standaard van het type Variant.

Variabelen worden als volgt geïnitialiseerd: een numerieke variabele wordt geïnitialiseerd op 0, een tekenreeks met variabele lengte wordt geïnitialiseerd op een tekenreeks met een lengte nul ("") en een tekenreeks met vaste lengte wordt opgevuld met nullen. Een variabele Variant wordt geïnitialiseerd op Empty. Elk onderdeel van een door de gebruiker gedefinieerde variabele wordt geïnitialiseerd alsof het een afzonderlijke variabele betreft.

Opmerking   Plaats de instructie Dim aan het begin van een procedure. In de praktijk is gebleken dat dit de meest logische positie is.


Enum, instructie

Declareert een type voor een nummering.

Syntaxis

[Public | Private] Enum naam

lidnaam [= constantexpression]

lidnaam [= constantexpression]

. . .

End Enum

De instructie Enum heeft de volgende argumenten:

Onderdeel	Beschrijving
Public	Optioneel. Geeft op dat het type Enum zichtbaar is in het gehele project. Standaard zijn Enum-typen Public.
Private	Optioneel. Geeft op dat het type Enum alleen zichtbaar is in de module waarin het verschijnt.
naam	Vereist. De naam van het type Enum. De naam moet een geldige Visual Basic-aanduiding zijn en wordt als het type opgegeven tijdens het declareren van variabelen of parameters van het type Enum.
lidnaam	Vereist. Een geldige Visual Basic-aanduiding die de naam opgeeft waaronder een element bekend is dat deel uitmaakt van het type Enum.
constantexpression	Optioneel. Waarde van het element (wordt een Long). Als geen constantexpression is opgegeven, is de toegewezen waarde nul (als het de eerste lidnaam is) of 1 groter dan de waarde van de lidnaam die er direct aan voorafgaat.
Notities

Nummeringsvariabelen zijn variabelen die met een type Enum zijn gedeclareerd. Zowel variabelen als parameters kunnen met een type Enum worden gedeclareerd. De elementen van het type Enum worden geïnitialiseerd naar constante waarden binnen de instructie Enum. De toegewezen waarden kunnen niet worden gewijzigd tijdens het uitvoeren en kunnen zowel positieve als negatieve getallen bevatten. Bijvoorbeeld:

Enum SecurityLevel

IllegalEntry = -1

SecurityLevel1 = 0

SecurityLevel2 = 1

End Enum

Een instructie Enum kan alleen op moduleniveau verschijnen. Als het type Enum eenmaal is gedefinieerd, kan het worden gebruikt voor het declareren van variabelen, parameters of procedures die het bijbehorende type als resultaat geven. U kunt de naam van een type Enum niet kwalificeren met een modulenaam. Public Enum-typen in een klassenmodule zijn geen lid van de klasse, maar worden wel weggeschreven naar de typebibliotheek. Enum-typen die in standaardmodules zijn gedefinieerd, worden niet weggeschreven naar typebibliotheken. Public Enum-typen met dezelfde naam kunnen niet zowel in standaardmodules als in klassenmodules zijn gedefinieerd, omdat deze dezelfde naamruimte delen. Als twee Enum-typen in verschillende typebibliotheken dezelfde naam maar verschillende elementen hebben, is een verwijzing naar een variabele van het type afhankelijk van het feit welke typebibliotheek een hogere prioriteit in References heeft.

U kunt een type Enum niet als doel in een blok With gebruiken.


Erase, instructie

Initialiseert de onderdelen van matrices met vaste lengte opnieuw en heft de toewijzing van geheugenruimte van dynamische matrices op.

Syntaxis

Erase matrices

Het argument matrices bevat een of meer door komma's gescheiden variabelen van een matrix, die u wilt verwijderen.

Notities

Controleer of de matrix een matrix met vaste lengte (normaal) of een dynamische matrix is. De werking van de instructie Erase is anders, afhankelijk van het matrixtype. Voor matrices met vaste lengte wordt geen geheugen vrijgemaakt. Met de instructie Erase stelt u de onderdelen van een matrix met vaste lengte als volgt in:

Matrixtype	Effect van Erase op onderdelen van een matrix met vaste lengte
Vaste numerieke matrix	Elk onderdeel wordt ingesteld op 0.
Vaste tekenreeksmatrix (variabele lengte)	Elk onderdeel wordt ingesteld op een tekenreeks met een lengte nul ("").
Vaste tekenreeksmatrix (vaste lengte)	Elk onderdeel wordt ingesteld op 0.
Vaste Variant-matrix	Elk onderdeel wordt ingesteld op Empty.
Matrix van door de gebruiker gedefinieerde typen	Elk onderdeel wordt ingesteld als een afzonderlijke variabele.
Objectmatrix	Elk onderdeel wordt ingesteld op de speciale waarde Nothing.
De instructie Erase geeft het geheugen vrij dat door dynamische matrices wordt gebruikt. Voordat een programma opnieuw naar een dynamische matrix kan verwijzen, moeten de dimensies van de matrixvariabelen worden gedeclareerd met de instructie ReDim.


Event, instructie

Declareert een door de gebruiker gedefinieerde gebeurtenis.

Syntaxis

[Public] Event procedurenaam [(argumenten)]

De instructie Event heeft de volgende argumenten:

Onderdeel	Beschrijving
Public	Optioneel. Geeft op dat Event zichtbaar is in het gehele project. Events-typen zijn standaard Public. Gebeurtenissen kunnen alleen worden verhoogd in de module waarin deze zijn gedeclareerd.
procedurenaam	Vereist. De naam van de gebeurtenis. Voor deze naam gelden de standaardregels voor naamgeving van een variabele.
Het argument argumenten bevat de volgende syntaxis en onderdelen:

[ByVal | ByRef] varnaam[( )] [As type]

Onderdeel	Beschrijving
ByVal	Optioneel. Geeft aan dat het argument via een waarde wordt doorgegeven.
ByRef	Optioneel. Geeft aan dat het argument via een verwijzing wordt doorgegeven. De standaardinstelling in Visual Basic is ByRef.
Varnaam	Vereist. De naam van de variabele die het argument aangeeft dat aan de procedure wordt doorgegeven. Hiervoor gelden de standaardregels voor naamgeving van een variabele.
type	Optioneel. Het gegevenstype van het argument dat wordt doorgegeven aan de procedure. De volgende typen zijn geldig: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (momenteel niet ondersteund), Date, String (uitsluitend met variabele lengte), Object, Variant, een door de gebruiker gedefinieerd type of een objecttype.
Notities

Als de gebeurtenis eenmaal is gedeclareerd, gebruikt u de instructie RaiseEvent om de gebeurtenis op te roepen. Een syntaxisfout treedt op als een declaratie Event in een standaardmodule verschijnt. Een gebeurtenis kan niet worden gedeclareerd om een waarde als resultaat te geven. Een gebruikelijke gebeurtenis kan worden gedeclareerd en verhoogd zoals in de volgende fragmenten wordt weergegeven:

' Declare an event at module level of a class module

Event LogonCompleted (UserName as String)

Sub

RaiseEvent LogonCompleted("AntoineJan")

End Sub

Opmerking   U kunt argumenten van gebeurtenissen op dezelfde wijze declareren als argumenten van procedures, maar met de volgende uitzonderingen: gebeurtenissen kunnen geen benoemde argumenten, Optional-argumenten of ParamArray-argumenten hebben. Gebeurtenissen hebben geen resultaatwaarden hebben


Function, instructie

Declareert de naam, argumenten en programmacode die het hoofddeel van de procedure Function vormen.

Syntaxis

[Public | Private | Friend] [Static] Function naam [(argumenten)] [As type]
[instructies]
[naam = expressie]
[Exit Function]
[instructies]
[naam = expressie]

End Function

De syntaxis van de instructie Function bevat de volgende onderdelen:

Onderdeel	Beschrijving
Public	Optioneel. Geeft aan dat de procedure Function toegankelijk is voor alle andere procedures in alle modules. Als u dit argument gebruikt in een persoonlijke module (een module met een instructie Option Private) is de procedure niet beschikbaar buiten het project.
Private	Optioneel. Geeft aan dat de procedure Function alleen toegankelijk is voor andere procedures in de module waarin de functie werd gedeclareerd.
Friend	Optioneel. Wordt alleen gebruikt in een klassenmodule. Geeft aan dat de procedure Function tijdens het gehele project zichtbaar is, maar niet voor een controller van een exemplaar van een object.
Static	Optioneel. Geeft aan dat de lokale variabelen van de procedure Function tussen oproepen worden opgeslagen. Het kenmerk Static is niet van invloed op variabelen die buiten de Function zijn gedeclareerd, zelfs niet als deze in dezelfde procedure worden gebruikt.
naam	Vereist. De naam van de Function. Voor deze naam gelden de standaardregels voor naamgeving van een variabele.
argumenten	Optioneel. Een lijst met variabelen die argumenten aangeven die worden doorgegeven aan de procedure Function wanneer deze wordt opgeroepen. Meerdere variabelen worden door komma's van elkaar gescheiden.
type	Optioneel. Het gegevenstype van de waarde die als resultaat wordt gegeven door de procedure Function. Toegestaan zijn: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (momenteel niet ondersteund), Date, String (uitgezonderd tekenreeksen met vaste lengte), Object, Variant of een door de gebruiker gedefinieerd type.
instructies	Optioneel. Een groep instructies die wordt uitgevoerd in het hoofddeel van de procedure Function.
expressie	Optioneel. De resultaatwaarde van de Function.
Het argument argumenten bevat de volgende syntaxis en onderdelen:

[Optional] [ByVal | ByRef] [ParamArray] varnaam[( )] [As type] [=standaardwaarde]

Onderdeel	Beschrijving
Optional	Optioneel. Geeft aan dat een argument niet nodig is. Als u dit sleutelwoord gebruikt, moeten alle volgende argumenten in argumenten ook optioneel zijn en worden gedeclareerd met het sleutelwoord Optional. U kunt Optional niet gebruiken voor een argument als u gebruik maakt van het argument ParamArray.
ByVal	Optioneel. Geeft aan dat het argument via een waarde wordt doorgegeven.
ByRef	Optioneel. Geeft aan dat het argument via een verwijzing wordt doorgegeven. De standaardinstelling in Visual Basic is ByRef.
ParamArray	Optioneel. Wordt alleen gebruikt als het laatste argument in argumenten om aan te geven dat het laatste argument een Optional-matrix is met onderdelen van het type Variant. Met het sleutelwoord ParamArray kunt u een willekeurig aantal argumenten opnemen. U mag ParamArray niet gebruiken met de sleutelwoorden ByVal, ByRef of Optional.
Varnaam	Vereist. De naam van de variabele die het argument aangeeft dat aan de procedure wordt doorgegeven. Hiervoor gelden de standaardregels voor naamgeving van een variabele.
type	Optioneel. Het gegevenstype van het argument dat wordt doorgegeven aan de procedure. De volgende typen zijn geldig: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (momenteel niet ondersteund), Date, String (uitsluitend met variabele lengte), Object, Variant of een specifiek objecttype. Als de parameter niet Optional is, mag ook een door de gebruiker gedefinieerd type worden opgegeven.
standaardwaarde	Optioneel. Een willekeurige constante of constantenexpressie. Alleen geldig voor Optional-parameters. Als het type een Object is, kan een expliciete standaardwaarde alleen Nothing zijn.
Notities

Als het argument Public, Private of Friend niet expliciet is opgegeven, is Public de standaardinstelling voor de procedures Function. Als u het argument Static niet gebruikt, worden de waarden van lokale variabelen niet bewaard tussen de verschillende procedureoproepen. Het sleutelwoord Friend kan alleen worden gebruikt in klassenmodules. Maar procedures kunnen in elke module van een project toegang tot procedures Friend krijgen. Een procedure Friend verschijnt niet in de typebibliotheek van de bijbehorende bovenliggende klasse en kan ook niet laat gebonden zijn.

Let op   Een procedure Function kan recursief zijn. Dat wil zeggen dat de procedure zichzelf oproept om een bepaalde taak uit te voeren. Recursie kan echter stackoverloop veroorzaken. Het sleutelwoord Static wordt meestal niet samen met een recursieve procedure Function gebruikt.

Alle uitvoerbare programmacode moet in de procedure worden opgenomen. U kunt een procedure Function niet definiëren binnen een andere procedure Function, Sub of Property.

De instructie Exit Function zorgt ervoor dat de procedure Function onmiddellijk wordt verlaten. De uitvoering van het programma gaat verder met de instructie die volgt op de instructie waarmee de procedure Function werd opgeroepen. U kunt een willekeurig aantal instructies Exit Function opnemen op elke plaats in een procedure Function.

Evenals een procedure Sub is de procedure Function een afzonderlijke procedure waarvoor u argumenten kunt opgeven, een reeks instructies kunt uitvoeren, of waarvoor u de waarden van de argumenten kunt wijzigen. In tegenstelling tot een procedure Sub kunt u een procedure Function, net als een intrinsieke functie (bijvoorbeeld Sqr, Cos, of Chr), aan de rechterzijde van een expressie gebruiken als u het resultaat van de functie wilt gebruiken.

U roept de procedure Function aan door in een expressie de naam van de functie op te nemen, gevolgd door een argumentenlijst tussen haakjes. Zie de instructie Call voor meer informatie over het oproepen van een procedure Function.

Als u wilt dat een functie een resultaatwaarde geeft, wijst u de waarde toe aan de naam van de functie. U kunt deze toewijzingen onbeperkt op willekeurige posities in de procedure plaatsen. Als u geen waarde hebt toegewezen aan naam, geeft de procedure als resultaat een standaardwaarde. Een numerieke functie geeft bijvoorbeeld 0, een tekenreeksfunctie een tekenreeks met een lengte nul ("") en een functie Variant geeft als resultaat Empty. Een functie die als resultaat een objectverwijzing geeft, geeft als resultaat Nothing als aan naam geen objectverwijzing is toegewezen (met behulp van Set) binnen de Function.

Het onderstaande voorbeeld geeft aan hoe u een resultaatwaarde toewijst aan de functie BinairZoeken. In dit geval wordt de waarde False aan de naam toegewezen om aan te geven dat een bepaalde waarde niet is gevonden.

Function BinarySearch(. . .) As Boolean

. . .

' Value not found. Return a value of False.

If lower > upper Then

BinarySearch = False

Exit Function

End If

. . .

End Function

De variabelen die in de procedure Function worden gebruikt, vallen uiteen in twee categorieën: variabelen die expliciet binnen een procedure worden gedeclareerd, en variabelen waarbij dit niet het geval is. Variabelen die expliciet worden gedeclareerd in een procedure (met Dim of een equivalent), zijn altijd lokale variabelen van de procedure. Andere variabelen die wel worden gebruikt maar niet expliciet in een procedure zijn gedeclareerd, zijn ook lokaal tenzij deze op een hoger niveau buiten de procedure zijn gedeclareerd.

Let op   Een procedure kan een variabele gebruiken die niet expliciet in de procedure is gedeclareerd. Er kan echter een naamconflict optreden als u eerder een argument met dezelfde naam hebt gedefinieerd op moduleniveau. Als de procedure verwijst naar een niet-gedeclareerde variabele met dezelfde naam als een andere procedure, constante of variabele, wordt verondersteld dat de procedure verwijst naar de naam op moduleniveau. Declareer variabelen expliciet om deze conflicten te voorkomen. U kunt de instructie Option Explicit gebruiken om het expliciet declareren van variabelen te forceren.

Let op   Visual Basic kan rekenkundige expressies opnieuw rangschikken om de interne efficiëntie te vergroten. Vermijd het gebruik van de procedure Function in een rekenkundige expressie wanneer de functie de waarde van variabelen in dezelfde expressie wijzigt.


GetObject, functie

Geeft als resultaat een verwijzing naar een object dat wordt verschaft door een ActiveX-onderdeel.

Syntaxis

GetObject([pathname] [, class])

De functie GetObject bevat de volgende benoemde argumenten:

Onderdeel	Beschrijving
pathname	Optioneel; Variant (String). Het volledige pad en de naam van het bestand met het object dat u wilt ophalen. Als u pathname weglaat, is class vereist.
klasse	Optioneel; Variant (String). Een tekenreeks die de klasse van het object aangeeft.
Het argument class gebruikt de syntaxis toepnaam.objecttype en bevat de volgende onderdelen:

Onderdeel	Beschrijving
toepnaam	Vereist; Variant (String). De naam van de toepassing die het object beschikbaar stelt.
objecttype	Vereist; Variant (String). Het type of de klasse van het object dat u wilt maken.
Notities

Gebruik de functie GetObject om vanuit een bestand toegang te krijgen tot een ActiveX-object en dit object toe te wijzen aan een objectvariabele. Gebruik de instructie Set om het object dat als resultaat wordt gegeven door GetObject, toe te wijzen aan een objectvariabele. Bijvoorbeeld:

Dim CADObject As Object

Set CADObject = GetObject("C:\CAD\SCHEMA.CAD")

Als deze programmacode wordt uitgevoerd, wordt de toepassing gestart die in pathname wordt opgegeven en wordt het object in het genoemde bestand geactiveerd.

Als u het argument pathname hebt ingesteld op een tekenreeks met een lengte nul (""), geeft GetObject als resultaat een nieuw object van het opgegeven type. Als u het argument pathname niet opgeeft, geeft GetObject het actieve object van het opgegeven type als resultaat. Als er geen object van dit type beschikbaar is, treedt een fout op.

In sommige toepassingen kunt u een gedeelte van een bestand activeren. Dit doet u door een uitroepteken (!) toe te voegen aan het einde van de bestandsnaam, gevolgd door een tekenreeks die het te activeren gedeelte van het bestand identificeert. Zie de documentatie bij de toepassing waarmee het object is gemaakt, voor meer informatie over het maken van deze tekenreeks.

In een tekentoepassing kunt u bijvoorbeeld meerdere lagen hebben voor een tekening die in een bestand is opgeslagen.  U zou de volgende programmacode kunnen gebruiken om een laag in een tekening met de naam SCHEMA.CAD te activeren:

Set LaagObject = GetObject("C:\CAD\SCHEMA.CAD!Laag3")

Als u het argument class van het object niet opgeeft, bepaalt het automatiseringsproces op basis van de opgegeven bestandsnaam welke toepassing wordt gestart en welk object wordt geactiveerd. Een aantal bestanden kan echter meer dan één objectklasse ondersteunen. Een tekenprogramma kan bijvoorbeeld drie verschillende objecttypen ondersteunen: een object Application, een object Drawing en een object Toolbar, die alle deel uitmaken van hetzelfde bestand. Als u wilt opgeven welk object uit het bestand u wilt activeren, gebruikt u het optionele argument class. Bijvoorbeeld:

Dim MyObject As Object

Set MyObject = GetObject("C:\TEK\VOORBLD.TEK", "PLAATJES.TEKENING")

In het bovenstaande voorbeeld is PLAATJES de naam van de toepassing en TEKENING een van de objecttypen die door de toepassing worden ondersteund.

Nadat een object is geactiveerd, verwijst u in de programmacode naar het object met de objectvariabele die u hebt gedefinieerd. In het bovenstaande voorbeeld hebt u met de objectvariabele MijnObject toegang tot eigenschappen en methoden van het nieuwe object. Bijvoorbeeld:

MyObject.Line 9, 90

MyObject.InsertText 9, 100, "Hallo allemaal."

MyObject.SaveAs "C:\TEK\VOORBLD.TEK"

Opmerking   Gebruik de functie GetObject als het object al bestaat of als u het object wilt maken in een reeds geopend bestand. Als u dit niet wilt of als het object niet bestaat, gebruikt u de functie CreateObject.

Als een object is geregistreerd als een eenmalig object, kan het object slecht één keer voorkomen, ongeacht hoe vaak CreateObject wordt uitgevoerd. GetObject geeft in dit geval steeds hetzelfde object als resultaat als u deze functie oproept met een tekenreeks met een lengte nul (""). Er treedt een fout op als u het argument pathname weglaat. U kunt GetObject niet gebruiken voor een verwijzing naar een klasse die met Visual Basic is gemaakt.


Implements, instructie

Geeft een interface of klasse op die wordt geïmplementeerd in de klassenmodule waarin deze verschijnt.

Syntaxis

Implements [Interfacenaam | Klasse]

De vereiste Interfacenaam of klasse is de naam van een interface of klasse in een typebibliotheek waarvan de methoden worden geïmplementeerd door de overeenkomstige methoden in de Visual Basic-klasse.

Notities

Een interface is een collectie prototypen die de leden (methoden en eigenschappen) weergeeft die de interface samenvat, dat wil zeggen, de interface bevat alleen de declaraties voor de procedures van de leden. Een klasse verschaft een implementatie van alle methoden en eigenschappen van een of meer interfaces. Klassen verschaffen de programmacode waarmee elke functie wordt opgeroepen door een controller van de klasse. Alle klassen implementeren ten minste één interface die als de standaardinterface van de klasse wordt beschouwd. In Visual Basic is elk lid dat niet expliciet een lid van een geïmplementeerde interface is, impliciet een lid van de standaardinterface.

Als een Visual Basic-klasse een interface implementeert, verschaft de Visual Basic-klasse eigen versies van alle Public-procedures die in de typebibliotheek van de interface zijn opgegeven. De instructie Implements zorgt niet alleen voor een toewijzing tussen de interfaceprototypen en uw procedures, maar zorgt ook dat de klasse de COM QueryInterface-oproepen voor de opgegeven interface-id accepteert.

Opmerking   Visual Basic implementeert geen resulterende klassen of interfaces.

Als u een interface of klasse implementeert, moet u alle bijbehorende Public-procedures opnemen. Een ontbrekend lid in een implementatie van een interface of klasse veroorzaakt een fout. Als u geen programmacode in een van de procedures in een klasse plaatst die u implementeert, kunt u het desbetreffende foutbericht laten verschijnen (Const E_NOTIMPL = &H80004001), zodat een gebruiker van de implementatie begrijpt dat een lid niet is geïmplementeerd.

De instructie Implements kan niet in een standaardmodule verschijnen.


LBound, functie

Geeft als resultaat een Long-waarde met de kleinst beschikbare subscript voor de opgegeven dimensie van een matrix.

Syntaxis

LBound(matrixnaam[, dimensie])

De syntaxis van de functie LBound bevat de volgende onderdelen:

Onderdeel	Beschrijving
matrixnaam	Vereist. De naam van de matrixvariabele. Voor deze naam gelden de standaardregels voor naamgeving van een variabele.
dimensie	Optioneel; Variant (Long). Een geheel getal dat aangeeft van welke dimensie de benedengrens als resultaatwaarde wordt gegeven. Gebruik 1 voor de eerste dimensie, 2 voor de tweede, enzovoort. Als u dimensie weglaat, wordt de waarde 1 verondersteld.
Notities

De functie LBound wordt samen met de functie UBound gebruikt om de grootte van een matrix te bepalen. Gebruik de functie UBound om de bovenste limiet van een matrixdimensie te bepalen.

LBound geeft als resultaat de waarden die in de onderstaande tabel worden weergegeven voor een matrix met de volgende dimensies:

Dim A(1 To 100, 0 To 3, -3 To 4)

Instructie	Resultaatwaarde
LBound(A, 1)	1
LBound(A, 2)	0
LBound(A, 3)	-3
De standaardbenedengrens voor een willekeurige dimensie is 0 of 1, afhankelijk van de instelling van de instructie Option Base. De basis van een matrix die is gemaakt met de functie Array, is nul en wordt niet beïnvloed door Option Base.

Een matrix waarvoor de dimensies zijn ingesteld met de component To in een instructie Dim, Private, Public, ReDim of Static, kan elke willekeurige integerwaarde als benedengrens hebben.


Let, instructie

Wijst de waarde van een expressie toe aan een variabele of eigenschap.

Syntaxis

[Let] varnaam = expressie

De syntaxis van de instructie Let bevat de volgende onderdelen:

Onderdeel	Beschrijving
Let	Optioneel. Expliciet gebruik van het sleutelwoord Let is een stijlkwestie, maar wordt gewoonlijk niet gebruikt.
Varnaam	Vereist. De naam van de variabele of eigenschap. Voor deze naam gelden de standaardregels voor naamgeving van een variabele.
expressie	Vereist. Waarde die wordt toegekend aan de variabele of de eigenschap.
Notities

U kunt het resultaat van een expressie alleen toewijzen aan een variabele of eigenschap als het gegevenstype compatibel is met de variabele. U kunt geen reeksexpressies toewijzen aan numerieke variabelen en u kunt evenmin numerieke expressies toewijzen aan tekenreeksvariabelen. Als u dit doet, treedt een fout op tijdens de compilatie.

U kunt variabelen van het type Variant aan zowel reeks- als numerieke expressies toewijzen. Het omgekeerde is echter niet altijd mogelijk. U kunt elke Variant, behalve met de waarde Null, aan een tekenreeksvariabele toewijzen. Voor een numerieke variabele geldt echter dat de waarde van Variant moet overeenkomen met een getal. Met de functie IsNumeric bepaalt u of Variant naar een getal kan worden geconverteerd.

Let op   Als u een expressie van een bepaald numeriek gegevenstype toewijst aan een variabele van een ander numeriek type, wordt de waarde van de expressie aangepast aan het gegevenstype van de resulterende variabele.

U kunt de instructie Let alleen gebruiken om een recordvariabele aan een andere recordvariabele toe te wijzen als beide variabelen van hetzelfde door de gebruiker gedefinieerde gegevenstype zijn. Gebruik de instructie LSet om recordvariabelen met verschillende door de gebruiker gedefinieerde typen toe te wijzen. Gebruik de instructie Set om objectverwijzingen toe te wijzen aan variabelen.


Option Base, instructie

Gebruik deze instructie op moduleniveau om de standaardbenedengrens voor subscripts van matrices toe te wijzen.

Syntaxis

Option Base {0 | 1}

Notities

Omdat de standaardbasis 0 is, is de instructie Option Base niet vereist. Bij gebruik moet de instructie in een module vóór procedures staan. U kunt Option Base slechts één keer in een module opnemen. Ook moet de instructie altijd worden geplaatst vóór matrixdeclaraties die dimensies bevatten.

Opmerking   Met de component To in de instructies Dim, Private, Public, ReDim en Static kunt u het bereik van de subscripts van een matrix op een flexibelere manier bepalen. Als u de benedengrens echter niet expliciet instelt met de component To, kunt u met Option Base de standaardbenedengrens wijzigen in 1. De basis van een matrix die is gemaakt met het sleutelwoord ParamArray is nul. Option Base heeft geen invloed op ParamArray (of op de functie Array als deze is gekwalificeerd met de naam van de bijbehorende typebibliotheek, bijvoorbeeld VBA.Array).

De instructie Option Base heeft alleen invloed op de benedengrens van matrices in de module waarin u de instructie hebt opgenomen.


Option Compare, instructie

Gebruik deze instructie op moduleniveau om de standaardvergelijkingsmethode te declareren voor de vergelijking van tekenreeksen.

Syntaxis

Option Compare {Binary | Text | Database}

Notities

Bij gebruik moet de instructie Option Compare in een module vóór procedures staan.

Met de instructie Option Compare geeft u de methode voor tekenreeksvergelijking (Binary, Text of Database) voor een module op. Als u de instructie Option Compare niet opneemt in een module, is de standaardtekstvergelijkingsmethode Binary.

Met Option Compare Binary worden tekenreeksvergelijkingen uitgevoerd op grond van een sorteervolgorde die is afgeleid van de interne binaire notatie van de tekens. In Microsoft Windows is de sorteervolgorde gebaseerd op de codetabel. Hier volgt een voorbeeld van een typische binaire sorteervolgorde:

A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø

Option Compare Text geeft als resultaat tekenreeksvergelijkingen, gebaseerd op een niet-hoofdlettergevoelige tekstsorteervolgorde die wordt bepaald door de lokale instelling van uw systeem. Als u de bovenstaande tekens sorteert met de procedure Option Compare Text, heeft dit de volgende sorteervolgorde als resultaat:

(A=a) < (À=à) < (B=b) < (E=e) < (Ê=ê) < (Z=z) < (Ø=ø)

Option Compare Database kan alleen in Microsoft Access worden gebruikt. Dit heeft tekenreeksvergelijkingen als resultaat op basis van de sorteervolgorde die wordt bepaald door de id voor de lokale instelling van de database waarin de tekenreeksvergelijkingen plaatsvinden.


Option Explicit, instructie

Gebruik deze instructie op moduleniveau om een expliciete declaratie van alle variabelen in de module te forceren.

Syntaxis

Option Explicit

Notities

Bij gebruik moet de instructie Option Explicit in een module vóór procedures staan.

Als Option Explicit in een module voorkomt, dient u alle variabelen expliciet te declareren met de instructies Dim, Private, Public, ReDim of Static. Als u probeert een niet-gedeclareerde variabelennaam te gebruiken, treedt er een fout op tijdens de compilatie.

Als u de instructie Option Explicit niet gebruikt, hebben alle niet-gedeclareerde variabelen het gegevenstype Variant, tenzij een ander standaardtype is opgegeven met de instructie Deftype.

Opmerking   Gebruik Option Explicit om te voorkomen dat u de naam van een bestaande variabele onjuist typt of om verwarring te voorkomen in programmacode waarin het bereik van een variabele niet duidelijk is.


Option Private, instructie

Als u Option Private Module gebruikt in brontoepassingen waarin verwijzingen naar meerdere projecten zijn toegestaan, voorkomt u dat buiten het project naar de inhoud van een module wordt verwezen. In brontoepassingen waarin u niet zulke verwijzingen kunt toepassen, zoals bijvoorbeeld opzichzelfstaande versies van Visual Basic, heeft Option Private geen effect.

Syntaxis

Option Private Module

Notities

Bij gebruik moet de instructie Option Private op moduleniveau vóór procedures staan.

Als een module Option Private Module bevat, zijn de openbare onderdelen (bijvoorbeeld variabelen, objecten en door de gebruiker gedefinieerde gegevenstypen) die zijn gedeclareerd op moduleniveau, nog steeds beschikbaar binnen het project dat de module bevat. Deze openbare onderdelen zijn echter niet beschikbaar voor andere toepassingen of projecten.

Opmerking   Het heeft alleen zin om Option Private te gebruiken bij brontoepassingen waarin u meerdere projecten gelijktijdig kunt laden en waarin verwijzingen tussen de geladen projecten zijn toegestaan. In Microsoft Excel kunt u bijvoorbeeld meerdere projecten tegelijk laden en kunt u Option Private Module gebruiken om kruisverwijzingen tussen projecten te beperken. Hoewel Visual Basic het laden van meerdere projecten toestaat, zijn verwijzingen tussen projecten nooit toegestaan in Visual Basic.


Private, instructie

Gebruik deze instructie op moduleniveau om persoonlijke variabelen te declareren en geheugenruimte toe te wijzen.

Syntaxis

Private [WithEvents] varnaam[([subscripts])] [As [New] type] [,[WithEvents] varnaam[([subscripts])] [As [New] type]] . . .

De syntaxis van de instructie Private bevat de volgende onderdelen:

Onderdeel	Beschrijving
WithEvents	Optioneel. Een sleutelwoord dat opgeeft dat varnaam een objectvariabele is waarmee u reageert op gebeurtenissen die zijn gestart door een ActiveX-object. WithEvents is alleen geldig in klassenmodules. U kunt met WithEvents zoveel individuele variabelen declareren als u wilt, maar u kunt met WithEvents geen matrices maken. U kunt New niet gebruiken met WithEvents.
Varnaam	Vereist. De naam van de variabele. Voor deze naam gelden de standaardregels voor naamgeving van een variabele.
subscripts	Optioneel. Dimensies van een matrixvariabele. U kunt maximaal 60 meervoudige dimensies declareren. Voor het argument subscripts geldt de volgende syntaxis:
	[laagste To] hoogste [,[laagste To] hoogste] . . .
	Als u de benedengrens van een matrix niet expliciet opgeeft met laagste, wordt deze bepaald door de instructie Option Base. De benedengrens is nul als u de instructie Option Base niet hebt opgegeven.
New	Optioneel. Een sleutelwoord waarmee u impliciet een object kunt maken. Als u New gebruikt bij het declareren van een objectvariabele, wordt een nieuw object gemaakt tijdens de eerste verwijzing, zodat u niet de instructie Set hoeft te gebruiken om een objectverwijzing toe te wijzen. U kunt met het sleutelwoord New geen variabelen van een intrinsiek gegevenstype declareren, geen afhankelijke objecten declareren en u kunt New niet gebruiken met WithEvents.
type	Optioneel. Het gegevenstype van de variabele. Toegestane typen zijn: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (momenteel niet ondersteund), Date, String (voor tekenreeksen met variabele lengte), String * lengte (voor tekenreeksen met vaste lengte), Object, Variant, een door de gebruiker gedefinieerd type of een objecttype. Gebruik voor elke variabele die u declareert een aparte component As type.
Notities

De variabelen die u declareert met Private, zijn alleen beschikbaar in de module waarin deze worden gedeclareerd.

Gebruik de instructie Private om het gegevenstype van een variabele te declareren. Zo declareert de volgende instructie de variabele als Integer:

Private NumberOfEmployees As Integer

U kunt de instructie Private ook gebruiken om het objecttype van een variabele te declareren. De volgende instructie declareert een variabele voor een nieuw werkblad:

Private X As New Worksheet

Als het sleutelwoord New niet wordt gebruikt bij het declareren van een objectvariabele, moet de variabele die verwijst naar het object, worden toegewezen aan een bestaand object met behulp van de instructie Set voordat deze kan worden gebruikt. Totdat de gedeclareerde objectvariabele is toegewezen aan een object, heeft deze de speciale waarde Nothing, waarmee wordt aangegeven dat de variabele niet verwijst naar een bepaald object.

Als u geen gegevens- of objecttype opgeeft en er geen instructie Deftype in de module is opgenomen, is de variabele standaard van het type Variant.

U kunt de instructie Private ook gebruiken met lege haakjes om een dynamische matrix te declareren. Als u dit hebt gedaan, gebruikt u de instructie ReDim in een procedure om het aantal dimensies en onderdelen van de matrix te definiëren. Als u de grootte van een matrixvariabele expliciet hebt opgegeven met de instructie Private, Public of Dim, treedt een fout op als u de dimensie opnieuw declareert.

Variabelen worden als volgt geïnitialiseerd: een numerieke variabele wordt geïnitialiseerd op 0, een tekenreeks met variabele lengte wordt geïnitialiseerd op een tekenreeks met een lengte nul ("") en een tekenreeks met vaste lengte wordt opgevuld met nullen. Een variabele Variant wordt geïnitialiseerd op Empty. Elk onderdeel van een door de gebruiker gedefinieerde variabele wordt geïnitialiseerd alsof het een afzonderlijke variabele betreft.

Opmerking   Als u de instructie Private in een procedure gebruikt, plaatst u de instructie Private gewoonlijk aan het begin van een procedure.


Property Get, instructie

Hiermee declareert u de naam, argumenten en programmacode die het hoofddeel vormen van een procedure Property die de waarde van een eigenschap ophaalt.

Syntaxis

[Public | Private | Friend] [Static] Property Get naam [(argumenten)] [As type]
[instructies]
[naam = expressie]
[Exit Property]
[instructies]
[naam = expressie]

End Property

De syntaxis van de instructie Property Get bevat de volgende onderdelen:

Onderdeel	Beschrijving
Public	Optioneel. Geeft aan dat de procedure Property Get toegankelijk is voor alle andere procedures in alle modules. Als u dit argument gebruikt in een persoonlijke module (een module met een instructie Option Private), is de procedure niet beschikbaar buiten het project.
Private	Optioneel. Geeft aan dat de procedure Property Get alleen toegankelijk is voor andere procedures in de module waarin deze werd gedeclareerd.
Friend	Optioneel. Wordt alleen gebruikt in een klassenmodule. Geeft aan dat de procedure Property Get tijdens het gehele project zichtbaar is, maar niet voor een controller van een exemplaar van een object.
Static	Optioneel. Geeft aan dat de lokale variabelen van de procedure Property Get tussen oproepen worden opgeslagen. Het onderdeel Static is niet van invloed op variabelen die buiten de procedure Property Get zijn gedeclareerd, zelfs niet als deze in dezelfde procedure worden gebruikt.
naam	Vereist. De naam van de procedure Property Get. Voor deze naam gelden de standaardregels voor naamgeving van een variabele. U kunt echter niet dezelfde naam gebruiken als van een procedure Property Let of Property Set in dezelfde module.
argumenten	Optioneel. Een lijst met variabelen die argumenten aangeven die worden doorgegeven aan de procedure Property Get wanneer deze wordt opgeroepen. Meerdere variabelen worden door komma's van elkaar gescheiden. Overeenkomstige argumenten in een procedure Property Get en Property Let (indien aanwezig) moeten dezelfde naam en hetzelfde gegevenstype hebben.
type	Optioneel. Het gegevenstype van de variabele dat als resultaat wordt gegeven door de procedure Property Get. Toegestaan zijn: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (momenteel niet ondersteund), Date, String (uitgezonderd tekenreeksen met vaste lengte), Object, Variant, een door de gebruiker gedefinieerd type en Arrays. In een procedure Property Get moet het resultaat voor type hetzelfde gegevenstype zijn als het laatste (of enige) argument in de overeenkomstige procedure Property Let (indien aanwezig) waarmee de waarde wordt gedefinieerd, die wordt toegewezen aan de eigenschap aan de rechterzijde van de expressie.
instructies	Optioneel. Een groep instructies die wordt uitgevoerd in het hoofddeel van de procedure Property Get.
expressie	Optioneel. De waarde van de eigenschap die als resultaat wordt gegeven van de procedure die u definieert met de instructie Property Get.
Het argument argumenten bevat de volgende syntaxis en onderdelen:

[Optional] [ByVal | ByRef] [ParamArray] varnaam[( )] [As type] [=standaardwaarde]

Onderdeel	Beschrijving
Optional	Optioneel. Geeft aan dat een argument niet nodig is. Als u dit sleutelwoord gebruikt, moeten alle volgende argumenten in argumenten ook optioneel zijn en worden gedeclareerd met het sleutelwoord Optional.
ByVal	Optioneel. Geeft aan dat het argument via een waarde wordt doorgegeven.
ByRef	Optioneel. Geeft aan dat het argument via een verwijzing wordt doorgegeven. De standaardinstelling in Visual Basic is ByRef.
ParamArray	Optioneel. Wordt alleen gebruikt als het laatste argument in argumenten om aan te geven dat het laatste argument een Optional-matrix is met onderdelen van het type Variant. Met het sleutelwoord ParamArray kunt u een willekeurig aantal argumenten opnemen. U mag ParamArray niet gebruiken met de sleutelwoorden ByVal, ByRef of Optional.
Varnaam	Vereist. De naam van de variabele die het argument aangeeft dat aan de procedure wordt doorgegeven. Hiervoor gelden de standaardregels voor naamgeving van een variabele.
type	Optioneel. Het gegevenstype van het argument dat wordt doorgegeven aan de procedure. De volgende typen zijn geldig: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (momenteel niet ondersteund), Date, String (uitsluitend met variabele lengte), Object, Variant of een specifiek objecttype. Als de parameter niet Optional is, mag ook een door de gebruiker gedefinieerd type worden opgegeven.
standaardwaarde	Optioneel. Een willekeurige constante of constantenexpressie. Alleen geldig voor Optional-parameters. Als het type een Object is, kan een expliciete standaardwaarde alleen Nothing zijn.
Notities

Als het argument Public, Private of Friend niet expliciet is opgegeven, is Public de standaardinstelling voor de procedures Property. Als u het argument Static niet gebruikt, worden de waarden van lokale variabelen niet bewaard tussen de verschillende procedureoproepen. Het sleutelwoord Friend kan alleen worden gebruikt in klassenmodules. Maar procedures kunnen in elke module van een project toegang tot procedures Friend krijgen. Een procedure Friend verschijnt niet in de typebibliotheek van de bijbehorende bovenliggende klasse en kan ook niet laat gebonden zijn.

Alle uitvoerbare programmacode moet in de procedure worden opgenomen. U kunt een procedure Property Get niet definiëren binnen een andere procedure Property, Sub of Function.

De instructie Exit Property zorgt ervoor dat de procedure Property Get onmiddellijk wordt verlaten. De uitvoering van het programma gaat verder met de instructie die volgt op de instructie waarmee de procedure Property Get werd opgeroepen. U kunt een willekeurig aantal instructies Exit Property opnemen op elke plaats in een procedure Property Get.

Evenals de procedures Sub en Property Let is de procedure Property Get een afzonderlijke procedure waarvoor u argumenten kunt opgeven, instructies kunt uitvoeren of de waarden van de argumenten kunt wijzigen. In tegenstelling tot de procedures Sub en Property Let, kunt u een procedure Property Get net als een Function of eigenschapnaam aan de rechterzijde van een expressie gebruiken als u de waarde van de eigenschap als resultaat wilt geven.


Property Let, instructie

Hiermee declareert u de naam, argumenten en programmacode die het hoofddeel vormen van een procedure Property Let, waarmee u een waarde toewijst aan een eigenschap.

Syntaxis

[Public | Private | Friend] [Static] Property Let naam ([argumenten,] waarde)
[instructies]
[Exit Property]
[instructies]

End Property

De syntaxis van de instructie Property Let bevat de volgende onderdelen:

Onderdeel	Beschrijving
Public	Optioneel. Geeft aan dat de procedure Property Let toegankelijk is voor alle andere procedures in alle modules. Als u dit argument gebruikt in een persoonlijke module (een module met een instructie Option Private), is de procedure niet beschikbaar buiten het project.
Private	Optioneel. Geeft aan dat de procedure Property Let alleen toegankelijk is voor andere procedures in de module waarin deze werd gedeclareerd.
Friend	Optioneel. Wordt alleen gebruikt in een klassenmodule. Geeft aan dat de procedure Property Let tijdens het gehele project zichtbaar is, maar niet voor een controller van een exemplaar van een object.
Static	Optioneel. Geeft aan dat de lokale variabelen van de procedure Property Let tussen oproepen worden opgeslagen. Het onderdeel Static is niet van invloed op variabelen die buiten de procedure Property Let zijn gedeclareerd, zelfs niet als deze in dezelfde procedure worden gebruikt.
naam	Vereist. De naam van de procedure Property Let. Voor deze naam gelden de standaardregels voor naamgeving van een variabele. U kunt echter niet dezelfde naam gebruiken als van een procedure Property Get of Property Set in dezelfde module.
argumenten	Vereist. Een lijst met variabelen die argumenten aangeven die worden doorgegeven aan de procedure Property Let wanneer deze wordt opgeroepen. Meerdere variabelen worden door komma's van elkaar gescheiden. Overeenkomstige argumenten in een procedure Property Let en Property Get moeten dezelfde naam en hetzelfde gegevenstype hebben.
waarde	Vereist. De variabele die de waarde moet bevatten die moet worden toegewezen aan de eigenschap. Wanneer de procedure wordt opgeroepen, wordt dit argument aan de rechterzijde van de oproepende expressie weergegeven. Het gegevenstype van waarde moet overeenkomen met het resultaattype van de corresponderende procedure Property Get.
instructies	Optioneel. Een willekeurige groep instructies die wordt uitgevoerd in het hoofddeel van de procedure Property Let.
Het argument argumenten bevat de volgende syntaxis en onderdelen:

[Optional] [ByVal | ByRef] [ParamArray] varnaam[( )] [As type] [=standaardwaarde]

Onderdeel	Beschrijving
Optional	Optioneel. Geeft aan dat een argument niet nodig is. Als u dit sleutelwoord gebruikt, moeten alle volgende argumenten in argumenten ook optioneel zijn en worden gedeclareerd met het sleutelwoord Optional. Let op dat de rechterzijde van een expressie Property Let niet Optional kan zijn.
ByVal	Optioneel. Geeft aan dat het argument via een waarde wordt doorgegeven.
ByRef	Optioneel. Geeft aan dat het argument via een verwijzing wordt doorgegeven. De standaardinstelling in Visual Basic is ByRef.
ParamArray	Optioneel. Wordt alleen gebruikt als het laatste argument in argumenten om aan te geven dat het laatste argument een Optional-matrix is met onderdelen van het type Variant. Met het sleutelwoord ParamArray kunt u een willekeurig aantal argumenten opnemen. U mag ParamArray niet gebruiken met de sleutelwoorden ByVal, ByRef of Optional.
Varnaam	Vereist. De naam van de variabele die het argument aangeeft dat aan de procedure wordt doorgegeven. Hiervoor gelden de standaardregels voor naamgeving van een variabele.
type	Optioneel. Het gegevenstype van het argument dat wordt doorgegeven aan de procedure. De volgende typen zijn geldig: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (momenteel niet ondersteund), Date, String (uitsluitend met variabele lengte), Object, Variant of een specifiek objecttype. Als de parameter niet Optional is, mag ook een door de gebruiker gedefinieerd type worden opgegeven.
standaardwaarde	Optioneel. Een willekeurige constante of constantenexpressie. Alleen geldig voor Optional-parameters. Als het type een Object is, kan een expliciete standaardwaarde alleen Nothing zijn.
Opmerking   Elke instructie Property Let dient ten minste één argument te definiëren voor de procedure die met deze instructie wordt gedefinieerd. Dit argument (of het laatste argument als er meerdere argumenten zijn) bevat de werkelijke waarde die wordt toegewezen aan de eigenschap wanneer de procedure wordt gestart die met de instructie Property Let is gedefinieerd. In de voorafgaande syntaxis wordt naar dit argument verwezen als waarde.

Notities

Als het argument Public, Private of Friend niet expliciet is opgegeven, is Public de standaardinstelling voor de procedures Property. Als u het argument Static niet gebruikt, worden de waarden van lokale variabelen niet bewaard tussen de verschillende procedureoproepen. Het sleutelwoord Friend kan alleen worden gebruikt in klassenmodules. Maar procedures kunnen in elke module van een project toegang tot procedures Friend krijgen. Een procedure Friend verschijnt niet in de typebibliotheek van de bijbehorende bovenliggende klasse en kan ook niet laat gebonden zijn.

Alle uitvoerbare programmacode moet in de procedure worden opgenomen. U kunt een procedure Property Let niet definiëren binnen een andere procedure Property, Sub of Function.

De instructie Exit Property zorgt ervoor dat de procedure Property Let onmiddellijk wordt verlaten. De uitvoering van het programma gaat verder met de instructie die volgt op de instructie waarmee de procedure Property Let werd opgeroepen. U kunt een willekeurig aantal instructies Exit Property opnemen op elke plaats in een procedure Property Let.

Evenals de procedures Function en Property Get is de procedure Property Let een afzonderlijke procedure waarvoor u argumenten kunt opgeven, instructies kunt uitvoeren of de waarden van de argumenten kunt wijzigen. In tegenstelling tot de procedures Function en Property Get, die een resultaatwaarde geven, kunt u een procedure Property Let alleen gebruiken aan de linkerzijde van een expressie die een eigenschap toewijst of aan de linkerzijde van een instructie Let.


Property Set, instructie

Hiermee declareert u de naam, argumenten en programmacode die het hoofddeel vormen van een procedure Property, waarmee u een verwijzing naar een object instelt.

Syntaxis

[Public | Private | Friend] [Static] Property Set naam ([argumenten,] verwijzing)
[instructies]
[Exit Property]
[instructies]

End Property

De syntaxis van de instructie Property Set bevat de volgende onderdelen:

Onderdeel	Beschrijving
Optional	Optioneel. Geeft aan dat het argument al dan niet wordt geleverd door het oproepende element
Public	Optioneel. Geeft aan dat de procedure Property Set toegankelijk is voor alle andere procedures in alle modules. Als u dit argument gebruikt in een persoonlijke module (een module met een instructie Option Private), is de procedure niet beschikbaar buiten het project.
Private	Optioneel. Geeft aan dat de procedure Property Set alleen toegankelijk is voor andere procedures in de module waarin deze werd gedeclareerd.
Friend	Optioneel. Wordt alleen gebruikt in een klassenmodule. Geeft aan dat de procedure Property Set tijdens het gehele project zichtbaar is, maar niet voor een controller van een exemplaar van een object.
Static	Optioneel. Geeft aan dat de lokale variabelen van de procedure Property Set tussen oproepen worden opgeslagen. Het onderdeel Static is niet van invloed op variabelen die buiten de procedure Property Set zijn gedeclareerd, zelfs niet als deze in dezelfde procedure worden gebruikt.
naam	Vereist. De naam van de procedure Property Set. Voor deze naam gelden de standaardregels voor naamgeving van een variabele. U kunt echter niet dezelfde naam gebruiken als van een procedure Property Get of Property Let in dezelfde module.
argumenten	Vereist. Een lijst met variabelen die argumenten aangeven die worden doorgegeven aan de procedure Property Set wanneer deze wordt opgeroepen. Meerdere variabelen worden door komma's van elkaar gescheiden.
verwijzing	Vereist. De variabele die de objectverwijzing bevat die wordt gebruikt aan de rechterzijde van de toewijzing van de objectverwijzing.
instructies	Optioneel. Een groep instructies die wordt uitgevoerd in het hoofddeel van de procedure Property.
Het argument argumenten bevat de volgende syntaxis en onderdelen:

[Optional] [ByVal | ByRef] [ParamArray] varnaam[( )] [As type] [=standaardwaarde]

Onderdeel	Beschrijving
Optional	Optioneel. Geeft aan dat een argument niet nodig is. Als u dit sleutelwoord gebruikt, moeten alle volgende argumenten in argumenten ook optioneel zijn en worden gedeclareerd met het sleutelwoord Optional. Let op dat de rechterzijde van een expressie Property Set niet Optional kan zijn.
ByVal	Optioneel. Geeft aan dat het argument via een waarde wordt doorgegeven.
ByRef	Optioneel. Geeft aan dat het argument via een verwijzing wordt doorgegeven. De standaardinstelling in Visual Basic is ByRef.
ParamArray	Optioneel. Wordt alleen gebruikt als het laatste argument in argumenten om aan te geven dat het laatste argument een Optional-matrix is met onderdelen van het type Variant. Met het sleutelwoord ParamArray kunt u een willekeurig aantal argumenten opnemen. U mag ParamArray niet gebruiken met de sleutelwoorden ByVal, ByRef of Optional.
Varnaam	Vereist. De naam van de variabele die het argument aangeeft dat aan de procedure wordt doorgegeven. Hiervoor gelden de standaardregels voor naamgeving van een variabele.
type	Optioneel. Het gegevenstype van het argument dat wordt doorgegeven aan de procedure. De volgende typen zijn geldig: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (momenteel niet ondersteund), Date, String (uitsluitend met variabele lengte), Object, Variant of een specifiek objecttype. Als de parameter niet Optional is, mag ook een door de gebruiker gedefinieerd type worden opgegeven.
standaardwaarde	Optioneel. Een willekeurige constante of constantenexpressie. Alleen geldig voor Optional-parameters. Als het type een Object is, kan een expliciete standaardwaarde alleen Nothing zijn.
Opmerking   Elke instructie Property Set dient ten minste één argument te definiëren voor de procedure die met deze instructie wordt gedefinieerd. Dit argument (of het laatste argument als er meerdere argumenten zijn) bevat de werkelijke objectverwijzing voor de eigenschap wanneer de procedure wordt gestart die met de instructie Property Set is gedefinieerd. In de voorafgaande syntaxis wordt hiernaar verwezen als verwijzing. De instructie kan niet Optional zijn.

Notities

Als het argument Public, Private of Friend niet expliciet is opgegeven, is Public de standaardinstelling voor de procedures Property. Als u het argument Static niet gebruikt, worden de waarden van lokale variabelen niet bewaard tussen de verschillende procedureoproepen. Het sleutelwoord Friend kan alleen worden gebruikt in klassenmodules. Maar procedures kunnen in elke module van een project toegang tot procedures Friend krijgen. Een procedure Friend verschijnt niet in de typebibliotheek van de bijbehorende bovenliggende klasse en kan ook niet laat gebonden zijn.

Alle uitvoerbare programmacode moet in de procedure worden opgenomen. U kunt een procedure Property Set niet definiëren binnen een andere procedure Property, Sub, of Function.

De instructie Exit Property zorgt ervoor dat de procedure Property Set onmiddellijk wordt verlaten. De uitvoering van het programma gaat verder met de instructie die volgt op de instructie waarmee de procedure Property Set werd opgeroepen. U kunt een willekeurig aantal instructies Exit Property opnemen op elke plaats in een procedure Property Set.

Evenals de procedures Function en Property Get is de procedure Property Set een afzonderlijke procedure waarvoor u argumenten kunt opgeven, instructies kunt uitvoeren of de waarden van de argumenten kunt wijzigen. In tegenstelling tot de procedures Function en Property Get, die een resultaatwaarde geven, kunt u een procedure Property Set alleen gebruiken aan de linkerzijde van een expressie die een objectverwijzing toewijst (instructie Set).


Public, instructie

Gebruik deze instructie op moduleniveau om openbare variabelen te declareren en geheugenruimte toe te wijzen.

Syntaxis

Public [WithEvents] varnaam[([subscripts])] [As [New] type] [,[WithEvents] varnaam[([subscripts])] [As [New] type]] . . .

De syntaxis van de instructie Public bevat de volgende onderdelen:

Onderdeel	Beschrijving
WithEvents	Optioneel. Een sleutelwoord dat de varnaam opgeeft als een objectvariabele waarmee wordt gereageerd op gebeurtenissen die worden veroorzaakt door een ActiveX-object. WithEvents is alleen geldig in klassenmodules. U kunt met WithEvents zoveel individuele variabelen declareren als u wilt, maar u kunt met WithEvents geen matrices maken. U kunt New niet gebruiken met WithEvents.
Varnaam	Vereist. De naam van de variabele. Voor deze naam gelden de standaardregels voor naamgeving van een variabele.
subscripts	Optioneel. Dimensies van een matrixvariabele. U kunt maximaal 60 meervoudige dimensies declareren. Voor het argument subscripts geldt de volgende syntaxis: [laagste To] hoogste [,[laagste To] hoogste] . . . Als u de benedengrens van een matrix niet expliciet opgeeft met laagste, wordt deze bepaald door de instructie Option Base. De benedengrens is nul als u de instructie Option Base niet hebt opgegeven.
New	Optioneel. Een sleutelwoord waarmee u impliciet een object kunt maken. Als u New gebruikt bij het declareren van een objectvariabele, wordt een nieuw object gemaakt tijdens de eerste verwijzing, zodat u niet de instructie Set hoeft te gebruiken om een objectverwijzing toe te wijzen. U kunt met het sleutelwoord New geen variabelen van een intrinsiek gegevenstype declareren, geen afhankelijke objecten declareren en u kunt New niet gebruiken met WithEvents.
type	Optioneel. Het gegevenstype van de variabele. Toegestane typen zijn: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (momenteel niet ondersteund), Date, String, (voor tekenreeksen met variabele lengte), String * lengte (voor tekenreeksen met vaste lengte), Object, Variant, een door de gebruiker gedefinieerd type of een objecttype. Gebruik voor elke variabele die u declareert een aparte component As type.
Notities

Variabelen die zijn gedeclareerd met de instructie Public, zijn beschikbaar voor alle procedures in alle modules in alle toepassingen, tenzij Option Private Module is ingesteld. In dit geval zijn de variabelen alleen openbaar binnen het project waarin deze zijn geplaatst.

Let op   U kunt de instructie Public niet gebruiken in een klassenmodule om een tekenreeksvariabele met een vaste lengte te declareren.

Gebruik de instructie Public om het gegevenstype van een variabele te declareren. Zo declareert de volgende instructie de variabele als Integer:

Public NumberOfEmployees As Integer

U kunt de instructie Public ook gebruiken om het objecttype van een variabele te declareren. De volgende instructie declareert een variabele voor een nieuw werkblad:

Public X As New Worksheet

Als het sleutelwoord New niet wordt gebruikt bij het declareren van een objectvariabele, moet de variabele die verwijst naar het object, worden toegewezen aan een bestaand object met behulp van de instructie Set voordat deze kan worden gebruikt. Totdat de gedeclareerde objectvariabele is toegewezen aan een object, heeft deze de speciale waarde Nothing, waarmee wordt aangegeven dat de variabele niet verwijst naar een bepaald object.

U kunt de instructie Public ook gebruiken met lege haakjes om een dynamische matrix te declareren. Als u dit hebt gedaan, gebruikt u de instructie ReDim in een procedure om het aantal dimensies en onderdelen van de matrix te definiëren. Als u de grootte van een matrixvariabele expliciet hebt opgegeven met de instructie Private, Public of Dim, treedt een fout op als u de dimensie opnieuw declareert.

Als u geen gegevens- of objecttype opgeeft en er geen instructie Deftype in de module is opgenomen, is de variabele standaard van het type Variant.

Variabelen worden als volgt geïnitialiseerd: een numerieke variabele wordt geïnitialiseerd op 0, een tekenreeks met variabele lengte wordt geïnitialiseerd op een tekenreeks met een lengte nul ("") en een tekenreeks met vaste lengte wordt opgevuld met nullen. Een variabele Variant wordt geïnitialiseerd op Empty. Elk onderdeel van een door de gebruiker gedefinieerde variabele wordt geïnitialiseerd alsof het een afzonderlijke variabele betreft.


ReDim, instructie

Gebruik deze instructie op procedureniveau om dynamische variabelen voor een matrix te declareren en geheugenruimte (opnieuw) toe te wijzen.

Syntaxis

ReDim [Preserve] varnaam(subscripts) [As type] [, varnaam(subscripts) [As type]] . . .

De syntaxis van de instructie ReDim bevat de volgende onderdelen:

Onderdeel	Beschrijving
Preserve	Optioneel. Een sleutelwoord dat de gegevens behoudt in een bestaande matrix als u de grootte van de laatste dimensie wijzigt.
Varnaam	Vereist. De naam van de variabele. Voor deze naam gelden de standaardregels voor naamgeving van een variabele.
subscripts	Vereist. Dimensies van een matrixvariabele. U kunt maximaal 60 meervoudige dimensies declareren. Voor het argument subscripts geldt de volgende syntaxis: [laagste To] hoogste [,[laagste To] hoogste] . . . Als u de benedengrens van een matrix niet expliciet opgeeft met laagste, wordt deze bepaald door de instructie Option Base. De benedengrens is nul als u de instructie Option Base niet hebt opgegeven.
type	Optioneel. Het gegevenstype van de variabele. Toegestane typen zijn: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (momenteel niet ondersteund), Date, String (voor tekenreeksen met variabele lengte), String * lengte (voor tekenreeksen met vaste lengte), Object, Variant, een door de gebruiker gedefinieerd type of een objecttype. Gebruik voor elke variabele die u declareert een aparte component As type. Voor een Variant die een matrix bevat, beschrijft type het gegevenstype van elk onderdeel van de matrix, maar het gegevenstype Variant wordt niet omgezet in een ander gegevenstype.
Notities

U gebruikt de instructie ReDim meestal om de grootte van een dynamische matrix in te stellen of aan te passen die reeds formeel is gedeclareerd met een instructie Private, Public of Dim met lege haakjes (zonder dimensiesubscripts).

Gebruik de instructie ReDim meerdere malen om het aantal onderdelen en dimensies in een matrix te wijzigen. U kunt echter niet een matrix met een bepaald gegevenstype declareren en deze matrix vervolgens met de instructie ReDim wijzigen in een ander gegevenstype, tenzij de matrix in een gegevenstype Variant is opgenomen. Als de matrix is opgenomen in een Variant, kunnen de typen van de elementen worden gewijzigd met een component As type, behalve als u een sleutelwoord Preserve gebruikt. In dat geval zijn geen wijzigingen van gegevenstypen toegestaan.

Met het sleutelwoord Preserve kunt u alleen de laatste matrixdimensie wijzigen. U kunt het aantal dimensies in het geheel niet wijzigen. Als de matrix bijvoorbeeld slechts één dimensie heeft, kunt u de grootte van deze dimensie aanpassen omdat dit de laatste en enige dimensie is. Als de matrix echter twee of meer dimensies heeft, kunt u alleen de grootte van de laatste dimensie wijzigen en toch de inhoud van de matrix behouden. Het volgende voorbeeld geeft aan u hoe de grootte van de laatste dimensie van een dynamische matrix kunt wijzigen zonder bestaande gegevens te verwijderen die in de matrix zijn opgenomen.

ReDim X(10, 10, 10)

. . .

ReDim Preserve X(10, 10, 15)

Op dezelfde manier kunt u bij het gebruik van Preserve de omvang van de matrix wijzigen door alleen de bovenste grens te wijzigen; het wijzigen van de onderste grens veroorzaakt een fout.

Als u een matrix kleiner maakt dan voorheen, gaan de gegevens in de verwijderde elementen verloren. Als u een matrix doorgeeft aan een procedure via een verwijzing, kunt u de dimensie van de matrix niet bijwerken in de procedure.

Variabelen worden als volgt geïnitialiseerd: een numerieke variabele wordt geïnitialiseerd op 0, een tekenreeks met variabele lengte wordt geïnitialiseerd op een tekenreeks met een lengte nul ("") en een tekenreeks met vaste lengte wordt opgevuld met nullen. Een variabele Variant wordt geïnitialiseerd op Empty. Elk onderdeel van een door de gebruiker gedefinieerde variabele wordt geïnitialiseerd alsof het een afzonderlijke variabele betreft. U kunt een variabele die naar een object verwijst, pas gebruiken nadat u deze met de instructie Set aan een bestaand object hebt toegewezen. Totdat een object aan de gedeclareerde objectvariabele is toegewezen, heeft de variabele de speciale waarde Nothing. Deze waarde geeft aan dat niet naar een bepaald object wordt verwezen.

Let op   De instructie ReDim werkt als een declaratie-instructie als de variabele die de instructie declareert, niet op moduleniveau of procedureniveau bestaat. Als later een andere variabele met dezelfde naam wordt gemaakt, zelfs in een breder bereik, verwijst ReDim naar de latere variabele en zal niet direct een compileerfout veroorzaken, zelfs als Option Explicit wordt gebruikt. Als u zulke conflicten wilt voorkomen, moet u ReDim niet gebruiken als een declaratie-instructie, maar gewoon voor het wijzigen van de grootte van matrices.

Opmerking   Declareer de variabele Variant expliciet voordat u de grootte van een matrix wijzigt die in een variabele Variant is opgenomen.


Rem, instructie

U gebruikt deze instructie om opmerkingen met uitleg in een programma op te nemen.

Syntaxis

Rem opmerking

U kunt ook de volgende syntaxis gebruiken:

' opmerking

Het optionele argument opmerking is de tekst van een willekeurige opmerking die u wilt opnemen. Plaats een spatie tussen het sleutelwoord Rem en het argument opmerking.

Notities

Als u regelnummers of regelnamen gebruikt, kunt u van een instructie GoTo of GoSub vertakken naar een regel die een instructie Rem bevat. De uitvoering wordt voortgezet met de eerste uitvoerbare instructie die volgt op de instructie Rem. Als het sleutelwoord Rem volgt op andere instructies op dezelfde regel, scheidt u dit van de instructies met een dubbele punt (:).

U kunt ook een aanhalingsteken (') gebruiken in plaats van het sleutelwoord Rem. Als u het aanhalingsteken gebruikt, hoeft u geen dubbele punt achter de andere instructies op te nemen.


Set, instructie

Wijst een objectverwijzing toe aan een variabele of eigenschap.

Syntaxis

Set objectvar = {[New] objectexpressie | Nothing}

De syntaxis van de instructie Set bevat de volgende onderdelen:

Onderdeel	Beschrijving
objectvar	Vereist. De naam van de variabele of eigenschap. Voor deze naam gelden de standaardregels voor naamgeving van een variabele.
New	Optioneel. New wordt gewoonlijk gebruikt bij het declareren zodat objecten impliciet kunnen worden gemaakt. Als New wordt gebruikt in combinatie met Set, wordt een nieuwe klasse gemaakt. Als objectvar een verwijzing bevat naar een object, wordt die verwijzing vrijgegeven als de nieuwe verwijzing wordt toegekend. U kunt met het sleutelwoord New geen variabelen van een intrinsiek gegevenstype maken of afhankelijke objecten declareren.
objectexpressie	Vereist. Een expressie die bestaat uit de naam van een object, een andere gedeclareerde variabele met hetzelfde objecttype, of een functie of methode die een object van hetzelfde objecttype als resultaat geeft.
Nothing	Optioneel. Verbreekt de koppeling van objectvar met een bepaald object. Als u de waarde Nothing aan objectvar toewijst, worden alle systeem- en geheugenbronnen die waren gekoppeld aan het object waarnaar eerder is verwezen, opgeheven als geen andere variabele naar het object verwijst.
Notities

Het onderdeel objectvar is alleen geldig als het objecttype consistent is met het object dat aan de variabele wordt toegewezen.

De instructies Dim, Private, Public, ReDim en Static declareren alleen een variabele die naar een object verwijst. Er wordt pas naar een object verwezen nadat u met de instructie Set een bepaald object hebt toegewezen.

In het volgende voorbeeld ziet u hoe Dim wordt gebruikt om een matrix te declareren met het type Form1. Het type Form1 komt nog niet voor. Set wijst vervolgens verwijzingen naar de nieuwe Form1 toe aan de variabele myChildForms. Met deze programmacode kunt u bijvoorbeeld subformulieren maken in een MDI-toepassing.

Dim myChildForms(1 to 4) As Form1

Set myChildForms(1) = New Form1

Set myChildForms(2) = New Form1

Set myChildForms(3) = New Form1

Set myChildForms(4) = New Form1

In het algemeen gebruikt u Set om een objectverwijzing aan een variabele toe te wijzen. Er wordt geen kopie van het object gemaakt voor die variabele. In plaats daarvan wordt een verwijzing naar het object gemaakt. Meerdere objectvariabelen kunnen naar hetzelfde object verwijzen. Omdat deze variabelen verwijzingen naar het object zijn en geen kopieën daarvan, heeft een wijziging van het object gevolgen voor alle variabelen die naar het object verwijzen. Als u het sleutelwoord New echter opneemt in de instructie Set, wordt het object gemaakt.


Static, instructie

Gebruik deze instructie op procedureniveau om variabelen te declareren en geheugenruimte toe te wijzen. De variabelen die u declareert met de instructie Static, behouden hun waarde zolang de programmacode wordt uitgevoerd.

Syntaxis

Static varnaam[([subscripts])] [As [New] type] [, varnaam[([subscripts])] [As [New] type]] . . .

De syntaxis van de instructie Static bevat de volgende onderdelen:

Onderdeel	Beschrijving
Varnaam	Vereist. De naam van de variabele. Voor deze naam gelden de standaardregels voor naamgeving van een variabele.
subscripts	Optioneel. Dimensies van een matrixvariabele. U kunt maximaal 60 meervoudige dimensies declareren. Voor het argument subscripts geldt de volgende syntaxis: [laagste To] hoogste [,[laagste To] hoogste] . . . Als u de benedengrens van een matrix niet expliciet opgeeft met laagste, wordt deze bepaald door de instructie Option Base. De benedengrens is nul als u de instructie Option Base niet hebt opgegeven.
New	Optioneel. Een sleutelwoord waarmee u impliciet een object kunt maken. Als u New gebruikt bij het declareren van de objectvariabele, wordt een nieuw object gemaakt met de eerste verwijzing naar het object, zodat u niet de instructie Set nodig hebt om een objectverwijzing toe te wijzen. U kunt met het sleutelwoord New geen variabelen van een intrinsiek gegevenstype maken of afhankelijke objecten declareren.
type	Optioneel. Het gegevenstype van de variabele. Toegestane typen zijn: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (momenteel niet ondersteund), Date, String, (voor tekenreeksen met variabele lengte), String * lengte (voor tekenreeksen met vaste lengte), Object, Variant, een door de gebruiker gedefinieerd type of een objecttype. Gebruik voor elke variabele die u declareert een aparte component As type.
Notities

Zodra de programmacode van de module is gestart, behouden variabelen die zijn gedeclareerd met de instructie Static, hun waarde totdat de module opnieuw wordt ingesteld of gestart. In klassenmodules behouden variabelen die met de instructie Static zijn gedeclareerd hun waarde in elk klassenexemplaar totdat het exemplaar wordt vernietigd. In formuliermodules behouden statische variabelen hun waarde totdat het formulier wordt gesloten. Gebruik de instructie Static in niet-statische procedures om statische variabelen expliciet te declareren, die alleen binnen de procedure aanwezig zijn, maar waarvan de levensduur hetzelfde is als de module waarin de procedure is bepaald.

U gebruikt een instructie Static binnen een procedure om de gegevenstypen van een variabele te declareren die de waarde behoudt tussen procedureoproepen. Met de volgende instructie declareert u bijvoorbeeld een matrix van vaste grootte met integers:

Static EmployeeNumber(200) As Integer

De volgende instructie declareert een variabele voor een nieuw werkblad:

Static X As New Worksheet

Als het sleutelwoord New niet wordt gebruikt bij het declareren van een objectvariabele, moet de variabele die verwijst naar het object, worden toegewezen aan een bestaand object met behulp van de instructie Set voordat deze kan worden gebruikt. Totdat de gedeclareerde objectvariabele is toegewezen aan een object, heeft deze de speciale waarde Nothing, waarmee wordt aangegeven dat de variabele niet verwijst naar een bepaald object. Als u het sleutelwoord New gebruikt in de declaratie, wordt een versie van het object gemaakt voor de eerste verwijzing naar het object.

Als u geen gegevens- of objecttype opgeeft en er geen instructie Deftype in de module is opgenomen, is de variabele standaard van het type Variant.

Opmerking   De instructie Static en het sleutelwoord Static lijken op elkaar maar worden om verschillende redenen gebruikt. Als u een procedure declareert met het sleutelwoord Static (bijvoorbeeld Static Sub verkopen ()), wordt de geheugenruimte voor alle lokale variabelen binnen de procedure één keer toegewezen en blijft de waarde van de variabelen behouden gedurende de tijd dat de programmacode wordt uitgevoerd. Voor niet-statische procedures wordt geheugenruimte voor variabelen telkens toegewezen wanneer een procedure wordt opgeroepen, en wordt geheugenruimte vrijgegeven wanneer de procedure wordt afgesloten. De instructie Static wordt gebruikt voor het declareren van specifieke variabelen binnen niet-statische procedures om de waarde van de variabelen te behouden zolang het programma wordt uitgevoerd.

Variabelen worden als volgt geïnitialiseerd: een numerieke variabele wordt geïnitialiseerd op 0, een tekenreeks met variabele lengte wordt geïnitialiseerd op een tekenreeks met een lengte nul ("") en een tekenreeks met vaste lengte wordt opgevuld met nullen. Een variabele Variant wordt geïnitialiseerd op Empty. Elk onderdeel van een door de gebruiker gedefinieerde variabele wordt geïnitialiseerd alsof het een afzonderlijke variabele betreft.

Opmerking   Als u de instructie Static in een procedure gebruikt, plaatst u deze instructie aan het begin van een procedure die een instructie Dim bevat.


Sub, instructie

Declareert de naam, argumenten en programmacode waaruit het hoofddeel van de procedure Sub is opgebouwd.

Syntaxis

[Private | Public | Friend] [Static] Sub naam [(argumenten)]
[instructies]
[Exit Sub]
[instructies]

End Sub

De syntaxis van de instructie Sub bevat de volgende onderdelen:

Onderdeel	Beschrijving
Public	Optioneel. Geeft aan dat de procedure Sub toegankelijk is voor alle andere procedures in alle modules. Als u dit argument gebruikt in een persoonlijke module (een module met een instructie Option Private), is de procedure niet beschikbaar buiten het project.
Private	Optioneel. Geeft aan dat de procedure Sub alleen toegankelijk is voor andere procedures in de module waarin deze werd gedeclareerd.
Friend	Optioneel. Wordt alleen gebruikt in een klassenmodule. Geeft aan dat de procedure Sub tijdens het gehele project zichtbaar is, maar niet voor een controller van een exemplaar van een object.
Static	Optioneel. Geeft aan dat de lokale variabelen van de procedure Sub tussen oproepen worden opgeslagen. Het onderdeel Static is niet van invloed op variabelen die buiten de procedure Sub zijn gedeclareerd, zelfs niet als deze in dezelfde procedure worden gebruikt.
naam	Vereist. De naam van de procedure Sub. Voor deze naam gelden de standaardregels voor naamgeving van een variabele.
argumenten	Optioneel. Een lijst met variabelen die argumenten aangeven die worden doorgegeven aan de procedure Sub wanneer deze wordt opgeroepen. Meerdere variabelen worden door komma's van elkaar gescheiden.
instructies	Optioneel. Een groep instructies die wordt uitgevoerd in het hoofddeel van de procedure Sub.
Het argument argumenten bevat de volgende syntaxis en onderdelen:

[Optional] [ByVal | ByRef] [ParamArray] varnaam[( )] [As type] [=standaardwaarde]

Onderdeel	Beschrijving
Optional	Optioneel. Een sleutelwoord dat aangeeft dat een argument niet is vereist. Als u dit sleutelwoord gebruikt, moeten alle volgende argumenten in argumenten ook optioneel zijn en worden gedeclareerd met het sleutelwoord Optional. U kunt Optional niet gebruiken voor een argument als u gebruik maakt van het argument ParamArray.
ByVal	Optioneel. Geeft aan dat het argument via een waarde wordt doorgegeven.
ByRef	Optioneel. Geeft aan dat het argument via een verwijzing wordt doorgegeven. De standaardinstelling in Visual Basic is ByRef.
ParamArray	Optioneel. Wordt alleen gebruikt als laatste argument in argumenten om aan te geven dat het laatste argument een Optional matrix is met onderdelen van het type Variant. Met het sleutelwoord ParamArray kunt u een willekeurig aantal argumenten opnemen. U mag ParamArray niet gebruiken met de sleutelwoorden ByVal, ByRef of Optional.
Varnaam	Vereist. De naam van de variabele die het argument aangeeft dat aan de procedure wordt doorgegeven. Hiervoor gelden de standaardregels voor naamgeving van een variabele.
type	Optioneel. Het gegevenstype van het argument dat wordt doorgegeven aan de procedure. De volgende typen zijn geldig: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (momenteel niet ondersteund), Date, String (uitsluitend met variabele lengte), Object, Variant of een specifiek objecttype. Als de parameter niet Optional is, mag ook een door de gebruiker gedefinieerd type worden opgegeven.
standaardwaarde	Optioneel. Een willekeurige constante of constantenexpressie. Alleen geldig voor Optional-parameters. Als het type een Object is, kan een expliciete standaardwaarde alleen Nothing zijn.
Notities

Als het argument Public, Private of Friend niet expliciet is opgegeven, is Public de standaardinstelling voor de procedures Sub. Als u het argument Static niet gebruikt, worden de waarden van lokale variabelen niet bewaard tussen de verschillende procedureoproepen. Het sleutelwoord Friend kan alleen worden gebruikt in klassenmodules. Maar procedures kunnen in elke module van een project toegang tot procedures Friend krijgen. Een procedure Friend verschijnt niet in de typebibliotheek van de bijbehorende bovenliggende klasse en kan ook niet laat gebonden zijn.

Let op   Subprocedures kunnen recursief zijn, dat wil zeggen dat ze zichzelf kunnen oproepen om een bepaalde taak uit te voeren. Recursie kan echter stackoverloop veroorzaken. Het sleutelwoord Static wordt meestal niet gebruikt in recursieve subprocedures.

Alle uitvoerbare programmacode moet in de procedure worden opgenomen. U kunt een procedure Sub niet definiëren binnen een andere procedure Sub, Function of Property.

De sleutelwoorden Exit Sub zorgen ervoor dat de procedure Sub onmiddellijk wordt verlaten. De uitvoering van het programma gaat verder met de instructie die volgt op de instructie waarmee de procedure Sub werd opgeroepen. U kunt een willekeurig aantal instructies Exit Sub opnemen op elke plaats in een procedure Sub.

Evenals de procedure Function is de procedure Sub een afzonderlijke procedure waarvoor u argumenten kunt opgeven, instructies kunt uitvoeren of de waarden van de argumenten kunt wijzigen. In tegenstelling tot de procedure Function, die een resultaatwaarde geeft, kunt u een procedure Sub niet in een expressie gebruiken.

U roept een procedure Sub aan met de procedurenaam gevolgd door de argumentenlijst. Zie de instructie Call voor meer informatie over het oproepen van een procedure Sub.

De variabelen die in de procedure Sub worden gebruikt, vallen uiteen in twee categorieën: variabelen die expliciet binnen een procedure worden gedeclareerd, en variabelen waarbij dit niet het geval is. Variabelen die expliciet worden gedeclareerd in een procedure (met Dim of een equivalent), zijn altijd lokale variabelen van de procedure. Andere variabelen die wel worden gebruikt maar niet expliciet in een procedure zijn gedeclareerd, zijn ook lokaal tenzij deze op een hoger niveau buiten de procedure zijn gedeclareerd.

Let op   Een procedure kan een variabele gebruiken die niet expliciet in de procedure is gedeclareerd. Er kan echter een naamconflict optreden als u eerder een argument met dezelfde naam hebt gedefinieerd op moduleniveau. Als de procedure naar een niet-gedeclareerde variabele verwijst met dezelfde naam als een andere constante, variabele of procedure, wordt verondersteld dat uw procedure verwijst naar de naam die wordt gebruikt op moduleniveau. Declareer variabelen expliciet om dit conflict te voorkomen. U kunt de instructie Option Explicit gebruiken om het expliciet declareren van variabelen te forceren.

Opmerking   U kunt GoSub, GoTo of Return niet gebruiken om een procedure Sub te openen of af te sluiten.


Type, instructie

Gebruik deze instructie op moduleniveau om een door de gebruiker gedefinieerd gegevenstype te definiëren dat uit een of meer onderdelen bestaat.

Syntaxis

[Private | Public] Type varnaam
 onderdeelnaam [([subscripts])] As type
[onderdeelnaam [([subscripts])] As type]
. . .

End Type

De syntaxis van de instructie Type bevat de volgende onderdelen:

Onderdeel	Beschrijving
Public	Optioneel. Hiermee declareert u door de gebruiker gedefinieerde typen die beschikbaar zijn voor alle procedures in alle modules in alle projecten.
Private	Optioneel. Hiermee declareert u door de gebruiker gedefinieerde gegevenstypen die alleen beschikbaar zijn in de module waarin deze zijn gedeclareerd.
Varnaam	Vereist. De naam van de variabele. Voor deze naam gelden de standaardregels voor naamgeving van een variabele.
onderdeelnaam	Vereist. De naam van een onderdeel van een door de gebruiker gedefinieerd type. Voor onderdeelnamen gelden eveneens de standaardregels voor naamgeving van variabelen, behalve dat ook sleutelwoorden kunnen worden gebruikt.
subscripts	Als u de benedengrens van een matrix niet expliciet opgeeft met laagste, wordt deze bepaald door de instructie Option Base. De benedengrens is nul als u de instructie Option Base niet hebt opgegeven.
type	Vereist. Het gegevenstype van de variabele. Toegestane typen zijn: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (momenteel niet ondersteund), Date, String (voor tekenreeksen met variabele lengte), String * lengte (voor tekenreeksen met vaste lengte), Object, Variant, een door de gebruiker gedefinieerd type of een objecttype.
Notities

U kunt de instructie Type alleen op moduleniveau gebruiken. Nadat u met de instructie Type een door de gebruiker gedefinieerd type hebt gedeclareerd, kunt u op een willekeurige plaats binnen het bereik van de declaratie een variabele van dit type declareren. Gebruik Dim, Private, Public, ReDim of Static om een variabele van een door de gebruiker gedefinieerd type te declareren.

In standaardmodules en klassenmodules zijn door de gebruiker gedefinieerde typen standaard openbaar. U kunt deze instelling wijzigen met het sleutelwoord Private.

U kunt geen regelnummers en regelnamen opnemen in blokken met Type...End Type.

Door de gebruiker gedefinieerde gegevenstypen worden vaak samen gebruikt met gegevensrecords, die meestal bestaan uit een aantal gekoppelde onderdelen van verschillende gegevenstypen.

In het volgende voorbeeld kunt u zien hoe matrices met vaste grootte worden gebruikt in een door de gebruiker gedefinieerd type:

Type StateData

CityCode (1 To 100) As Integer	' Declare a static array.

County As String * 30

End Type

Dim Amsterdam(1 To 100) As StateData

In het voorgaande voorbeeld bevat LandGegevens de statische matrix PostCode, en heeft de record Amsterdam dezelfde structuur als LandGegevens.

Wanneer u een matrix met vaste lengte declareert in een door de gebruiker gedefinieerd type, dient u de dimensies van de matrix te declareren met numerieke letterlijke waarden of constanten en niet met variabelen.


UBound, functie

Geeft als resultaat een Long-waarde met het grootst mogelijke subscript voor de aangegeven dimensie van een matrix.

Syntaxis

UBound(matrixnaam[, dimensie])

De syntaxis van de functie UBound bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
matrixnaam	Vereist. De naam van de matrixvariabele. Voor deze naam gelden de standaardregels voor naamgeving van een variabele.
dimensie	Optioneel; Variant (Long). Een geheel getal dat aangeeft van welke dimensie de bovengrens als resultaat wordt gegeven. Gebruik 1 voor de eerste dimensie, 2 voor de tweede, enzovoort. Als u dimensie weglaat, wordt de waarde 1 verondersteld.
Notities

De functie UBound wordt samen met de functie Lbound gebruikt om de grootte van een matrix te bepalen. Gebruik de functie LBound om de onderste limiet van een matrixdimensie te bepalen.

UBound geeft de waarden die in de onderstaande tabel worden weergegeven voor een matrix met de volgende dimensies:

Dim A(1 To 100, 0 To 3, -3 To 4)

Instructie	Resultaatwaarde
UBound(A, 1)	100
UBound(A, 2)	3
UBound(A, 3)	4


Voorbeeld van de functie Array

Dit voorbeeld maakt gebruik van de functie Array om een Variant te geven die een matrix bevat.

Dim MyWeek, MyDay

MyWeek = Array("Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo")

' Return values assume lower bound set to 1 (using Option Base

' statement).

MyDay = MyWeek(2)	' MyDay contains "Di".

MyDay = MyWeek(4)	' MyDay contains "Do".


Voorbeeld van de instructie Const

Dit voorbeeld maakt gebruik van de instructie Const om constanten te declareren voor gebruik in plaats van letterlijke waarden. Constanten Public worden gedeclareerd in het algemene gedeelte van een standaardmodule, niet van een klassenmodule. Constanten Private worden in het algemene gedeelte van elk moduletype gedeclareerd.

' Constants are Private by default.

Const MyVar = 459

' Declare Public constant.

Public Const MyString = "HELP"

' Declare Private Integer constant.

Private Const MyInt As Integer = 5

' Declare multiple constants on same line.

Const MyStr = "Hallo", MyDouble As Double = 3.4567


Voorbeeld van de functie CreateObject

Dit voorbeeld maakt gebruik van de functie CreateObject om een verwijzing (xlApp) naar Microsoft Excel in te stellen. Het maakt gebruik van de verwijzing om toegang te krijgen tot de eigenschap Visible van Microsoft Excel en maakt vervolgens gebruik van de methode Quit van Microsoft Excel om de toepassing te sluiten. Ten slotte wordt de verwijzing zelf vrijgegeven.

Dim xlApp As Object	' Declare variable to hold the reference.

Set xlApp = CreateObject("Excel.Application")

' You may have to set Visible property to True

' if you want to see the application.

xlApp.Visible = True

' Use xlApp to access Microsoft Excel's

' other objects.

xlApp.Quit	' When you finish, use the Quit method to close

Set xlApp = Nothing	' the application, then release the reference.


Voorbeeld van de instructie Declare

Dit voorbeeld laat zien hoe de instructie Declare op het moduleniveau van een standaardmodule wordt gebruikt om een verwijzing naar een externe procedure in een DLL (Dynamic Link Library) te declareren. U kunt de instructies Declare in klassenmodules plaatsen als de instructies Declare Private zijn.

' Bij Microsoft Windows (16-bit):

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

' Assume SomeBeep is an alias for the procedure name.

Declare Sub MessageBeep Lib "Gebruiker" Alias "Pieptoon"(ByVal N As Integer)

' Use an ordinal in the Alias clause to call GetWinFlags.

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

' In 32-bit Microsoft Windows systems, specify the library USER32.DLL,

' rather than USER.DLL. You can use conditional compilation to write

' code that can run on either Win32 or Win16.

#If Win32 Then

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

#Else

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

#End If


Voorbeeld van de instructie Deftype

Dit voorbeeld laat diverse manier zien waarop de instructies van het Deftype kunnen worden gebruikt om standaardgegevenstypen van variabelen en functieprocedures in te stellen waarvan de namen beginnen met gespecificeerde tekens. Het standaardgegevenstype kan alleen tijdelijk worden opgeheven met behulp van een expliciete opdracht via de instructie Dim. Instructies van het Deftype kunnen alleen op moduleniveau worden gebruikt (dat wil zeggen, niet binnen procedures).

' Variable names beginning with A through K default to Integer.

DefInt A-K

' Variable names beginning with L through Z default to String.

DefStr L-Z

CalcVar = 4	' Initialize Integer.

StringVar = "Hallo allemaal"	' Initialize String.

AnyVar = "Hallo" 	' Causes "Typen komen niet overeen" error.

Dim Calc As Double	' Explicitly set the type to Double.

Calc = 2.3455	' Assign a Double.

' Deftype statements also apply to function procedures.

CalcNum = ATestFunction(4)	' Call user-defined function.

' ATestFunction function procedure definition.

Function ATestFunction(INumber)

ATestFunction = INumber * 2	' Return value is an integer.

End Function


Voorbeeld van de instructie Dim

In dit voorbeeld wordt de instructie Dim gebruikt om variabelen te declareren. U ziet ook hoe de instructie Dim wordt gebruikt om matrices te declareren. De standaardbenedengrens voor matrix-subscripts is 0 en kan op moduleniveau anders worden ingesteld met behulp van de instructie Option Base.

' AnyValue and MyValue are declared as Variant by default with values

' set to Empty.

Dim AnyValue, MyValue

' Explicitly declare a variable of type Integer.

Dim Number As Integer

' Multiple declarations on a single line. AnotherVar is of type Variant

' because its type is omitted.

Dim AnotherVar, Choice As Boolean, BirthDate As Date

' DayArray is an array of Variants with 51 elements indexed, from

' 0 thru 50, assuming Option Base is set to 0 (default) for

' the current module.

Dim DayArray(50)

' Matrix is a two-dimensional array of integers.

Dim Matrix(3, 4) As Integer

' MyMatrix is a three-dimensional array of doubles with explicit

' bounds.

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

' BirthDay is an array of dates with indexes from 1 to 10.

Dim BirthDay(1 To 10) As Date

' MyArray is a dynamic array of variants.

Dim MyArray()


Voorbeeld van de instructie Enum

In het volgende voorbeeld wordt de instructie Enum gebruikt om een collectie benoemde constanten te definiëren. In dit geval zijn de constanten kleuren die u kunt kiezen om formulieren te ontwerpen voor het invoeren van gegevens in een database.

Public Enum InterfaceColors

icMistyRose = &HE1E4FF&

icSlateGray = &H908070&

icDodgerBlue = &HFF901E&

icDeepSkyBlue = &HFFBF00&

icSpringGreen = &H7FFF00&

icForestGreen = &H228B22&

icGoldenrod = &H20A5DA&

icFirebrick = &H2222B2&

End Enum


Voorbeeld van de instructie Erase

Dit voorbeeld maakt gebruik van de instructie Erase om de onderdelen van matrices met vaste lengte opnieuw te initialiseren en de toewijzing van geheugenruimte van dynamische matrices op te heffen.

' Declare array variables.

Dim NumArray(10) As Integer	' Integer array.

Dim StrVarArray(10) As String	' Variable-string array.

Dim StrFixArray(10) As String * 10	' Fixed-string array.

Dim VarArray(10) As Variant	' Variant array.

Dim DynamicArray() As Integer	' Dynamic array.

ReDim DynamicArray(10)	' Allocate storage space.

Erase NumArray	' Each element set to 0.

Erase StrVarArray	' Each element set to zero-length

' string ("").

Erase StrFixArray	' Each element set to 0.

Erase VarArray	' Each element set to Empty.

Erase DynamicArray	' Free memory used by array.


Voorbeeld van de instructie Event

Het volgende voorbeeld gebruikt gebeurtenissen om seconden af te tellen tijdens een demonstratie van de snelste wedstrijd over 100 meter. De programmacode illustreert alle methoden, eigenschappen en instructies die met de gebeurtenissen te maken hebben, inclusief de instructie Event.

De klasse die een gebeurtenis oproept, is de gebeurtenisbron en de klassen die de gebeurtenis implementeren, zijn de signaalopvangers. Een gebeurtenisbron kan meerdere signaalopvangers hebben voor de gebeurtenissen die door die bron worden gegenereerd. Als de klasse de gebeurtenis oproept, wordt die gebeurtenis voor elke klasse opgeroepen die gebeurtenissen voor dat exemplaar van het object ontvangt.

Het voorbeeld maakt gebruik van een formulier (Form1) met een knop (Command1), een label (Label1) en twee tekstvakken (Text1 en Text2). Als u op de knop klikt, verschijnt in het eerste tekstvak "Vanaf nu" en worden in het tweede tekstvak seconden geteld. Als de tijd (9,84 seconden) helemaal is verstreken, verschijnt in het eerste tekstvak "Tot nu" en staat de secondenteller op "9,84"

De programmacode voor Formulier1 geeft de begin- en eindstatus van het formulier op. De code bevat ook de programmacode die wordt uitgevoerd als gebeurtenissen worden opgeroepen.

Option Explicit

Private WithEvents mText As TimerState

Private Sub Opdracht1_Click()

Text1.Text = "Vanaf nu"

    Text1.Refresh

    Text2.Text = "0"

    Text2.Refresh

Call mText.TimerTask(9,84)

End Sub

Private Sub Form_Load()

    Opdracht1.Caption = "Klik om de timer te starten"

    Text1.Text = ""

    Text2.Text = ""

    Label1.Caption = "De snelste 100 meter duurde maar zo lang:"

    Set mText = New TimerState

    End Sub

Private Sub mText_ChangeText()

    Text1.Text = "Tot nu"

    Text2.Text = "9,84"

End Sub

Private Sub mText_UpdateTime(ByVal dblJump As Double)

    Text2.Text = Str(Format(dblJump, "0"))

    DoEvents

End Sub

De resterende programmacode staat in een klassenmodule met de naam TimerState. De instructies Event declareren de procedures die worden gestart als gebeurtenissen worden opgeroepen.

Option Explicit

Public Event UpdateTime(ByVal dblJump As Double)

Public Event ChangeText()

Public Sub TimerTask(ByVal Duration As Double)

    Dim dblStart As Double

    Dim dblSecond As Double

    Dim dblSoFar As Double

    dblStart = Timer

    dblSoFar = dblStart

    Do While Timer < dblStart + Duration

        If Timer - dblSoFar >= 1 Then

      dblSoFar = dblSoFar + 1

      RaiseEvent UpdateTime(Timer - dblStart)

        End If

    Loop

    RaiseEvent ChangeText

End Sub


Voorbeeld van de instructie Function

Dit voorbeeld maakt gebruik van de instructie Function om de naam, argumenten en programmacode die het hoofddeel van de procedure Function vormen, te declareren. Het laatste voorbeeld maakt gebruik van harde, geïnitialiseerde Optional-argumenten.

' The following user-defined function returns the square root of the

' argument passed to it.

Function CalculateSquareRoot(NumberArg As Double) As Double

If NumberArg < 0 Then	' Evaluate argument.

Exit Function	' Exit to calling procedure.

Else

CalculateSquareRoot = Sqr(NumberArg)	' Return square root.

End If

End Function

Met behulp van het sleutelwoord ParamArray kan een functie een variabel aantal argumenten accepteren. In de volgende definitie wordt FirstArg als een waarde doorgegeven.

Function CalcSum(ByVal FirstArg As Integer, ParamArray OtherArgs())

Dim ReturnValue

' If the function is invoked as follows:

ReturnValue = CalcSum(4, 3 ,2 ,1)

' Local variables are assigned the following values: FirstArg = 4,

' OtherArgs(1) = 3, OtherArgs(2) = 2, and so on, assuming default

' lower bound for arrays = 1.

Optional-argumenten kunnen andere standaardwaarden en -typen hebben dan Variant.

' If a function's arguments are defined as follows:

Function MyFunc(MyStr As String, Optional MyArg1 As _ Integer = 5, Optional MyArg2 = "Desiree")

Dim RetVal

' The function can be invoked as follows:

RetVal = MyFunc("Hallo", 2, "wereld")	' All 3 arguments supplied.

RetVal = MyFunc("Test", , 5)	' Second argument omitted.

' Arguments one and three using named-arguments.

RetVal = MyFunc(MyStr:="Hallo ", MyArg1:=7)


Voorbeeld van de functie GetObject

Dit voorbeeld maakt gebruik van de functie GetObject om een verwijzing naar een specifiek werkblad van Microsoft Excel (MyXL) te verkrijgen. Het maakt gebruik van de eigenschap Application van het werkblad om Microsoft Excel zichtbaar te maken, te sluiten, enzovoort. Als er gebruik wordt gemaakt van API-oproepen, zoekt de Sub-procedure DetextExcel naar Microsoft Excel. Als dit programma actief is, wordt het in de tabel met actieve objecten ingevoerd.  De eerste oproep van GetObject veroorzaakt een fout als Microsoft Excel nog niet is geactiveerd. In het voorbeeld is de fout er oorzaak van dat de ExcelWasNotRunning-vlag op Waar wordt ingesteld. Bij de tweede oproep van GetObject wordt gespecificeerd dat een bestand wordt geopend Als Microsoft Excel nog niet wordt uitgevoerd, wordt de tweede oproep gestart. Deze geeft als resultaat een verwijzing naar het werkblad dat wordt weergegeven door het opgegeven bestand, mytest.xls. Het bestand moet in de opgegeven locatie staan, anders wordt een automatiseringsfout van Visual Basic gegenereerd. Vervolgens maakt de programmacode zowel Microsoft Excel als het opgegeven werkblad zichtbaar. Ten slotte, als er geen eerdere versie van Microsoft Excel actief was, maakt de programmacode gebruik van de methode Quit van het object Application om Microsoft Excel af te sluiten. Als de toepassing reeds actief was, wordt niet geprobeerd Microsoft Excel af te sluiten. De verwijzing zelf wordt vrijgegeven door deze op Nothing in te stellen.

' Declare necessary API routines:

Declare Function FindWindow Lib "Gebruiker32" Alias _

"FindWindowA" (ByVal lpClassName as String, _

ByVal lpWindowName As Long) As Long

Declare Function SendMessage Lib "Gebruiker32" Alias _

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

ByVal wParam as Long, _

ByVal lParam As Long) As Long

Sub GetExcel()

Dim MyXL As Object	' Variable to hold reference

' to Microsoft Excel.

Dim ExcelWasNotRunning As Boolean	' Flag for final release.

' Test to see if there is a copy of Microsoft Excel already running.

On Error Resume Next	' Defer error trapping.

' Getobject function called without the first argument returns a

' reference to an instance of the application. If the application isn't

' running, an error occurs.

Set MyXL = Getobject(, "Excel.Application")

If Err.Number <> 0 Then ExcelWasNotRunning = True

Err.Clear	' Clear Err object in case error occurred.

' Check for Microsoft Excel. If Microsoft Excel is running,

' enter it into the Running Object table.

DetectExcel

' Set the object variable to reference the file you want to see.

Set MyXL = Getobject("c:\vb4\MIJNTEST.XLS")

' Show Microsoft Excel through its Application property. Dan

' show the actual window containing the file using the Windows

' collection of the MyXL object reference.

MyXL.Application.Visible = True

MyXL.Parent.Windows(1).Visible = True

 Do manipulations of your  file here.

' ...

' If this copy of Microsoft Excel was not running when you

' started, close it using the Application property's Quit method.

' Note that when you try to quit Microsoft Excel, the

' title bar blinks and a message is displayed asking if you

' want to save any loaded files.

If ExcelWasNotRunning = True Then

MyXL.Application.Quit

End IF

Set MyXL = Nothing	' Release reference to the

' application and spreadsheet.

End Sub

Sub DetectExcel()

' Procedure dectects a running Excel and registers it.

Const WM_USER = 1024

Dim hWnd As Long

' If Excel is running this API call returns its handle.

hWnd = FindWindow("XLMAIN", 0)

If hWnd = 0 Then	' 0 means Excel not running.

Exit Sub

Else

' Excel is running so use the SendMessage API

' function to enter it in the Running Object Table.

SendMessage hWnd, WM_USER + 18, 0, 0

End If

End Sub


Voorbeeld van de instructie Implements

In het volgende voorbeeld wordt de instructie Implements gebruikt om een set declaraties beschikbaar te maken voor meerdere klassen. Door de declaraties via de instructie Implements te delen, hoeft geen enkele klasse zelf declaraties te maken.

Veronderstel dat er twee formulieren zijn. Het formulier Selectie heeft twee knoppen, Klantgegevens en Leveranciersgegevens. Als de gebruiker naam- en adresgegevens voor een klant of een leverancier wilt typen, klikt deze op de knop Klant of op de knop Leverancier van het formulier Selectie. Vervolgens typt de gebruiker de naam en het adres in het formulier Gegevensinvoer. Het formulier Gegevensinvoer heeft twee tekstvelden: Naam en Adres.

De volgende programmacode voor de gedeelde declaraties bevindt zich in een klasse met de naam PersoonlijkeGegevens:

Public Name As String

Public Address As String

De programmacode die de klantgegevens ondersteunt, bevindt zich in een klassenmodule met de naam Klant:

Implements PersoonlijkeGegevens

Private Property Get PersonalData_Address() As String

PersonalData_Address = "AdresKlant"

End Property

Private Property Let PersonalData_Address(ByVal RHS As String)

'

End Property

Private Property Let PersonalData_Name(ByVal RHS As String)

'

End Property

Private Property Get PersonalData_Name() As String

PersonalData_Address = "NaamKlant"

End Property

De programmacode die de leveranciersgegevens ondersteunt, bevindt zich in een klassenmodule met de naam Leverancier:

Implements PersoonlijkeGegevens

Private Property Get PersonalData_Address() As String

PersonalData_Address = "AdresLeverancier"

End Property

Private Property Let PersonalData_Address(ByVal RHS As String)

'

End Property

Private Property Let PersonalData_Name(ByVal RHS As String)

'

End Property

Private Property Get PersonalData_Name() As String

PersonalData_Address = "NaamLeverancier"

End Property

De volgende programmacode ondersteunt het formulier Selectie:

Private cust As New Customer

Private sup As New Supplier

Private Sub Opdracht1_Click()

Dim frm2 As New Form2

    Set frm2.PD = cust

    frm2.Show 1

End Sub

Private Sub Command2_Click()

Dim frm2 As New Form2

    Set frm2.PD = sup

    frm2.Show 1

End Sub

De volgende programmacode ondersteunt het formulier Gegevensinvoer:

Private m_pd As PersonalData

Private Sub Form_Load()

    With m_pd

        Text1 = .Naam

        Text2 = .Adres

    End With

End Sub

Public Property Set PD(Data As PersonalData)

    Set m_pd = Data

End Property


Voorbeeld van de functie Lbound

Dit voorbeeld maakt gebruik van de functie Lbound om het kleinste beschikbare subscript voor de opgegeven dimensie van een matrix te bepalen. Maak gebruik van de instructie Option Base om de standaardwaarde 0 van het basismatrixsubscript te overschrijven.

Dim Lower

Dim MyArray(1 To 10, 5 To 15, 10 To 20) 	' Declare array variables.

Dim AnyArray(10)

Lower = Lbound(MyArray, 1) 	' Returns 1.

Lower = Lbound(MyArray, 3)	' Returns 10.

Lower = Lbound(AnyArray)	' Returns 0 or 1, depending on

' setting of Option Base.


Voorbeeld van de instructie Let

Dit voorbeeld wijst de waarde van expressies toe aan een variabele met behulp van de expliciete instructie Let.

Dim MyStr, MyInt

' The following variable assignments use the Let statement.

Let MyStr = "Hallo allemaal"

Let MyInt = 5

Hieronder staan dezelfde toewijzingen zonder de instructie Let.

Dim MyStr, MyInt

MyStr = "Hallo allemaal"

MyInt = 5


Voorbeeld van de instructie Option Base

Dit voorbeeld maakt gebruik van de instructie Option Base om de waarde 0 van de standaardbenedengrens voor het matrixsubscript te overschrijven. De functie LBound geeft het kleinste beschikbare subscript voor de opgegeven dimensie van een matrix. De instructie Option Base wordt alleen op moduleniveau gebruikt.

Option base 1	' Set default array subscripts to 1.

Dim Lower

Dim MyArray(20), TwoDArray(3, 4)	' Declare array variables.

Dim ZeroArray(0 To 5)	' Override default base subscript.

' Use LBound function to test lower bounds of arrays.

Lower = LBound(MyArray)	' Returns 1.

Lower = LBound(TwoDArray, 2)	' Returns 1.

Lower = LBound(ZeroArray)	' Returns 0.


Voorbeeld van de instructie Option Compare

Dit voorbeeld maakt gebruik van de instructie Option Compare om de standaardmethode voor tekenreeksvergelijkingen in te stellen. De instructie Option Compare wordt alleen op moduleniveau gebruikt.

' Set the string comparison method to Binary.

Option compare Binary 	' That is, "AAA" is less than "aaa".

' Set the string comparison method to Text.

Option compare Text	' That is, "AAA" is equal to "aaa".


Voorbeeld van de instructie Option Explicit

Dit voorbeeld maakt gebruik van de instructie Option Explicit om expliciete declaratie van alle variabelen af te dwingen. Als u probeert een niet-gedeclareerde variabelennaam te gebruiken, treedt er een fout op tijdens de compilatie. De instructie Option Explicit wordt alleen op moduleniveau gebruikt.

Option explicit	' Force explicit variable declaration.

Dim MyVar	' Declare variable.

MyInt = 10	' Undeclared variable generates error.

MyVar = 10	' Declared variable does not generate error.


Voorbeeld van de instructie Option Private

Dit voorbeeld demonstreert de instructie Option Private, die op moduleniveau wordt gebruikt om aan te geven dat een volledige module het type Private heeft. Met Option Private Module zijn onderdelen op moduleniveau die niet als Private zijn gedeclareerd, nog steeds beschikbaar voor andere modules in het project, maar niet voor andere projecten of toepassingen.

Option private Module	' Indicates that module is private.


Voorbeeld van de instructie Private

Dit voorbeeld laat zien hoe de instructie Private wordt gebruikt om de variabelen als private te declareren, waardoor de variabelen alleen beschikbaar zijn voor de module waarin ze zijn gedeclareerd.

Private Number As Integer	' Private Integer variable.

Private NameArray(1 To 5) As String	' Private array variable.

' Multiple declarations, two Variants and one Integer, all Private.

Private MyVar, YourVar, ThisVar As Integer


Voorbeeld van de instructie Property Get

Dit voorbeeld maakt gebruik van de instructie Property Get om een eigenschapprocedure te definiëren die de waarde van een eigenschap ophaalt. De eigenschap identificeert de huidige kleur van een pen als een tekenreeks.

Dim CurrentColor As Integer

Const BLACK = 0, RED = 1, GREEN = 2, BLUE = 3

' Returns the current color of the pen as a string.

Property Get PenColor() As String

Select Case CurrentColor

Case RED

PenColor = "Rood"

Case GREEN

PenColor = "Groen"

Case BLUE

PenColor = "Blauw"

End Select

End Property

' The following code gets the color of the pen

' calling the Property Get procedure.

ColorName = PenColor


Voorbeeld van de instructie Property Let

Dit voorbeeld maakt gebruik van de instructie Property Let om een procedure te definiëren waarmee u een waarde toewijst aan een eigenschap. De eigenschap geeft de penkleur van een tekenpakket aan.

Dim CurrentColor As Integer

Const BLACK = 0, RED = 1, GREEN = 2, BLUE = 3

' Set the pen color property for a Drawing package.

' The module-level variable CurrentColor is set to

' a numeric value that identifies the color used for drawing.

Property Let PenColor(ColorName As String)

Select Case ColorName	' Check color name string.

Case "Rood"

CurrentColor = RED	' Assign value for Red.

Case "Groen"

CurrentColor = GREEN	' Assign value for Green.

Case "Blauw"

CurrentColor = BLUE	' Assign value for Blue.

Case Else

CurrentColor = BLACK	' Assign default value.

End Select

End Property

' The following code sets the PenColor property for a drawing package

' by calling the Property let procedure.

PenColor = "Rood"


Voorbeeld van de instructie Property Set

Dit voorbeeld maakt gebruik van de instructie Property Set om een eigenschapprocedure te definiëren waarmee u een verwijzing naar een object instelt.

' The Pen property may be set to different Pen implementations.

Property Set Pen(P As Object)

Set CurrentPen = P	' Assign Pen to object.

End Property


Voorbeeld van de instructie Public

Dit voorbeeld maakt gebruik van de instructie Public op moduleniveau (algemene gedeelte) van een standaardmodule om variabelen expliciet als public te declareren, waardoor de variabelen beschikbaar zijn voor alle procedures in alle modules in alle toepassingen tenzij Option Private Module actief is.

Public Number As Integer	' Public Integer variable.

Public NameArray(1 To 5) As String	' Public array variable.

' Multiple declarations, two Variants and one Integer, all Public.

Public MyVar, YourVar, ThisVar As Integer


Voorbeeld van de instructie ReDim

Dit voorbeeld maakt gebruik van de instructie ReDim om geheugenruimte (opnieuw) toe te wijzen voor dynamische variabelen voor een matrix. Er wordt vanuit gegaan dat Option Base gelijk is aan 1.

Dim MyArray() As Integer	' Declare dynamic array.

Redim MyArray(5)	' Allocate 5 elements.

For I = 1 To 5	' Loop 5 times.

MyArray(I) = I	' Initialize array.

Next I

De volgende instructie wijzigt de grootte van de matrix en wist de onderdelen.

Redim MyArray(10)	' Resize to 10 elements.

For I = 1 To 10	' Loop 10 times.

MyArray(I) = I	' Initialize array.

Next I

De volgende instructie wijzigt de grootte van de matrix, maar wist geen onderdelen.

Redim Preserve MyArray(15)	' Resize to 15 elements.


Voorbeeld van de instructie Rem

Dit voorbeeld laat de verschillende vormen zien van de instructie Rem, waarmee opmerkingen met uitleg in een programma kunnen worden opgenomen.

Dim MyStr1, MyStr2

MyStr = "Hallo": Rem Opmerking na een instructie gescheiden met een dubbele punt.

MyStr2 = "Dag" 	' Dit is ook een opmerking; een dubbele punt is niet nodig.


Voorbeeld van de instructie Set

Dit voorbeeld maakt gebruik van de instructie Set om objectverwijzingen aan variabelen toe te wijzen. Er wordt vanuit gegaan dat YourObject een geldig object is met de eigenschap Text.

Dim YourObject, MyObject, MyStr

Set MyObject = YourObject	' Wijst objectverwijzing toe.

' MyObject and YourObject refer to the same object.

YourObject.Text = "Hallo allemaal"	' Initialize property.

MyStr = MyObject.Text	' Returns "Hallo allemaal".

' Stop associatie. MyObject no longer refers to YourObject.

Set MyObject = Nothing	' Release the object.


Voorbeeld van de instructie Static

Dit voorbeeld maakt gebruik van de instructie Static om de waarde van een variabele vast te houden zolang de programmacode wordt uitgevoerd.

' Functiedefinitie.

Function KeepTotal(Number)

' Only the variable Accumulate preserves its value between calls.

Static Accumulate

Accumulate = Accumulate + Number

KeepTotal = Accumulate

End Function

' Static functiedefinitie.

Static Function MyFunction(Arg1, Arg2, Arg3)

' All local variables preserve value between function calls.

Accumulate = Arg1 + Arg2 + Arg3

Half = Accumulate / 2

MyFunction = Half

End Function


Voorbeeld van de instructie Sub

Dit voorbeeld maakt gebruik van de instructie Sub om de naam, argumenten en code waaruit het hoofddeel van de procedure Sub is opgebouwd, te definiëren.

' Sub procedure definition.

' Sub procedure with two arguments.

Sub SubComputeArea(Length, TheWidth)

Dim Area As Double	' Declare local variable.

If Length = 0 Or TheWidth = 0 Then

' If either argument = 0.

Exit Sub	' Exit Sub immediately.

End If

Area = Length * TheWidth	' Calculate area of rectangle.

Debug.Print Area	' Print Area to Debug window.

End Sub


Voorbeeld van de instructie Type

Dit voorbeeld maakt gebruik van de instructie Type om een door de gebruiker gedefinieerd gegevenstype te definiëren. De instructie Type wordt alleen op moduleniveau gebruikt. Als deze in een klassenmodule voorkomt, moet de instructie Type worden voorafgegaan door het sleutelwoord Private.

Type EmployeeRecord	' Create user-defined type.

ID As Integer	' Define elements of data type.

Name As String * 20

Address As String * 30

Phone As Long

HireDate As Date

End Type

Sub CreateRecord()

Dim MyRecord As EmployeeRecord	' Declare variable.

' Assignment to EmployeeRecord variable must occur in a procedure.

MyRecord.ID = 12003	' Assign a value to an element.

End Sub


Voorbeeld van de functie UBound

Dit voorbeeld maakt gebruik van de functie UBound om het grootste beschikbare subscript voor de opgegeven dimensie van een matrix te bepalen.

Dim Upper

Dim MyArray(1 To 10, 5 To 15, 10 To 20)	' Declare array variables.

Dim AnyArray(10)

Upper = UBound(MyArray, 1)	' Returns 10.

Upper = UBound(MyArray, 3)	' Returns 20.

Upper = UBound(AnyArray)	' Returns 10.


Voorbeeld van de functie CallByName

Dit voorbeeld maakt gebruik van de functie CallByName om de methode Move van een opdrachtknop op te roepen.

Het voorbeeld maakt ook gebruik van een formulier (Form1) met een knop (Command1) en een label (Label1). Als het formulier wordt geladen, wordt de eigenschap Caption van de label ingesteld op "Move", de naam van de methode die moet worden opgeroepen. Als u op de knop klikt, roept de functie CallByName de methode op om de locatie van de knop te wijzigen.

Option Explicit

Private Sub Form_Load()

Label1.Caption = "Move"	' Name of Move method.

End Sub

Private Sub Opdracht1_Click()

If Command1.Left <> 0 Then

CallByName Opdracht1, Label1.Caption, vbMethod, 0, 0

Else

CallByName Opdracht1, Label1.Caption, vbMethod, 500, 500

End If


As

Het sleutelwoord As wordt in de volgende gevallen gebruikt:

Const, instructie

Declare, instructie

Dim, instructie

Function, instructie

Name, instructie

Open, instructie

Private, instructie

Property Get, instructie

Property Let, instructie

Property Set, instructie

Public, instructie

ReDim, instructie

Static, instructie

Sub, instructie

Type, instructie


Binary

Het sleutelwoord Binary wordt in de volgende gevallen gebruikt:

Open, instructie

Option Compare, instructie


ByRef

Het sleutelwoord ByRef wordt in de volgende gevallen gebruikt:

Call, instructie

Declare, instructie

Function, instructie

Property Get, instructie

Property Let, instructie

Property Set, instructie

Sub, instructie


ByVal

Het sleutelwoord ByVal wordt in de volgende gevallen gebruikt:

Call, instructie

Declare, instructie

Function, instructie

Property Get, instructie

Property Let, instructie

Property Set, instructie

Sub, instructie


Date

Het sleutelwoord Date wordt in de volgende gevallen gebruikt:

Date, gegevenstype

Date, functie

Date, instructie


Else

Het sleutelwoord Else wordt in de volgende gevallen gebruikt:

If...Then...Else, instructie

Select Case, instructie


Error

Het sleutelwoord Error wordt in de volgende gevallen gebruikt:

Error, functie

Error, instructie

On Error, instructie


For

Het sleutelwoord For wordt in de volgende gevallen gebruikt:

For...Next, instructie

For Each...Next, instructie

Open, instructie


Get

Het sleutelwoord Get wordt in de volgende gevallen gebruikt:

Get, instructie

Property Get, instructie


Input

Het sleutelwoord Input wordt in de volgende gevallen gebruikt:

Input, functie

Input #, instructie

Line Input #, instructie

Open, instructie


Is

Het sleutelwoord Is wordt in de volgende gevallen gebruikt:

If...Then...Else, instructie

Is (Operator)

Select Case, instructie


Len

Het sleutelwoord Len wordt in de volgende gevallen gebruikt:

Len, functie

Open, instructie


Let

Het sleutelwoord Let wordt in de volgende gevallen gebruikt:

Let, instructie

Property Let, instructie


Lock

Het sleutelwoord Lock wordt in de volgende gevallen gebruikt:

Lock, Unlock, instructies

Open, instructie


Mid

Het sleutelwoord Mid wordt in de volgende gevallen gebruikt:

Mid, functie

Mid, instructie


New

Het sleutelwoord New wordt in de volgende gevallen gebruikt:

Dim, instructie

Private, instructie

Public, instructie

Set, instructie

Static, instructie


Next

Het sleutelwoord Next wordt in de volgende gevallen gebruikt:

For...Next, instructie

For Each...Next, instructie

On Error, instructie

Resume, instructie


On

Het sleutelwoord On wordt in de volgende gevallen gebruikt:

On Error, instructie

On...GoSub, instructie

On...GoTo, instructie


Option

Het sleutelwoord Option wordt in de volgende gevallen gebruikt:

Option Base, instructie

Option Compare, instructie

Option Explicit, instructie

Option Private, instructie


Optional

Het sleutelwoord Optional wordt in de volgende gevallen gebruikt:

Declare, instructie

Function, instructie

Property Get, instructie

Property Let, instructie

Property Set, instructie

Sub, instructie


ParamArray

Het sleutelwoord ParamArray wordt in de volgende gevallen gebruikt:

Declare, instructie

Function, instructie

Property Get, instructie

Property Let, instructie

Property Set, instructie

Sub, instructie


Print

Het sleutelwoord Print wordt in de volgende gevallen gebruikt:

Print, methode

Print #, instructie


Private

Het sleutelwoord Private wordt in de volgende gevallen gebruikt:

Const, instructie

Declare, instructie

Enum, instructie

Function, instructie

Option Private, instructie

Private, instructie

Property Get, instructie

Property Let, instructie

Property Set, instructie

Sub, instructie

Type, instructie


Property

Het sleutelwoord Property wordt in de volgende gevallen gebruikt:

Property Get, instructie

Property Let, instructie

Property Set, instructie


Public

Het sleutelwoord Public wordt in de volgende gevallen gebruikt:

Const, instructie

Declare, instructie

Enum, instructie

Event, instructie

Function, instructie

Property Get, instructie

Property Let, instructie

Property Set, instructie

Public, instructie

Sub, instructie

Type, instructie


Resume

Het sleutelwoord Resume wordt in de volgende gevallen gebruikt:

On Error, instructie

Resume, instructie


Seek

Het sleutelwoord Seek wordt in de volgende gevallen gebruikt:

Seek, functie

Seek, instructie


Set

Het sleutelwoord Set wordt in de volgende gevallen gebruikt:

Set, instructie

Property Set, instructie


Static

Het sleutelwoord Static wordt in de volgende gevallen gebruikt:

Function, instructie

Property Get, instructie

Property Let, instructie

Property Set, instructie

Static, instructie

Sub, instructie


Step

Het sleutelwoord Step wordt in de volgende gevallen gebruikt:

For...Next, instructie

For Each...Next, instructie


String

Het sleutelwoord String wordt in de volgende gevallen gebruikt:

String, gegevenstype

String, functie


Then

Het sleutelwoord Then wordt in de volgende gevallen gebruikt:

#If...Then...#Else, stuurinstructie

If...Then...Else, instructie


Time

Het sleutelwoord Time wordt in de volgende gevallen gebruikt:

Time, functie

Time, instructie


To

Het sleutelwoord To wordt in de volgende gevallen gebruikt:

Dim, instructie

For...Next, instructie

Lock, Unlock, instructies

Private, instructie

Public, instructie

ReDim, instructie

Select Case, instructie

Static, instructie

Type, instructie


WithEvents

Het sleutelwoord WithEvents wordt in de volgende gevallen gebruikt:

Dim, instructie

Private, instructie

Public, instructie


Typografische conventies voor documenten

In de documentatie bij Visual Basic wordt gebruik gemaakt van de volgende typografische stijlen:

Voorbeelden	Beschrijving
Sub, If, ChDir, Print, True, Debug	Woorden in vet met een hoofdletter duiden op Engelstalige sleutelwoorden.
Setup	Woorden die u zelf moet typen, staan vet afgedrukt.
Object, variabele, argumenten	Cursieve woorden zonder hoofdletters duiden tijdelijke aanduidingen aan voor gegevens die u zelf opgeeft.
Pathname, filenumber	Vette, cursieve woorden in kleine letters duiden op tijdelijke aanduidingen voor argumenten aan waarbij u óf positionele syntaxis óf syntaxis met benoemde argumenten kunt gebruiken.
[expressies]	In de syntaxis zijn onderdelen tussen vierkante haken optioneel.
{While | Until}	In de syntaxis duiden accolades en een verticale streep een verplichte keuze aan tussen twee of meer onderdelen.  U moet een van deze onderdelen kiezen tenzij alle onderdelen ook nog tussen haken staan. Bijvoorbeeld: [{Dit | OfDat}]
ESC, ENTER	Woorden in hoofdletters duiden toetsnamen en toetsenreeksen aan.
ALT+F1, CTRL+R	Een plus (+) tussen toetsnamen duidt een combinatie van toetsen aan. Bijvoorbeeld: ALT+F1 betekent: ‘houd de ALT-toets ingedrukt terwijl u F1 indrukt’.
Conventies in programmacode

In programmacode worden de volgende conventies gebruikt:

Voorbeeldcode	Beschrijving
MyString = "Hallo, wereld!"	Dit lettertype wordt gebruikt voor programmacode, variabelen en foutmeldingen.
' This is a comment.	Een apostrof (') gaat vooraf aan opmerkingen in de programmacode.
MyVar =  "Dit is een " _ &  "voorbeeld" _ & " van het" _ & "  doorlopen" _ & " van code."	Een spatie en een onderstrepingsteken (_) geven aan dat de programmacode op de volgende regel doorloopt.


Voorbeeld van de functie Error

Dit voorbeeld maakt gebruik van de functie Error om foutberichten af te drukken die corresponderen met de opgegeven foutnummers.

Dim ErrorNumber

For ErrorNumber = 61 To 64	' Loop through values 61 - 64.

Debug.Print Error(ErrorNumber)	' Print error to Immediate window.

Next ErrorNumber


Voorbeeld van de instructie Error

Dit voorbeeld maakt gebruik van de instructie Error om foutnummer 11 te simuleren.

On Error Resume Next	' Defer error handling.

Error 11	' Simulate the error "Delen door nul".


Voorbeeld van de instructie On Error

Dit voorbeeld maakt in eerste instantie gebruik van de instructie On Error GoTo om de locatie van een foutafhandelingsroutine binnen een procedure te bepalen. In het voorbeeld wordt foutnummer 55 veroorzaakt door een poging een open bestand te wissen. De fout wordt afgehandeld in de foutafhandelingsroutine en de besturing wordt vervolgens weer overgedragen aan de instructie die de fout veroorzaakte. De instructie On Error GoTo 0 sluit de foutonderschepping af. Vervolgens wordt de instructie On Error Resume Next gebruikt om de foutonderschepping uit te stellen zodat de context van de fout veroorzaakt door de volgende instructie, zeker wordt herkend. Err.Clear wordt gebruikt om de eigenschappen van het object Err te wissen nadat de fout is afgehandeld.

Sub OnErrorStatementDemo()

On Error GoTo FoutAfhandeling	' Enable error-handling routine.

Open "TESTBSTD" For Output As #1	' Open file for output.

Kill "TESTBESTAND"	' Attempt to delete open

' file.

On Error Goto 0	' Turn off error trapping.

On Error Resume Next	' Defer error trapping.

ObjectRef = GetObject("MyWord.Basic")	' Try to start nonexistent

' object, then test for

'Check for likely Automation errors.

If Err.Number = 440 Or Err.Number = 432 Then

' Tell user what happened. Then clear the Err object.

Msg = "Er was een fout bij het openen van het automatiseringsobject!"

MsgBox Msg, , "Uitgestelde fouttest"

Err.Clear	' Clear Err object fields

End If

Exit Sub	' Exit to avoid handler.

FoutAfhandeling:	' Error-handling routine.

Select Case Err.Number	' Evaluate error number.

Case 55	' "Bestand reeds geopend" error.

Close #1	' Close open file.

Case Else

' Handle other situations here...

End Select

Resume	' Resume execution at same line

' that caused the error.

End Sub


Voorbeeld van de instructie Resume

Dit voorbeeld maakt gebruik van de instructie Resume om de foutafhandeling in een procedure te beëindigen en vervolgens de uitvoering te hervatten met de instructie die de fout veroorzaakte. Foutnummer 55 wordt gegenereerd om het gebruik van de instructie Resume te illustreren.

Sub ResumeStatementDemo()

On Error GoTo FoutAfhandeling	' Enable error-handling routine.

Open "TESTBSTD" For Output As #1	' Open file for output.

Kill "TESTBESTAND"	' Attempt to delete open file.

Exit Sub	' Exit Sub to avoid error handler.

FoutAfhandeling:	' Error-handling routine.

Select Case Err.Number	' Evaluate error number.

Case 55	' "Bestand reeds geopend" error.

Close #1	' Close open file.

Case Else

' Handle other situations here....

End Select

Resume	' Resume execution at same line

' that caused the error.

End Sub


Error, functie

Geeft als resultaat het foutbericht voor een bepaald foutnummer.

Syntaxis

Error[(foutnummer)]

Het optionele argument foutnummer kan elk geldig foutnummer zijn. Als foutnummer wel een geldig foutnummer is, maar niet is gedefinieerd, geeft Error als resultaat de tekenreeks “Door gebruiker gedefinieerde fout”. Als foutnummer niet geldig is, treedt een fout op. Als foutnummer wordt weggelaten, wordt het bericht voor de meest recente runtimefout als resultaat gegeven. Als er geen runtimefout is opgetreden of als foutnummer 0 is, geeft Error een tekenreeks zonder gegevens ("") als resultaat.

Notities

Controleer de instellingen van de eigenschappen van het object Err om de meest recente runtimefout te achterhalen. Het resultaat van de functie Error komt overeen met de eigenschap Description van het object Err.


Error, instructie

Simuleert het optreden van een fout.

Syntaxis

Error foutnummer

Het vereiste foutnummer kan een willekeurig geldig foutnummer zijn.

Notities

De instructie Error wordt ondersteund omwille van compatibiliteit met vorige versies. In nieuwe code en met name als u objecten maakt, wijst u de methode Raise toe aan het object Err om runtimefouten te genereren.

Als foutnummer is gedefinieerd, roept de instructie Error de foutafhandelingsroutine op na eerst voor de eigenschappen van het object Err de volgende standaardwaarden te hebben ingesteld:

Eigenschap	Waarde
Number	De waarde die als argument wordt opgegeven voor de instructie Error. Dit kan elk geldig foutnummer zijn.
Source	De naam van het huidige Visual Basic-project.
Beschrijving	Een tekenreeksexpressie die correspondeert met het resultaat van de functie Error voor het opgegeven Number, als die tekenreeks bestaat. Als die tekenreeks niet bestaat, bevat Description een tekenreeks zonder gegevens ("").
HelpFile	Het station, het volledige pad en de bestandsnaam van het Visual Basic Help-bestand
HelpContext	Het Visual Basic Help-context-id voor de fout die overeenkomt met de eigenschap Number.
LastDLLError	Nul
Als geen foutafhandelingsroutine bestaat of is ingeschakeld, wordt een foutbericht gemaakt en weergegeven op basis van de eigenschappen van het object Err.

Opmerking   Niet alle Visual Basic-brontoepassingen kunnen objecten maken. Raadpleeg de documentatie bij uw brontoepassing om te bepalen of deze klassen en objecten kan maken.


On Error, instructie

Schakelt een foutafhandelingsroutine in en geeft de locatie van de routine binnen een procedure aan. U kunt hiermee ook een foutafhandelingsroutine uitschakelen.

Syntaxis

On Error GoTo regel

On Error Resume Next

On Error GoTo 0

De instructie On Error kan een van de volgende vormen hebben:

Instructie	Beschrijving
On Error GoTo regel	Schakelt de foutafhandelingsroutine in die begint bij regel en is opgegeven bij het vereiste argument regel. Dit kan een willekeurige regellabel of willekeurig regelnummer zijn. Als daarna een runtimefout optreedt, gaat de besturing naar regel, waardoor de foutafhandelingsroutine geactiveerd wordt. De opgegeven regel moet in dezelfde procedure staan als de instructie On Error, anders treedt een compiletime-fout op.
On Error Resume Next	Bepaalt dat wanneer een runtimefout optreedt, de besturing wordt overgedragen aan de instructie, direct na de instructie waar de fout is opgetreden. De uitvoering wordt hierdoor voortgezet. Gebruik bij voorkeur deze vorm in plaats van On Error GoTo bij de toegang tot objecten.
On Error GoTo 0	Schakelt alle ingeschakelde foutafhandelingsroutines in de huidige procedure uit.
Notities

Als u geen instructie On Error gebruikt, is elke runtimefout die optreedt, fataal. Er verschijnt een foutbericht en de uitvoering wordt afgebroken.

Een "ingeschakelde" foutafhandelingsroutine is een routine die is ingeschakeld met een instructie On Error. Een "actieve" foutafhandelingsroutine is een ingeschakelde routine die bezig is een fout af te handelen. Als een fout optreedt terwijl een foutafhandelingsroutine actief is (tussen het optreden van de fout en een instructie Resume, Exit Sub, Exit Function of Exit Property), kan de fout niet worden afgehandeld door de foutafhandelingsroutine van de actieve procedure. De besturing keert dan terug naar de oproepprocedure. Als in de oproepprocedure een ingeschakelde foutafhandelingsroutine staat, wordt deze geactiveerd om de fout af te handelen. Als de foutafhandelingsroutine in de oproepprocedure ook actief is, gaat de besturing terug door vorige oproepprocedures totdat een ingeschakelde maar inactieve foutafhandelingsroutine wordt aangetroffen. Als geen inactieve, ingeschakelde foutafhandelingsroutine wordt gevonden, is de fout fataal op het punt waar deze feitelijk is opgetreden. Elke keer als de foutafhandelingsroutine de besturing overdraagt aan de oproepprocedure, wordt die procedure de actieve procedure. Nadat een fout is afgehandeld door een foutafhandelingsroutine in een willekeurige procedure, wordt de uitvoering hervat in de actieve procedure op het punt dat is opgegeven in de instructie Resume.

Opmerking   Een foutafhandelingsroutine is geen procedure Sub of Function. Het is een sectie van de code die is gemarkeerd door een regellabel of regelnummer.

Foutafhandelingsroutines gebruiken de waarde in de eigenschap Number van het object Err om de oorzaak van de fout vast te stellen. De foutafhandelingsroutine moet relevante waarden van eigenschappen van het object Err testen of opslaan voordat een andere fout kan optreden of voordat een procedure die een fout zou kunnen veroorzaken, wordt opgeroepen. De waarden van de eigenschappen van het object Err hebben alleen betrekking op de meest recente fout. Het bijbehorende foutbericht bij Err.Number staat in Err.Description.

On Error Resume Next zorgt dat de uitvoering wordt voortgezet met de instructie direct na de instructie die de runtimefout heeft veroorzaakt, of met de instructie direct na de meest recente oproep uit de procedure waarin de instructie On Error Resume Next staat. Op die manier kan de uitvoering ondanks een runtimefout toch worden voortgezet. U kunt de foutafhandelingsroutine dan in line binnen de procedure maken, in plaats van de besturing over te dragen aan een andere locatie binnen de procedure. Een instructie On Error Resume Next wordt inactief wanneer een andere procedure wordt opgeroepen. Voer daarom in elke opgeroepen routine een instructie On Error Resume Next uit als u in line foutafhandeling binnen die routine wilt.

Opmerking   Gebruik bij voorkeur de constructie On Error Resume Next in plaats van On Error GoTo voor fouten die worden gegenereerd tijdens de toegang tot andere objecten. Door Err na elke interactie met een object te controleren voorkomt u onduidelijkheid over het object waartoe de code toegang zocht toen de fout optrad. U weet dan zeker door welk object de foutcode in Err.Number is geplaatst en door welk object de fout oorspronkelijk is gegenereerd (het object dat is opgegeven in Err.Source).

On Error GoTo 0 schakelt foutafhandeling in de actieve procedure uit. Hiermee wordt dus niet regel 0 ingesteld als het begin van de foutafhandelingscode, ook niet als de procedure een regel met nummer 0 bevat. Zonder een instructie On Error GoTo 0 wordt een foutafhandelingsroutine automatisch uitgeschakeld zodra een procedure wordt afgesloten.

Als u wilt voorkomen dat foutafhandelingscode wordt uitgevoerd terwijl er geen fout is opgetreden, plaatst u een instructie Exit Sub, Exit Function of Exit Property direct voor de foutafhandelingsroutine, zoals in het volgende voorbeeld:

Sub MatrixInitialiseren(Var1, Var2, Var3, Var4)

On Error GoTo FoutAfhandeling

. . .

Exit Sub

FoutAfhandeling:

. . .

Resume Next

End Sub

In dit voorbeeld komt de foutafhandelingscode na de instructie Exit Sub en voor de instructie End Sub, waardoor deze van het normale procedureverloop wordt gescheiden. Dit is slechts één mogelijke oplossing. Foutafhandelingscode kan overal in een procedure worden geplaatst.

Niet-onderschepte fouten in objecten worden aan de besturende toepassingen doorgegeven als het object wordt uitgevoerd als een uitvoerbaar bestand. Binnen de ontwikkelomgeving worden deze alleen aan de besturende toepassing doorgegeven als de betreffende opties hiervan zijn ingesteld. Raadpleeg de documentatie bij uw brontoepassing voor informatie over de opties die moeten worden ingesteld tijdens het opsporen van fouten, hoe deze moeten worden ingesteld en of de brontoepassing klassen kan maken.

Als u een object maakt en dat object verkrijgt toegang tot andere objecten, moet u proberen fouten die door deze objecten onafgehandeld worden doorgegeven, alsnog af te handelen. Als u dergelijke fouten niet kunt afhandelen, dient uw object ze terug te geven aan de oproeper van uw object nadat het eerst de foutcode in Err.Number heeft toegewezen aan een van uw eigen fouten. Geef uw fout op door uw foutcode op te tellen bij de constante vbObjectError. Als uw foutcode bijvoorbeeld 1052 is, wijst u deze als volgt toe:

Err.Number = vbObjectError + 1052

Opmerking   Systeemfouten signaleren tijdens het oproepen van Windows-DLL's (dynamic-link libraries) of Macintosh-programacodebronnen geen uitzonderingssituaties. Ze kunnen dan ook niet worden onderschept met Visual Basic-foutonderschepping. Bij het oproepen van DLL-functies dient u aan de hand van elke resultaatwaarde te controleren of deze geslaagd of mislukt is (volgens de API-specificaties). Bij mislukking controleert u de waarde in de eigenschap LastDLLError van het object ErrLastDLLError geeft altijd nul als resultaat op de Macintosh.


Resume, instructie

Hervat de uitvoering zodra een foutafhandelingsroutine is voltooid.

Syntaxis

Resume [0]

Resume Next

Resume regel

De instructie Resume kan een van de volgende vormen hebben:

Instructie	Beschrijving
Resume	Als de fout is opgetreden in dezelfde procedure als de foutafhandelingsroutine, wordt de uitvoering hervat bij de instructie die de fout heeft veroorzaakt. Als de fout is opgetreden in een opgeroepen procedure, wordt de uitvoering hervat bij de instructie die als laatste een oproep heeft gedaan vanuit de procedure die de foutafhandelingsroutine bevat.
Resume Next	Als de fout is opgetreden in dezelfde procedure als de foutafhandelingsroutine, wordt de uitvoering hervat bij de instructie direct na de instructie die de fout heeft veroorzaakt. Als de fout is opgetreden in een opgeroepen procedure, wordt de uitvoering hervat bij de instructie direct na de instructie die als laatste een oproep heeft gedaan vanuit de procedure die de foutafhandelingsroutine bevat (of de instructie On Error Resume Next).
Resume regel	De uitvoering wordt voortgezet bij het vereiste argument regel. Het argument regel kan een regellabel of regelnummer zijn en moet in dezelfde procedure staan als de foutafhandelingsroutine.
Notities

Als u de instructie Resume buiten een foutafhandelingsroutine gebruikt, treedt een fout op.


Een component #Else moet worden voorafgegaan door een bijbehorende #If

#Else is een voorwaardelijke compileerinstructie. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er is een component #Else ontdekt die niet wordt voorafgegaan door een bijbehorende #If of #ElseIf.

Controleer of een voorafgaande #If is gescheiden van de component #Else door een #End If. Er is maar één component #Else toegestaan in elk #If-blok. Twee opeenvolgende componenten #Else zullen dus deze fout veroorzaken.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


#Else If, #Else of #End If moeten worden voorafgegaan door een bijbehorende component #If

#Else If, #Else en #End If zijn voorwaardelijke compileerinstructies. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er is een component #Else If, #Else of #End If ontdekt die niet wordt voorafgegaan door een bijbehorende component #If.

Ga na of de component #If misschien is gescheiden van de betreffende component door een tussenliggend blok. Controleer ook of de component #If wordt voorafgegaan door een hekje (#). Als de component #If ontbreekt, voegt u deze op de juiste positie toe.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


#ElseIf moet worden voorafgegaan door een bijbehorende #If of #ElseIf en gevolgd door een #ElseIf, #Else of #End If

#ElseIf is een voorwaardelijke compileerinstructie. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Er is een #ElseIf ontdekt die niet wordt voorafgegaan door een #If of #ElseIf.

Plaats een instructie #If voor #ElseIf of verwijder een onjuist geplaatste voorafgaande #End If.

•	Er is een instructie #ElseIf ontdekt die wordt voorafgegaan door #Else of #End If.

Sluit het voorafgaande blok #If op de juiste wijze af of wijzig de voorafgaande #Else in een #ElseIf.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Een ActiveX-onderdeel is alleen compatibel als het een door Visual Basic uitvoerbaar bestand is of een DLL

Een compatibel ActiveX-onderdeel is het onderdeel dat u opgeeft als een compatibel ActiveX-onderdeel. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Visual Basic probeerde toegang te krijgen tot een object dat u hebt opgegeven als compatibel ActiveX-onderdeel maar het opgegeven bestand was geen uitvoerbaar bestand of DLL (Dynamic Link Library) gemaakt door Visual Basic.

Alleen .exe-bestanden en DLL's die zijn gemaakt door Visual Basic, zijn geldige gegevens die u kunt opgeven in het veld Compatibel ActiveX-onderdeel van het dialoogvenster Projecteigenschappen dat u kunt openen via het menu Project. Open, als dat mogelijk is, het project in Visual Basic en kies de opdracht Bestand Project.exe maken in het menu Bestand om een uitvoerbaar Visual Basic-bestand te maken. Als het een uitvoerbaar bestand betreft dat niet door Visual Basic is gemaakt of als het bestand niet kan worden geopend in Visual Basic, kunt u de documentatie van het bestand raadplegen om na te gaan of het bestand kan worden geconverteerd naar een bestand dat in Visual Basic kan worden uitgevoerd of om na te gaan of u bij de leverancier een uitvoerbaar bestand kunt verkrijgen dat is gemaakt door Visual Basic.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Invoegtoepassing kan project niet oproepen

Projecten zijn dynamisch maar invoegtoepassingen zijn statisch. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd een invoegtoepassing te maken vanuit een project dat een ander project oproept.

De semantiek van projecten kan zodanig veranderen dat dit van invloed is op het oproepen van projecten en invoegtoepassingen. Daarom kunt u geen invoegtoepassing maken vanuit een project dat andere projecten oproept.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Een module is niet een geldig type

Een standaardmodule vertegenwoordigt geen klasse en er kan geen exemplaar van worden gemaakt in de vorm van een variabele. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt de naam van een standaardmodule gebruikt in een Dim- of Set-declaratie.

Controleer de spelling van de naam van de module en zorg ervoor dat deze overeenkomt met een formulier, MDI-formulier of Klassenmodule.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Een procedure met een argument ParamArray kan niet worden opgeroepen met benoemde argumenten

Alle argumenten in een procedureoproep die is gedefinieerd door een ParamArray, moeten positioneel zijn. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De syntaxis van benoemde argumenten verschijnt in een procedureoproep.

De syntaxis voor het oproepen van benoemde argumenten kan niet worden gebruikt om een procedure aan te roepen die een ParamArray-parameter bevat. Als u slechts enkele onderdelen van de ParamArray wilt gebruiken, moet u komma's gebruiken als tijdelijke id's voor de onderdelen die u wilt weglaten. Als bijvoorbeeld in de volgende oproep, de ParamArray-argumenten beginnen na Arg2, worden er alleen waarden doorgegeven voor de eerste, derde en zesde waarden in de ParamArray:

MySub Arg1, Arg2, 7,, 44,,,3

Opmerking   Een ParamArray bestaat altijd uit de laatste items in de argumentenlijst.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er is een dubbelzinnige naam gevonden

De id is strijdig met een andere id of moet worden gekwalificeerd. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Mogelijk bevat meer dan één object in hetzelfde bereik elementen met dezelfde naam.

U kunt de naam van het onderdeel kwalificeren door de objectnaam te typen, gevolgd door een punt. Bijvoorbeeld:

object.eigenschap

Id's op moduleniveau en op projectniveau (modulenamen en namen van opgeroepen projecten) kunnen opnieuw gebruikt worden in een procedure, hoewel programma's hierdoor moeilijker te onderhouden zijn en fouten moeilijker zijn op te sporen. Als u echter wilt verwijzen naar beide items in dezelfde procedure, moet het item met het grootst bereik worden gekwalificeerd. Als bijvoorbeeld MyID is gedeclareerd op het moduleniveau van MyModule en als vervolgens in de module een variabele op procedureniveau wordt gedeclareerd met dezelfde naam, moeten verwijzingen naar de variabele op moduleniveau op de juiste wijze worden gekwalificeerd:

Dim MyID As String

Sub MySub

MyModule.MyID = "Dit is een variabele op moduleniveau"

Dim MyID As String

MyID = "Dit is de variabele op procedureniveau"

Debug.Print MyID

Debug.Print MyModule.MyID

End Sub

•	Een id die wordt gedeclareerd op moduleniveau, is strijdig met een procedurenaam. Deze fout ontstaat bijvoorbeeld als de variabele MyID is gedeclareerd op moduleniveau en er vervolgens een procedure met dezelfde naam wordt gedefinieerd:

Public MyID

Sub MyID

. . .

End Sub

In dit geval moet u een van de namen wijzigen omdat door kwalificatie met een gewone modulenaam de dubbelzinnigheid niet opgelost zou worden. Procedurenamen zijn standaard Public maar namen van variabelen zijn Private tenzij ze als Public worden opgegeven.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


AppleScript-fout

Er is een fout ontstaan tijdens het verwerken van uw script. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	De fout kan te maken hebben met de doeltoepassing.

Controleer of de id's in het script overeenkomen met die in de toepassing.

•	De fout kan te maken hebben met AppleScript.

Zorg ervoor dat de syntaxis die u gebruikt in uw script, de geldige AppleScript-syntaxis is.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Door de toepassing of het object gedefinieerde fout

Dit bericht wordt weergegeven als een fout, die is gegenereerd met de methode Raise of de instructie Error, niet overeenkomt met een fout die door Visual Basic for Applications is gedefinieerd. Het bericht is tevens het resultaat van de functie Error voor argumenten die niet corresponderen met de fouten die door Visual Basic for Applications zijn gedefinieerd. Het kan dus gaan om een fout die u definieert of om een fout die door een object wordt gedefinieerd (met inbegrip van brontoepassingen, zoals Microsoft Excel, Visual Basic, enzovoort). Visual Basic-formulieren genereren bijvoorbeeld veel aan formulieren gerelateerde fouten die niet gegenereerd kunnen worden vanuit de programmacode door alleen een getal op te geven als een argument voor de methode Raise of de instructie Error. Dit bericht heeft de volgende oorzaken en het probleem kan als volgt worden opgelost:

•	De toepassing heeft de instructie Err.Raise n of Error n uitgevoerd, maar het getal n is niet gedefinieerd door Visual Basic for Applications.

Als dit de bedoeling is, moet u Err.Raise gebruiken en extra argumenten opgeven zodat de eindgebruiker begrijpt welke fout er is opgetreden. U kunt bijvoorbeeld een opmerking insluiten die de fout beschrijft en u kunt de bron van de fout en Help-informatie toevoegen. Als u een fout die u hebt onderschept, opnieuw wilt genereren, zal deze benadering werken als u Err.Clear niet uitvoert voordat u de fout opnieuw genereert. Als u Err.Clear eerst uitvoert, moet u de extra argumenten invullen voor de methode Raise. Kijk goed naar de context waarin de fout is opgetreden en zorg dat u dezelfde fout opnieuw genereert.

•	Het kan zijn dat tijdens het verkrijgen van toegang tot objecten van andere toepassingen een fout naar uw programma werd gestuurd die niet kan worden herleid als een Visual Basic-fout.

Raadpleeg de documentatie voor alle objecten die u hebt geactiveerd. De eigenschap Source van het Err-object moet het programma-id bevatten van de toepassing die of het object dat de fout heeft gegenereerd. Voor een beter begrip van de context waarbinnen een object een fout als resultaat geeft, kunt u in de programmacode die objecten activeert, de constructie On Error Resume Next gebruiken. Dit is te prefereren boven de syntaxis On Error GoTo.

Opmerking   In het verleden gebruikten programmeurs vaak een lus om reeksen af te drukken van alle foutmeldingen die te onderscheppen zijn. Dit werd gewoonlijk gedaan met de volgende programmacode:

For index = 1 to 500

Debug.Print Error$(index)

Next index

Met een dergelijke programmacode wordt nog steeds een lijst weergegeven van alle foutberichten van Visual Basic for Applications. Maar met deze programmacode wordt het bericht "Door toepassing of door gebruiker gedefinieerde fout" weergegeven voor fouten die door een brontoepassing zijn gedefinieerd, bijvoorbeeld de fouten in Visual Basic die zijn gerelateerd aan formulieren, besturingselementen, enzovoort. Veel van deze fouten zijn te onderscheppen fouten tijdens runtime. U kunt in Help het tabblad Zoeken gebruiken om een lijst met te onderscheppen fouten te vinden die specifiek zijn voor uw brontoepassing. Klik op de knop Zoeken, typ onderschepbare in het eerste tekstvak en klik vervolgens op Onderwerpen weergeven. Selecteer onderschepbare fouten in de onderste keuzelijst en klik op de knop Weergeven.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Een argument is vereist voor Property Let of Property Set

Het doel van de procedures Property Let en Property Set is een nieuwe waarde toe te wijzen aan een eigenschap. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Bij het instellen van de eigenschap verschijnt de waarde niet op de juiste plaats.

Plaats de waarde waarop u de eigenschap wilt instellen, rechts van de  expressie die de waarde van de eigenschap instelt.

•	De parameter die wordt gedefinieerd om de waarde te ontvangen en die rechts van de expressie wordt doorgegeven, ontbreekt in de definitie van de procedure of staat op de verkeerde plaats.

Geef een parameter op voor de lijst met waardeargumenten van de definitie van de procedure. Als de procedure meer dan een argument bevat, moet de parameter voor de waarde van de eigenschap de laatste in de lijst zijn.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Het aantal dimensies van een matrix is al bepaald

Een statische matrix kan maar een keer worden voorzien van een dimensie. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd de dimensies van een statische matrix te wijzigen met de instructie ReDim. Alleen dimensies van dynamische matrices kunnen worden gewijzigd.

Verwijder de dimensiewijziging of gebruik een dynamische matrix. Als u een dynamische matrix wilt definiëren, gebruikt u de instructie Dim, Public, Private of Static met lege haakjes. Bijvoorbeeld:

Dim MyArray()

In een procedure kunt u een dynamische matrix definiëren met de instructie ReDim of Static waarbij u gebruik maakt van een variabele voor het aantal onderdelen:

ReDim MyArray(n)

•	De instructie Option Base verschijnt nadat de dimensies van alle matrices zijn ingesteld.

Zorg ervoor dat de instructie Option Base altijd vóór alle matrixdeclaraties die dimensies bevatten, wordt geplaatst.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Matrixargument moet ByRef zijn

Matrices die met de instructies Dim, ReDim of Static zijn gedeclareerd, kunnen niet worden met ByVal worden doorgegeven. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U probeerde een volledige matrix door te geven met ByVal (via waarde).

Een afzonderlijk onderdeel van een matrix kan worden doorgegeven (via waarde) met ByVal maar een volledige matrix moet (via verwijzing) met ByRef worden doorgegeven. ByRef is de standaardinstelling. Als u een matrix hebt die u met ByVal moet doorgeven en u wilt dit ook doen om te voorkomen dat wijzigingen in de matrixonderdelen weer worden doorgegeven aan de oproepende procedure, kunt u het matrixargument doorgeven binnen de eigen haken. U kunt het matrixargument ook in een Variant plaatsen en vervolgens de Variant doorgeven aan de parameter ByVal, op de volgende wijze:

Dim MyVar As Variant

MyVar = OldArray()

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Het begin van het zoekbereik is bereikt. Wilt u verder zoeken vanaf het einde?

Het zoeken heeft geen resultaat gehad. Dit heeft de volgende oorzaak en kan als volgt worden opgelost:

•	Bij het zoeken in de opwaartse richting is het begin van het opgegeven zoekbereik bereikt.

U kunt doorgaan met zoeken vanaf het einde van het zoekbereik of het zoeken in het huidige zoekbereik annuleren en het zoekbereik wijzigen.


Blok If zonder End If

Er is een fout opgetreden als gevolg van een onvolledige instructie. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er is een instructie If gebruikt zonder corresponderende instructie End If.

Een instructie If van meerdere regels moet eindigen met een bijbehorende instructie End If. Voor geneste instructies If...End If geldt dat u ervoor moet zorgen dat zich een passende instructie If...End If bevindt binnen elke omsluitende instructie If...End If.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Een onderbrekingspunt is niet toegestaan op deze regel

Onderbrekingspunten kunnen alleen in bepaalde gedeelten van instructies worden geplaatst. Deze fout heeft de volgende oorzaken:

•	U probeerde een onderbrekingspunt te plaatsen op een regel die geen onderbrekingspunt accepteert. Dit kan een van de volgende regels zijn:

•	Een regel die alleen opmerkingen bevat.

•	Een regel die alleen regelnamen bevat.

•	Een regel die alleen declaraties bevat (Const, Dim, Static, Type enzovoort).

•	Elke regel in een verborgen module.

•	Elke regel in het venster Direct.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Argumenten van het type ByRef komen niet overeen

Een argument dat wordt doorgegeven via verwijzing (ByRef, de standaardinstelling) moet precies het juiste gegevenstype zijn dat wordt verwacht door de procedure. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een argument doorgegeven van een type dat niet kan worden geconverteerd naar het type dat wordt verwacht.

Deze fout treedt bijvoorbeeld op als u een variabele Integer probeert door te geven terwijl een variabele Long wordt verwacht. Als u wilt dat het argument wordt geconverteerd, zelfs wanneer hierdoor informatie verloren gaat, kunt u het argument doorgeven binnen de eigen haken. Als u bijvoorbeeld het Variant-argument MyVar wilt doorgeven aan een procedure die een argument van het type Integer verwacht, kunt u de oproep als volgt opschrijven:

Dim MyVar

MyVar = 3,1415

Call SomeSub((MyVar))

Sub SomeSub (MyNum As Integer)

MyNum = MyNum + MyNum

End Sub

Als u het argument binnen de eigen haken plaatst, wordt het argument als een expressie geëvalueerd. Tijdens deze evaluatie, wordt het breukgedeelte van het getal afgerond (niet afgekapt) om het overeen te laten komen met het verwachte type argument. Het resultaat van deze evaluatie wordt in een tijdelijke locatie geplaatst en de procedure ontvangt een verwijzing naar deze tijdelijke locatie. Op deze wijze behoudt de oorspronkelijke MyVar zijn waarde.

Opmerking   Als u geen type opgeeft voor een variabele, ontvangt de variabele het standaardtype Variant. Dit is niet altijd op het eerste gezicht duidelijk. De volgende programmacode declareert bijvoorbeeld twee variabelen. De eerste, MyVar, is een Variant en de tweede, AnotherVar, is een Integer.

Dim MyVar, AnotherVar As Integer

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De oproepconventie wordt niet ondersteund door Visual Basic

Visual Basic ondersteunt niet alle oproepconventies voor procedures die de volgorde bepalen waarin de argumenten moeten worden doorgegeven en bepalen op welke manier typen argumenten moeten worden opgegeven. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De procedure is opgeroepen met een oproepconventie die niet door Visual Basic wordt ondersteund. Visual Basic ondersteunt bijvoorbeeld niet de oproepconventie van Pascal in een 16-bits versie van de Microsoft Windows-omgeving.

Als de oproepconventie niet wordt ondersteund door Visual Basic, kan de procedure niet worden opgeroepen vanuit Visual Basic. Raadpleeg de documentatie van het object om na te gaan of er een alternatief voor handen is.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De verwijzing naar het opgegeven bestand kan niet worden toegevoegd

Visual Basic heeft geen toegang tot alle objectbibliotheken of typebibliotheken. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U probeerde het dialoogvenster Verwijzingen toevoegen te gebruiken om een verwijzing naar een typebibliotheek of een objectbibliotheek toe te voegen die niet kan worden gebruikt door Visual Basic.

Raadpleeg de documentatie bij het object dat wordt vertegenwoordigd door de bibliotheek, om na te gaan of het beschikbaar is in een andere vorm die geschikt is voor Visual Basic.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan matrix van tekenreeks met vaste lengte of door de gebruiker gedefinieerd type niet toewijzen aan Variant

Een Variant accepteert alleen een toewijzing van gegevens die een geldig VarType hebben. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U probeerde een matrix van tekenreeksen met vaste lengte door te geven. Als een enkele tekenreeks met vaste lengte wordt toegewezen aan een Variant, wordt van deze tekenreeks een tekenreeks met een variabele lengte gemaakt. Dit is niet mogelijk voor een matrix van tekenreeksen met vaste lengte.

Als u de matrix moet doorgeven, kunt u een lus gebruiken om de afzonderlijke onderdelen van de matrix toe te wijzen aan de onderdelen van een tijdelijke matrix van tekenreeksen van variabele lengte. U kunt de matrix vervolgens toewijzen aan een variant en Erase om de tijdelijke matrix vrij te maken. U kunt echter een matrix met vaste grootte niet met Erase vrijmaken.

•	U probeerde een matrix van tekenreeksen met vaste lengte of een door de gebruiker gedefinieerd type door te geven aan de functie VarType of TypeName.

Een argument bij de functie VarType of TypeName moet een geldig type Variant zijn.

•	U probeerde een door de gebruiker gedefinieerd type toe te wijzen aan een variabele van het type Variant.

U kunt een volledige variabele van een door de gebruiker gedefinieerd type niet direct toewijzen aan een Variant. U kunt echter wel de functie Array gebruiken om elk onderdeel van een variabele van een door de gebruiker gedefinieerd type, afzonderlijk toe te wijzen aan een Variant. Hierdoor ontstaat een Variant die een matrix van varianten bevat. De functie VarType van elk onderdeel in deze matrix van varianten correspondeert met het oorspronkelijke type van elk onderdeel van het door de gebruiker gedefinieerde type.

•	U probeerde een matrix van tekenreeksen met vaste lengte of een door de gebruiker gedefinieerd type door te geven als een argument in een procedureoproep die een argument van het type Variant vereist. Als de procedureoproep tijdens runtime moet worden geconstrueerd, moet alle argumenten doorgegeven worden als Variant-typen. Deze fout wordt bijvoorbeeld veroorzaakt door de volgende code:

Dim MyForm As Object	' Because MyForm is Object, binding is late.

Set MyForm = New Form1

Dim StringArray(10) As String * 12

' The next line generates the error.

MyForm.MyProc StringArray

Gebruik voor de tekenreeksmatrix een lus om elk afzonderlijk onderdeel van de matrix toe te wijzen aan een tijdelijke matrix van tekenreeksen van variabele lengte. U kunt deze matrix vervolgens toewijzen aan een Variant, zodat de matrix kan worden doorgegeven aan de procedure. Voor een matrix van het door de gebruiker gedefinieerde type kunt u de functie Array gebruiken om elk onderdeel van een variabele van het door de gebruiker gedefinieerde type afzonderlijk toe te wijzen aan een Variant. Hierdoor ontstaat een Variant die een matrix van varianten bevat. De functie VarType van elk onderdeel in deze matrix van varianten correspondeert met het oorspronkelijke type van elk onderdeel van het door de gebruiker gedefinieerde type.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan niet toewijzen aan een matrix

Elk onderdeel van een matrix moet afzonderlijk een waarde toegewezen krijgen. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U probeerde per ongeluk één waarde toe te wijzen aan een variabele van het type matrix zonder op te geven aan welk onderdeel de waarde moet worden toegewezen.

Als u een enkele waarde wilt toewijzen aan een onderdeel van een matrix, moet u het onderdeel opgeven in een subscript. Als bijvoorbeeld MyArray een matrix van het type integer is, is de expression MyArray = 5 ongeldig maar is de volgende expressie wel geldig:

MyArray(UBound(MyArray)) = 5

•	U hebt geprobeerd een volledige matrix toe te wijzen aan een andere matrix. Als bijvoorbeeld Arr1 een matrix is en Arr2 een andere matrix, zijn de volgende twee toewijzingen beide ongeldig:

Arr1 = Arr2	' Invalid assignment.

Arr1() = Arr2()	' Invalid assignment.

Als u een matrix aan een andere matrix wilt toewijzen, zorgt u dat het formaat van de matrix aan de linkerkant van de toewijzing kan worden gewijzigd en dat de matrixtypen overeenkomen.

Opmerking   U kunt een volledige matrix in een Variant plaatsen waardoor u één variabele van het type variant krijgt die de volledige matrix bevat:

Dim MyArray As Variant

MyVar = Arr2()

Vervolgens verwijst u naar de onderdelen van de matrix in de variant met dezelfde subscriptnotatie als voor een normale matrix. Bijvoorbeeld:

MyVar(3) = MyVar(1) + MyVar(5)

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan het gegevenstype van matrixonderdelen niet wijzigen

ReDim kan alleen worden gebruikt om het aantal onderdelen in een matrix te wijzigen. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd het gegevenstype van een matrix opnieuw te declareren met behulp van de instructie ReDim.

Declareer een nieuwe matrix van het gewenste type en gebruik vervolgens de conversiefuncties om alle onderdelen van de oude matrix toe te wijzen aan het bijbehorende onderdeel van de nieuwe matrix.

U kunt de matrix ook in een variabele van het type Variant plaatsen. Dit kunt u doen met een eenvoudige toewijzing:

Dim MyVar As Variant

MyVar = MyIntegerArr()

Op deze wijze maakt u een Variant die een matrix bevat met een naam van het type van de oorspronkelijke matrix. Vervolgens kunt u variabelen van elk geldig VarType toekennen aan de onderdelen van de matrix binnen een variant.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan geen KWID_tkPUBLIC door de gebruiker gedefinieerd type in een persoonlijke objectmodule definiëren

Een door de gebruiker gedefinieerd type dat verschijnt in een objectmodule kan niet Public zijn. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd in een objectmodule een door de gebruiker gedefinieerd type Public te definiëren.

Verplaats het door de gebruiker gedefinieerde type definitie naar een standaardmodule en declareer vervolgens variabelen van het betreffende type in de objectmodule of in andere modules. Als u wilt dat het type alleen beschikbaar is in de module waarin het type voorkomt, kunt u de definitie Type...End Type in de objectmodule plaatsen en het sleutelwoord Private voor deze definitie plaatsen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan de verborgen procedure niet weergeven

Alles in een verborgen module is verborgen. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd een procedure weer te geven in een verborgen module.

Maak de module zichtbaar om de procedure weer te geven. Als u probeert een regel weer te geven die een fout in een verborgen procedure heeft veroorzaakt, start dan de programmacode opnieuw nadat u de module zichtbaar hebt gemaakt om de fout weer te geven.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De module kan niet worden bewerkt

Modules die zijn gemarkeerd als beveiligd, kunnen worden weergegeven, maar niet worden bewerkt. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd een beveiligde module te bewerken.

Verwijder de beveiliging van de module en start de bewerking vervolgens opnieuw. Meestal treedt deze fout op omdat de invoegtoepassing Visual SourceSafe is geïnstalleerd en het bestand niet is uitgecheckt.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan de onderbrekingsmodus momenteel niet activeren

De onderbrekingsmodus is een modus waarin een programma nog steeds wordt uitgevoerd maar waarbij een pauze wordt ingelast tussen twee instructies van het programma. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd de onderbrekingsmodus te activeren door bijvoorbeeld op CTRL+BREAK (Windows) of op COMMAND+PERIOD (Macintosh) te drukken of op de knop Onderbreken op de werkbalk Standaard of de werkbalk Foutopsporing, of door een onderbrekingspunt uit te voeren in de programmacode tijdens runtime.

Er is een programmatische wijziging gemaakt in het project met behulp van het uit te breiden (invoegtoepassing) objectmodel. Dit voorkomt dat de uitvoering van het programma wordt onderbroken. U kunt doorgaan met de uitvoering van het programma of de uitvoering stoppen. Maar u kunt de uitvoering niet tijdelijk onderbreken.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Directe instructies kunnen niet worden uitgevoerd tijdens het ontwerpen

Tot de ontwerpperiode wordt alle tijd gerekend waarin uw programmacode niet wordt uitgevoerd of waarmee de uitvoering wordt uitgesteld en de programmacode wacht op voortzetting van de uitvoering. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd een instructie uit te voeren in het venster Direct, maar uw programmacode bevindt zich niet in de uitvoeringsmodus.

Start uw programmacode en stel vervolgens de uitvoering van het programma uit. U kunt dan de programmacode uitvoeren in het venster Direct.

Voor aanvullende informatie plaatst u de cursor in het venster Direct en drukt u op F1 (in Windows) of op HELP (op de Macintosh).


Kan het project of de bibliotheek niet vinden

U kunt uw programmacode pas uitvoeren nadat alle ontbrekende verwijzingen zijn aangebracht. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Een opgeroepen project kon niet worden gevonden of een objectbibliotheek waarnaar wordt verwezen en die behoort bij de taal van het project kon niet worden gevonden.

Ontbrekende verwijzingen krijgen in het dialoogvenster Verwijzingen het voorvoegsel "ONTBREEKT". Selecteer de ontbrekende verwijzing om het pad en de taal van het ontbrekende project of de ontbrekende bibliotheek weer te geven. Als u de verwijzing of de verwijzingen wilt aanbrengen, neemt u de volgende stappen:

Verwijzingen aanbrengen

1.	Geef het dialoogvenster Verwijzingen weer.

2.	Selecteer de ontbrekende verwijzing.

3.	Start het Objectenoverzicht.

4.	Gebruik het dialoogvenster Bladeren om de ontbrekende verwijzing te vinden.

5.	Klik op OK.

6.	Herhaal de voorgaande stappen totdat alle ontbrekende verwijzingen zijn aangebracht.

Als u een ontbrekend item hebt gevonden, wordt het voorvoegsel "ONTBREEKT" verwijderd om aan te geven dat de koppeling is hersteld. Als de bestandsnaam van een opgeroepen project is gewijzigd, wordt een nieuwe verwijzing toegevoegd en moet u de oude verwijzing verwijderen.

Als u overbodig geworden verwijzingen wilt verwijderen, wist u het selectievakje naast de overbodige verwijzing. De verwijzingen naar de objectbibliotheek van Visual Basic en de objectbibliotheek van de brontoepassing kunnen niet worden verwijderd.

Toepassingen kunnen verschillende taalversies van hun objectbibliotheken ondersteunen. Om te weten te komen welke taalversie vereist is, klikt u op de verwijzing en schakelt u de taal in die onder in het dialoogvenster is aangegeven.

Objectbibliotheken kunnen op zichzelf staande bestanden zijn met de extensie .OLB of ze kunnen geïntegreerd zijn in een dynamic link library (DLL). Ze kunnen voor elk platform in verschillende versies voorkomen. Dit betekent dat als projecten van het ene platform naar het andere worden verplaatst (bijvoorbeeld van Macintosh naar Microsoft Windows), de juiste taalversie van de opgeroepen bibliotheek (voor dat platform) beschikbaar moet zijn op de locatie die in de documentatie bij de brontoepassing wordt opgegeven.

Bestandsnamen van objectbibliotheken worden gewoonlijk als volgt gemaakt:

•	Windows (versie 3.1 en eerder): Toepassingscode + Taalcode + [Versie].OLB. Bijvoorbeeld:

De objectbibliotheek voor de Franse Visual Basic for Applications, versie 2 is vafr2.olb.

De objectbibliotheek van de Franse Microsoft Excel 5.0 is xlfr50.olb.

•	Macintosh: Naam van de toepassing, Taalcode [Versie] OLB. Bijvoorbeeld:

De objectbibliotheek voor de Franse Visual Basic for Applications, versie 2 is VA FR 2 OLB.

De objectbibliotheek van de Franse Microsoft Excel 5.0 is MS Excel FR 50 OLB.

Als u een ontbrekend project of een ontbrekende bibliotheek niet kunt vinden, neemt u contact op met de auteur van het project waarin naar dit object of deze bibliotheek naar wordt verwezen. Als de ontbrekende bibliotheek een objectbibliotheek van een Microsoft-toepassing is, kunt u deze als volgt achterhalen:

•	Als u toegang hebt tot de elektronische ondersteuning van Microsoft, raadpleeg dan het gedeelte over de technische ondersteuning in dit Help-bestand. Onder elektronische service treft u instructies aan over het gebruik van de juiste serviceoptie.

•	Als u geen toegang hebt tot de elektronische ondersteuning van Microsoft, zijn er op aanvraag objectbibliotheken van Microsoft beschikbaar als toepassingsnotitie. In het gedeelte over de technische ondersteuning van dit Help-bestand vindt u tevens informatie over de manier waarop u contact kunt opnemen met de productondersteuning van Microsoft.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan Get of Put niet gebruiken met een objectverwijzingsvariabele of een door de gebruiker gedefinieerd type dat een objectverwijzing bevat

Een objectverwijzing is tijdelijk en kan gemakkelijk ongeldig worden tussen het sluiten en openen van een bestand. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De variabele in de instructie Get of Put bevat een verwijzing naar een object of er wordt gedeclareerd dat de variabele een dergelijke verwijzing bevat.

Als de variabele een objectverwijzing is, kunt u deze variabele niet samen met de instructies Get en Put gebruiken. Als u de waarde van enkele of van alle eigenschappen van het object in het bestand wilt plaatsen, moet u elke eigenschap afzonderlijk opgeven.

•	Het door de gebruiker gedefinieerde type variabele in de instructie Get of Put bevat een onderdeel dat een objectverwijzing is.

Als de instructie Type van een variabele een onderdeel bevat dat een object vertegenwoordigt (bijvoorbeeld als de instructie wordt gedefinieerd in een klassenmodule, een gegevenstype van het type Object heeft, een formulier of een besturingselement is, enzovoort), verwijdert u dit onderdeel uit de definitie of definieert u een nieuw type dat u met de instructies Get en Put kunt gebruiken en dat geen onderdeel van het type Object in de definitie bevat.

Als zich in het door de gebruiker gedefinieerde type onderdelen bevinden met het type Variant, zorg dan dat er geen objectverwijzing aan dat onderdeel wordt toegewezen. Een Variant kan een dergelijke toewijzing accepteren, maar veroorzaakt bovengenoemde fout als het door de gebruiker gedefinieerde type van de Variant in een instructie Get of Put wordt gebruikt.

U kunt Input #, Line Input #, Print # of Write # gebruiken om de standaardeigenschap van een object naar de schijf te schrijven.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan een module niet laden. De gebruikte bestandsindeling is ongeldig

Een module moet een tekstmodule zijn. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd een bestand in een binaire bestandsindeling als module te openen.

In een aantal versies van Visual Basic is het mogelijk programmacode zowel in binaire bestandsindeling als in een bestandsindeling voor tekst op te slaan. Indien mogelijk kunt u het bestand opnieuw openen in de toepassing waarin het bestand het laatst is opgeslagen en het vervolgens opslaan als tekstbestand.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan niet toewijzen aan een alleen-lezen eigenschap

Sommige eigenschappen kunnen geen toewijzingen accepteren. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd een waarde toe te wijzen aan een eigenschap waaraan geen waarde kan worden toegewezen.

In sommige gevallen kan een eigenschap alleen op bepaalde momenten toewijzingen accepteren. Een eigenschap kan bijvoorbeeld toewijzingen accepteren tijdens het ontwerpen maar niet tijdens runtime. Raadpleeg de Help voor de gewenste eigenschap om na te gaan of en wanneer de eigenschap toewijzingen kan accepteren.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan de opgegeven bewerking niet uitvoeren omdat de module is verborgen

Deze fout houdt verband met het uit te breiden (invoegtoepassing) objectmodel van Visual Basic. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De module is verborgen. U kunt een verborgen module niet wijzigen of informatie verkrijgen via een verborgen module.

Maak de module weer zichtbaar en probeer de bewerking opnieuw uit te voeren.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan geen voorwaardelijk onderbrekingspunt in een matrix plaatsen

Aan een matrix is geen enkele waarde gekoppeld. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd een voorwaardelijk onderbrekingspunt in te stellen dat de uitvoering van het programma zou uitstellen wanneer de waarde van de volledige matrix veranderde.

Stel het voorwaardelijke onderbrekingspunt in op een bepaald onderdeel van de matrix.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan niet opnemen in een module die al is gestart

U moet de uitvoering van de module stoppen voordat u met opnemen begint. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd een macro op te nemen terwijl u de modulecode uitvoert.

Stop de uitvoering of druk op CTRL+BREAK (Windows) of op COMMAND+PERIOD (Macintosh) en schakel vervolgens de macro-opname in.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan de standaardverwijzing niet verwijderen

Een standaardverwijzing bestaat altijd. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd een verwijzing te verwijderen die altijd beschikbaar moet zijn, bijvoorbeeld een verwijzing naar een typebibliotheek of objectbibliotheek.

Probeer de verwijzing niet te verwijderen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Case Else buiten Select Case

De instructie Case Else kan alleen tussen de instructies Select Case en End Select staan. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt de instructie Case Else buiten een blok Select Case...End Select geplaatst.

Plaats de instructie Case Else binnen het blok Select Case...End Select.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Case zonder Select Case

Een instructie Case moet binnen een blok Select Case...End Select Block staan. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Een instructie Case kon niet worden verbonden met de voorafgaande instructie Select Case.

Controleer andere structuren van besturingselementen binnen de Select Case...Case-structuur en verifieer of deze juist en volledig zijn. Een If zonder een bijpassende End If binnen de Select Case...End Select-structuur kan bijvoorbeeld bovenstaande fout veroorzaken.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er bestaan cyclische afhankelijkheden tussen modules

Cyclische verwijzingen tussen modules, constanten en door de gebruiker gedefinieerde typen zijn niet toegestaan. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Een door de gebruiker gedefinieerd type of een constante in de ene module verwijst naar een door de gebruiker gedefinieerd type of een constante in een tweede module, die op zijn beurt verwijst naar een ander door de gebruiker gedefinieerd type of een constante in de eerste module.

Verwijder de afhankelijke verwijzingen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Objectmodule moet alle procedures in de interface implementeren

Een interface is een collectie prototypes van procedures die nog niet zijn geïmplementeerd. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een interface opgegeven in een instructie Implements, maar u hebt geen programmacode toegevoegd voor alle procedures in de interface.

U moet programmacode schrijven voor alle procedures die zijn opgegeven in de interface. Een lege procedure is voldoende; de procedure moet de vereiste werking implementeren.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De uitvoering van de programmacode is onderbroken

De uitvoering van de programmacode kan, indien nodig, worden onderbroken. Dit heeft de volgende oorzaak en kan als volgt worden opgelost:

•	Een toetsencombinatie van CTRL+BREAK (Microsoft Windows), ESC (Microsoft Excel) of COMMAND+PERIOD (Macintosh) is ingedrukt.

Klik in het dialoogvenster met de foutmelding op Foutopsporing om de onderbrekingsmodus te activeren, klik op Doorgaan om de uitvoering te hervatten of op Stop om de uitvoering te stoppen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Compileerfout in verborgen module: <modulenaam>

Een beveiligde module kan niet worden weergegeven. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er is een compileerfout opgetreden in de programmacode van de opgegeven module, maar de fout kan niet worden weergegeven omdat het project beveiligd is.

Verwijder de beveiliging van het project en voer vervolgens de programmacode opnieuw uit om de fout weer te geven.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Expressie voor constante vereist

Een constante moet worden geïnitialiseerd. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd een constante te initialiseren met een variabele, een door de gebruiker gedefinieerd type, een object of het resultaat van een functieoproep.

Initialiseer constanten met letterlijke tekenreeksen, vooraf gedeclareerde constanten of letterlijke tekenreeksen die met elkaar worden verbonden door operatoren (behalve de logische operator Is).

•	U hebt geprobeerd een matrix te declareren met behulp van een variabele om het aantal onderdelen op te geven.

Als u een dynamische matrix wilt declareren binnen een procedure doet u dit met ReDim en geeft u een aantal onderdelen op met een variabele.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Constanten, tekenreeksen met vaste lengte, matrices, door de gebruiker gedefinieerde typen en instructies van het type Declare zijn niet toegestaan als Public-leden van objectmodules

Niet alle variabelen in een objectmodule kunnen worden gedeclareerd als Public. Procedures zijn echter standaard Public en procedures Property kunnen worden gebruikt om variabelen syntactisch te simuleren. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt een Public constante in een objectmodule gedeclareerd.

Hoewel het niet mogelijk is een Public constante voor een objectmodule te declareren, kunt u wel een procedure Property Get maken met dezelfde naam. Als u geen procedure Property Let of Property Set met dezelfde naam maakt, maakt u in feite een alleen-lezen eigenschap die op dezelfde wijze kan worden gebruikt als een constante.

•	U hebt een Public tekenreeks met vaste lengte in een objectmodule gedeclareerd.

U kunt tekenreeksen met vaste lengte simuleren door middel van een aantal Property-procedures die de tekenreeksgegevens afkappen als deze de toegestane lengte overschrijden of die de gebruiker melden dat de lengte is overschreden.

•	U hebt een Public matrix in een objectmodule gedeclareerd.

Hoewel een procedure geen matrix als resultaat kan geven, kan deze procedure wel een Variant als resultaat geven die een matrix bevat. Als u een Public-matrix in een klassenmodule wilt simuleren, gebruikt u een aantal Property-procedures die een Variant met een matrix accepteren en als resultaat geven.

•	U hebt de instructie Declare in een objectmodule geplaatst.

Instructies van het type Declare zijn impliciet Public. De instructie Declare moet worden voorafgegaan door het sleutelwoord.Private.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De huidige module ondersteunt niet de methode Print

Niet alle methoden en eigenschappen kunnen in alle modules worden gebruikt. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd de methode Print te gebruiken bij een object dat niets kan weergeven. U kunt bijvoorbeeld de methode Print niet zonder kwalificatie gebruiken in een standaardmodule.

Verwijder de verwijzing naar de methode Print of kwalificeer de methode met een passend object. U kunt de methode bijvoorbeeld kwalificeren met het object Debug om de argumenten van de methoden tijdens de foutopsporing weer te geven in het venster Direct.

•	U hebt geprobeerd de methode Line, Circle, PSet of Scale te gebruiken bij een object dat deze methode niet accepteert. De methoden kunnen bijvoorbeeld niet zonder kwalificatie verschijnen in een standaardmodule of een klassenmodule met automatisering.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Cyclische verwijzing van projecten is niet toegestaan

Cyclische verwijzingen naar projecten zijn niet toegestaan. Als MyProj verwijst naar YourProj, kun YourProj (of een project dat verwijst naar YourProj) niet verwijzen naar MyProj. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd een verwijzing toe te voegen aan een project dat al deel uitmaakt van dit project.

Verwijder de cyclische verwijzing of verwijzingen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Definities van eigenschapprocedures voor dezelfde eigenschap zijn niet consistent, of bevatten optionele parameters of een ParamArray

De parameters voor de procedures Property Get, Property Let en Property Set voor dezelfde eigenschap moeten exact overeenkomen, op de volgende punten na. De procedure Property Let heeft een extra parameter, waarvan het type moet overeenkomen met het resultaattype van de corresponderende procedure Property Get. De procedure Property Set heeft één parameter meer dan de corresponderende procedure Property Get, waarvan het type een van de volgende kan zijn: Variant, Object, een klassenaam of een objectbibliotheektype gespecificeerd in een objectbibliotheek. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het aantal parameters voor de procedure Property Get is niet één minder dan het aantal parameters voor de corresponderende procedure Property Let of Property Set.

Voeg een parameter toe aan de procedure Property Let of Property Set, of verwijder een parameter uit de procedure Property Get.

•	De parametertypen van de procedure Property Get moeten exact overeenkomen met de corresponderende parameters van de procedure Property Let of Property Set (met uitzondering van de extra parameter van Property Set).

Wijzig de parameterdeclaraties in de corresponderende proceduredefinities zodat deze overeenkomen.

•	Het parametertype van de extra parameter van de procedure Property Let moet overeenkomen met het resultaattype van de corresponderende procedure Property Get.

Wijzig de extra parameterdeclaratie in de procedure Property Let of wijzig het resultaattype van de corresponderende procedure Property Get zodat deze overeenkomen.

•	Het parametertype van de extra parameter van de procedure Property Set kan afwijken van het resultaattype van de corresponderende procedure Property Get, maar moet ofwel een Variant, Object, klassenaam ofwel een geldig objectbiblotheektype zijn.

Controleer of de extra parameter van de procedure Property Set een Variant, Object, klassennaam of een objectbibliotheektype is.

•	U hebt een Property-procedure gedefinieerd met een Optionele of een ParamArray-parameter.

ParamArray-parameters en Optionele parameters zijn niet toegestaan in Property-procedures. Definieer de procedures opnieuw zonder deze sleutelwoorden te gebruiken.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Instructies van het type Deftype moeten voorafgaan aan declaraties

Instructies van het type Deftype zijn bijvoorbeeld DefInt, DefDbl, DefCur, enzovoort. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Op moduleniveau wordt een instructie Deftype voorafgegaan door een declaratie van een variabele.

Verplaats de instructie Deftype, zodat deze vóór alle declaraties van variabelen staat.

•	Er verschijnt een instructie Deftype in een procedure.

Verplaats de instructie Deftype naar moduleniveau, zodat deze vóór alle declaraties van variabelen staat.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Doelnaam is te ver weg; lus, Select Case of blok If zijn te groot

Procedures kunnen een maximale omvang van 64 kB hebben, maar omdat procedures zowel voorwaarts als achterwaarts vertakkingen kunnen hebben, worden deze vertakkingen in beide richtingen beperkt tot 32.767 bytes. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Er is een vertakkingsinstructie (GoTo, GoSub) waarvan de doelnaam verder weg ligt dan 32.767 bytes van de broninstructie voor de vertakking.

Breng de naam dichterbij of maak de procedure kleiner.

•	Er is een bijzonder grote lusstructuur die in totaal meer dan 32 kB geheugenruimte in beslag neemt.

Maak de lus kleiner.

•	Er is een bijzonder grote If-blokstructuur die een Then- of Else-component bevat die meer dan 32kB geheugenruimte in beslag neemt.

Verklein het gedeelte van de structuur dat te groot is.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Do zonder Loop

Elke instructie Do moet worden afgesloten met de instructie Loop. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een instructie Do gebruikt zonder de bijbehorende, afsluitende instructie Loop.

Controleer of andere besturingsstructuren binnen de structuur Do...Loop volledig zijn. Bovenstaande fout kan bijvoorbeeld worden veroorzaakt door een If-blokinstructie zonder de bijbehorende instructie End If binnen de structuur Do...Loop.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Dubbele declaratie in het huidige bereik

De opgegeven naam is al eerder op dit bereikniveau gebruikt. Twee variabelen kunnen bijvoorbeeld dezelfde naam hebben wanneer ze in verschillende procedures zijn gedefinieerd. Variabelen die binnen dezelfde procedure zijn gedefinieerd, kunnen echter niet dezelfde naam hebben. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Een nieuwe variabele of procedure heeft dezelfde naam als een bestaande variabele of procedure. Bijvoorbeeld:

Sub MySub()

Dim A As Integer

Dim A As Variant

. . .	' Other declarations or procedure code here.

End Sub

Controleer de huidige procedure, module of het huidige project en verwijder alle dubbele declaraties.

•	Een instructie Const gebruikt dezelfde naam als een bestaande variabele of procedure.

Verwijder de betreffende constante of geef deze een andere naam.

•	U hebt meer dan een maal een vaste matrix gedeclareerd.

Verwijder een van de matrix of geef deze een andere naam.

Zoek naar de dubbele naam. Als u de naam opgeeft waarnaar u zoekt, laat dan alle eventuele type-aanduidingstekens weg, omdat er een conflict optreedt als de namen hetzelfde zijn en de tekens voor de typedeclaratie verschillend zijn.

Een variabele op module-niveau kan dezelfde naam hebben als een variabele die in een procedure is gedeclareerd. Als u echter binnen de procedure wilt verwijzen naar de variabele op moduleniveau, moet u deze variabele voorzien van de naam van de module. Namen van modules en de namen van opgeroepen projecten kunnen binnen procedures ook opnieuw worden gebruikt als namen van variabelen en kunnen bovendien worden gekwalificeerd.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Dubbele definitie

Een voorwaardelijke compileerconstante kan alleen worden gedefinieerd met één waarde. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt twee verschillende waarden opgegeven voor dezelfde voorwaardelijke compileerconstante, bijvoorbeeld:

#Const Mac = 0

#Const Mac = 1

Verwijder een van de definities.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Dubbele instructie Deftype

Instructies van het type Deftype binnen hetzelfde bereik moeten een uniek letterbereik opgeven. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Een gedeelte van het letterbereik of het volledige letterbereik voor deze instructie Deftype bevindt zich al in een andere instructie Deftype.

Schrijf de instructie opnieuw, zodat het letterbereik niet meer dubbel voorkomt.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Dubbele instructie Option

Er mag slechts één instructie Option van elk soort in elke module voorkomen. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt meer dan één instructie Option Base, Option Compare, Option Explicit of Option Private in deze module opgegeven.

Verwijder alle dubbele instructies in de module.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Deze bewerking kan niet ongedaan worden gemaakt. Wilt u doorgaan?

U kunt de opdracht Ongedaan maken niet kiezen om de huidige toestand te herstellen nadat u deze bewerking hebt uitgevoerd. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Dit probleem treedt gewoonlijk op als een bewerking te groot is om te worden opgeslagen.

Probeer de bewerking in kleinere gedeelten uit te voeren.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Else zonder If

Een instructie Else moet worden voorafgegaan door If. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er werd een instructie Else gebruikt zonder bijbehorende instructie If.

Controleer of andere besturingsstructuren binnen de structuur If...End If volledig zijn. Controleer ook of voor het volledige blok If de juiste syntaxis is gebruikt.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Leeg type Enum is niet toegestaan

Met een type Enum geeft u de naam en de leden op voor een opsomming. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een opsomming een naam gegeven in een blok Enum…End Enum, maar u hebt geen leden opgegeven.

Voeg ten minste één lid toe aan het blok Enum…End Enum.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Lege controle-expressie

In het dialoogvenster Controle toevoegen moet een expressie worden ingevoerd. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geen controle-expressie ingevoerd in het dialoogvenster Controle toevoegen.

Voer in het dialoogvenster Controle toevoegen een expressie in of druk op ESC.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


End If zonder blok If

Bij een instructie End If behoort een instructie If. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De component If is weggelaten of gescheiden van de component End If.

Controleer of andere besturingsstructuren binnen de structuur If...End If volledig zijn. Controleer ook of voor het volledige blok If de juiste syntaxis is gebruikt.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Het einde van het zoekbereik is bereikt. Wilt u verder zoeken vanaf het begin?

Het zoeken heeft geen resultaat gehad. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De voorwaartse zoekprocedure heeft het eind van het opgegeven bereik bereikt.

U kunt doorgaan met zoeken vanaf het begin van het zoekbereik of u kunt de zoekprocedure annuleren en het zoekbereik wijzigen.


End Select zonder Select Case

Aan de instructie End Select dient een instructie Select Case vooraf te gaan. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een instructie End Select zonder de bijbehorende instructie Select Case gebruikt.

Dit probleem wordt gewoonlijk veroorzaakt door een extra instructie End Select onder een blok Select Case of door het feit dat de instructie End Select is blijven staan nadat een blok Select Case van de ene procedure naar de andere is gekopieerd. Controleer of elke structuur Select Case eindigt met een instructie End Select.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


End With zonder With

De instructie End With moet worden voorafgegaan door een instructie With. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een instructie End With gebruikt zonder een bijbehorende instructie With.

Controleer of andere besturingsstructuren binnen de structuur With...End With compleet zijn. Bovenstaande fout kan bijvoorbeeld worden veroorzaakt door een instructie If zonder bijbehorende instructie End If binnen de structuur With...End With.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Private Enum-typen en Enum-typen die in standaardmodules of in Private-klassen zijn gedefinieerd, kunnen in Public-objectmodules niet worden gebruikt als parameters of returntypes voor Public-procedures, als procedures, als Public-gegevensleden of als velden van door de gebruiker gedefinieerde Public-typen

Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Een niet weergegeven Enum is gebruikt als parameter of returntype van een Public-procedure of een Public-gegevenslid van een weergegeven klasse.

Weergegeven betekent in dit geval dat de Enum is weergegeven door de ActiveX-server die is gedefinieerd. Met andere woorden, de Enum is gedeclareerd in een Public-klasse van een ActiveX Exe- of Dll-project.


Fout bij toegang tot het systeemregister

Voor een aantal bewerkingen moet u de registratiedatabase van uw systeem activeren. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De registratiedatabase van uw systeem functioneert niet.

Start het Setup-programma voor de brontoepassing opnieuw.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De gebeurtenisafhandeling is ongeldig

De lijst met parameters van een procedure van een gebeurtenisafhandeling moet exact overeenkomen met de declaratie van de gebeurtenis. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Uw procedure van een gebeurtenisafhandeling heeft het verkeerde aantal parameters.

Verwijder de extra parameters of voeg de ontbrekende parameters toe.

•	Een of meer parameters van uw procedure van een gebeurtenisafhandeling bevatten het verkeerde gegevenstype.

Zorg ervoor dat de parametertypes overeenkomen met die van de declaratie van de gebeurtenis.

•	Uw procedure voor gebeurtenisafhandeling is een Function in plaats van een Sub.

Maak van de procedure een Sub. Een foutafhandeling kan geen waarde als resultaat hebben.

•	Een andere typebibliotheek gebruikt de gebeurtenisnaam voor een eigen type.

Kwalificeer de naam van de gebeurtenis met de naam van de juiste typebibliotheek om dubbelzinnigheid te voorkomen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De declaratie van een procedure komt niet overeen met de beschrijving van de gebeurtenis of procedure met dezelfde naam

Uw klassenmodule heeft een procedurenaam die strijdig is met de naam van een gebeurtenis. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Een procedure heeft dezelfde naam als een gebeurtenis, maar heeft niet dezelfde signatuur (dat wil zeggen, het aantal parameters en de typen van deze parameters). Deze fout kan optreden als u bijvoorbeeld een nieuwe parameter aan een gebeurtenisprocedure toevoegt. Als u de definitie van een gebeurtenisprocedure Formulier_Laden van een formulier als volgt aanpast, treedt bovenstaande fout op:

Sub Form_Load (MyParam As Integer)

. . .

End Sub

Als de procedure niet de gebeurtenisprocedure is die bij de gebeurtenis hoort, wijzigt u de naam van de procedure. Als de procedure behoort bij de gebeurtenis, zorg dan dat de parameterlijst overeenkomt met de parameterlijst die door de gebeurtenis wordt vereist, als de gebeurtenis tenminste een parameterlijst vereist.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Exit Do niet binnen Do...Loop

De instructie Exit Do is alleen geldig binnen een instructie Do...Loop. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een instructie Exit Do gebruikt buiten een instructie Do...Loop.

Zorg dat Exit Do wordt voorafgegaan door een geldige instructie Do.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Exit For niet binnen For...Next

De instructie Exit For is alleen geldig binnen een lus For...Next. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt de instructie Exit For gebruikt buiten een instructie For...Next.

Zorg dat Exit For wordt voorafgegaan door een geldige instructie For.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Exit Function is niet toegestaan in Sub of Property

Een instructie Exit moet in overeenstemming zijn met de procedure waarin deze instructie wordt gebruikt. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een instructie Exit Function gebruikt in een procedure Sub of Property.

Gebruik Exit Sub of Exit Property voor deze proceduretypen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Exit Property is niet toegestaan in Function of Sub

Een instructie Exit moet in overeenstemming zijn met de procedure waarin deze instructie wordt gebruikt. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een instructie Exit Property gebruikt in een procedure Sub of Function.

Gebruik de juiste instructie Exit voor dit proceduretype.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Exit Sub is niet toegestaan in Function of Property

Een instructie Exit moet in overeenstemming zijn met de procedure waarin deze instructie wordt gebruikt. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een instructie Exit Sub gebruikt in een procedure Function of Property.

Gebruik de juiste instructie Exit voor dit proceduretype.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er wordt een matrix verwacht

Een variabelennaam met een subscript geeft aan dat de variabele een matrix is. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De syntaxis die u hebt opgegeven, is de juiste syntaxis voor een matrix, maar er bevindt zich geen matrix met deze naam binnen het bereik.

Controleer of de naam van de variabele correct is gespeld. Een variabele wordt gemaakt als deze de eerste keer wordt gebruikt, tenzij de module de instructie Option Explicit bevat. Als u de naam van een variabele van het type matrix verkeerd spelt, wordt de variabele misschien wel gemaakt, maar niet als matrix.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er wordt End Function verwacht

Een instructie End procedure moet in overeenstemming zijn met de procedure waarin deze instructie wordt gebruikt. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een instructie End Property of End Sub gebruikt om een procedure Function te beëindigen.

Gebruik End Function voor dit proceduretype.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er wordt End Property verwacht

Een instructie End procedure moet in overeenstemming zijn met de procedure waarin deze instructie wordt gebruikt. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt de instructie End Function of End Sub gebruikt om een procedure Property te beëindigen.

Gebruik End Property voor dit proceduretype.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er wordt End Sub verwacht

Een instructie End procedure moet in overeenstemming zijn met de procedure waarin deze instructie wordt gebruikt. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt de instructie End Function of End Property gebruikt om een procedure Sub te beëindigen.

Gebruik End Sub voor dit proceduretype.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er wordt End With verwacht

Een blok With moet worden beëindigd. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een blok With niet op de juiste wijze beëindigd.

Plaats een instructie End With aan het eind van het blok.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er wordt Function of een variabele verwacht

The syntaxis van uw instructie geeft een variabele of een functieoproep aan. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De naam is niet die van een bekende variabele of procedure Function.

Controleer de spelling van de naam. Zorg ook dat alle variabelen of functies met deze naam zichtbaar zijn in het gedeelte van het programma van waaruit u deze variabele of functie oproept. Als een functie bijvoorbeeld is gedefinieerd als Private of een variabele niet als Public is gedefinieerd, is deze variabele of functie alleen zichtbaar binnen de eigen module.

•	U probeert op onjuiste wijze een waarde toe te wijzen aan een procedurenaam. Als bijvoorbeeld MySub een procedure Sub is, veroorzaakt de volgende programmacode bovenstaande fout:

MySub = 237	' Causes Expected Function or variable error

U kunt toewijzingssyntaxis gebruiken bij een procedure Property Let, bij een Function die een object als resultaat geeft of bij een Variant die een object bevat. Bij de procedures Sub, Property Get of Property Set kunt u echter geen toewijzingssyntaxis gebruiken.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er wordt een procedure verwacht, geen module

Er bevindt zich geen procedure met deze naam in het huidige bereik, maar wel een module met deze naam. U kunt een procedure oproepen maar een module niet. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De naam van een module wordt gebruikt als procedureoproep.

Controleer de spelling van de procedurenaam en zorg dat de procedure die u probeert aan te roepen, niet Private is voor een andere module.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er wordt een procedure verwacht, geen project of bibliotheek

Er bevindt zich geen procedure met deze naam in het huidige bereik, maar er is wel een project met deze naam. U kunt een procedure wel oproepen maar een project niet. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De naam van een project wordt gebruikt als procedureoproep.

Controleer de spelling van de procedurenaam en zorg dat de procedure die u probeert aan te roepen, niet Private is voor een andere module.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er wordt een procedure verwacht, geen door de gebruiker gedefinieerd type

Er bevindt zich geen procedure met deze naam in het huidige bereik, maar er is wel een door de gebruiker gedefinieerd type met deze naam. U kunt een procedure oproepen, maar een door de gebruiker gedefinieerd type niet. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De naam van een door de gebruiker gedefinieerd type wordt als procedureoproep gebruikt.

Controleer de spelling van de procedurenaam en zorg dat de procedure die u probeert aan te roepen, niet Private is voor een andere module.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er wordt een procedure verwacht, geen variabele

Er bevindt zich geen procedure met deze naam in het huidige bereik, maar er is wel een variabele met deze naam. U kunt een procedure oproepen, maar een variabele niet. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De naam van een variabele wordt als procedureoproep gebruikt.

De fout kan ook worden veroorzaakt doordat de naam van een geldige procedure verkeerd is gespeld. Deze verkeerde spelling kan namelijk worden aangezien voor een impliciet gedefinieerde variabele. Controleer de spelling van de procedurenaam en zorg dat de procedure die u probeert aan te roepen, niet Private is voor een andere module.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er wordt een Sub, Function of Property verwacht

De syntaxis van uw instructie geeft aan dat er een procedure Sub, Function of Property wordt opgeroepen. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De opgegeven naam is niet de naam van een procedure Sub, Function of Property binnen het bereik van dit gedeelte van het programma.

Controleer de spelling van de naam. Als de procedure wordt gedefinieerd als Private, kan de procedure alleen binnen de eigen module worden opgeroepen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er wordt een door de gebruiker gedefinieerd type verwacht, geen project

Er bevindt zich geen door de gebruiker gedefinieerd type met deze naam in het huidige bereik, maar er is wel een project met deze naam. U kunt een door de gebruiker gedefinieerd type wel opnemen in de definitie van een variabele, maar niet in de definitie van een projecttype. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De naam van een project wordt gebruikt als een door de gebruiker gedefinieerd type.

Controleer de spelling van de naam van het door de gebruiker gedefinieerde type en zorg dat het door de gebruiker gedefinieerde type niet Private is voor een andere module.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er wordt een variabele of procedure verwacht, geen type Enum

De naam van een type Enum verschijnt alleen in een instructie waarin een opsomming van dat type wordt gedeclareerd of als kwalificatie. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De naam van een type Enum wordt gebruikt in plaats van de naam van een opsommingsvariabele van dat type.

Declareer een variabele van het type Enum of zoek naar de vorige declaratie in het huidige bereik en gebruik die variabele.

•	De naam van het type Enum wordt gebruikt in plaats van de naam van een variabele of een procedure.

Controleer de naam van de id die de fout heeft veroorzaakt. Gebruik de naam van een variabele of procedure op de plaats waar u een type Enum had opgegeven.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er wordt een variabele of procedure verwacht, geen module

Er bevindt zich geen variabele of procedure met deze naam in het huidige bereik, maar er is wel een module met deze naam. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De naam van een module wordt gebruikt als variabele of procedure.

Controleer de spelling van de variabele of de procedurenaam en zorg dat de naam waarnaar u wilt verwijzen niet Private is voor een andere module. Een modulenaam kan een kwalificatie zijn, maar kan niet alleen staan.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er wordt een variabele of procedure verwacht, geen project

Er bevindt zich geen variabele of procedure met deze naam in het huidige bereik, maar er is wel een project met deze naam. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De naam van een project wordt gebruikt als variabele of procedure.

Controleer de spelling van de variabele of procedurenaam en zorg dat de naam waarnaar u wilt verwijzen niet Private is voor een andere module. Een projectnaam kan een kwalificatie zijn, maar kan niet alleen staan.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Verwacht: <diversen>

Een verwacht gedeelte van de syntaxis werd niet gevonden. De plaats van de fout is meestal links van het geselecteerde onderdeel, maar is niet altijd duidelijk. U kunt bijvoorbeeld een procedure Sub oproepen met of zonder het sleutelwoord Call. Als u echter het sleutelwoord Call gebruikt, moet u de argumentenlijst tussen haakjes plaatsen. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Verwacht: Einde van instructie. Onjuist gebruik van haakjes in een procedureoproep:

X = Workbook.Add F:= 5	' Error due to no parentheses.

Call MySub 5	' Error due to no parentheses.

Gebruik haakjes in een functieoproep die argumenten opgeeft of bij een procedureoproep Sub die het sleutelwoord Call gebruikt.

•	Verwacht: ). Onjuiste syntaxis voor een procedureoproep. Een functieoproep kan bijvoorbeeld niet op zichzelf staan en in Sub-procedureoproepen is soms het sleutelwoord Call vereist, afhankelijk van de vraag hoe u de argumenten in de oproep opgeeft.

Workbook.Add (X:=5, Y:=7)	' Function call without expression.

YourSub(5, 7)	' Sub invocation without Call.

Gebruik altijd functieoproepen in expressies. Als u in een procedureoproep Sub meerdere argumenten tussen haakjes hebt staan, gebruikt u het sleutelwoord Call.

•	Verwacht: Expressie. U hebt bijvoorbeeld vergeten een waarde voor een benoemd argument op te geven terwijl u programmacode vanuit het Objectenoverzicht plakt.

Workbook.Add (X:= )	' Error because no value assigned to

' named argument.

Voeg een waarde voor het argument toe of verwijder het argument als het optioneel is.

•	Verwacht: Variabele. U hebt bijvoorbeeld gereserveerde sleutelwoorden gebruikt voor namen van variabelen. In het onderstaande voorbeeld verwacht de instructie Input # een variabele als tweede argument. Omdat Type een gereserveerd sleutelwoord is, kan dit woord niet als variabelennaam worden gebruikt.

Input # 1, Type	' Type keyword invalidly used as

' variable name.

Hernoem de variabele, zodat deze geen conflict oplevert met gereserveerde sleutelwoorden.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Een externe naam is niet gedefinieerd

U kunt externe namen aangeven door deze tussen vierkante haken te plaatsen ([ ]). Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De id die tussen vierkante haken is opgegeven, heeft geen betekenis voor de brontoepassing.

Controleer of de spelling van de naam consistent is met de naam die door de brontoepassing wordt verwacht.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Deze bestandsindeling wordt niet meer ondersteund

Niet alle bestandsindelingen zijn onder alle omstandigheden te lezen. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U probeert een binair bestand te openen dat is gemaakt met een eerdere versie van Visual Basic.

Open het bestand in de versie van Visual Basic waarmee het bestand is gemaakt, sla het bestand vervolgens op in tekstopmaak en probeer het opnieuw te openen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Tekenreeksen met een vaste lengte en het gebruik van de kwalificatie 'new' zijn niet toegestaan voor velden in een type dat door een openbare gebruiker in een objectmodule is gedefinieerd

Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Tekenreeksen met een vaste lengte en het gebruik van de kwalificatie 'new' zijn niet toegestaan voor velden in een type dat door een openbare gebruiker in een objectmodule is gedefinieerd.


Tekenreeksen met een vaste lengte zijn niet toegestaan als het type Public-lid van een objectmodule; Private-objectmodules zijn niet toegestaan als het type Public-lid van een Public-objectmodule

Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U kunt het type van een Public-lid van een objectmodule niet instellen op een tekenreeks met een vaste lengte. Gebruik een ander type variabele.

•	U kunt het type van een Public-lid van een Public-objectmodule niet instellen op een Private-objectmodule. Gebruik een ander type.


Tekenreeksen met vaste lengte of statische gegevens mogen niet groter zijn dan 64 kB

Vaste en statische gegevens zijn onder andere niet-automatische variabelen, tekenreeksen met vaste lengte en matrices met vaste grootte. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd meer dan 64 kB aan gegevens op moduleniveau toe te wijzen.

Verminder de hoeveelheid gedeclareerde gegevens. Hoewel gegevens op moduleniveau een maximale omvang van 64 kB kunnen hebben, mogen tekenreeksen met variabele lengte op moduleniveau en matrices deze grens overschrijden.

•	U hebt geprobeerd meer dan 64 kB aan statische gegevens op procedureniveau in de module toe te wijzen.

Verminder het aantal gedeclareerde gegevens van dit type. De maximale omvang van statische gegevens afkomstig van alle procedures in een module is 64 kB in totaal (niet 64 kB per procedure). Statische tekenreeksen met variabele lengte en matrices kunnen deze grens overschrijden.

•	Een door de gebruiker gedefinieerd type overschrijdt de grens van 64 kB.

Verminder de omvang van het door de gebruiker gedefinieerde type. Over het algemeen is de omvang van een door de gebruiker gedefinieerd type gelijk aan de totale omvang die is opgegeven voor de bijbehorende elementen. Op sommige platformen kan er sprake zijn van opvulling tussen de elementen om de uitlijning met de woordgrenzen te handhaven. Wanneer u een door de gebruiker gedefinieerd type nest in een ander door de gebruiker gedefinieerd type, moet de grootte van het geneste type worden opgenomen in de grootte van het nieuwe type.

•	U hebt in een procedure geprobeerd een variabele van een door de gebruiker gedefinieerd type te declareren die meer dan 32 kB geheugenruimte vereist.

Hoewel de maximale omvang van een variabele van een door de gebruiker gedefinieerd type op moduleniveau 64 kB is, mogen variabelen van een door de gebruiker gedefinieerd type in procedures niet groter zijn dan 32 kB. Verminder de omvang die is vereist voor het door de gebruiker gedefinieerde type of gebruik een variabele op moduleniveau.

•	De lengte van een tekenreeks met vaste lengte die binnen een procedure is gedeclareerd, is meer dan 65.464.

Verminder de lengte van de tekenreeks met vaste lengte. Tekenreeksen met variabele lengte kunnen deze grens overschrijden.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Besturingselementvariabele For is al in gebruik

Wanneer u For...Next-lussen nest, moet u in elke lus verschillende besturingselementvariabelen gebruiken. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Een binnenste lus For gebruikt dezelfde teller als een insluitende lus For.

Controleer geneste lussen op herhalingen. Als de buitenste lus bijvoorbeeld For Count = 1 To 25 gebruikt, kan de binnenste lus niet Count gebruiken als besturingselementvariabele.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Besturingselementvariabele For Each moet een Variant of Object zijn

Een besturingselementvariabele is het onderdeelgedeelte van de instructiesyntaxis For Each...Next. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Een collectie heeft een besturingselementvariabele die niet van het type Variant of Object is.

Zorg dat het onderdeelgedeelte van de instructiesyntaxis For Each...Next een Variant of een Object is.

•	Een matrix heeft een besturingselementvariabele die geen Variant is.

Zorg dat het onderdeelgedeelte van de instructiesyntaxis For Each...Next een Variant is.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Besturingselementvariabele For Each voor matrices moet een Variant zijn

Een besturingselementvariabele is het onderdeelgedeelte van de instructiesyntaxis For Each...Next. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Een matrix heeft een besturingselementvariabele die geen Variant is.

Zorg dat het groepgedeelte van de instructiesyntaxis For Each...Next een variabele van het type Variant is.

•	Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


For Each mag niet worden gebruikt voor een matrix van een door de gebruiker gedefinieerd type of tekenreeksen met vaste lengte

Constructies For Each zijn alleen geldig voor collecties en matrices van intrinsieke typen, met inbegrip van matrices van objecten. Bovendien kunnen matrices van tekenreeksen met vaste lengte niet worden herhaald met behulp van For Each. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	De onderdelen van de matrix in uw constructie For Each hebben een door de gebruiker gedefinieerd type.

Gebruik een normale For...Next-lus om de onderdelen van de matrix te herhalen.

•	De onderdelen van de matrix in uw constructie For Each hebben een type van een tekenreeks met vaste lengte.

Gebruik een normale For...Next-lus om de onderdelen van de matrix te herhalen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


For Each mag alleen worden uitgevoerd op een collectie-object of een matrix

De constructie For Each kan alleen worden gebruikt bij collecties en matrices. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een object als groepgedeelte van de syntaxis For Each opgegeven dat geen collectie of matrix is.

Controleer de spelling van het onderdeel dat u wilt gebruiken voor de herhaling. Zorg dat het onderdeel behoort bij een collectie of matrix die binnen het bereik van dit gedeelte van uw programmacode ligt.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


For zonder Next

Bij elke instructie For hoort een instructie Next. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er wordt een instructie For gebruikt zonder bijbehorende instructie Next.

Controleer of er zich een niet-complete structuur For...Next binnen de buitenste structuur For...Next bevindt.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Voorwaartse verwijzing naar een door de gebruiker gedefinieerd type

Een door de gebruiker gedefinieerd type moet worden gedefinieerd voordat het type kan worden opgeroepen. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt een variabele gedeclareerd met een door de gebruiker gedefinieerd type voordat de definitie van het door de gebruiker gedefinieerde type verschijnt. In het volgende voorbeeld wordt de variabele OtherVar gedeclareerd voordat het type van deze variabele (OtherType) bekend is:

Type MyType

OtherVar As OtherType

End Type

Type OtherType

WholeVar As Integer

RealVar As Double

End Type

Verplaats de definities van de typen zodat er geen voorwaartse verwijzing plaatsvindt.

•	U hebt een door de gebruiker gedefinieerd type binnen zichzelf genest.

Type MyType

MyVar As Integer

OtherVar As MyType

End Type

Verwijder het geneste type dat zichzelf oproept. Dit probleem kan zich op indirecte wijze voordoen wanneer u een type binnen een ander type nest waarin het eerste type reeds is gedeclareerd. Controleer de definitie van elk genest type om duplicatie te elimineren.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Functie-oproep aan de linkerkant van de taak moet een Variant of Object als resultaat geven

Een functieoproep kan links van een toewijzing verschijnen, maar alleen als het resultaat van de functie een Object of een Variant is. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Het type resultaat van de functie links van de toewijzing is geen Variant of Object.

Wijzig het type resultaat. Als het resultaat een object is of een Variant die een object bevat, wordt de waarde toegewezen aan de standaardeigenschap van het object. Als het resultaat Variant geen object is, heeft de toewijzing geen effect.

•	Alles in de oproep is juist, de oproep kan echter niet worden voltooid. U probeert bijvoorbeeld een eigenschap in te stellen die alleen tijdens het ontwerpen kan worden ingesteld.

Activeer de ontwerpmodus en stel de eigenschap in in het venster  Eigenschappen. Verwijder de programmacode die probeerde de eigenschap via het programma in te stellen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De functie of interface is gemarkeerd als gereserveerd, of de functie gebruikt een automatiseringstype dat niet wordt ondersteund in Visual Basic

Niet elke programmeertaal kan toegang krijgen tot alle procedures die in een typebibliotheek of objectbibliotheek verschijnen. De maker van een type- of een objectbibliotheek kan een aantal functies markeren als gereserveerd om te voorkomen dat deze functies in macrotalen worden gebruikt. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd een functie gebruiken die opgegeven is als gereserveerd.

U kunt deze functie niet in uw programma gebruiken. Als u documentatie hebt bij het object dat door de bibliotheek wordt vertegenwoordigd, raadpleeg dan deze documentatie om te zien of er een methode bestaat die gelijkwaardige functionaliteit biedt.

•	U hebt een functie gebruikt die een parametertype vereist of die een resultaattype heeft dat niet beschikbaar is in Visual Basic.

Soms kunt u resultaattypen simuleren met equivalenten in Visual Basic. Raadpleeg de subtypen van het gegevenstype Variant. Dit kan ook werken voor niet-Basic-parametertypen die als verwijzing worden verwacht. U kunt een gegevenstype Variant echter niet via waarde doorgeven om een niet-Basic-type te simuleren.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De gebruikte id is te lang

Id's kunnen maximaal 255 tekens lang zijn. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De id is langer dan 255 tekens.

Maak de id kleiner.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Id onder de cursor is geen procedurenaam

U hebt geprobeerd een procedure weer te geven maar de id bij de invoegpositie was geen procedurenaam. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Id is geen procedurenaam.

Controleer de spelling van de id.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Onjuiste DLL-versie

Elke versie van Visual Basic werkt alleen met de bijbehorende (DLL) (Dynamic Link Library) (Windows) of programmacodebron (Macintosh). Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Uw versie van de Visual Basic-DLL of programmacodebron komt niet overeen met de versie die door de brontoepassing wordt verwacht. Het programma probeert routines in een DLL of programmacodebron aan te roepen, maar de versie van de bibliotheek of bron is niet consistent met Visual Basic of met de brontoepassing.

Zorg voor de juiste versie van de bibliotheek of bron en zorg dat er zich in het pad geen oude versies vóór de juiste versie bevinden.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Onjuiste AxtiveX-versie

Uw versies van de ActiveX dynamic link libraries (DLL) (Windows) of programmacodebron (Macintosh) komen niet overeen met de versies die door de brontoepassing worden verwacht. In Microsoft Windows zoekt de toepassing de DLL’s eerst in de huidige map, vervolgens langs de instellingen van uw pad en daarna in de map WINDOWS\SYSTEM. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Tijdens de zoekprocedure werden oude ActiveX-DLL's ontdekt vóór de DLL’s die door de brontoepassing werden verwacht.

U moet niet beide versies van de DLL’s proberen.

Op de Apple Macintosh bevinden ActiveX-bestanden zich gewoonlijk alleen in de map Extensies en treedt deze fout dus waarschijnlijk niet op.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Onvoldoende geheugen in venster Direct om een variabele te maken

Het geheugen in het venster Direct is beperkt. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt in het venster Direct een variabele opgegeven waarvan een exemplaar moet worden gemaakt, omdat deze niet in de codecontext van het programma is gemaakt.

Verwijder de verwijzing naar de variabele in het venster Direct, of declareer de variabele in de codecontext van het programma, zodat deze niet in het venster Direct gemaakt hoeft te worden.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er is niet voldoende geheugen om informatie voor Ongedaan maken op te slaan

U kunt de opdracht Ongedaan maken niet kiezen om de huidige toestand te herstellen nadat u deze bewerking hebt uitgevoerd. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De bewerking is te groot, zodat u met Ongedaan maken deze bewerking niet kunt opslaan.

Probeer de bewerking in kleinere gedeelten uit te voeren.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Onvoldoende projectinformatie om het project in het platform te laden of te laden met de versie die nu in gebruik is

Als u een project opslaat, wordt er extra informatie opgeslagen waarmee het project kan worden geladen in een nieuwere versie van het programma of in een ander platform. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Tijdens het opslaan van het project, verschijnt er een foutbericht dat aangeeft dat er onvoldoende geheugen beschikbaar is om alle informatie op te slaan die nodig is om het project te laden in een andere versie van het programma of in een ander platform.

Laad het bestand in de versie van Visual Basic waarin het bestand eerder was opgeslagen of laad het in het platform waarin het eerder was opgeslagen en sla het bestand opnieuw op. Als er geen foutberichten verschijnen tijdens het opslaan, kunt u het bestand laden in de huidige versie of in het huidige platform.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldige interface voor invoering

Niet alle interfaces kunnen worden ingevoerd in Visual Basic. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De interface bevat bepaalde onderdelen die niet worden ondersteund door Visual Basic. Visual Basic heeft bijvoorbeeld geen equivalent voor het gegevenstype Lange integer zonder typeaanduidingsteken. Visual Basic kan een parameter van een procedure niet aanwijzen als "out-only". Hoewel Visual Basic het gebruik van het onderstrepingsteken (_) ondersteunt in Visual Basic-ID's, kan het programma geen interface invoeren waarin onderstrepingstekens worden gebruikt in de namen van de leden van de interface.

U kunt de interface niet invoeren in Visual Basic.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldige toegangsmodus

In uw instructie Open hebt u een type toegang opgegeven dat ongeldig was voor het opgegeven bestandstype. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt een bestand proberen te openen voor Input, maar u hebt een onjuiste toegangsmodus opgegeven.

U hoeft de toegangsmodus niet op te geven als u een bestand voor Input opent. Doet u dit wel, dan moet de toegangsmodus Read zijn. Zowel Write als Read Write zijn ongeldige toegangsmodi voor een bestand dat wordt geopend voor Input.

•	U hebt geprobeerd een bestand te openen voor Append, maar u hebt een ongeldige toegangsmodus opgegeven.

U hoeft de toegangsmodus niet op te geven als u een bestand opent voor Append. Doet u dit wel, dan moet de toegangsmodus Write zijn. Zowel Read als Read Write zijn ongeldige toegangsmodi voor een bestand dat wordt geopend voor Append.

•	U hebt geprobeerd een bestand te openen voor Output, maar u hebt een ongeldige toegangsmodus opgegeven.

U hoeft de toegangsmodus niet op te geven als u een bestand opent voor Output. Doet u dit wel, dan moet de toegangsmodus Write zijn. Zowel Read als Read Write zijn ongeldige toegangsmodi voor een bestand dat wordt geopend voor Output.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldig kenmerk in Sub, Function of Property

Een aantal kenmerken is niet geldig binnen procedures. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er verschijnt een kenmerk Public of Private binnen het gegevensbereik van een proceduredefinitie.

Verwijder het kenmerk uit de procedure. Verplaats de declaratie naar moduleniveau om de variabele een groter bereik te geven. Variabelen die binnen procedures zijn gedeclareerd, zijn altijd Private.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldig teken

Het teken kan niet in de huidige context worden gebruikt. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt als onderdeel van een variabelennaam waarschijnlijk een ongeldig teken gebruikt, bijvoorbeeld een vierkant haakje of een verbindingsstreepje.

Vergelijk de spelling van de variabelennaam met de declaratie van die naam.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldige gegevensindeling

De gegevens die vanuit een bestand werden gelezen, bevonden zich niet in de verwachte bestandsindeling. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Een projectbestand of een bestand van een objectbibliotheek functioneert niet meer of heeft een bestandsindeling die niet kan worden herkend.

Zorg voor een nieuwe versie van het projectbestand of het bestand van de objectbibliotheek.

•	Misschien hebt u geprobeerd een .exe-bestand in een module te openen.

Open in plaats hiervan de broncode.

•	U hebt misschien het dialoogvenster Verwijzingen en het Objectenoverzicht gebruikt om een verwijzing toe te voegen aan een bestand dat geen geldige objectbibliotheek is of een Basic-project bevat in een indeling die niet wordt ondersteund door de brontoepassing. Op het Windows-platform herkent Microsoft Excel bijvoorbeeld geen .bas- of .frm-bestanden of Microsoft Project-bestanden die Basic-programmacode bevatten.

Open het bestand met de onverwachte gegevensindeling in de toepassing waarin het bestand is gemaakt en sla het bestand vervolgens op in een indeling die wel compatibel is. Zo kan broncode voor de objectbibliotheek bijvoorbeeld worden verwerkt via MkTypLib en kan QuickBasic- en Visual Basic-programmacode worden opgeslagen in een tekstindeling, enzovoort.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldig gegevenstype voor constante

Niet alle typen gegevens kunnen worden toegewezen aan constanten. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd het type van een constante als een door de gebruiker gedefinieerd type, als object of als matrix te declareren.

Verwijder de declaratie of declareer het type opnieuw als variabele.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldig in venster Direct

Niet alle instructies zijn toegestaan in het venster Direct. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Er werd een declaratie-instructie gebruikt. Zo zijn Const, Declare, Deftype, Dim, Function, Option Base, Option Explicit, Option Compare, Option Private, Private en Public declaratie-instructies voor eigenschapprocedures (Property Let, Property Set, en Property Get) en zijn ReDim, Static, Sub en Type niet toegestaan in het venster Direct.

Verwijder de declaratie-instructies uit het venster Direct.

•	Er werd een instructie voor de besturingsstroom gebruikt, zoals Sub, Function, Property, GoSub, GoTo, Return of Resume.

Verwijder deze instructies uit het venster Direct.

•	Er wordt geen logische verbinding gemaakt tussen gescheiden fysieke regels in het venster Direct, waardoor instructies bestaande uit meerdere fysieke regels, zoals de instructie If, niet op de juiste wijze kunnen worden uitgevoerd.

Dergelijke blokken kunnen op één fysieke regel worden getypt, waarbij elke instructie door een dubbele punt (:) wordt gescheiden van de volgende instructie. Andersom kunt u in het venster Direct één instructie over meerdere fysieke regels verdelen door gebruik te maken van het regelvervolgteken, bestaande uit een spatie gevolgd door een onderstrepingsteken ( _).

•	U hebt geprobeerd een bepaalde programmacode in het venster Direct uit te voeren die de huidige toestand van uw programma ongeldig maakt, waardoor u het programma opnieuw moet initialiseren.

Verwijder de betreffende programmacode uit het venster Direct.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldig binnen procedure

De instructie kan niet in een procedure Sub of Function voorkomen. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Een van de volgende instructies verschijnt in een procedure: Declare, Deftype, Private, Public, Option Base, Option Compare, Option Explicit, Option Private, Enum en Type.

Verwijder de instructie uit de procedure. De instructies kunnen op moduleniveau worden geplaatst.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldige lengte voor tekenreeks met vaste lengte

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Er wordt een tekenreeks met vaste lengte gedeclareerd die een lengte van 0 heeft.

Een tekenreeks met vaste lengte moet ten minste één teken hebben.

•	Een tekenreeks met vaste lengte overschrijdt de grens van 65.

Verminder de lengte die is opgegeven voor de tekenreeks met vaste lengte.

Opmerking   Tekenreeksen met variabele lengte kunnen bovenstaande grens overschrijden, maar kunnen ook een lengte van 0 hebben.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldige verwijzing naar besturingselementvariabele Next

De numerieke variabele in het Next-gedeelte van een For...Next-lus moet overeenkomen met de variabele in het For-gedeelte. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De variabele in het Next-gedeelte van een For...Next-lus verschilt van de variabele in het For-gedeelte. Bijvoorbeeld:

For Counter = 1 To 10

MyVar = Counter

Next Count

Controleer of de spelling van de variabele in het Next-gedeelte overeenkomt met de spelling in het For-gedeelte. Controleer ook of u niet per ongeluk gedeelten van de omsluitende lus hebt verwijderd waarin de variabele is gebruikt.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldige of niet-gekwalificeerde verwijzing

Een id die met een punt begint, is alleen geldig binnen een blok With. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	de id begint met een punt.

Maak de kwalificatie van de id compleet of verwijder de punt.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldig buiten procedure

De instructie moet verschijnen binnen een instructie Sub of Function, of binnen een eigenschapprocedure (Property Get, Property Let, Property Set). Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er verschijnt een uitvoerbare instructie Static of ReDim op moduleniveau.

Static is niet noodzakelijk op moduleniveau omdat alle variabelen op moduleniveau static zijn. Gebruik op moduleniveau Dim in plaats van ReDim. Als u een dynamische matrix op moduleniveau wilt maken, declareert u deze matrix met Dim en met behulp van lege haakjes.

Opmerking   Op moduleniveau kunt u alleen opmerkingen en declarerende instructies gebruiken, zoals Const, Declare, Deftype, Dim, Option Base, Option Compare, Option Explicit, Option Private, Private, Public en Type. De instructies Sub, Function en Property verschijnen buiten het gegevensbereik van hun procedures, maar binnen de declaratie van de procedure.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldig gebruik van ParamArray

De parameter die is gedefinieerd als ParamArray wordt op onjuiste wijze in de procedure gebruikt. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd de ParamArray als argument aan een andere procedure door te geven, terwijl deze procedure een matrix of een ByRef Variant verwacht.

Wijs de parameter ParamArray toe aan een Variant en geef vervolgens de variant door.

•	U hebt geprobeerd binnen de procedure een Erase of ReDim te gebruiken samen met een parameter ParamArray.

Verwijder Erase of ReDim. Deze bewerkingen kunnen niet worden uitgevoerd op de parameter ParamArray.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldige procedurenaam

Er gelden beperkingen voor het benoemen van procedures, naast de reeds geldende regels voor naamgeving voor id's. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt getracht een procedure te definiëren maar de voor de procedure gebruikte naam is ongeldig omdat de host die id al voor andere doeleinden gebruikt. Als de hosttoepassing bijvoorbeeld Microsoft Excel is, kunt u een procedure niet definiëren met de naam R1C1 omdat die id al wordt gebruikt door Microsoft Excel.

Kies een andere naam voor de procedure.

•	De procedurenaam is die van een beperkt sleutelwoord, is langer dan 255 tekens of begint niet met een letter.

Kies een andere naam voor de procedure.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldige kwalificatie

Id's worden gebruikt om ambiguïteit uit te sluiten. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De kwalificatie duidt geen project, module, object of variabele aan van een door de gebruiker gedefinieerd type binnen het huidige bereik.

Controleer de spelling van de kwalificatie. Zorg dat de kwalificerende id zich binnen het huidige bereik bevindt. Een variabele van een door de gebruiker gedefinieerd type in een module Private is bijvoorbeeld alleen zichtbaar binnen de betreffende module.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldige ReDim

Niet elke matrix kan opnieuw worden voorzien van een dimensie. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Een variabele is impliciet als Variant gedeclareerd en u hebt geprobeerd deze variabele met behulp van ReDim in een variabele te wijzigen.

Een Variant kan een matrix bevatten, maar als de variant niet expliciet is gedeclareerd, kunt u deze niet met behulp van ReDim wijzigen in een matrix. Declareer de Variant voordat u ReDim gebruikt om het aantal onderdelen op te geven dat de variant kan bevatten. In de volgende programmacode veroorzaakt ReDim AVar(10) bijvoorbeeld een fout door een ongeldige ReDim, maar dit is niet het geval bij ReDim BVar(10):

AVar = 1	' Implicit declaration of AVar.

ReDim AVar(10)	' Causes invalid ReDim error.

.

.

.

Dim BVar	' Explicit declaration of BVar.

ReDim BVar(10)	' No error.

•	U hebt geprobeerd ReDim te gebruiken om meer dan één dimensie te wijzigen van een matrix die zich binnen een Variant bevindt.

U kunt ReDim alleen gebruiken om de omvang van de laatste dimensie van een matrix in een Variant te wijzigen. Als u een matrix wil maken met meerdere dimensies waarvan de grootte kan worden gewijzigd, kan deze matrix zich niet binnen een Variant bevinden en moet u de matrix op de normale wijze declareren.

•	U kunt ReDim alleen gebruiken om het aantal onderdelen in een normale matrix te wijzigen. Het type van de betreffende onderdelen kunt u echter niet wijzigen.

Als u een matrix wilt maken waarin u de typen van de onderdelen kunt wijzigen, gebruikt u een matrix die zich binnen een Variant bevindt. Als u de matrix eerst declareert, kunt u als volgt de typen (en tevens het aantal) onderdelen wijzigen:

Dim MyVar As Variant	' Declare the variable.

ReDim MyVar(10) As String	' ReDim it as array of String subtypes.

ReDim MyVar(20) As Integer	' ReDim it as array of Integer subtypes.

ReDim MyVar(5) As Variant	' ReDim it as array of Variant subtypes.

•	U hebt geprobeerd ReDim te gebruiken met een matrix als lid van een automatiseringsobject.

Verwijder de instructie ReDim.

Opmerking   Als u geen type voor een variabele opgeeft, krijgt de variabele het standaardtype Variant. Dit is niet altijd op het eerste gezicht duidelijk. De volgende programmacode declareert bijvoorbeeld twee variabelen. De eerste, MyVar, is een Variant en de tweede, AnotherVar, is een Integer.

Dim MyVar, AnotherVar As Integer

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldige syntaxis voor declaratie van voorwaardelijke compileerconstanten

Het invoeren van voorwaardelijke compileerconstanten in een dialoogvenster Opties verschilt van het declareren van constanten in programmacode. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een onjuiste syntaxis gebruikt bij het invoeren van een declaratie van een constante in een dialoogvenster Opties.

De enige geldige syntaxis is het toewijzen van een integerwaarde aan de id. Zorg dat de syntaxis voor de invoer er als volgt uitziet en dat constanten worden gescheiden door een dubbele punt(:):

constantenaam = [{+ | – }]integer-waarde : [{+ | – }]constantenaam = integer-waarde [...]

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldig typeaanduidingsteken

Typeaanduidingtekens zijn geldig, maar bestaan niet voor alle gegevenstypen. In een aantal situaties zijn deze tekens niet toegestaan. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Er is een teken voor typedeclaratie toegevoegd aan een variabele die is gedeclareerd in een instructie Private, Public of Static met een As-component.

Verwijder het typeaanduidingsteken.

•	Er is een teken voor typedeclaratie toegevoegd aan een inconsistente letterlijke tekenreeks. Aangezien & het teken voor typedeclaratie is voor een integer Long, treedt de volgende fout op als u dit teken toevoegt aan een letterlijke tekenreeks van een ander type:

10.253&

Verwijder het typeaanduidingsteken of vervang dit teken door het juiste teken.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldig gebruik van operator AddressOf

De operator AddressOf wijzigt een argument zodanig dat deze het adres van een functie in plaats van het resultaat van de functieoproep doorgeeft. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd AddressOf te gebruiken met de naam van een klassenmethode.

Slechts de namen van Visual Basic-procedures in een .bas-module kunnen worden gewijzigd met AddressOf. U kunt geen klassenmethode opgeven.

•	De procedurenaam die is gewijzigd door AddressOf, is bepaald in een module in een ander project.

•	U hebt geprobeerd de naam van een DLL-functie of een functie die is gedefinieerd in een typebibliotheek, te wijzigen met AddressOf.

•	DLL-functies en functies die zijn gedefinieerd in een typebibliotheek, kunnen niet worden gewijzigd met AddressOf.

De proceduredefinitie moet zich in een module bevinden in het huidige project. Verplaats de definitie naar een module in dit project of neem de huidige module met de proceduredefinitie op in het project.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldig gebruik van het sleutelwoord Me

Het sleutelwoord Me kan verschijnen in klassenmodules. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het sleutelwoord Me verscheen in een standaardmodule.

Het sleutelwoord Me kan niet in een standaardmodule verschijnen omdat een standaardmodule geen object vertegenwoordigt. Als u de betreffende programmacode uit een klassenmodule hebt gekopieerd, moet u het sleutelwoord Me vervangen door het specifieke object of de specifieke formuliernaam om de oorspronkelijke verwijzing te behouden.

•	Het sleutelwoord Me verscheen links van een toewijzing met Set, bijvoorbeeld:

Set Me = MyObject	' Causes "Ongeldig gebruik van het sleutelwoord Me" message.

verwijder de toewijzing Set.

Opmerking   Het sleutelwoord Me kan links van een toewijzing Let verschijnen. In dat geval wordt de standaardeigenschap ingesteld van het object dat wordt vertegenwoordigd door Me. Bijvoorbeeld:

Let Me = MyObject	' Valid assignment with explicit Let.

Me = MyObject	' Valid assignment with implicit Let.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldig gebruik van het sleutelwoord New

Het sleutelwoord New kan alleen worden toegepast op een object dat met ActiveX kan worden gemaakt (een exemplaar van een klasse of een automatiseringsobject). Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd een nieuw exemplaar te maken van een object dat slechts eenmaal kan voorkomen. U hebt bijvoorbeeld geprobeerd een nieuw exemplaar van een module te maken door in een instructie zoals de volgende, Module1 op te geven.

Dim MyMod As New Module1

U kunt het nieuwe exemplaar niet maken omdat een module slechts een maal kan voorkomen.

•	U hebt geprobeerd een exemplaar van een automatiseringsobject te maken, maar het was geen object dat met ActiveX kan worden gemaakt. U hebt bijvoorbeeld geprobeerd een nieuw exemplaar van een keuzelijst te maken door ListBox op te geven in een instructie zoals de volgende:

' Valid syntax to create the variable.

Dim MyListBox As ListBox

Dim MyFormInst As Form

' Invalid syntax to instantiate the object.

Set MyFormInst = New Form

Set MyListBox = New ListBox

ListBox en Form zijn klassennamen, geen namen van specifieke objecten._ U kunt deze klassennamen gebruiken om op te geven dat een variabele en verwijzing is naar een bepaald objecttype, zoals met de geldige instructie Dim hierboven. U kunt de namen echter niet gebruiken om van de objecten zelf een exemplaar te maken in een instructie Set. In de instructie Set moet u een specifiek object opgeven en niet de algemene klassennaam:

' Valid syntax to create new instance of a form or list box.

Set MyFormInst = New Form1

Set MyListBox = New List1

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldig gebruik van object

U hebt geprobeerd een object op onjuiste wijze te gebruiken. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Mogelijk hebt u geprobeerd een objectverwijzing te beëindigen door de waarde Nothing aan deze verwijzing toe te wijzen. U hebt hierbij het sleutelwoord Set weggelaten:

MyObject = Nothing

Gebruik de instructie Set om de waarde van een object in te stellen op Nothing. Aangenomen dat MyObject een object is, moet u de waarde ervan met de instructie Set instellen op Nothing:

Set MyObject = Nothing

Het weglaten van het sleutelwoord Set komt neer op een impliciet gebruik van Let. Dit heeft een poging tot gevolg om eerder een waardetoewijzing uit te voeren dan een verwijzingstoewijzing. Nothing kan niet worden gebruikt in een waardetoewijzing.

•	U hebt geprobeerd de waarde Nothing in een expressie te gebruiken.

Schrijf de expressie opnieuw zonder de waarde Nothing.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldig gebruik van een eigenschap

U gebruikt een bepaald type van de procedure Property waar een ander type wordt verwacht. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U probeert te schrijven naar een eigenschap die alleen kan worden gelezen.

Als de enige gedefinieerde eigenschapsprocedure voor de eigenschap een Property Get is, kunt u geen waarde toewijzen aan de eigenschap. Schrijf een geschikte procedure Property Let of probeer niet naar de eigenschap te schrijven.

•	U probeert een eigenschap te lezen waarnaar u alleen kunt schrijven.

Als de enige gedefinieerde eigenschapprocedure voor de eigenschap een Property Let is, kunt u de waarde van de eigenschap niet lezen. Schrijf een geschikte procedure Property Get of probeer niet naar de eigenschap te schrijven.

•	U probeert een verwijzing in te stellen, maar de eigenschap heeft alleen procedures Property Get of Property Let.

Schrijf een procedure Property Set voor de eigenschap of probeer geen verwijzing naar deze eigenschap in te stellen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldige controle-expressie

De opgegeven controle-expressie is geen geldige expressie. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De controle-expressie heeft een onjuiste syntaxis.

Controleer de syntaxis van alle onderdelen waaruit de expressie is opgebouwd. De syntaxis voor een controle-expressie correspondeert met de lokale instellingen van het project waarin de gecontroleerde expressie is gedefinieerd.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Naam is niet gedefinieerd

Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er wordt verwezen naar een regelnaam of regelnummer (bijvoorbeeld in een instructie GoTo), maar deze naam of dit nummer verschijnt niet binnen het bereik van de verwijzing.

De naam moet zich in de procedure bevinden die de verwijzing bevat. Regelnamen zijn alleen in eigen procedures zichtbaar.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De taal- of landinstellingen zijn gewijzigd

Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt de standaardinstelling voor taal/land gewijzigd voor de Visual Basic-omgeving.

Hoewel deze handeling is toegestaan, kunnen er toch problemen optreden.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Deze regel bevat geen uitvoerbare instructie

Declaraties en opmerkingen zijn geen uitvoerbare instructies. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt de opdracht Stap naar cursor gekozen, maar de cursor bevond zich niet op een regel die een uitvoerbare instructie bevatte.

Plaats de cursor op een uitvoerbare instructie in de buurt van de huidige regel.

Voor aanvullende informatie kiest u de opdracht Stap naar cursor in het menu Uitvoeren en drukt u op F1 (in Windows) of op HELP (op de Macintosh).


Regel is te lang

Een fysieke regel Visual Basic-programmacode kan maximaal 1023 tekens bevatten. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Een regel bevat te veel tekens.

U kunt een langere logische regel maken door fysieke regels te verbinden met een regelvervolgteken, een spatie gevolgd door een onderstrepingsteken ( _). Met regelvervolgtekens kunt u maximaal 25 fysieke regels met elkaar verbinden, zodat deze samen één logische regel vormen, of 24 opeenvolgende regelvervolgtekens. Op deze wijze kan een logische regel in totaal 10.230 tekens bevatten. Bovendien moet u de regel onderverdelen in afzonderlijke instructies of een aantal expressies toewijzen aan tussenvariabelen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Loop zonder Do

Een Do-lus moet beginnen met een instructie Do. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een incompleet lusblok genest binnen een andere lus.

Controleer of de juiste syntaxis Do...Loop wordt gebruikt.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


LSet is alleen toegestaan met tekenreeksen en door de gebruiker gedefinieerde typen

LSet wordt gebruikt om gegevens binnen tekenreeksen en variabelen van een door de gebruiker gedefinieerd type links uit te lijnen. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	De opgegeven variabele is geen tekenreeks van een door de gebruiker gedefinieerd type.

Als u de ene matrix door middel van blokken aan een andere matrix wilt toewijzen, werkt LSet niet. U moet een lus gebruiken om elk onderdeel afzonderlijk toe te wijzen.

•	U hebt geprobeerd LSet samen met een object te gebruiken

LSet kan ook worden gebruikt om de onderdelen van een variabele van een door de gebruiker gedefinieerd type toe te wijzen aan de onderdelen van een ander, maar compatibel, door de gebruiker gedefinieerd type. Hoewel objecten veel lijken op door de gebruiker gedefinieerde typen, kunt u LSet niet voor objecten gebruiken. Ook kunt u LSet niet gebruiken bij variabelen van door de gebruiker gedefinieerde typen die matrices, objecten of varianten bevatten.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


LSet is niet toegestaan

LSet wordt gebruikt om gegevens binnen tekenreeksen en variabelen van een door de gebruiker gedefinieerd type links uit te lijnen. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd LSet te gebruiken bij een door de gebruiker gedefinieerd type dat matrices, objecten of varianten bevat.

U moet de onderdelen afzonderlijk van deze variabele, van een door de gebruiker gedefinieerd type, aan een andere variabele toewijzen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Verkeerde interface voor Implements: interface is het resultaat van een andere zuivere interface met methoden zonder beperkingen

Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De interface is direct of indirect het resultaat van een zuivere interface die methoden zonder beperkingen bevat.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Verkeerde interface voor Implements: interface bevat gegevensvelden

Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De interface of klasse bevat gegevensvelden.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Verkeerde interface voor Implements: methode bevat onderstrepingsteken in naam

De instructie Implements wordt gebruikt om een interface of klasse op te geven die wordt geïmplementeerd in de klassenmodule waarin deze verschijnt. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De interface of klasse bevat een methodenaam die een onderstrepingsteken bevat.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Verkeerde interface voor Implements: methode geeft niet HRESULT als resultaat

De instructie Implements wordt gebruikt om een interface of klasse op te geven die wordt geïmplementeerd in de klassenmodule waarin deze verschijnt. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De interface of klasse bevat een methodenaam die als resultaat een waarde geeft die niet van het type HRESULT is.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Verkeerde interface voor Implements:  de methode heeft een out-only- of een LCID-parameter

De instructie Implements wordt gebruikt om een interface of klasse op te geven die wordt geïmplementeerd in de klassenmodule waarin deze verschijnt. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De interface of klasse bevat een methode met een parameter van het type out-only of LCID.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Verkeerde interface voor Implements:  de methode heeft een parameter met te veel niveaus zonder richting

De instructie Implements wordt gebruikt om een interface of klasse op te geven die wordt geïmplementeerd in de klassenmodule waarin deze verschijnt. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De interface of klasse bevat een methode met een parameter die te veel niveaus zonder richting heeft. Bijvoorbeeld het gebruik van dubbele niveaus zonder richting van integer of drievoudige niveaus zonder richting van door de gebruiker gedefinieerde typen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Verkeerde interface voor Implements: methode gebruikt type dat niet wordt ondersteund door Visual Basic

De instructie Implements wordt gebruikt om een interface of klasse op te geven die wordt geïmplementeerd in de klassenmodule waarin deze verschijnt. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De interace of klasse bevat een methode die niet wordt ondersteund door Visual Basic.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Verkeerde interface voor Implements: interface is niet resultaat van Iunknown

De instructie Implements wordt gebruikt om een interface of klasse op te geven die wordt geïmplementeerd in de klassenmodule waarin deze verschijnt. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De interace of klasse bevat een methode die gegevenstypen gebruikt die niet worden ondersteund door Visual Basic.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Het maximale aantal controle-expressies is toegevoegd

Het aantal controle-expressies dat het venster Controle kan bevatten, is beperkt. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt het maximale aantal toegestane controle-expressies toegevoegd aan het venster Controle.

Verwijder een controle-expressie voor elke nieuwe controle-expressie die u wilt toevoegen. U kunt ook de waarde waarover u iets wilt weten, weergeven in het venster Direct.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Aanduiding van lid bestaat al in een objectmodule waarvan deze objectmodule is afgeleid

Aanduidingen die worden gebruikt voor leden van een objectmodule, kunnen niet strijdig zijn met namen die al worden gebruikt in een objectmodule waarvan ze zijn afgeleid. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Een procedure of een gegevenslid in uw objectmodule gebruikt een aanduiding die al wordt gebruikt in de objectmodule waarvan deze is afgeleid. Als een formulier bijvoorbeeld een eigenschap BackColor heeft, veroorzaakt de volgende programmacode bovenstaande fout:

' Form already has a BackColor property.

Dim BackColor As Integer	' Generates the error.

Function BackColor()	' Generates the error.

End Function

Wijzig de aanduiding die strijdig is met de aanduiding van het lid in uw objectmodule.

Opmerking   De volgende namen kunnen niet worden gebruikt als eigenschaps- of methodenaam omdat deze tot de onderliggende interfaces IUnknown en IDispatch behoren: QueryInterface, AddRef, Release, GetTypeInfoCount, GetTypeInfo, GetIDsOfNames, Invoke. Het gebruik van deze namen leidt tot een compilatiefout.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De methode is ongeldig zonder geschikt object

Niet alle methoden kunnen door alle objecten worden uitgevoerd. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een methode opgeroepen zonder een object op te geven. Bovendien is de methode niet geldig voor dit impliciete object. U kunt bijvoorbeeld de methode Line niet zonder geldige kwalificatie van het object gebruiken in een standaardmodule omdat een standaardmodule de uitvoer van de methode Line niet kan weergeven.

Kwalificeer de methodeoproep expliciet met een object dat in staat is de methode te accepteren. Bij de methode Line kunt u bijvoorbeeld geen formulier of afbeeldingvak opgeven.

Opmerking   Andere methoden waarvoor een expliciete kwalificatie van het object vereist is bij gebruik in een standaardmodule, zijn Circle, Print en PSet.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er ontbreekt een haakje sluiten

Vierkante haakjes moeten een paar vormen in een instructie. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Een vierkant haakje openen wordt niet gevolgd door een vierkant haakje sluiten.

Plaats een vierkant haakje sluiten achter de gegevens die tussen haakjes moet komen te staan.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan een module niet vinden

Modules worden niet geopend vanuit een codeverwijzing. Ze moeten onderdeel zijn van het project. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De vereiste module bestaat niet in het opgegeven project. Deze fout treedt bijvoorbeeld op bij de instructie MyModule.SomeVar = 5, als MyModule niet zichtbaar is in het project MyProject.

Raadpleeg de documentatie bij de brontoepassing voor informatie over het opnemen van de module in het project.


De module is te groot

Een module bevat programmacode binnen het project. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er staat te veel programmacode in de module.

Maak een nieuwe module en verplaats enkele van de procedures van deze module naar de nieuwe module. Als de huidige module op moduleniveau declaraties bevat van gegevens die beschikbaar moeten zijn voor procedures in de nieuwe module, declareert u die gegevens als Public.

Opmerking   Opmerkingen worden niet meegeteld als regels programmacode. Deze fout kan dan ook niet worden opgelost door opmerkingen te verwijderen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Dit moet de eerste instructie op de regel zijn

Niet alle sleutelwoorden kunnen aan het begin van een coderegel verschijnen. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt op dezelfde regel een andere instructie laten voorafgaan aan een instructie Sub, Function of Property.

Een instructie Sub, Function of Property moet altijd de eerste instructie zijn op elke regel waarin deze verschijnt (tenzij de instructie wordt voorafgegaan door het sleutelwoord Public, Private of Static).

•	U hebt op dezelfde regel een andere instructie laten voorafgaan aan een instructie End If, Else of ElseIf.

Een instructie End If, Else of ElseIf (alleen als deze in een If-blokstructuur wordt gebruikt) moet altijd de eerste instructie zijn op elke regel waarin deze verschijnt.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De opgegeven naam is strijdig met een bestaand project, een bestaande module of een bestaande objectbibliotheek

Modules, objectbibliotheken en opgeroepen projecten moeten een unieke naam hebben binnen een project. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Er bestaat al een module, een project of een objectbibliotheek met deze naam waarnaar in dit project wordt verwezen. De extensie van een bestandsnaam wordt bovendien niet als een onderdeel van de naam gezien. U kunt dus niet verschillende extensies gebruiken om onderscheid te maken tussen de verschillende bestanden.

Gebruik een andere naam voor een van de dubbele module-, project- of objectbibliotheekverwijzingen.

•	U hebt geprobeerd een verwijzing toe te voegen aan een project of een objectbibliotheek waarvan de bestandsnaam (zonder extensie) dezelfde is als de naam van een van de modules van het huidige project.

Wijzig de modulenaam of de naam van het bestand dat niet kon worden toegevoegd.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Een benoemd argument is al opgegeven

U kunt een benoemd argument slechts één keer in de argumentenlijst van elke procedureoproep gebruiken. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt in één oproep hetzelfde benoemde argument vaker dan een keer opgegeven. Voor de procedure MySub worden bijvoorbeeld de benoemde argumenten Arg1 en Arg2 verwacht. Deze fout wordt bijvoorbeeld veroorzaakt door de volgende oproep:

Call MySub(Arg1 := 3, Arg1 := 5)

Verwijder een van de twee specificaties die dubbel zijn gebruikt.

•	U hebt hetzelfde argument zowel met de positie als met een benoemd argument opgegeven, zoals in het volgende voorbeeld:

Call MySub(1, Arg1 := 3)

Verwijder een van de twee specificaties die dubbel zijn gebruikt.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Benoemde argumenten zijn niet toegestaan

Benoemde argumenten zijn niet in alle situaties toegestaan. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd een benoemd argument als matrixindex op te geven, zoals in het volgende voorbeeld:

MyVar = MyArray(MyNamedArg := 1)

Gebruik een normale variabele of expressie van het type constante als matrixindex.

•	U hebt geprobeerd een benoemd argument op te geven bij een object, zoals in het volgende voorbeeld:

MyVar = MyObject(MyNamedArg:= 1)

Gebruik een variabele of een expressie van het type constante als voor het object een argument vereist is. Als de standaardinstelling voor een object bijvoorbeeld een methode is, geeft de naam van het object de standaardmethode aan. Als het object argumenten vereist, geeft u de positie van deze argumenten op.

•	U hebt geprobeerd een benoemd argument op te geven met een externe naam:

MyVar = [MyName]( MyNamedArg:= 1)

Gebruik een normale variabele of een expressie van het type constante als de externe naam een argument vereist.

•	U hebt geprobeerd een benoemd argument op te geven met een gegevenslid van een object, zoals in het volgende voorbeeld:

MyVar = [MyObject].MyProperty(MyNamedArg:= 1)

Gebruik een normale variabele of een expressie van het type constante als het gegevenslid een argument vereist.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Next zonder For

Een instructie Next moet worden voorafgegaan door de instructie For. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Een instructie Next wordt zonder een bijbehorende instructie For gebruikt.

Controleer andere besturingsstructuren binnen de structuur For...Next en zorg er voor dat deze volledig zijn. Deze fout treedt bijvoorbeeld op als u binnen de structuur For...Next een instructie If gebruikt zonder instructie End If.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er is geen tekst geselecteerd

U moet tekst selecteren om deze bewerking te kunnen uitvoeren. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een bewerking gestart met Zoeken of Vervangen zonder dat u vooraf tekst hebt geselecteerd.

Bij bepaalde brontoepassingen kunt u het bereik van een selectie opgeven als u tekst zoekt of wilt vervangen, zelfs als er op dat moment geen tekst is geselecteerd. U selecteert tekst door de cursor aan het begin van de gewenste selectie te plaatsen. Vervolgens houdt u SHIFT ingedrukt en gebruikt u de pijltoetsen of klikt u op het eind van de tekst die u wilt selecteren om de selectie te voltooien. Als u de geselecteerde tekst niet wilt zoeken, maakt u de optie Selectie ongedaan.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er is niet voldoende geheugen om het project volledig op te slaan

Als u een project opslaat, wordt er gewoonlijk extra informatie opgeslagen waarmee het mogelijk wordt het project in een nieuwe versie van het programma te laden of in een ander platform. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er is onvoldoende geheugen beschikbaar om de informatie op te slaan die nodig is als u het project wilt openen in een nieuwere versie van Visual Basic of in een ander platform.

Als u van plan bent het project in een nieuwe versie van Visual Basic of in een ander platform te openen, moet u enkele toepassingen afsluiten en het project opnieuw proberen op te slaan.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er is geen controle-expressie geselecteerd

U moet een expressie hebben geselecteerd als u de opdracht Directe controle hebt gekozen. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geen expressie geselecteerd om te controleren voordat u Directe controle koos.

Selecteer de gewenste controle-expressie in het venster Code voordat u de opdracht Directe controle kiest.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De objectbibliotheekopdracht wordt niet ondersteund

Het is mogelijk dat er kenmerken in een objectbibliotheek zijn die geen equivalent hebben in Visual Basic. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er is een poging gedaan toegang te krijgen tot een gegevenstype of functie van een objectbibliotheek, terwijl dit type of deze functie niet door Visual Basic wordt ondersteund.

Neem contact op met de maker van de objectbibliotheek voor meer informatie over wanneer en met welke hulpmiddelen u de objectbibliotheek het beste kunt gebruiken.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan de objectbibliotheek voor Visual Basic for Applications niet vinden

De objectbibliotheek van Visual Basic for Applications is niet langer een opzichzelfstaand bestand, maar is geïntegreerd in de DLL (Dynamic Link Library).

Het kan voorkomen dat onder buitengewone omstandigheden een vorige versie van de objectbibliotheek (vaxxx.olb of vaxxxx.olb), die bij de taal van het project hoort, nodig is maar niet kan worden gevonden. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	De objectbibliotheek ontbreekt volledig, bevindt zich niet in de verwachte map of is van een onjuiste versie.

Zorg dat de objectbibliotheek zich in de juiste map bevindt die is opgegeven in de documentatie bij de hosttoepassing.

Als de ontbrekende bibliotheek een taalversie is die door de brontoepassing is geïnstalleerd, kunt u het beste het installatieprogramma opnieuw starten. Als een project een andere objectbibliotheek voor de taal vereist dan de bibliotheek die met uw brontoepassing is verbonden (bijvoorbeeld als iemand u een project stuurt dat op een machine is geschreven die is ingesteld op een andere taal), zorg dan dat de juiste taalversie van de objectbibliotheek van Visual Basic bij het project wordt geleverd en dat deze versie op de verwachte locatie wordt geïnstalleerd.

Toepassingen kunnen verschillende taalversies van hun objectbibliotheken ondersteunen. Als u wilt weten welke taalversie is vereist, opent u het dialoogvenster Verwijzingen om vast te stellen welke taal onder in het dialoogvenster wordt aangegeven.

Objectbibliotheken bestaan in verschillende versies voor verschillende platformen. Dit betekent dat als projecten van het ene platform naar het andere worden verplaatst (bijvoorbeeld van Macintosh naar Microsoft Windows), de juiste taalversie van de opgeroepen bibliotheek (voor dat platform) beschikbaar moet zijn op de locatie die in de documentatie bij de brontoepassing wordt opgegeven. Een aantal taalcodes heeft twee tekens, terwijl andere taalcodes drie tekens hebben.

Bestandsnamen van objectbibliotheken in Visual Basic worden als volgt gemaakt:

•	Windows: Toepassingscode + Taalcode + [Versie].OLB. Bijvoorbeeld:

VAFR2.OLB is de objectbibliotheek voor de Franse Visual Basic for Applications, versie 2.

•	Macintosh: Naam van de toepassing, Taalcode [Versie] OLB. Bijvoorbeeld:

VA FR 2 OLB is de objectbibliotheek voor de Franse Visual Basic for Applications, versie 2.

Als u een ontbrekend object of een ontbrekende bibliotheek niet op uw systeem kunt vinden, neem dan contact op met de maker van het oproepende project. Als de ontbrekende bibliotheek een objectbibliotheek van een Microsoft-toepassing is, kunt u deze als volgt achterhalen:

•	Als u toegang hebt tot de elektronische ondersteuning van Microsoft, raadpleeg dan het gedeelte over de technische ondersteuning in dit Help-bestand. Onder elektronische service treft u instructies aan over het gebruik van de juiste serviceoptie.

•	Als u geen toegang hebt tot de elektronische ondersteuning van Microsoft, zijn er op aanvraag objectbibliotheken van Microsoft beschikbaar als toepassingsnotitie. In het gedeelte over de technische ondersteuning van dit Help-bestand vindt u tevens informatie over de manier waarop u contact kunt opnemen met de productondersteuning van Microsoft.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De objectbibliotheek is niet geregistreerd

De objectbibliotheek van Visual Basic for Applications is niet langer een opzichzelfstaand bestand, maar is geïntegreerd in de DLL (Dynamic Link Library).

In vorige versies van Visual Basic for Applications moest u, als u een toepassing startte die Visual Basic gebruikte, bepaalde objectbibliotheken openen. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er is geprobeerd een vorige versie van de objectbibliotheek van Visual Basic for Applications (Vaxxx.olb) of de objectbibliotheek van de brontoepassing te openen. De juiste taalversie van deze objectbibliotheken is echter niet gevonden in het systeemregister.

Registreer uw toepassing. Verwijder op de Macintosh het bestand vba.ini uit de Macintosh-map Voorkeuren en start de toepassing opnieuw.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De taalinstellingen van de objectbibliotheek komen niet overeen met die van het huidige project

De verwijzing kon niet worden toegevoegd. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd een verwijzing toe te voegen aan een objectbibliotheek waarvan de lokale instelling niet compatibel is met de lokale instelling van het huidige project. De verwijzing is niet toegevoegd. Als u deze objectbibliotheek wilt gebruiken, moet u een project maken waarvan de lokale instelling compatibel is met deze objectbibliotheek.

Probeer zowel Visual Basic for Applications als de brontoepassing voor de opgegeven taal te registreren. U kunt dan in het dialoogvenster Verwijzingen over de objectbibliotheek beschikken.

Opmerking   Als Visual Basic de brontoepassing is, is het niet mogelijk de taalinstelling van een project te wijzigen. Alle gebruikte objectbibliotheken moeten compatibel zijn met de voor Visual Basic ingestelde taal.


Dit type wordt niet ondersteund in Visual Basic

Niet alle typen worden in Visual Basic ondersteund. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd een type in uw programma te gebruiken dat geen equivalent heeft in Visual Basic for Applications. Visual Basic heeft bijvoorbeeld geen type pointer of type integer zonder typeaanduidingsteken, dus als u probeert een variabele te maken met een van deze typen uit een objectbibliotheek, treedt bovenstaande fout op. In het volgende voorbeeld kan Visual Basic geen variabele van genoemd type maken als deze variabele een type bevat dat Visual Basic niet herkent, hoewel Rainbow een geldige structuur kan zijn:

Dim MyVar As Rainbow	' Veroorzaakt fout.

Als het type een geldig parametertype is voor een functie in een objectbibliotheek, betekent deze fout alleen dat u geen variabele van dat type in uw eigen programmacode kunt maken. Hoewel u niet altijd variabelen kunt declareren met behulp van een gegevenstype dat is opgegeven in de documentatie van een object, bestaat er wel vaak een equivalent van deze variabele in Visual Basic. Hoewel Visual Basic niet het type pointer bevat, kunt u bijvoorbeeld toch een pointer doorgeven aan een  API-functie met behulp van de operator AddressOf. Controleer ook de subtypen van het Variant-type. Deze kunt u dikwijls gebruiken als equivalenten van typen die niet direct in Visual Basic worden aangeboden. In een aantal gevallen heeft Visual Basic echter geen equivalent. Zo zijn bijvoorbeeld gegevenspointers niet beschikbaar.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er mogen alleen opmerkingen staan na End Sub, End Function of End Property

Alleen opmerkingen, stuurinstructies en declaraties zijn buiten de procedures toegestaan. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt uitvoerbare programmacode buiten een procedure geplaatst.

Alle niet-declarerende regels buiten een procedure moeten beginnen met een apostrof (') als scheidingsteken voor opmerkingen. Declarerende instructies moeten vóór de eerste proceduredeclaratie verschijnen. Opmerkingen worden genegeerd wanneer de programmacode wordt uitgevoerd.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Optioneel argument moet Variant zijn

Optionele argumenten kunnen argumenten zijn van elk intrinsiek gegevenstype, maar het moet een type zijn met één standaardwaarde. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd Optional op te geven bij een parameter die geen standaardwaarde heeft, bijvoorbeeld een matrix.

Zorg dat elk argument dat u opgeeft als Optional, een standaardwaarde heeft.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Option Private Module is niet toegestaan in een objectmodule

Option Private Module zorgt dat de inhoud van een module niet beschikbaar is voor andere projecten, maar wel voor uw eigen project. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De instructie Option Private Module verschijnt in een objectmodule.

Verwijder de instructie Option Private Module uit de module. Objectmodules hebben standaard de kenmerken van Option Private Module. Het is niet mogelijk de standaard vanuit de programmacode te wijzigen. Raadpleeg de documentatie van uw brontoepassing voor informatie over de manier waarop u leden van een objectmodule meer zichtbaarheid kunt geven.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Onvoldoende geheugen. Een aantal controle-expressies is misschien verwijderd

Als uw systeem geen geheugenruimte meer heeft, worden controle-expressies verwijderd om voldoende geheugenruimte beschikbaar te maken voor herstel van de oorspronkelijke toestand. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt te veel toepassingen, projecten of modules geopend.

Om uw werkzaamheden te kunnen voorzetten, verwijdert u alle onderdelen die niet echt noodzakelijk zijn uit het geheugen, inclusief toepassingen, projecten of eventueel geopende modules.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Onvoldoende bronnen

Bepaalde brontypen, "ingangen" genaamd,  worden intern voor veel bewerkingen gebruikt. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De programmacode heeft een brongrens bereikt.

Probeer de programmacode op te slaan, te sluiten en opnieuw te openen. Als u nog steeds een foutmelding krijgt, vermindert u het aantal objecten dat in de programmacode wordt opgeroepen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


ParamArray moet worden gedeclareerd als een matrix of als een Variant

Alle argumenten voor een parameter ParamArray kunnen van een verschillend gegevenstype zijn. Daarom moet de parameter zelf als matrix van het type Variant worden gedeclareerd. U kunt voor een ParamArray ook een onbeperkt aantal argumenten opgeven. Als de oproep is uitgevoerd, wordt elk argument dat in de oproep is opgegeven, een bijbehorend onderdeel van de matrix Variant. Bijvoorbeeld:

Sub MySub(ParamArray VarArg())

. . .

End Sub

Call MySub ("Eerste arg", 2, 3.54)

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	In de definitie van de procedure, wordt de parameter ParamArray gedefinieerd als een matrix van een ander type dan van het type Variant.

Declareer het parametertype opnieuw als matrix van Variant-onderdelen.

•	U hebt geen gegevenstype opgegeven voor de parameter ParamArray, maar de proceduredefinitie ligt binnen het bereik van een instructie van het type Deftype. De parameter wordt dus impliciet gedeclareerd als een ander type dan het type Variant.

Gebruik een expliciete component As Variant bij de specificatie van de parameter ParamArray.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Raadpleeg het Leesmij-bestand voor meer informatie over deze fout

Sommige onderwerpen zijn toegevoegd aan dit product nadat de Help was voltooid. Help-informatie over deze onderwerpen vindt u in het Leesmij-bestand in de brontoepassing.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Persoonlijke Enum en typen die door de gebruiker zijn gedefinieerd, kunnen niet worden gebruikt als parameters of resultaattypen voor openbare procedures, openbare gegevensleden, of velden van typen die door een openbare gebruiker zijn gedefinieerd.

Een procedure Public is zichtbaar voor alle modules in een project, terwijl een Enum-type dat is gedeclareerd als Private, niet zichtbaar is buiten de eigen module. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Uw procedure Public bevindt zich in een Public-klasse, maar resulteert in een waarde of bevat een parameter die is gedefinieerd in een standaardmodule of in een Private-klasse.

Declareer het type Enum als Public. Het type moet zich in een klassenmodule bevinden.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De procedure is te groot

De programmacode voor een procedure mag na compilatie niet groter zijn dan 64 kB. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De programmacode voor deze procedure is na compilatie groter dan 64 kB.

Splits deze en andere grote procedures in twee of meer kleinere procedures.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De module bevat te veel namen van procedures, variabelen en constanten

De in een project opgenomen namen van procedures, variabelen, constanten en parameters worden opgeslagen in een namentabel. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Het aantal namen in de namentabel van het project is groter dan 32.768.

Mogelijk bevat de namentabel enkele tijdelijke duplicaten. U kunt de tabel comprimeren door het project op schijf op te slaan en vervolgens te sluiten. Als het probleem nog steeds bestaat nadat u het project opnieuw hebt geopend, vermindert u het aantal namen door in verschillende procedures dezelfde variabelennamen te gebruiken, waarna u de tabel nogmaals comprimeert door het project op te slaan, te sluiten en opnieuw te openen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan het project niet vinden

Het project is niet gevonden. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een projectnaam opgegeven die niet kan worden gevonden.

Controleer de manier waarop u het project hebt opgegeven op mogelijke fouten.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Het gebruik van een gekwalificeerde naam is niet toegestaan in het modulebereik

Onder bepaalde omstandigheden worden in sommige brontoepassingen geen procedureoproepen toegestaan die gekwalificeerde namen bevatten. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een modulenaam opgegeven in een procedureoproep waarbij puntnotatie is gebruikt (kwalificatie.onderdeel).

Als u deze foutmelding krijgt, komt dit waarschijnlijk doordat de brontoepassing de opgegeven kwalificatie al kent en deze informatie niet nodig heeft in de procedureoproep. In dat geval kunt u de kwalificatie helemaal weglaten. De brontoepassing zal de procedureoproep dan correct uitvoeren. Raadpleeg de documentatie bij de brontoepassing als u de reden voor andere beperkingen op gekwalificeerde namen wilt weten.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De kwalificatie moet een collectie zijn

Het gebruik van een uitroepteken tussen twee aanduidingen is specifiek voor collecties. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Links van het uitroepteken (!) is een naam gebruikt die niet de naam van een collectie is.

Controleer of de naam correct is gespeld als de naam een collectie moet weergeven. Het uitroepteken is ook een typeaanduidingsteken voor het gegevenstype Single. Als de naam geen collectie moet zijn, is het mogelijk dat het typeaanduidingsteken ! dat is verbonden met een naam van een variable, is gekoppeld aan een andere naam.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Het bereik bevat geen waarden

U kunt het aantal onderdelen in een matrix slechts op een paar manieren opgeven. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt de matrixgrenzen niet correct opgegeven. De volgende bereiken zijn bijvoorbeeld ongeldig:

Dim MyArray(10 To -5)	' Descending order not permitted.

Dim MyArray(0 To 0)	' No elements in the array.

Controleer of de syntaxis juist is. Zo is het volgende bereik geldig:

Dim MyArray(-5 To 10)

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


RSet is alleen toegestaan voor tekenreeksen

U gebruikt RSet om tekenreeksgegevens rechts uit te lijnen binnen tekenreeksen met een vaste of variabele lengte. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd de instructie RSet te gebruiken voor een variabele die geen tekenreeks is.

U kunt proberen de variabele te converteren naar een tekenreeks. Als dit niet lukt, moet u Rset niet gebruiken.

Opmerking   Hoewel u de instructie LSet kunt gebruiken om onderdelen van een variabele van een door de gebruiker gedefinieerd type toe te wijzen aan de onderdelen van een ander, maar compatibel, door de gebruiker gedefinieerd type, kunt u dit soort toewijzingen beter niet gebruiken omdat er geen garantie is dat deze worden verwerkt.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Fout <nummer> tijdens uitvoering

Dit is een door de gebruiker gedefinieerde fout. Deze fout heeft de volgende oorzaak en kan als volgt worden opgelost:

•	Er is een fout gegenereerd die niet overeenkomt met een fout in Visual Basic.

Handel deze fout af zoals is aangegeven in de documentatie bij het object of de objectbibliotheek die de fout heeft gegenereerd.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De zoekreeks is te lang of te complex

De mogelijkheden voor patroonvergelijking in Visual Basic zijn niet onbeperkt. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De opgegeven zoekreeks is te lang of de combinatie van jokertekenspecificaties wordt niet begrepen.

Verminder de lengte of de complexiteit van de zoekreeks en zoek opnieuw.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Geef een zoekreeks op

U moet een zoekreeks opgeven. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd een zoekbewerking uit te voeren zonder een reeks ter vergelijking op te geven.

U moet de zoekreeks opgeven. U kunt wel een tekenreeks met lengte nul ("") opgeven als vervangreeks, maar een tekenreeks met lengte nul heeft geen betekenis wanneer deze als zoekreeks wordt gebruikt.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Gezochte tekst is niet gevonden

De tekst die u zocht, is niet gevonden. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Er is geen overeenkomende tekst tussen het beginpunt en het eindpunt van het opgegeven zoekbereik gevonden.

U kunt het zoekbereik vergroten als u wilt doorgaan met zoeken.

•	U hebt vergeten een vierkant haakje openen te typen toen u een expressie voor patroonvergelijking gebruikte.

Typ het vierkante haakje openen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Zoekopdracht is mislukt: kan niet lezen van/schrijven naar de schijf

Instructies Seek worden meteen op schijf uitgevoerd. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd te lezen van een schijf of een bestand die of dat is beveiligd tegen schrijven, alleen gelezen kan worden of is vergrendeld.

Verwijder het schrijfbeveiligingskenmerk, wijzig het alleen-lezen kenmerk of ontgrendel het bestand of de schijf. U kunt de vergrendeling niet verwijderen als het bestand door een ander proces is vergrendeld.

•	U kunt niet meer beschikken over het bestand (bijvoorbeeld als een verwisselbare schijf daadwerkelijk is verwisseld).

Als het bestand naar een andere schijf is verplaatst, opent u het bestand vanaf die schijf. U krijgt anders geen toegang tot het bestand.

•	U hebt geprobeerd te lezen vanuit een projectbestand, een objectbibliotheek of een typebibliotheek. Het bestand is echter beschadigd.

Zorg voor een nieuwe kopie van de bibliotheek of het projectbestand.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Select Case zonder End Select

Elke constructie Select Case moet worden afgesloten met een instructie End Select. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een instructie Select Case gebruikt zonder bijbehorende instructie End Select.

Controleer of de buitenste structuur Select Case...End Select een onjuiste structuur Select Case...End Select bevat. Als u instructies Select Case hebt genest, moet elke instructie een bijbehorende instructie End Select hebben.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De geselecteerde controle-expressie is ongeldig

Het is niet altijd mogelijk een geldige controle-expressie te selecteren. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U kunt de opdracht Directe controle kiezen, maar de geselecteerde expressie is geen geldige expressie. U kunt bijvoorbeeld geen opmerking of procedureoproep Sub controleren.

Selecteer de expressie zodanig dat deze geldig is of kies Controle toevoegen en typ een geldige expressie.

•	De controle-expressie moet een codesyntaxis hebben die correspondeert met lokale instelling van het project dat de gecontroleerde expressie definieert.

Herschrijf de expressie zodanig dat deze geldig is voor de lokale instelling.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Toewijzen Volgende Instructie kan alleen betrekking hebben op uitvoerbare regels in de huidige procedure

U kunt de opdracht Volgende instructie instellen kiezen om aan te geven waar de uitvoering van een programma weer moet beginnen als het programma tijdelijk is gestopt. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Toen u de opdracht koos, bevond de cursor zich op een regel die geen uitvoerbare instructie bevatte

Plaats de cursor op een regel met een uitvoerbare instructie en probeer het nogmaals. Declaraties, regelnamen en opmerkingen zijn niet uitvoerbaar. Regels die alleen bestaan uit declaraties, namen en opmerkingen kunnen niet het doel zijn van de opdracht Volgende instructie instellen.

•	Toen u de opdracht koos, bevond de cursor zich op een regel buiten de procedure die op dat moment werd uitgevoerd.

Plaats de cursor op een regel binnen de procedure die op dat moment wordt uitgevoerd.


SHARE.EXE is vereist

Het programma SHARE.EXE moet zijn gestart wanneer u Visual Basic start. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt SHARE.EXE niet gestart voordat u Visual Basic startte.

Sluit de toepassing. Start SHARE.EXE en start vervolgens de toepassing opnieuw. Als u dit probleem voortaan wilt vermijden, plaatst u een oproep voor SHARE.EXE in het bestand Autoexec.bat, zodat SHARE.EXE automatisch wordt gestart wanneer u uw computer inschakelt.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er wordt al verwezen naar de opgegeven bibliotheek of het opgegeven project

Het dialoogvenster Verwijzingen toevoegen geeft opgeroepen bibliotheken en projecten weer. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt de knop Bladeren in het dialoogvenster Verwijzingen toevoegen gekozen. Vervolgens hebt u een typebibliotheek of project geselecteerd die of dat reeds werd weergegeven in het gedeelte Beschikbare verwijzingen van het dialoogvenster Verwijzingen toevoegen.

Als u wilt dat een project of een typebibliotheek deel uitmaakt van uw project, geeft u het dialoogvenster Verwijzingen weer en zorgt u ervoor dat de typebibliotheek of het project is geselecteerd.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Instructie is ongeldig binnen Type-blok

Er zijn alleen onderdeelnamen (met de bijbehorende As type componenten) en opmerkingen toegestaan binnen een instructieblok Type...End Type. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een ongeldige instructie geplaatst in de definitie van een door de gebruiker gedefinieerd type.

Verwijder alles wat geen opmerking, onderdeelnaam of component As type is.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Instructie is ongeldig buiten Type-blok

De syntaxis voor de declaratie van variabelen buiten een instructieblok Type...End Type verschilt van de syntaxis voor de declaratie van de onderdelen van het door de gebruiker gedefinieerde type. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd een variabele te declareren die zich buiten een blok Type...End Type of een instructie bevindt.

Gebruik een van de declaratie-instructies Dim, ReDim, Static, Public of Private als u buiten een blok Type...End Type een variabele declareert met een component As. Deze fout wordt bijvoorbeeld gegenereerd door de eerste declaratie van MyVar in de volgende programmacode. De tweede en derde declaratie van MyVar zijn geldig:

MyVar As Double	' Invalid declaration syntax.

Dim MyVar As Double

Type AType

MyVar As Double	' This is valid declaration syntax

End Type	' because it's inside a Type block.

•	U het een instructie End Type gebruikt zonder een bijbehorende instructie Type.

Zoek naar een instructie End Type, die niet is gecombineerd met een instructie en laat het betreffende blok alsnog voorafgaan door een instructie Type of verwijder de instructie End Type als u deze niet nodig hebt.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Instructie is te complex

Deze instructie kan niet geanalyseerd worden in Visual Basic. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Vanwege de complexiteit van de instructie kan deze niet worden ontleed.

Probeer de instructie op te delen in een aantal kleinere segmenten of vervang complexe voorwaardelijke onderdelen door een combinatie van logische operatoren en instructies If...Then...Else.

•	In de instructie worden te veel geneste functieoproepen gebruikt.

Zorg dat de functieoproepen eerder worden uitgevoerd en wijs de resultaten toe aan variabelen. Gebruik vervolgens de variabelen in de instructie die de complexiteitsfout veroorzaakt.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Instructies en namen zijn ongeldig tussen Select Case en de eerste Case

Tussen de instructie Select Case en de eerste component Case kunt u alleen een opmerking plaatsen. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een instructie geplaatst tussen Select Case en de bijbehorende eerste component CaseCase. Bijvoorbeeld:

Select Case SomeVar

' This is a comment and is valid.

Stop	' Even a Stop statement is invalid here.

Case SomeValue

. . .

End Select

Een instructie Select Case moet direct worden gevolgd door de bijbehorende eerste instructie Case. Als de expressie die ertussen komt, een opmerking is, plaatst u vóór de expressie een apostrof ('). Als dit niet het geval is, plaatst u de expressie waar deze hoort te staan of verwijdert u de expressie.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Syntaxisfout

Visual Basic kan niet bepalen welke handeling moet worden verricht. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Er is een sleutelwoord of argument verkeerd gespeld.

Sleutelwoorden en de namen van benoemde argumenten moeten exact overeenkomen met de sleutelwoorden en namen zoals die in de betreffende syntaxis zijn vermeld. Raadpleeg de contextafhankelijke Help. Controleer en corrigeer vervolgens de spelling.

•	De interpunctie is onjuist.

Wanneer u bijvoorbeeld optionele argumenten op een bepaalde positie weglaat, moet u het betreffende argument vervangen door een komma (,).

•	Een procedure is niet gedefinieerd.

Controleer de spelling van de procedurenaam.

•	U hebt geprobeerd zowel het argument Optional als het argument ParamArray in dezelfde proceduredeclaratie op te nemen.

Een argument ParamArray kan niet Optional zijn. Kies een van beide en verwijder de andere.

•	U hebt geprobeerd een gebeurtenisprocedure te definiëren met een parameter Optional of ParamArray.

Verwijder het sleutelwoord Optional of ParamArray uit de opgegeven parameter.

•	U hebt geprobeerd een benoemd argument te gebruiken in een instructie RaiseEvent.

Gebeurtenissen ondersteunen geen benoemde argumenten.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Het DLL- of het EXE-bestand voor binaire compatibiliteit bevat een Implements-type waarvan de definitie niet kan worden gevonden

Als u een Binary Compatible-server hebt die een interface implementeert die zich in een andere DLL bevindt, moet u voorzichtig zijn als u deze opnieuw compileert. Deze waarschuwing heeft de volgende oorzaak en kan als volgt worden opgelost:

•	De andere DLL is opnieuw gecompileerd als Compatibiliteit met het project waardoor de interface-GUID wordt gewijzigd. Aangezien het geen zichtbare wijziging is, kan dit een onverwachte fout zijn. Dit kan ook gebeuren als iemand u een DLL die compatibel is met het project, geeft om naar te verwijzen.

Meestal treedt deze fout op als de binaire compatibele DLL of EXE een typebibliotheek met een verbroken verwijzing heeft.  Verbroken verwijzingen kunnen optreden als een typebibliotheek waarnaar wordt verwezen, is overschreven door een ander bestand (zoals een opnieuw gecompileerde DLL/EXE), als u het typebibliotheekbestand verwijdert of als u een typebibliotheek waarnaar wordt verwezen naar een andere computer verplaatst, maar de typebibliotheek waarnaar wordt verwezen niet verplaatst of niet registreert.

Een mogelijke oplossing is om een kopie van de desbetreffende typebibliotheek op uw computer te plaatsen en te registreren. De oude typebibliotheek kunt u niet meer gebruiken omdat deze tijdens het opnieuw compileren is overschreven. Als dit niet lukt, kunt u alleen nog maar stoppen met het gebruik van de DLL/EXE als binair compatibele versie.


Het DLL- of het EXE-bestand voor binaire compatibiliteit bevat een parameter- of een resultaattype waarvan de definitie niet kan worden gevonden

Als u een server met binaire compatibiliteit hebt die een parameter of returntype in een andere DLL bevat, moet u voorzichtig zijn als u deze opnieuw compileert. Deze waarschuwing heeft de volgende oorzaak en kan als volgt worden opgelost:

•	Als u Binaire compatibiliteit voor een project instelt en het project vervolgens opnieuw compileert, wordt Compatibiliteit van het project automatisch ingesteld, waardoor de interne GUID van de interface wordt gewijzigd. Aangezien het geen zichtbare wijziging is, kan dit een onverwachte fout zijn.

Meestal treedt deze fout op als de binaire compatibele DLL of EXE een typebibliotheek met een verbroken verwijzing heeft.  Verbroken verwijzingen kunnen optreden als een typebibliotheek waarnaar wordt verwezen, is overschreven door een ander bestand (zoals een opnieuw gecompileerde DLL/EXE), als u het typebibliotheekbestand verwijdert of als u een typebibliotheek waarnaar wordt verwezen naar een andere computer verplaatst, maar de typebibliotheek waarnaar wordt verwezen niet verplaatst of niet registreert.

Een mogelijke oplossing is om een kopie van de desbetreffende typebibliotheek op uw computer te plaatsen en te registreren. De oude typebibliotheek kunt u niet meer gebruiken omdat deze tijdens het opnieuw compileren is overschreven. Als dit niet lukt, kunt u alleen nog maar stoppen met het gebruik van de DLL/EXE als binair compatibele versie.


Deze bewerking kan ertoe leiden dat de objectmodule niet meer compatibel is met de eerder opgegeven compatibele ActiveX-server

Als een compatibele ActiveX-server al bestaat als een uitvoerbaar bestand of als DLL (Dynamic Link Library), moet u er voor zorgen dat u de interface van de ActiveX-server niet wijzigt. Deze waarschuwing heeft de volgende oorzaak en kan als volgt worden opgelost:

•	U probeert de programmacode van een objectmodule  te bewerken, terwijl deze objectmodule reeds door een uitvoerbaar bestand wordt vertegenwoordigd.

Als u wijzigingen aanbrengt die van invloed zijn op de interface bij het object, zal de klasse niet toenemend compatibel zijn met de vorige versie en daarom zal het niet mogelijk zijn de nieuwe versie te gebruiken in plaats van de oude versie voor gecompileerde programmacode.

In Visual Basic verschijnt de naam van het compatibele ActiveX-server in het dialoogvenster dat wordt weergegeven als u de opdracht Project Opties kiest in het menu Extra.

Belangrijk   Als u de bewerking wilt accepteren, kiest u OK in het dialoogvenster voor foutmeldingen. Als u de bewerking ongedaan wilt maken, kiest u de knop Annuleren.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Het opgegeven gebied is doorzocht

Als u op de knoppen Volgende zoeken en Vervangen klikt in het dialoogvenster Vervangen, wordt het totale aantal vervangingen niet aangegeven. Deze toestand heeft de volgende oorzaak en het volgende gevolg:

•	Als u een bewerking Zoeken en Vervangen uitvoert, kunt u het gebied opgeven waar moet worden gezocht: selectie, procedure, module of project.

Als een gebied is geselecteerd, is dit het standaardzoekgebied. Als er geen gebied wordt geselecteerd, is de huidige module het standaardzoekgebied. Als u het zoekbereik wilt wijzigen, kiest u een andere optie in het dialoogvenster Replace.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Het opgegeven gebied is doorzocht. Er is 1 vervanging aangebracht.

Als u op de knop Alles vervangen klikt in het dialoogvenster Vervangen, wordt het totale aantal vervangingen weergegeven. Deze toestand heeft de volgende oorzaak en het volgende gevolg:

•	Tijdens de bewerking Zoeken en Vervangen werd de opgegeven tekst slechts één maal gevonden en werd deze tekst vervangen. U kunt het gebied opgeven waar moet worden gezocht: selectie, procedure, module of project.

Als een gebied is geselecteerd, is dit het standaardzoekgebied. Als er geen gebied wordt geselecteerd, is de huidige module het standaardzoekgebied. Als u het zoekbereik wilt wijzigen, kiest u een andere optie in het dialoogvenster Replace.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Het opgegeven gebied is doorzocht. De vervangingen zijn aangebracht

Als u op de knop Alles vervangen klikt in het dialoogvenster Vervangen, wordt het totale aantal vervangingen weergegeven. Deze toestand heeft de volgende oorzaak en het volgende gevolg:

•	Als u een bewerking Zoeken en Vervangen uitvoert, kunt u het gebied opgeven waar moet worden gezocht: selectie, procedure, module of project.

Als een gebied is geselecteerd, is dit het standaardzoekgebied. Als er geen gebied wordt geselecteerd, is de huidige module het standaardzoekgebied. Als u het zoekbereik wilt wijzigen, kiest u een andere optie in het dialoogvenster Replace.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Het .vbp-bestand voor dit project bevat een ongeldige of onjuiste bibliotheekverwijzings-id

Wanneer u een project opslaat waarvoor een verwijzing is geselecteerd in het dialoogvenster Verwijzingen, wordt een regel ingevoerd in het .vbp-bestand van het project (dit werd in eerdere versies van Visual Basic een .mak-bestand genoemd). De toevoeging voor een object voor gegevenstoegang is:

Reference=*\G{00025E01-0000-0000-C000-000000000046}#0.0#0#C:\WINDOWS\SYSTEM\DAO2516.DLL#Microsoft

DAO 2.5 Object Library

Deze fout treedt op wanneer een verwijzing is gewijzigd of onjuist is. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Een verwijzing in het .vbp-bestand is ongeldig geworden.

Verwijder de onjuiste regel uit het .vbp-bestand en controleer vervolgens de betreffende objectbibliotheek in het dialoogvenster Verwijzingen in het menu Extra. Als u het project vervolgens opslaat, wordt de juiste informatie ingevoerd in het .vbp-bestand.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Dit onderdeel roept geen gebeurtenissen op

Een gebeurtenisprocedure moet corresponderen met een gebeurtenis die opgeroepen kan worden door een object. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een gebeurtenisprocedure geschreven voor een object dat geen gebeurtenissen kan oproepen.

U kunt geen gebeurtenisprocedure schrijven die niet correspondeert met een gebeurtenis.

•	U hebt geprobeerd WithEvents te gebruiken bij een klasse die geen gebeurtenissen oproept.

U kunt WithEvents niet gebruiken bij een klasse die geen gebeurtenissen oproept.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Te veel argumenten

Een procedure kan uit maximaal 60 argumenten bestaan. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt meer dan 60 argumenten opgegeven.

Als u meer argumenten moet opgeven, definieert u een door de gebruiker gedefinieerd type om meerdere argumenten van verschillende typen te groeperen. U kunt ook een ParamArray gebruiken als laatste argument en meerdere waarden aan dit argument doorgeven. Bovendien kunt u meerdere argumenten doorgeven door deze argumenten in een matrix te plaatsen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Te veel dimensies

Matrices kunnen uit maximaal 60 dimensies bestaan. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd een matrix te declareren met meer dan 60 dimensies.

Verminder het aantal dimensies.

•	Uw matrixdeclaratie heeft de opgegeven grenzen niet overschreden, maar er is niet voldoende geheugenruimte om de matrix ook daadwerkelijk te maken.

Maak meer geheugen vrij of verklein het aantal dimensies. Als uw matrix van het type Variant is of als het een matrix is die zich binnen een Variant bevindt, is het wellicht mogelijk de matrix met hetzelfde aantal dimensies te maken door de matrix opnieuw te declareren met het gegevenstype van de matrixonderdelen. Als de matrix bijvoorbeeld alleen integers bevat, wordt minder geheugenruimte gebruikt wanneer de matrix wordt gedeclareerd als type Integer dan wanneer elk onderdeel een Variant is.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Te veel regelvervolgtekens

Er is een limiet gesteld aan het aantal regels dat met elkaar kan worden verbonden door middel van regelvervolgtekens. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De programmacode bevat meer dan 25 fysieke regels die met regelvervolgtekens aan elkaar zijn gekoppeld, of meer dan 24 opeenvolgende regelvervolgtekens in één regel.

Maak een aantal van deze regels fysiek langer (om het aantal benodigde regelvervolgtekens te verminderen) of deel de constructie op in verschillende instructies.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er zijn te veel lokale, niet-statische variabelen gebruikt

Lokale, niet-statische variabelen zijn variabelen die binnen een procedure zijn gedefinieerd en die telkens opnieuw worden geïnitialiseerd als de procedure wordt opgeroepen. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De totale geheugenvereisten voor de lokale, niet-statische variabelen van deze procedure (en door de compiler gegenereerde tijdelijke variabelen) zijn groter dan 32 kB.

Declareer enkele van de variabelen met de instructie Static waar dit van toepassing is. Variabelen die u declareert met de instructie Static behouden hun waarde tussen procedureoproepen omdat deze worden toegewezen uit andere geheugenbronnen dan niet-statische variabelen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er zijn te veel variabelen op moduleniveau

Variabelen op moduleniveau zijn variabelen die zijn gedeclareerd in de declaratiesectie van een module, vóór de procedures van de module. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De totale hoeveelheid geheugen die alle variabelen op moduleniveau vereisen in deze module is groter dan 64 kB.

Dit is de geheugenlimiet voor deze module. Indien mogelijk kunt u enkele variabelen als Public declareren in een andere module. Als bepaalde variabelen op moduleniveau slechts in één procedure worden gebruikt, kunt u deze binnen die procedure declareren. Als u variabelen op moduleniveau hebt gedeclareerd omdat u wilt dat deze hun waarde behouden tussen procedureoproepen, kunt u deze als Static declareren binnen de procedure waarin hiernaar wordt verwezen.

Opmerking   De beschikbare geheugenruimte kan per besturingssysteem verschillen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Het typeaanduidingsteken komt niet overeen met het type van de gedeclareerde gegevens

Het gegevenstype van een variabele kan niet worden gewijzigd door het type-aanduidingsteken voor een ander type toe te voegen. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een variabele van een bepaald type gedeclareerd en vervolgens hebt u verwezen naar een variabele met dezelfde naam binnen hetzelfde bereik. Hierbij hebt u een inconsistent typeaanduidingsteken toegevoegd.

Als u het type gegevens dat wordt toegewezen aan een variabele, wilt kunnen wijzigen, declareert u de variabele als Variant. Als u alleen een onjuist typeaanduidingsteken hebt toegevoegd, verwijdert u dit teken of wijzigt u het.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Een typeaanduidingsteken is niet toegestaan

U kunt type-aanduidingstekens gebruiken in Visual Basic, maar een aantal gegevenstypen (waaronder Byte, Boolean, Date, Object en Variant) heeft geen typeaanduidingsteken dat aan dit gegevenstype is gekoppeld. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd een typeaanduidingsteken te gebruiken in de declaratie van een variabele die de component As gebruikt, bijvoorbeeld met Dim, Static, Public, enzovoort.

Verwijder het typeaanduidingsteken of verwijder de component As.

•	U hebt geprobeerd een type-aanduidingsteken te gebruiken om te verwijzen naar een variabele die impliciet zonder typeaanduidingsteken is gedeclareerd:

MyVar = 20	' Implicit declaration.

MyVar% = 25	' Generates an error.

Verwijder het typeaanduidingsteken of declareer de oorspronkelijke variabele opnieuw.

Opmerking   Als een expliciete declaratie van een variabele een typeaanduidingsteken bevat, kunt u bij latere verwijzingen kiezen of u dit teken opneemt. Bijvoorbeeld:

Dim MyStr$

MyStr = "Omdat er sprake is van een expliciete declaratie, is het $-teken optioneel."

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Een typeaanduidingsteken is vereist

De vorm van de declaratie van de aanduiding bepaalt of type-aanduidingstekens moeten worden gebruikt. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er wordt zonder typeaanduidingsteken verwezen naar een variabele die oorspronkelijk impliciet was gedeclareerd met een typeaanduidingsteken. Bijvoorbeeld:

MyStr$ = "Impliciete declaratie"

MyStr = "Probeert te verwijzen naar MyStr$, maar er treedt een fout op" _

 & "omdat de declaratie wordt aangeduid met MyStr."

Maak de declaratie expliciet of voeg het typeaanduidingsteken toe aan latere verwijzingen.

Opmerking   Als een expliciete declaratie van een variabele een typeaanduidingsteken bevat, kunt u bij latere verwijzingen kiezen of u dit teken opneemt. Bijvoorbeeld:

Dim MyStr$

MyStr = "Omdat er sprake is van een expliciete declaratie, is het $-teken optioneel."

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Typen komen niet overeen. Er wordt een matrix of door de gebruiker gedefinieerd type verwacht

Het type van een argument of een parameter geeft aan of het al dan niet een matrix of een door de gebruiker gedefinieerd type betreft. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Uw argument heeft één onderdeel opgegeven van een matrix of een door de gebruiker gedefinieerd type, dan wel een eenvoudige variabele, letterlijke tekenreeks of constante. Dit argument wordt echter doorgegeven aan een parameter die een volledige matrix of een volledig door de gebruiker gedefinieerd type verwacht.

Wijzig het argument of wijzig de definitie van de parameter.

•	Uw argument heeft een matrix van een door de gebruiker gedefinieerd type opgegeven, maar dit was niet hetzelfde type als de parameter.

Geef een matrix van het verwachte type door of wijzig de definitie van de parameterdeclaratie.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan niet lezen van de schijf

Er is een algemeen probleem bij het lezen van een schijf. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het diskettestation is niet goed vergrendeld.

Als u de diskette uit het station kunt nemen, controleer dan de vergrendeling. Vergrendel het station op de juiste wijze.

•	De diskette is misschien ondersteboven in het station geplaatst.

Plaats de diskette op de juiste wijze in het station.

•	De diskette is misschien niet op de juiste wijze geformatteerd.

Formatteer de diskette opnieuw als u de huidige gegevens op de diskette kunt missen.

•	Er zijn problemen met het netwerk.

Probeer het netwerk opnieuw te starten.

•	U hebt een diskette van een bepaalde dichtheid geplaatst in een station dat niet voor deze dichtheid geschikt is en waardoor de schijf niet gelezen kan worden.

Gebruik een ander station of kopieer het benodigde materiaal naar een diskette die voor het station geschikt is.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan niet schrijven naar de schijf

Er is een algemeen probleem bij het schrijven naar een diskette. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het diskettestation is niet goed vergrendeld.

Als u de diskette uit het station kunt nemen, controleer dan de vergrendeling. Vergrendel het station op de juiste wijze.

•	De diskette is misschien ondersteboven in het station geplaatst.

Plaats de diskette op de juiste wijze in het station.

•	De diskette is misschien niet op de juiste wijze geformatteerd.

Formatteer de diskette opnieuw als u de huidige gegevens op de diskette kunt missen.

•	Er zijn problemen met het netwerk.

Probeer het netwerk opnieuw te starten.

•	U hebt een diskette van een bepaalde dichtheid geplaatst in een station dat niet voor deze dichtheid geschikt is.

Gebruik een ander station of kopieer het benodigde materiaal naar een diskette die voor het station geschikt is.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Onverwachte fout. Neem contact op met Microsoft-productondersteuning

Deze toestand kan ernstig of niet ernstig zijn. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er is een onverwachte fout opgetreden in de brontoepassing of in Visual Basic.

U hoeft niet direct aan te nemen dat dit een ernstige fout is. U moet echter wel het nummer van de fout noteren en contact opnemen met Microsoft-productondersteuning.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Oneven aantal haakjes in de zoekreeks

Bij een vierkant haakje openen hoort een vierkant haakje sluiten. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt in een zoekreeks een vierkant haakje openen geplaatst, maar u hebt er geen vierkant haakje sluiten achter geplaatst.

Plaats een vierkant haakje sluiten op de juiste plaats.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Onbekende projecttaal

De opgegeven lokale code voor het project dat moet worden geopend, wordt op dit moment niet door deze toepassing ondersteund. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het project is gemaakt op een systeem dat de lokale code ondersteunt, maar is vervolgens verplaatst naar een systeem waar de betreffende lokale code niet wordt herkend. Het bestand Ole2nls.dll op de huidige machine kan bijvoorbeeld een versie zijn die de lokale code niet herkent.

Installeer de juiste DLL (Dynamic Link Library) op het huidige systeem.

•	De juiste objectbibliotheek voor het project werd niet gevonden.

Zorg dat de juiste objectbibliotheken beschikbaar zijn. Zorg bijvoorbeeld dat de bibliotheken in uw pad zijn opgenomen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Een door de gebruiker gedefinieerd type kan niet worden doorgegeven ByVal

Door de gebruiker gedefinieerde typen kunnen alleen via verwijzing worden doorgegeven (de standaardinstelling), niet via waarde. Het is mogelijk dat de foutmelding pas volgt als de oproep plaatsvindt. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een sleutelwoord ByVal geplaatst in de definitie van een parameter die een door de gebruiker gedefinieerd type vertegenwoordigt.

Verwijder het sleutelwoord ByVal. Als u wilt voorkomen dat wijzigingen aan de oproepende procedure worden doorgegeven, gebruikt u de instructie Dim bij een tijdelijke variabele van het betreffende type en geeft u de tijdelijke variabele door aan de procedure.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Een door de gebruiker gedefinieerd gegevenstype is niet gedefinieerd

U kunt uw eigen gegevenstypen maken in Visual Basic. Deze moeten echter eerst worden gedefinieerd in een instructie Type...End Type of in een geregistreerde objectbibliotheek of typebibliotheek. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd een variabele of een argument te declareren met een ongedefinieerd gegevenstype of u hebt een onbekende klasse of objectnaam opgegeven.

Gebruik de instructie Type in een module om een nieuw gegevenstype te declareren. Als u een verwijzing naar een klasse probeert te maken, moet deze klasse zichtbaar zijn voor het project. Als u in uw programma naar een klasse verwijst, moet er een klassenmodule met de opgegeven naam in uw project aanwezig zijn. Controleer de spelling van de typenaam of van de naam van het object.

•	Het type dat u wilt declareren, bevindt zich in een andere module, maar is als Private gedeclareerd..

Verplaats de definitie van het type naar een standaardmodule waar het type Public kan zijn.

•	Het type is een geldig type, maar de objectbibliotheek of de typebibliotheek waarin het type is gedefinieerd, is niet geregistreerd in Visual Basic.

Open het dialoogvenster Verwijzingen en selecteer de juiste objectbibliotheek of typebibliotheek. Als u bijvoorbeeld het selectievakje Data Access Object in het dialoogvenster Verwijzingen niet inschakelt, worden typen als Database, Recordset en TableDef niet herkend en veroorzaken verwijzingen naar deze typen bovenstaande fout.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Door de gebruiker gedefinieerde gegevenstypen zonder leden zijn niet toegestaan

Door de gebruiker gedefinieerde typen moeten ten minste één onderdeel hebben. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een leeg door de gebruiker gedefinieerd type opgegeven in een definitie Type...End Type.

Controleer de instructie Type op niet-bedoelde scheidingstekens voor opmerkingen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Een variabele is niet gedefinieerd

U gebruikt de instructie Option Explicit om te voorkomen dat uw modules niet-gedeclareerde variabelen krijgen en om uit te sluiten dat er per ongeluk nieuwe variabelen worden gemaakt als gevolg van typefouten. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een instructie Option Explicit gebruikt voor de expliciete declaratie van variabelen, maar u hebt daarbij een variabele gebruikt zonder deze te declareren.

Declareer de variabele expliciet of wijzig de spelling van de variabele, zodat deze overeenkomt met die van de bedoelde variabele.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De variabele is nog niet gemaakt in deze context

Een variabele moet worden gemaakt voordat deze kan worden weergegeven in het venster Controle of het venster Direct en voordat er waarden aan deze variabele kunnen worden toegewezen in het venster Direct. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd de waarde weer te geven van een lokale variabele die u zojuist in uw programmacode hebt opgenomen, alvorens ten minste één stap-voor-stap-opdracht in de onderbrekingsmodus uit te voeren.

Activeer de programmacode, zodat de nieuwe instructie moet worden gecompileerd.

•	U hebt geprobeerd de waarde van een lokale variabele weer te geven die u zojuist hebt opgenomen in een procedure verderop in de oproepketen door met behulp van het dialoogvenster Opgeroepen procedures naar een procedure te gaan.

U moet terugkeren naar de procedure voordat u de variabele in zijn context kunt weergeven.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Een variabele is vereist. Kan niet toewijzen aan deze expressie

Deze fout treedt gewoonlijk op als u een waarde wilt toewijzen aan iets dat deze toewijzing niet accepteert. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd een numerieke expressie als argument te gebruiken bij de functie Lengte (Len).

De functie Lengte accepteert geen numerieke expressies, geen numerieke letterlijke tekenreeks of binaire numerieke expressie, maar wel een tekenreeks of een numerieke variabele, een reeksexpressie of een variabele van een door de gebruiker gedefinieerd type.

•	U hebt een functieoproep of een expressie als argument gebruikt bij Input#, Let, Get of Put. Het is bijvoorbeeld mogelijk dat u een argument hebt gebruikt dat een geldige verwijzing naar een matrixvariabele lijkt te zijn. Het argument is echter een oproep voor een functie met dezelfde naam.

Input #, Let, Get en Put accepteren geen functieoproepen als argument.

•	U hebt geprobeerd een waarde toe te wijzen aan een aanduiding die vooraf als constant is gedeclareerd.

Kies een andere naam voor de aanduiding.

•	U hebt geprobeerd een niet-variabele te gebruiken als lusteller in een constructie For...Next.

Gebruik een variabele als lusteller.

•	U hebt geprobeerd een waarde toe te wijzen aan een alleen-lezen eigenschap of aan een expressie die uit meer dan één variabele bestaat (bijvoorbeeld X + Y). Een toewijzing plaatst een waarde op een geheugenlocatie. De opgegeven expressie dient één locatie aan te duiden waarnaar kan worden geschreven.

Wijzig de toewijzing in één variabelennaam waarnaar kan worden geschreven.

•	U hebt geprobeerd gebruik te maken van een niet-gedeclareerde variabele die in een typebibliotheek is gedefinieerd als constante.

Gebruik een andere naam voor de variabele of declareer de variabele expliciet.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Waarschuwing: aangepaste taalinstellingen kunnen niet worden overgedragen

Niet alle taalinstellingen zijn overdraagbaar. Deze waarschuwing heeft de volgende oorzaak en kan als volgt worden opgelost:

•	U hebt een aangepaste taalinstelling in de programmacode gebruikt.

Als u een aangepaste instelling gebruikt voor de taal/landinstelling van uw programmacode, komen de taalconventies die in uw programmacode worden gebruikt, overeen met de conventies die zijn ingesteld in het Configuratiescherm van uw systeem. U kunt instellingen voor aangepaste lokale code gebruiken, maar dan is het mogelijk dat uw programmacode niet werkt op andere plaatsen of op andere systemen met andere instellingen. De brontoepassing ontleedt bepaalde tekenreeksen gebaseerd op het Configuratiescherm van de machine waarop de programmacode wordt uitgevoerd.

Als de instellingen van het Configuratiescherm op de doelmachine niet hetzelfde zijn als de instellingen op de machine waarop de programmacode is geschreven, werken de tekenreeksen niet die door een brontoepassing zijn ontleed (bijvoorbeeld als het gaat om programmacode die afhankelijk is van een landgebonden scheidingsteken voor decimalen). Gebruik daarom geen aangepaste taalinstelling, tenzij u niet van plan bent uw programmacode naar andere gebruikers te sturen. Bent u dit wel van plan, selecteer dan een van tevoren gedefinieerde lokale code.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Wend zonder While

Elke instructie Wend moet worden voorafgegaan door een instructie While. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een instructie Wend gebruikt zonder voorafgaande instructie While.

Controleer of er een onvolledige lus is genest binnen de While...Wend-lus, waardoor de fout wordt veroorzaakt.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


While zonder Wend

Er wordt een instructie While gebruikt zonder bijbehorende instructie Wend. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een constructie While...Wend geopend, maar niet gesloten.

Controleer of zich in de buitenste structuur While...Wend een onvolledige instructie While...Wend bevindt.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Object With moet een door de gebruiker gedefinieerd type, object of Variant zijn

Het blok With...End With kan niet met alle typen variabelen worden gebruikt. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd een variabele te gebruiken die niet van het type Object, van het door de gebruiker gedefinieerde type of van het type Variant is en die een object binnen een blok With bevat.

Controleer of de naam van het object, het door de gebruiker gedefinieerde type of de variabele Variant juist is gespeld.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


U hebt een onjuist aantal dimensies opgegeven

U moet naar een matrix verwijzen met indexen die behoren bij hetzelfde aantal dimensies als in de declaratie van de matrix verschijnt. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt naar een matrix verwezen met een aantal dimensies dat verschilt van het aantal dat de matrix in werkelijkheid bevat. Deze fout treedt bijvoorbeeld op als u verwijst naar een matrix als X(2,4) (een matrix met twee dimensies), terwijl deze matrix is gedefinieerd als Dim X(5) (een matrix met één dimensie).

Controleer de declaratie van de matrix en neem in de verwijzing voor elke dimensie in de declaratie één index op.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Door deze actie wordt uw project opnieuw ingesteld. Toch doorgaan?

U kunt programmacode bewerken in de onderbrekingsmodus, maar na sommige bewerkingen kunt u niet doorgaan met de uitvoering van de programmacode. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd een bepaalde bewerking uit te voeren waardoor de programmacode niet verder kan worden uitgevoerd. U hebt bijvoorbeeld een statische waarde als variabele gedeclareerd.

Als u Ja kiest, wordt de uitvoering gestopt en kunt u uw programmacode bewerken. Als Nee kiest, kunt u doorgaan met de uitvoering van de programmacode vanaf het punt waar de uitvoering werd gestopt.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


U moet het blok # If beëindigen met # EndIf

#If is een voorwaardelijke compileerinstructie. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er is een #If-blok aangetroffen dat niet wordt afgesloten met #End If.

Voeg #End If toe op de juiste positie.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Persoonlijke objectmodules mogen in openbare objectmodules niet worden gebruikt als parameters of resultaattypen voor openbare procedures, als openbare gegevensleden, of als velden van typen die door een openbare gebruiker zijn gedefinieerd.

Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd een Private-objectmodule als parameter in een Public-objectmodule te gebruiken, als returntype voor een Public-procedure of –gegevenslid of als een veld van een door de gebruiker gedefinieerd Public-type, hetgeen niet is toegestaan.


Alleen typen die door een openbare gebruiker in een openbare objectmodule zijn gedefinieerd, kunnen worden gebruikt als parameters of resultaattypen voor openbare procedures van klassenmodules of als velden van openbare typen die door een gebruiker zijn gedefinieerd.

Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd een door de gebruiker gedefinieerd Public-type als parameter of returntype voor een Public-procedure van een klassenmodule of als een veld van een door de gebruiker gedefinieerd Public-type te gebruiken. Alleen door de gebruiker gedefinieerde Public-typen die in een Public-objectmodule zijn gedefinieerd, kunnen op deze manier worden gebruikt.


Objectbibliotheek is ongeldig of bevat verwijzingen naar objectdefinities die niet zijn gevonden

Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Een objectbibliotheek bevat verwijzingen naar niet gevonden objectdefinities of is anderszins ongeldig.


Het argument is niet optioneel (Fout 449)

Het aantal en type van argumenten moeten overeenkomen met het aantal en type die worden verwacht. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Een onjuist aantal argumenten.

Geef alle noodzakelijke argumenten op. In de functie Left zijn bijvoorbeeld twee argumenten vereist. Het eerste argument geeft aan op welke tekenreeks de bewerking wordt toegepast en het tweede argument geeft aan hoeveel tekens vanaf de linkerkant van de tekenreeks als resultaat worden gegeven. Aangezien geen van beide argumenten optioneel is, moet u ze beide opgeven.

•	Het weggelaten argument is niet optioneel.

U kunt alleen een argument weglaten uit een oproep naar een door de gebruiker gedefinieerde procedure wanneer het argument bij het declareren van de procedure is gedeclareerd als Optional. U kunt het argument in de oproep opgeven of u kunt de parameter Optional in de definitie declareren.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldige DLL-oproepconventie (Fout 49)

Argumenten die worden doorgegeven aan een DLL-routine (Dynamic Link Library) of Macintosh-programmacodebronroutine, moeten exact voldoen aan de eisen die door de routine aan de argumenten worden gesteld. Dit betreft aantal, type en volgorde van de argumenten. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Uw programma roept een routine op in een DLL (in Windows) of in een programmacodebron (op de Macintosh) waaraan het verkeerde type argumenten is doorgegeven.

Zorg dat alle argumenttypen overeenkomen met de argumenttypen die zijn opgegeven in de declaratie van de routine die u oproept

•	Uw programma roept een routine op in een DLL (in Windows) of in een programmacodebron (op de Macintosh) waaraan het verkeerde aantal argumenten is doorgegeven.

Zorg dat u hetzelfde aantal argumenten doorgeeft dat is aangegeven in de declaratie van de routine die u oproept.

•	Uw programma roept een routine aan in een DLL, maar gebruikt de StdCall-oproepconventie niet.

Als de DLL-routine argumenten via waarde, verwacht, geef dan de instructie ByVal op voor die argumenten in de declaratie van de routine.

•	Uw instructie Declare voor een Windows-DLL bevat CDecl.

Het sleutelwoord CDecl is alleen van toepassing op de Macintosh.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Onjuiste bestandsmodus (Fout 54)

Instructies die worden gebruikt voor het manipuleren van de inhoud van bestanden moeten dezelfde modus hebben als die waarin het bestand werd geopend. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Een instructie Put of Get geeft een sequentieel bestand op.

De instructies Put en Get kunnen alleen verwijzen naar bestanden die worden geopend voor de toegangsmodus Random of Binary.

•	Een instructie Print # geeft een bestand op dat is geopend voor een andere toegangsmodus dan Output of Append.

Gebruik een andere instructie om gegevens in het bestand te plaatsen of open het bestand opnieuw in de juiste modus.

•	Een instructie Input # geeft een bestand op dat is geopend voor een andere toegangsmodus dan Input.

Gebruik een andere instructie om de gegevens in het bestand te plaatsen of open het bestand opnieuw in de Input-modus.

•	U hebt geprobeerd gegevens te schrijven naar een alleen-lezen bestand.

Wijzig de lezen/schrijven-status van het bestand of schrijf geen gegevens naar dit bestand.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Onjuiste bestandsnaam of onjuist bestandsnummer (Fout 52)

Er treedt een fout op als u toegang probeert te krijgen tot het opgegeven bestand. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Een instructie verwijst naar een bestand met een bestandsnummer of een bestandsnaam, waarbij zich de volgende problemen kunnen voordoen:

•	Het bestandsnummer of de bestandsnaam is niet opgegeven in de instructie Open of is wel opgegeven in een instructie Open, maar is daarna weer gesloten.

Geef de bestandsnaam op in een instructie Open. Let op: als u de instructie Close hebt opgeroepen zonder argumenten, zijn misschien per ongeluk alle bestanden gesloten die op dat moment waren geopend. Hierdoor worden alle bestandsnummers ongeldig.

•	Het bestandsnummer valt buiten het geldige bereik voor bestandsnummers (1 – 511).

Als uw programmacode bestandsnummers algoritmisch genereert, moeten de nummers geldig zijn.

•	U hebt een ongeldige naam of een ongeldig nummer gebruikt.

Bestandsnamen moeten zowel aan bestandsbenoemingsconventies van Basic als aan conventies van het besturingssysteem voldoen. Gebruik in Microsoft Windows de volgende conventies voor het benoemen van bestanden en mappen:

•	De naam van een bestand of een map kan uit twee gedeelten bestaan: een naam en een optionele bestandsextensie. De twee gedeelten worden gescheiden door een punt, bijvoorbeeld Mijnbest.nwe.

•	De bestandsnaam kan uit maximaal 255 tekens bestaan.

•	De bestandsnaam moet met een letter of met een cijfer beginnen. Er mogen zowel hoofdletters als kleine letters in de bestandsnaam voorkomen (bestandsnamen zijn niet hoofdlettergevoelig). De volgende tekens kunt u echter niet gebruiken: aanhalingsteken ("), enkel aanhalingsteken (apostrof) ('), slash (/), backslash (\), dubbele punt (:) en verticaal streepje (|).

•	De naam kan spaties bevatten.

•	De volgende namen zijn gereserveerd en kunnen niet voor bestanden of mappen worden gebruikt: CON, AUX, COM1, COM2, COM3, COM4, LPT1, LPT2, LPT3, PRN en NUL. Wanneer u bijvoorbeeld in de instructie Open een bestand met de naam PRN opgeeft, wordt de standaardprinter de bestemming voor de instructies Print # en Write # die zijn doorgegeven aan het bestandsnummer dat is opgegeven in de instructie Open.

•	Hieronder ziet u voorbeelden van geldige bestandsnamen in Microsoft Windows:

BRIEF.DOC

Memo.Txt

BUDGET.92

12345678.901

Tweede proging.Rpt

•	Op de Macintosh kan een bestandsnaam elk teken bevatten met uitzondering van de dubbele punt (:). De naam kan ook spaties bevatten. Nultekens (Chr(0)) zijn niet toegestaan in bestandsnamen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Onjuiste recordlengte (Fout 59)

De lengte van een recordvariabele in een instructie Get of Put moet overeenkomen met de lengte die is opgegeven in de bijbehorende instructie Open. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	De lengte van de recordvariabele verschilt van de lengte die is opgegeven in de bijbehorende instructie Open.

Zorg dat de som van de lengten van variabelen met een vaste lengte in het door de gebruiker gedefinieerde type dat het type van de recordvariabele bepaalt, hetzelfde is als de waarde in de component Len van de instructie Open. In het volgende voorbeeld wordt aangenomen dat RecVarVar een variabele is van het juiste type. U kunt dan de functie Len als volgt gebruiken om de lengte op te geven:

Open MyFile As #1 Len = Len(RecVar)

•	De variabele in een instructie Put is (of bevat) een tekenreeks met variabele lengte.

Aangezien er aan een tekenreeks met variabele lengte in de instructie Put in bestanden met directe toegang altijd een descriptor van twee bytes wordt toegevoegd, moet de tekenreeks met variabele lengte in ieder geval twee tekens korter zijn dan de recordlengte die is opgegeven bij de component Len van de instructie Open.

•	De variabele in een instructie Put is (of bevat) een Variant.

Net zoals bij tekenreeksen met variabele lengte is bij gegevenstypen van het type Variant ook een descriptor van twee bytes vereist. Voor varianten die tekenreeksen met variabele lengte bevatten, is een descriptor van vier bytes vereist. Dit heeft tot gevolg dat tekenreeksen met variabele lengte in een Variant ten minste vier bytes korter moeten zijn dan de recordlengte die is opgegeven bij de component Len.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Onjuist recordnummer (Fout 63)

Er is een fout opgetreden terwijl u toegang probeerde te krijgen tot een bestand. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Het recordnummer in een instructie Put of Get is lager dan of gelijk aan nul.

Controleer de berekeningen die zijn gebruikt om het recordnummer te genereren. Zorg dat de variabelen die het recordnummer bevatten of die zijn gebruikt om recordnummers te berekenen, correct zijn gespeld. Een fout gespelde naam wordt namelijk impliciet gedeclareerd en geïnitialiseerd naar nul, tenzij u Option Explicit op de juiste wijze in de module hebt geplaatst.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan het benodigde tijdelijke bestand niet maken (Fout 322)

Voor het maken van een uitvoerbaar bestand zijn tijdelijke bestanden nodig. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Het station met de map die is opgegeven door de omgevingsvariabele TEMP is vol.

Verwijder bestanden van het volle station of geef een ander station op in de omgevingsvariabele TEMP.

•	De omgevingsvariabele TEMP geeft een ongeldig of alleen-lezen station, dan wel een ongeldige of alleen-lezen map aan.

Geef een geldig station op voor de omgevingsvariabele TEMP of verwijder de beperking alleen-lezen van het opgegeven station of de map.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan de opgegeven bewerking niet uitvoeren (Fout 17)

Een bewerking kan niet worden uitgevoerd, omdat het project in de huidige toestand hierdoor ongeldig zou worden. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Deze bewerking zou de huidige toestand van het project ongeldig maken. De fout treedt bijvoorbeeld op als u in het dialoogvenster Verwijzingen een verwijzing toevoegt aan een nieuw project of aan een objectbibliotheek terwijl het programma zich in de onderbrekingsmodus bevindt.

Stop de uitvoering van de huidige code en probeer de bewerking opnieuw.

•	Er is een poging gedaan de huidige uitvoeringscode op programmatisch gebied te wijzigen. Uw programmacode kan bijvoorbeeld hebben geprobeerd programmacode vanaf een bestand op schijf naar een op dat moment uitgevoerde module te lezen.

Hoewel u modules in het project kunt wijzigen terwijl de modules niet daadwerkelijk worden uitgevoerd, kunt u geen wijzigingen aanbrengen in een module die wordt uitgevoerd. Als u wijzigingen wilt aanbrengen, moet u de module stoppen, de wijzigingen aanbrengen en daarna de uitvoering opnieuw starten.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De nieuwe naam mag geen andere stationsaanduiding bevatten (Fout 74)

Met de instructie Name kunt u de naam van het bestand alleen wijzigen in het huidige station. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd een bestand te verplaatsen naar een ander station met de instructie Name.

Gebruik FileCopy om het bestand naar een ander station te schrijven en verwijder het oude bestand met de instructie Kill.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan het bestand niet opslaan naar TEMP (Fout 735)

Onderdelen moeten vaak tijdelijke gegevens opslaan. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Het onderdeel kan geen map met de naam TEMP vinden.

Maak een map met de naam TEMP en geef het pad op in de omgevingsvariabele TEMP.

•	Het station of de partitie waar de TEMP-map zich bevindt, bevat onvoldoende ruimte om de gegevens op te slaan.

Maak ruimte vrij op het station door het verwijderen van bestanden die u niet meer nodig hebt, of maak een TEMP-map aan op een andere partitie en geef het pad op in de omgevingsvariabele TEMP.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Automatisering wordt niet ondersteund door deze klasse (Fout 430)

Niet alle objecten hebben een interface voor automatisering. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De klasse die u hebt opgeven in de functieoproep GetObject of CreateObject werd gevonden, maar deze heeft geen programmeerbare interface.

U kunt geen programmacode schrijven om het gedrag van een object te besturen als het object niet geschikt is voor automatisering. Raadpleeg de documentatie bij de toepassing waarmee het object is gemaakt voor de beperkingen in het gebruik van automatisering bij deze objectklasse.

•	U hebt een project van .dll in .exe gewijzigd, of andersom. Als u bijvoorbeeld al een .dll-server gecompileerd en geregistreerd hebt en als u vervolgens het projecttype in .exe wijzigt en het project opnieuw compileert, kunt u geen .dll- of .exe-object maken omdat .dll en .exe al op uw systeem zijn geregistreerd. U lost dit probleem op door de registratie van de oude .dll of .exe handmatig ongedaan te maken.

Dit wordt veroorzaakt door de combinatie van projectcompatibiliteit en wijziging van een .exe-project in een .dll-project. In projectcompatibiliteit blijft de CLSID behouden maar de IID niet. Aangezien de CLSID bewaard blijft, wordt de klasse geregistreerd bij twee servers: bij een actieve server en bij een lokale server. Als een exemplaar wordt gemaakt, wordt de actieve server gekozen. Als naar de interface wordt gezocht, wordt de IID niet door de .dll ondersteund omdat deze nieuw is.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Vergrendelingsfout bij programmacodebron (Fout 455)

Deze fout komt alleen voor op de Apple Macintosh. Als u toegang wilt krijgen tot een programmacodebron, moet u deze bron vergrendelen. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er is een procedure in een programmacodebron opgeroepen. De programmacodebron is gevonden, maar bij een poging de bron te vergrendelen is een fout opgetreden.

Controleer of Hlock een fout als resultaat geeft (bijvoorbeeld "Ongeldig bij lege ingang" of "Ongeldig bij vrij blok").

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan programmacodebron niet vinden (Fout 454)

Deze fout komt alleen voor op de Apple Macintosh. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er is een procedure in een programmacodebron opgeroepen, maar de programmacodebron kon niet worden gevonden.

Controleer of de bron beschikbaar is en of de verwijzing naar de bron juist is.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De verbinding met een type- of objectbibliotheek voor externe verwerking is verbroken (Fout 442)

Tijdens externe toegang (wanneer toegang wordt gezocht tot een object dat deel uitmaakt van een ander proces of dat wordt uitgevoerd op een andere computer) werd de verbinding verbroken met de bibliotheek die de objectgegevens bevat. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De verbinding met de objectbibliotheek of typebibliotheek van de externe verwerking is verbroken.

Voer deze stappen uit om de verbinding te herstellen:

1.	Start het Application-object opnieuw.

2.	Klik in het venster met het foutbericht van waaruit u dit Help-onderwerp hebt opgevraagd op OK om het dialoogvenster Verwijzingen te openen.

3.	De verloren gegane verwijzing verschijnt, met links daarvan het woord ONTBREEKT.

4.	Verwijder de verloren gegane verwijzing.

5.	Het dialoogvenster Verwijzingen bevat tevens een verwijzing voor het object dat u in stap 1 hebt gestart. Klik op het betreffende selectievakje.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


I/O-fout in apparaat (Fout 57)

Externe apparatuur kan soms voor onverwachte fouten zorgen. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er is een in- of uitvoerfout opgetreden terwijl uw programma gebruik maakt van een apparaat zoals een printer of diskettestation.

Zorg dat het apparaat goed functioneert en probeer de bewerking nogmaals uit te voeren.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Het apparaat is niet beschikbaar (Fout 68)

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het apparaat dat u wilt gebruiken, is niet on line of bestaat niet.

Controleer de stroomvoorziening van het apparaat en controleer alle kabels van de computer naar het apparaat. Als u een printer wilt gebruiken via een netwerk, zorg dan dat er een logische verbinding is tussen de computer en de printer. Dit kan bijvoorbeeld een verbinding zijn waarmee LPT1 wordt gekoppeld aan de printer-id in het netwerk.

•	De verbinding met het netwerk kan verbroken zijn.

Herstel de verbinding en probeer de bewerking opnieuw.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De schijf is vol (Fout 61)

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Er is niet voldoende ruimte op de schijf om de bewerking Print #, Write # of Close te voltooien.

Verplaats een aantal bestanden naar een andere schijf of verwijder een aantal bestanden.

•	Er is niet voldoende ruimte op de schijf om de vereiste bestanden te maken.

Verplaats een aantal bestanden naar een andere schijf of verwijder een aantal bestanden.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De schijf is niet gereed (Fout 71)

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Er bevindt zich geen diskette in het opgegeven station.

Plaats een diskette in het station en voer de bewerking opnieuw uit.

•	Het opgegeven diskettestation is niet vergrendeld.

Vergrendel het station en voer de bewerking nogmaals uit.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Delen door nul (Fout 11)

Delen door nul is onmogelijk. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De waarde van de expressie die als deler wordt gebruikt, is nul.

Controleer de spelling van de variabelen in de expressie. Als een variabelennaam verkeerd is gespeld, kan dit een numerieke variabele opleveren die wordt geïnitialiseerd op nul. Controleer voorgaande bewerkingen die de variabelen in de expressie hebben ondergaan, met name van de variabelen die als argumenten van andere procedures aan deze procedure worden doorgegeven.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Fout bij laden van DLL (Fout 48)

Een DLL (Dynamic Link Library) is een bibliotheek die wordt opgegeven in de component Lib van een instructie Declare. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het bestand is niet uitvoerbaar als DLL.

Als het bestand een brontekstbestand is, moet dit bestand worden gecompileerd en moet het worden gekoppeld aan een formulier dat uitvoerbaar is als DLL.

•	Het bestand is geen Microsoft Windows-DLL.

Zorg voor de Microsoft Windows DLL-equivalent.

•	Het bestand is een oude Microsoft Windows-DLL en is niet compatibel met de beveiligingsmodus van Microsoft Windows.

Zorg voor een bijgewerkte versie van de DLL.

•	De DLL verwijst naar een andere DLL die niet aanwezig is.

Zorg voor de opgeroepen DLL en maak deze beschikbaar voor de andere DLL.

•	De DLL of een van de opgeroepen DLL’s, bevindt zich niet in een map die in het pad is opgenomen.

Verplaats de DLL naar de opgeroepen map of plaats de huidige map van de DLL in het pad.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Het bestand bestaat al (Fout 58)

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Deze fout treedt op tijdens de runtime wanneer de nieuwe bestandsnaam (die u bijvoorbeeld hebt opgegeven in de instructie Name) gelijk is aan een bestaande bestandsnaam.

Geef een nieuwe bestandsnaam op in de instructie Name of verwijder het oude bestand voordat u dit bestand in een instructie Name opgeeft.

•	U hebt de opdracht Opslaan als gebruikt om een reeds geopend project op te slaan, maar de projectnaam bestaat al.

Gebruik een andere projectnaam als u het andere project niet wilt vervangen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Het bestand is al geopend (Fout 55)

Soms moet een bestand gesloten zijn voordat een volgende instructie Open of een andere bewerking kan plaatsvinden. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt de instructie Open gebruikt voor sequentiële uitvoer om een bestand te openen dat al is geopend.

Een bestand dat is geopend voor een bepaald type sequentiële toegang, moet worden gesloten alvorens het te openen voor een ander type toegang. Zo moet een bestand dat is geopend voor Input, worden gesloten voordat het wordt geopend voor Output.

•	Een instructie (zoals Kill, SetAttr of Name) verwijst naar een open bestand.

Sluit het bestand voordat de instructie wordt uitgevoerd.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan opgegeven bestand niet vinden

Het bestand werd niet gevonden op de plaats die werd opgegeven. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Een instructie (zoals Kill, Name of Open, ) verwijst naar een bestand dat niet bestaat.

Controleer de spelling van de bestandsnaam en de padnaam.

•	Er is een poging gedaan een procedure in een DLL (Dynamic Link Library) of Macintosh-programmacodebron aan te roepen, maar de bestandsnaam van de bibliotheek of van de bron die is opgegeven in de component Lib van de instructie Declare kan niet worden gevonden.

Controleer de spelling van de bestandsnaam en de padnaam.

•	In de ontwikkelomgeving treedt deze fout op wanneer u probeert een project of een tekstbestand te openen dat niet bestaat.

Controleer de spelling van de projectnaam of van de bestandsnaam en de opgave van het pad.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De lus For is niet geïnitialiseerd (Fout 92)

Lustellers For moeten worden geïnitialiseerd. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U bent naar het midden van een lus For...Next gesprongen.

Verwijder de sprong naar de lus. Het wordt afgeraden om namen op te nemen in een lus For...Next.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Invoer na einde van bestand (Fout 62)

U kunt geen gegevens lezen die zich na het einde van het bestand bevinden. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Door de instructies Input # of Line Input # wordt gelezen uit een bestand waarin alle gegevens al zijn gelezen, of dat leeg is.

Gebruik de functie EOF direct voor de instructie Input # om het einde van het bestand te zoeken.

•	U hebt de functie EOF gebruikt met een bestand dat is geopend voor de toegangsmodus Binary.

EOF werkt alleen met bestanden die zijn geopend voor de sequentiële toegangsmodus Input. Gebruik Seek en Loc met bestanden die zijn geopend voor de toegangsmodus Binary.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Interne fout (Fout 51)

Controleer of deze fout niet is opgeroepen door de instructie Error of door de methode Raise. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er is een interne fout opgetreden in Visual Basic.

Als deze fout niet is veroorzaakt door de instructie Error of de methode Raise, dient u contact op te nemen met de productondersteuning van Microsoft en door te geven onder welke omstandigheden dit bericht verscheen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldige indeling Klembord (Fout 460)

Het Klembord accepteert alleen gegevens in bepaalde opgegeven indelingen. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U probeert gegevens uit een onderdeel op het Klembord te plaatsen maar deze gegevens hebben een indeling die niet compatibel is met het Klembord.

Raadpleeg de documentatie van het onderdeel om te bepalen of u het Klembord kunt gebruiken voor het overbrengen van gegevens uit het onderdeel.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldige bestandsindeling (Fout 321)

Bij bestanden op schijf zijn de gegevens vaak opgeslagen in een bepaalde indeling. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U probeert een bestand in een onderdeel te laden maar de indeling van de gegevens in het bestand is niet compatibel met het onderdeel.

Raadpleeg de documentatie van het onderdeel om de juiste indeling voor gegevens in bestanden op schijf te bepalen en of het onderdeel ondersteuning biedt voor het converteren van de ene indeling naar de andere.

•	U probeert de gegevens van een onderdeel op te slaan in een bestand maar de indeling van deze gegevens is niet compatibel met de indeling van het bestand.

Raadpleeg de documentatie van het onderdeel om te bepalen of het ondersteuning biedt voor het converteren van de ene indeling naar de andere.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldig rangtelwoord (Fout 452)

In de oproep van een DLL (Dynamic Link Library) hebt u aangegeven dat een getal in plaats van een procedurenaam moest worden gebruikt. U hebt de syntaxis #num gebruikt. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Een poging om de expressie num te converteren naar een rangtelwoord heeft geen resultaat gehad.

Zorg dat de expressie staat voor een geldig getal of gebruik de naam van de procedure bij de oproep.

•	Het opgegeven num geeft geen functie in de DLL op.

Zorg dat num een geldige functie in de DLL opgeeft.

•	Een typebibliotheek heeft een ongeldige declaratie, met als resultaat dat intern een ongeldig rangtelwoord wordt gebruikt.

Isoleer de procedureoproep die het probleem veroorzaakt door code (tijdelijk) om te zetten in opmerkingen. Schrijf een instructie Declare voor de procedure en geef het probleem door aan de leverancier van het bibliotheektype.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldig tekenreekspatroon (Fout 93)

Het tekenreekspatroon dat is opgegeven in het Like-gedeelte van een zoekbewerking, is ongeldig. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Een veel voorkomend voorbeeld van een ongeldige tekenreeksexpressie is [a-b , waarbij het vierkant haakje sluiten ontbreekt.

Controleer de geldige tekens op lijstexpressies.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldige procedureoproep of ongeldig argument (Fout 5)

Een gedeelte van de oproep kan niet worden voltooid. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Er valt waarschijnlijk een argument buiten het bereik van toegestane waarden. Zo accepteert de functie Sin alleen waarden binnen een bepaald bereik. Positieve argumenten kleiner dan 2.147.483.648 worden geaccepteerd. Bij getallen vanaf 2.147.483.648 treedt een fout op.

Controleer de bereiken die voor argumenten zijn toegestaan.

•	Bovenstaande fout kan ook optreden als een poging wordt gedaan een procedure aan te roepen die op het huidige platform ongeldig is. Een aantal procedures is bijvoorbeeld alleen geldig voor de Apple Macintosh of voor Microsoft Windows, enzovoort.

Controleer platformspecifieke informatie over de procedure.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldige index voor eigenschappenmatrix (Fout 381)

De waarde van een eigenschap kan bestaan uit een matrix van waarden. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De eigenschappenmatrix van een onderdeel kan een ondergrens hebben van nul en een bovengrens die gelijk is aan het aantal elementen in de matrix min 1. Daarnaast kan de ondergrens 1 zijn en de bovengrens gelijk aan het aantal elementen in de matrix.

Raadpleeg de documentatie van het onderdeel om te bepalen of uw index zich binnen het geldige bereik van de opgegeven eigenschap bevindt.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldig gebruik van Null (Fout 94)

Null is een subtype Variant dat wordt gebruikt om aan te geven dat een gegevensonderdeel geen geldige gegevens bevat. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U probeert de waarde op te vragen van een variabele Variant of van een expressie die Null is. Bijvoorbeeld:

MyVar = Null

For Count = 1 To MyVar

. . .

Next Count

Zorg dat de variabele een geldige waarde bevat.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan het benoemde argument niet vinden (Fout 448)

Een benoemd argument mag niet in een procedureoproep worden gebruikt, tenzij dit argument in de proceduredefinitie verschijnt. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een benoemd argument opgegeven, maar de procedure was niet zodanig gedefinieerd dat argumenten met de opgegeven naam kunnen worden ontvangen.

Controleer de spelling van de argumentnaam.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Index eigenschappenmatrix vereist (Fout 385)

De waarde van deze eigenschap bestaat uit een matrix in plaats van een enkelvoudige waarde. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt de index voor de eigenschappenmatrix die u wilde openen niet opgegeven.

Controleer de documentatie van het onderdeel om het bereik van indexen te bepalen dat geschikt is voor de matrix. Geef de juiste index op in de instructie van uw eigenschap.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De huidige lokale instellingen worden niet ondersteund door het object (Fout 447)

Lokale instellingen worden niet door alle objecten ondersteund. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd toegang te krijgen tot een object dat de lokale instelling van het huidige project niet ondersteunt. Als het huidige object bijvoorbeeld de lokale instelling Frans heeft, moet het object dat u wilt openen deze lokale instelling ondersteunen.

Controleer welke lokale instellingen door het object worden ondersteund.

•	Het is ook mogelijk dat het object afhankelijk is van taalondersteuning in een DLL (Dynamic Link Library) of Macintosh-programmacodebron, bijvoorbeeld OLE2NLS.DLL, een versie die verouderd kan zijn.

Zorg voor een recentere versie van de DLL die de lokale instelling van het huidige project wel ondersteunt.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Benoemde argumenten worden niet ondersteund door het object (Fout 446)

Benoemde argumenten worden niet door alle objecten ondersteund. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd toegang te krijgen tot een object waarvan de methoden geen benoemde argumenten ondersteunen.

Bij het uitvoeren van methoden voor dit object moet u de positie van de argumenten opgeven. Raadpleeg de documentatie bij het object voor meer informatie over de positie van argumenten en de verschillende typen argumenten.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Deze actie wordt niet ondersteund door het object (Fout 445)

Niet alle handelingen worden door alle objecten ondersteund. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt verwezen naar een methode of eigenschap die niet door dit object wordt ondersteund.

Raadpleeg de documentatie bij het object voor meer informatie over het object en controleer de spelling van de eigenschappen en de methoden.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Property Let-procedure is niet gedefinieerd en Property Get-procedure heeft geen object als resultaat gegeven (Fout 451)

Bepaalde eigenschappen, methoden en bewerkingen zijn alleen geldig voor objecten die tot een Collection behoren. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een bewerking of een eigenschap opgegeven die alleen geldig is voor collecties, maar het object is geen collectie.

Controleer de spelling van de naam van het object of de eigenschap of controleer of het object tot een Collection behoort. Controleer ook of de syntaxis van de methode Add waarmee het object aan de collectie is toegevoegd, correct is en of alle aanduidingen correct zijn gespeld.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Object vereist (Fout 424)

Verwijzingen naar eigenschappen en methoden vereisen vaak een expliciete objectkwalificatie. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt naar een objecteigenschap of een objectmethode verwezen, maar u hebt geen geldige objectkwalificatie opgegeven.

Geef een objectkwalificatie op als u dat nog niet hebt gedaan. Hoewel u bijvoorbeeld een objectkwalificatie kunt weglaten als deze verwijst naar een formuliereigenschap vanuit de eigen module van het formulier, moet u de kwalificatie expliciet opgeven als u vanuit een standaardmodule naar de eigenschap verwijst.

•	U hebt een objectkwalificatie geleverd die echter niet als object wordt herkend.

Controleer de spelling van de objectkwalificatie en zorg dat het object zichtbaar is in het deel van het programma waarin u naar dit object verwijst. In het geval van Collection-objecten controleert u of de methode Add voorkomt, zodat u zeker weet dat de syntaxis en de spelling van alle onderdelen van de methode correct zijn.

•	U hebt een geldige objectkwalificatie geleverd, maar een ander onderdeel van de oproep bevat een fout.

Een ongeldig pad als argument voor de opdracht FileOpen van een brontoepassing kan deze fout veroorzaken. Controleer de argumenten.

•	U hebt geen instructie Set gebruikt bij het toewijzen van een objectverwijzing.

Als u het resultaat van een oproep CreateObject toewijst aan een variabele Variant, hoeft er niet per se een fout op te treden als de instructie Set wordt weggelaten. In het volgende programmacodevoorbeeld wordt een impliciete versie van Microsoft Excel gemaakt en wordt de bijbehorende standaardeigenschap (de tekenreeks "Microsoft Excel") als resultaat gegeven en toegewezen aan de Variant RetVal. Als vervolgens wordt geprobeerd om RetVal als objectverwijzing te gebruiken, wordt de volgende fout veroorzaakt:

Dim RetVal	' Implicitly a Variant.

' Default property is assigned to Type 8 Variant RetVal.

RetVal = CreateObject("Excel.Application")

RetVal.Visible = True	' Error occurs here.

Gebruik de instructie Set als u een objectverwijzing toewijst.

•	In uitzonderingsgevallen kan deze fout optreden als u over een geldig object beschikt, maar probeert een ongeldige handeling op het object uit voeren. Deze fout kan bijvoorbeeld optreden als u een waarde probeert toe te kennen aan een eigenschap met het kenmerk alleen-lezen.

Controleer de documentatie van het object en zorg ervoor dat de handeling die u wilt verrichten een geldige handeling is.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Objectvariabele of blokvariabele With is niet ingesteld (Fout 91)

Een objectvariabele wordt in twee stappen gemaakt. Eerst declareert u de objectvariabele. Vervolgens wijst u een geldige verwijzing toe aan de objectvariabele. Hiervoor gebruikt u de instructie Set. Een blok With...End With moet op soortgelijke wijze worden geïnitialiseerd met het beginpunt van de instructie With. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd een objectvariabele te gebruiken die nog niet naar een geldig object verwijst.

Geef (opnieuw) een verwijzing op voor de objectvariabele. Als u bijvoorbeeld de instructie Set weglaat uit de volgende code, krijgt u een fout met betrekking tot de verwijzing naar MyObject:

Dim MyObject As Object	' Create object variable.

Set MyObject = Sheets(1)	' Create valid object reference.

MyCount = MyObject.Count	' Assign Count value to MyCount.

•	U hebt geprobeerd een objectvariabele te gebruiken die is ingesteld op Nothing.

Set MyObject = Nothing	' Release the object.

MyCount = MyObject.Count	' Make a reference to a released object.

Geef een nieuwe verwijzing op voor de objectvariabele. Gebruik bijvoorbeeld een nieuwe instructie Set om een nieuwe verwijzing naar het object in te stellen.

•	Het object is een geldig object maar is niet ingesteld omdat de objectbibliotheek waarin het object is beschreven, niet is geselecteerd in het dialoogvenster Verwijzingen.

Selecteer de objectbibliotheek in het dialoogvenster Verwijzingen toevoegen.

•	Het doel van een instructie GoTo bevindt zich in een blok With.

Spring niet naar een blok With. Zorg dat het blok is geïnitialiseerd met het beginpunt van de instructie With.

•	U hebt een regel binnen een blok With opgegeven toen u de opdracht Volgende instructie instellen koos.

Initialiseer het blok With door de instructie With uit te voeren.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Automatiseringsfout (Fout 440)

Als u toegang probeert te krijgen tot automatiseringsobjecten kunnen specifieke fouten optreden. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er is een fout opgetreden tijdens de uitvoering van een methode of bij het ophalen of instellen van een eigenschap van een objectvariabele. De fout is gemeld door de toepassing die het object heeft gemaakt.

Controleer de eigenschappen van het object Err om de bron en de aard van de fout te bepalen. Probeer ook eerst de instructie On Error Resume Next gebruiken vóórdat u de toegangsinstructie uitvoert. Controleer vervolgens onmiddellijk na de toegangsinstructie op fouten.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Deze eigenschap of methode wordt niet ondersteund door dit object (Fout 438)

Niet alle eigenschappen en methoden worden door alle objecten ondersteund. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een methode of een eigenschap opgegeven die niet bestaat voor dit automatiseringsobject.

Raadpleeg de documentatie bij het object voor meer informatie over het object en controleer de spelling van de eigenschappen en de methoden.

•	U hebt een procedure Friend opgegeven in een oproep met een late koppeling.

De naam van de procedure Friend moet bekend zijn tijdens de compileertijd. Deze kan niet in een oproep met een late koppeling voorkomen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Onvoldoende geheugen (Fout 7)

Er is meer geheugen nodig dan beschikbaar is. Het is ook mogelijk dat de grens van een 64 kB-segment is bereikt. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Er zijn te veel toepassingen, documenten of bronbestanden geopend.

Sluit alle toepassingen, documenten of bronbestanden af die u niet nodig hebt.

•	Er is een module of een procedure die te groot is.

Deel bijzonder grote modules of procedures op in kleinere stukken. Dit bespaart u geen geheugen, maar het kan voorkomen dat de grens van een 64 kB-segment wordt overschreden.

•	U hebt Microsoft Windows gestart in de standaardmodus.

Start Microsoft Windows opnieuw in de “enhanced”-modus.

•	U hebt Microsoft Windows gestart in de “enhanced”-modus, maar de virtuele geheugenruimte is vol.

Maak de virtuele geheugenruimte groter door schijfruimte vrij te maken of zorg dat er ruimte beschikbaar is.

•	Er zijn TSR-programma's gestart.

Beëindig de TSR-programma's.

•	Er zijn veel stuurprogramma's geladen.

Verwijder onnodige stuurprogramma's.

•	Er is te weinig geheugenruimte voor Public-variabelen.

Verminder het aantal Public-variabelen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Onvoldoende stackruimte (Fout 28)

De stack is een werkgebied in het geheugen dat naargelang de eisen van het uitvoerende programma dynamisch in omvang groeit of afneemt. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt te veel actieve procedureoproepen Function, Sub of Property.

Controleer of procedures niet te diep zijn genest. Dit is vooral het geval bij recursieve procedures (dat wil zeggen: procedures die zichzelf oproepen). Zorg dat recursieve procedures juist worden beëindigd. Gebruik het dialoogvenster Opgeroepen procedures om te controleren welke procedures actief zijn (in de stack).

•	Uw lokale variabelen vereisen meer plaatselijk variabele geheugenruimte dan beschikbaar is.

Probeer een aantal variabelen te declareren op moduleniveau. U kunt ook alle variabelen in de procedure als statisch declareren door het sleutelwoord Property, Sub of Function vooraf te laten gaan door Static. Het is ook mogelijk de instructie Static te gebruiken om afzonderlijke variabelen Static binnen uw procedures te declareren.

•	U hebt te veel tekenreeksen met vaste lengte.

U krijgt in een procedure sneller toegang tot tekenreeksen met een vaste lengte. Deze tekenreeksen gebruiken echter meer stackruimte dan tekenreeksen met variabele lengte, omdat tekenreeksgegevens zelf ook in de stack worden geplaatst. Probeer een aantal van uw tekenreeksen met vaste lengte te definiëren als tekenreeksen met variabele lengte. Als u tekenreeksen met variabele lengte declareert in een procedure, wordt alleen de reeksdescriptor (niet de gegevens zelf) in de stack geplaatst. U kunt de tekenreeks ook op moduleniveau definiëren, waar de reeks geen stackruimte nodig heeft. Variabelen die op moduleniveau zijn gedeclareerd, zijn standaard Public. De tekenreeks is dus voor alle procedures in de module zichtbaar.

•	U hebt te veel geneste functieoproepen DoEvents.

Gebruik het dialoogvenster Opgeroepen procedures om te controleren welke procedures actief zijn (in de stack).

•	De code heeft een gebeurtenisketen geactiveerd.

Een gebeurtenisketen wordt veroorzaakt door het activeren van een gebeurtenis die een gebeurtenisprocedure oproept die zich al in de stack bevindt. Een gebeurtenisketen lijkt op een recursieve procedureoproep die niet is beëindigd, maar is minder duidelijk omdat de oproep meestal vanuit Visual Basic heeft plaatsgevonden en niet door een expliciete oproep in de programmacode zelf. Gebruik het dialoogvenster Opgeroepen procedures om te controleren welke procedures actief zijn (in de stack).

Als u het dialoogvenster Opgeroepen procedures wilt weergeven, klikt u op de knop rechts van het vak Procedure in het venster Foutopsporing of kiest u de opdracht Opgeroepen procedures. Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Niet voldoende tekenreeksruimte (Fout 14)

In Visual Basic kunt u zeer grote tekenreeksen gebruiken. Andere programma's en de manier waarop u uw tekenreeksen manipuleert, kunnen echter deze fout veroorzaken. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Deze foutmelding kan worden veroorzaakt door expressies waarvoor is vereist dat tijdelijke tekenreeksen voor evaluatie worden gemaakt. De volgende programmacode geeft bijvoorbeeld de foutmelding Niet voldoende tekenreeksruimte bij bepaalde besturingssystemen:

MyString = "Hallo"

For Count = 1 To 100

MyString = MyString & MyString

Next Count

Wijs de reeks toe aan een variabele of een andere naam.

•	Uw systeem heeft mogelijk te weinig geheugenruimte, waardoor een tekenreeks niet kon worden toegewezen.

Verwijder toepassingen die u niet nodig hebt uit het geheugen om meer ruimte te maken.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Overloop (Fout 6)

U krijgt een overloop als u probeert een toewijzing te maken die de grens van het toewijzingsdoel overschrijdt. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het resultaat van een toewijzing, een berekening of een gegevenstypeconversie is zo groot dat het niet kan worden weergegeven binnen het bereik van waarden die zijn toegestaan voor dat type variabele.

Wijs de waarde toe aan een variabelentype dat een groter bereik van waarden kan bevatten.

•	Een toewijzing aan een eigenschap is groter dan de maximale waarde die de eigenschap kan ontvangen.

Zorg dat de toewijzing binnen het bereik valt van de eigenschap waarvoor deze is bedoeld.

•	U probeert een getal in een berekening te gebruiken en dat getal moet een integer zijn, maar het resultaat is groter dan een integer. Bijvoorbeeld:

    Dim x As Long

    x = 2000 * 365   ' Error: Overflow

U kunt dit probleem omzeilen door het getal als volgt te typen:

    Dim x As Long

    x = CLng(2000) * 365

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan het pad niet vinden (Fout 76)

In het pad voor een bestand worden het station, de mappen en submappen opgegeven die moeten worden doorlopen om het bestand te vinden. Een pad kan relatief of absoluut zijn. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Het besturingssysteem kon tijdens een bestands- of schijfbewerking (zoals Open, MkDir, ChDir of RmDir) het opgegeven pad niet vinden.

Geef het pad opnieuw op.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Toegangsfout bij pad of bestand (Fout 75)

Het besturingssysteem kon tijdens een bestands- of schijfbewerking (zoals Open, MkDir, ChDir of RmDir) geen koppeling maken tussen het pad en de bestandsnaam. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	De opgegeven bestandsspecificatie heeft niet de juiste indeling.

Een bestandsnaam kan een volledig pad (absoluut) of een relatief pad bevatten. Een volledig pad begint met de naam van het station (indien het pad zich in een ander station bevindt), gevolgd door een beschrijving van het pad, vanaf het begin tot aan de naam van het bestand. Een pad dat niet volledig is, is een relatief pad vanaf het huidige station en de huidige map.

•	U hebt geprobeerd een bestand op te slaan dat een bestaand alleen-lezen bestand zou vervangen.

Wijzig het kenmerk alleen-lezen van het doelbestand of sla het bestand onder een andere bestandsnaam op.

•	U hebt geprobeerd een alleen-lezen bestand te openen in de sequentiële Output- of Append-modus.

Open het bestand in de modus Input of wijzig het kenmerk alleen-lezen van het bestand.

•	U hebt geprobeerd een Visual Basic-project binnen een database of document te wijzigen.

U kunt geen wijzigingen in het ontwerp van het project aanbrengen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Toegang geweigerd (Fout 70)

U hebt geprobeerd te schrijven naar een diskette die schrijfbeveiligd is of toegang proberen te krijgen tot een bestand dat is vergrendeld. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd een bestand dat schrijfbeveiligd is, te openen voor sequentiële Output of Append.

Open het bestand voor Input of wijzig het schrijfbeveiligingskenmerk van het bestand.

•	U hebt geprobeerd een bestand te openen op een diskette die schrijfbeveiligd is voor sequentiële Output of Append.

Verwijder de schrijfbeveiliging van de diskette of open het bestand voor Input.

•	U hebt geprobeerd naar een bestand te schrijven dat door een ander proces is vergrendeld.

Wacht met het openen van het bestand totdat het andere proces het bestand vrijgeeft.

•	U hebt geprobeerd toegang te krijgen tot het Register, maar u hebt geen gebruiksrechten op dit type Register-toegang.

Bij 32-bits systemen van Microsoft Windows moet een gebruiker de juiste rechten hebben om toegang te krijgen tot het systeemregister. Wijzig uw rechten of laat ze wijzigen door de systeembeheerder.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Printerfout (Fout 482)

Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er is een fout opgetreden bij uw printer, maar er is niet meer informatie teruggegeven aan de computer die het bestand heeft verstuurd.

U moet de printer zelf nakijken. Controleer of alle verbindingen tussen de computer en de printer goed zijn bevestigd. De meeste printers geven bepaalde foutberichten door zoals "Geen papier meer", "Off line", enzovoort.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Property Get wordt niet ondersteund tijdens runtime (Fout 393)

Niet alle eigenschappen geven informatie tijdens runtime. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De eigenschap die u wilt gebruiken is alleen-lezen tijden de uitvoering.

Stop de uitvoering en bekijk de eigenschap in de ontwerptijd.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Property Get wordt niet ondersteund (alleen-lezen eigenschap) (Fout 394)

Niet alle eigenschappen geven informatie als resultaat. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De eigenschap die u wilt gebruiken geeft geen informatie als resultaat.

U kunt de status van de eigenschap niet bepalen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan een eigenschap of methode niet vinden (Fout 423)

De spelling van een objectnaam moet precies overeenkomen met de definitie in de bijbehorende objectbibliotheek. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt verwezen naar een object.method of object.property, maar method of property is niet gedefinieerd.

U hebt mogelijk de naam van het object verkeerd gespeld. Als u wilt zien welke eigenschappen en methoden zijn gedefinieerd voor een object, geeft u het Objectenoverzicht weer. Selecteer de juiste objectbibliotheek om de beschikbare eigenschappen en methoden weer te geven.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Eigenschap is niet gevonden (Fout 422)

Niet alle objecten ondersteunen dezelfde set van eigenschappen. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Dit object ondersteunt de opgegeven eigenschap niet.

Controleer de spelling van de naam van de eigenschap. Het kan ook zijn dat u toegang probeert te verschaffen tot een soort 'tekst'-eigenschap terwijl het object in feite een "bijschrift-" of ander soort eigenschap ondersteunt. Raadpleeg de documentatie bij het object.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Property Set wordt niet ondersteund tijdens runtime (Fout 382)

Het kan zijn dat u niet kunt verwijzen naar een eigenschap tijdens runtime. Deze fout heeft de volgende oorzaak en kan als volgt worden opgelost:

•	U probeert te verwijzen naar een eigenschap die alleen-lezen of alleen-schrijven is tijdens de uitvoering.

Aangezien u een verwijzing kunt gebruiken voor zowel lezen als schrijven, moet de eigenschap tijdens de uitvoering ondersteuning bieden voor beide handelingen als u ernaar wilt verwijzen tijdens runtime.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Property Set wordt niet ondersteund (alleen-lezen eigenschap) (Fout 383)

Het kan zijn dat u niet kunt verwijzen naar een eigenschap tijdens runtime. Deze fout heeft de volgende oorzaak en kan als volgt worden opgelost:

•	U probeert te verwijzen naar een eigenschap met het kenmerk alleen-lezen tijdens de uitvoering.

Aangezien u een verwijzing kunt gebruiken voor zowel lezen als schrijven, moet de eigenschap tijdens de uitvoering ondersteuning bieden voor beide handelingen als u ernaar wilt verwijzen tijdens runtime. U kunt alleen gebruik maken van Property Get met deze eigenschap.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Property Set is niet toegestaan (Fout 387)

Niet alle eigenschappen ondersteunen het als resultaat geven van een verwijzing. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U probeert een verwijzing naar een eigenschap op te vragen die geen verwijzing als resultaat geeft.

Beperk uw toegang naar deze eigenschap tot het gebruik van Property Let en Property Get.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Vervangingen zijn te lang (Fout 746)

Een vervanging mag niet langer zijn dan een opgegeven maximale lengte. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een vervanging opgegeven die langer is dan de toegestane lengte.

Raadpleeg de documentatie van het onderdeel voor de toegestane maximumlengte.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Resume zonder fout (Fout 20)

Een instructie Resume mag alleen binnen een foutafhandelingsroutine verschijnen en kan alleen in een actieve foutafhandelingsroutine worden uitgevoerd. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt een instructie Resume buiten een foutafhandelingsroutine geplaatst.

Verplaats de instructie naar een foutafhandelingsroutine of verwijder de instructie.

•	De programmacode is naar een foutafhandelingsroutine gesprongen, hoewel de programmacode geen fout bevatte.

U hebt misschien een regelnaam verkeerd gespeld. U kunt niet via procedures naar namen springen. Zoek daarom in de procedure naar de naam die de foutafhandelingsroutine identificeert. Als u een dubbele naam vindt die is opgegeven als het doel van een instructie GoTo en die geen instructie On Error GoTo is, wijzigt u de regelnaam zodat deze overeenkomt met het bestemde doel

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Return zonder GoSub (Fout 3)

Een instructie Return moet een corresponderende instructie GoSub hebben. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een instructie Return die niet past bij een instructie GoSub.

Controleer of u de instructie GoSub niet per ongeluk hebt verwijderd.

Anders dan For...Next, While...Wend en Sub...End Sub die tijdens de compilatie worden gecombineerd, worden GoSub en Return tijdens de uitvoering gecombineerd.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Een functie is niet gedefinieerd in de opgegeven DLL (Fout 453)

De DLL (Dynamic Link Library) in een verwijzing naar een door de gebruiker gemaakte bibliotheek is gevonden, maar de opgegeven DLL-functie is niet binnen de DLL gevonden. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt een ongeldig rangtelwoord opgegeven in de declaratie van de functie.

Zoek het juiste rangtelwoord of roep de functie aan met de naam.

•	U hebt de juiste DLL-naam opgegeven, maar het is niet de versie met de opgegeven functie.

Het kan zijn dat u de juiste versie op uw computer hebt geïnstalleerd. Als de map met de juiste versie echter in het pad wordt voorafgegaan door de map met de verkeerde versie, krijgt u toegang tot de verkeerde DLL. Controleer of u verschillende versies hebt geïnstalleerd op uw computer. Neem contact op met de leverancier voor een recentere versie als u nog een oude versie hebt.

•	Als u werkt met een 32-bits versie van de Microsoft Windows-omgeving, moeten zowel de DLL-naam als de alias (indien gebruikt) correct zijn.

Zorg dat de DLL-naam en de alias correct zijn.

•	Enkele 32-bits DLL’s bevatten functies met enigszins afwijkende versies zodat deze zowel Unicode- als ANSI-tekenreeksen kunnen bevatten. Een A aan het einde van een functienaam geeft aan dat het een ANSI-versie is. A W aan het einde van de functienaam geeft aan dat het een Unicode-versie betreft.

Als de functie argumenten van het type tekenreeks accepteert, probeer dan een A achter de functienaam toe te voegen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De expressie is te complex (Fout 16)

Het aantal subexpressies dat is toegestaan in een expressie met drijvende komma is afhankelijk van het platform dat u gebruikt. Bij een 32-bits versie van de Microsoft Windows-omgeving zijn bijvoorbeeld maximaal acht niveaus van geneste expressies met drijvende komma toegestaan. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Een expressie met drijvende komma bevat te veel geneste subexpressies.

Deel de expressie op in zoveel afzonderlijke expressies als noodzakelijk is om te voorkomen dat de fout optreedt.

Opmerking   In eerdere versies van Visual Basic, was Fout 16 "Tekenreeksexpressie te complex". Deze foutvoorwaarde kan niet meer voorkomen. Als u echter een oude programmacode hebt die deze fout opspoort en afhandelt, moet u deze programmacode verwijderen om verwarring met de nieuwe fout te voorkomen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Gezochte tekst is niet gevonden (Fout 744)

Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De tekst die u hebt opgegeven is niet gevonden.

De tekst komt niet voor.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Sub of Function is niet gedefinieerd (Fout 35)

De procedures Sub, Function of Property moeten worden gedefinieerd om te kunnen worden opgeroepen. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	De naam van de procedure is verkeerd gespeld.

Controleer de spelling en corrigeer deze.

•	U hebt geprobeerd een procedure aan te roepen vanuit een ander project zonder dat u in het dialoogvenster References expliciet een verwijzing hebt toegevoegd aan dat project.

Verwijzingen toevoegen:

1.	Geef het dialoogvenster Verwijzingen weer.

2.	Zoek de naam van het project met daarin de procedure die u wilt oproepen. Als de projectnaam niet in het dialoogvenster Verwijzingen verschijnt, klikt u op de knop Bladeren en zoekt u naar het project.

3.	Schakel het selectievakje links van de projectnaam in.

4.	Klik op OK.

•	De opgegeven procedure is niet zichtbaar voor de oproepende procedure.

Procedures die in een module zijn gedeclareerd als Private, kunnen niet worden opgeroepen vanuit procedures buiten die module. Als Option Private Module actief is, zijn de procedures in de module niet beschikbaar voor andere projecten. Met de opdracht Zoeken kunt u opzoeken waar de procedure zich bevindt.

•	U hebt een Windows-DLL (Dynamic Link Library)-routine of een Macintosh programmacodebronroutine gedeclareerd, maar de routine bevindt zich niet in de opgegeven bibliotheek of programmacodebron.

•	Controleer het rangtelwoord (als u dat hebt gebruikt) of de naam van de routine. Controleer of u de juiste versie van de DLL of Macintosh-programmacodebron hebt. Mogelijk bestaat de routine alleen in recentere versies van de DLL of Macintosh-programmacodebron. Als een oudere versie voorkomt in een map die voorafgaat aan de map waarin de recentere versie zich bevindt, treedt er een fout op, omdat u in Visual Basic toegang krijgt tot de verkeerde DLL of Macintosh-programmacodebron. U hebt de juiste DLL-naam of Macintosh-programmacodebron opgegeven, maar het is niet de versie met de opgegeven functie.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Het subscript valt buiten het bereik (Fout 9)

U kunt alleen binnen de gedefinieerde bereiken toegang krijgen tot matrixonderdelen en leden van collecties. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt verwezen naar een matrixonderdeel dat niet bestaat.

Misschien is het subscript groter of kleiner dan het bereik van mogelijke subscripts of er zijn op dit punt in de toepassing nog geen dimensies aan de matrix toegewezen. Controleer de boven- en ondergrens van de declaratie van de matrix. Gebruik de functies UBound en LBound om matrixgrenzen aan te geven als u werkt met matrices waarvan de grootte wordt gewijzigd. Controleer de spelling van de variabelennaam wanneer de index als een variabele is opgegeven.

•	U hebt een matrix gedeclareerd, maar u hebt het aantal matrixonderdelen niet opgegeven. Deze fout wordt bijvoorbeeld veroorzaakt door de volgende code:

Dim MyArray() As Integer

MyArray(8) = 234	' Causes Error 9.

In Visual Basic worden niet-opgegeven matrixbereiken zoals het bereik 0 - 10 niet impliciet van een dimensie voorzien. Als u het aantal onderdelen van een matrix expliciet wilt opgeven, gebruikt u Dim of ReDim.

•	U hebt verwezen naar een niet-bestaand lid van een collectie.

Probeer de constructie For Each...Next te gebruiken in plaats van indexonderdelen op te geven.

•	U hebt een afgekorte vorm van het subscript gebruikt waarmee u impliciet een ongeldig element hebt opgegeven.

Als u bijvoorbeeld de operator ! in combinatie met een collectie gebruikt, geeft ! impliciet een sleutel op. Zo is object!sleutelnaam.waarde bijvoorbeeld equivalent aan object.onderdeel(sleutelnaam).waarde. In dit geval treedt een fout op als keyname een ongeldige sleutel is in de collectie. Gebruik een geldige sleutelnaam of index voor de collectie om de fout op te lossen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Object of klasse ondersteunt de set van gebeurtenissen niet (Fout 459)

Niet elk onderdeel ondersteunt de ontvangst van gebeurtenissen. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd een variabele WithEvents de gebruiken bij een onderdeel dat niet als gebeurtenisbron kan fungeren voor de opgegeven set gebeurtenissen. U slaat bijvoorbeeld gebeurtenissen van een object op en vervolgens maakt u een ander object dat het eerste object implementeert met Implements. Hoewel u wellicht denkt dat u de gebeurtenissen van het geïmplementeerde object kunt opslaan, is dat niet automatisch zo. Met Implements implementeert u alleen een interface voor methoden en eigenschappen.

U kunt geen gebeurtenissen opslaan voor een onderdeel dat geen bron van gebeurtenissen is.

•	WithEvents wordt niet ondersteund voor Private UserControls omdat de vereiste typegegevens voor het oproepen van de ObjectEvent niet beschikbaar zijn tijdens het uitvoeren.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Te veel DLL-toepassings-clients (Fout 47)

De DLL (Dynamic Link Library) voor Visual Basic kan toegang bieden aan maximaal 50 brontoepassingen tegelijk. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Uw toepassing, en andere toepassingen waarvoor Visual Basic de bron is (tot een aantal ervan heeft uw toepassing wellicht toegang), proberen alle tegelijk toegang te krijgen tot de Visual Basic-DLL.

Verminder het aantal geopende toepassingen die toegang willen tot Visual Basic.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Er zijn te veel bestanden geopend (Fout 67)

Het aantal schijfbestanden dat tegelijk geopend kan zijn is aan een maximum gebonden. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	MS-DOS-besturingssysteem: er zijn meer bestanden in de hoofdmap gemaakt dan het besturingssysteem toestaat.

MS-DOS stelt een limiet aan het aantal bestanden in de hoofdmap (meestal is de limiet 512). Wanneer bestanden worden geopend, gesloten en opgeslagen in de hoofdmap, dient u uw programma zodanig te wijzigen dat dergelijke bewerkingen voortaan in een submap worden uitgevoerd.

•	MS-DOS-besturingssysteem: er zijn meer bestanden geopend dan het aantal dat is opgegeven in de instelling Files= in het bestand Config.sys.

Verhoog het aantal dat is opgegeven in de instelling Files= in het bestand Config.sys en start uw computer opnieuw.

•	Macintosh: uw programma heeft geprobeerd meer dan 40 bestanden te openen.

Bij de Apple Macintosh is de standaardlimiet 40 bestanden. U kunt deze limiet wijzigen met behulp van een voorziening voor het aanpassen van de parameter MaxFiles in het opstartblok.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Typen komen niet overeen (Fout 13)

Met Visual Basic kunt u veel waarden converteren en kunt u veel waarden verwijzingen met gegevenstypen laten uitvoeren die in eerdere versies van het programma niet mogelijk waren. Deze fout kan echter nog wel optreden. De fout heeft de volgende oorzaken en kan als volgt worden opgelost:

•	De variabele of eigenschap heeft het verkeerde gegevenstype. Een variabele waarvoor bijvoorbeeld een integer is vereist, accepteert geen tekenreekswaarde, tenzij de volledige tekenreeks als integer kan worden herkend.

Probeer alleen waarden toe te wijzen tussen compatibele gegevenstypen. Een Integer kan bijvoorbeeld altijd worden toegewezen aan een Long. Een Single kan altijd worden toegewezen aan een Double en alle gegevenstypen (behalve een door de gebruiker gedefinieerd type) kunnen worden toegewezen aan een Variant.

•	Er is een object doorgegeven aan een procedure die één eigenschap of waarde verwacht.

Geef de juiste eigenschap door of roep een methode aan die bij het object past.

•	Er werd een module- of project-naam was gebruikt waar een expressie werd verwacht, bijvoorbeeld:

Debug.Print MyModule

Geef een expressie op die kan worden weergegeven.

•	U hebt geprobeerd de traditionele methode van foutafhandeling van Basic te mengen met Variant-waarden met het subtype Error (10, vbError); bijvoorbeeld:

Error CVErr(n)

Als u een fout opnieuw moet genereren, moet u deze fout toewijzen aan een intrinsieke fout van Visual Basic (of aan een door de gebruiker gedefinieerde fout), waarna u de betreffende fout kunt genereren.

•	Een waarde CVErr kan niet worden geconverteerd naar een waarde Date. Bijvoorbeeld:

MyVar = CDate(CVErr(9))

Gebruik een instructie Select Case of een soortgelijke constructie om het resultaat van CVErr aan een dergelijke waarde toe te wijzen.

•	Tijdens de runtime geeft deze fout gewoonlijk aan dat een Variant die in een expressie wordt gebruikt, een onjuist subtype heeft of dat een Variant die een matrix bevat, in een instructie Print # verschijnt.

Als u matrices wilt afdrukken, maakt u een lus die elk onderdeel afzonderlijk weergeeft.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De uitvoering is onderbroken door de gebruiker (Fout 18)

Het onderbreken van de uitvoering is nuttig, maar als de onderbreking niet goed wordt afgehandeld, kan dit resulteren in beëindiging van de toepassing. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Een gebruiker heeft op CTRL+BREAK of op een andere toets gedrukt waardoor het programma is onderbroken.

Ga door met de uitvoering in de ontwikkelomgeving. Handel de fout op de juiste wijze af als de fout optreedt tijdens runtime.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Variabele gebruikt een automatiseringstype dat niet wordt ondersteund in Visual Basic (Fout 458)

Niet elke programmeertaal kan elke variabele gebruiken die in een typebibliotheek of objectbibliotheek is opgenomen. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een variabele gebruikt die is gedefinieerd in een typebibliotheek of een objectbibliotheek en die een gegevenstype bezit dat niet door Visual Basic wordt ondersteund.

U kunt geen variabele in een Visual Basic-programma gebruiken van een type dat niet door Visual Basic wordt herkend.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Onjuist aantal argumenten of ongeldige eigenschappentoewijzing (Fout 450)

Het aantal argumenten bij een procedure moet overeenkomen met het aantal parameters in de definitie van de procedure. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het aantal argumenten in de oproep van de procedure was niet hetzelfde als het aantal vereiste argumenten dat door de procedure werd verwacht.

Vergelijk de argumentenlijst in de oproep met de proceduredeclaratie of de definitie.

•	U hebt een index opgegeven voor een besturingselement dat geen deel uitmaakt van een besturingsmatrix.

De indexopgave wordt als argument geïnterpreteerd, maar omdat er noch een index, noch een argument wordt verwacht, treedt de fout op. Verwijder de indexopgave of volg de procedure voor het maken van een besturingsmatrix. Stel tijdens de ontwerpperiode in het blad of venster met eigenschappen van het besturingselement de eigenschap Index in op een waarde die niet gelijk is aan nul.

•	U hebt geprobeerd een waarde toe te wijzen aan een alleen-lezen eigenschap of u hebt geprobeerd een waarde toe te wijzen aan een eigenschap waarvoor geen procedure Property Let bestaat.

Het toewijzen van een waarde aan een eigenschap is hetzelfde als het doorgeven van die waarde als argument bij de procedure Property Let van het object. Definieer de procedure Property Let op de juiste wijze. De procedure moet één argument meer hebben dan de bijbehorende procedure Property Get. Als het een alleen-lezen eigenschap betreft, kunt u aan deze eigenschap geen waarde toewijzen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


ActiveX-onderdeel kan geen object maken of geen verwijzing naar dit object als resultaat geven (Fout 429)

Als u een object wilt maken, moet de klasse van het object zijn geregistreerd in het systeemregister en moeten alle aan het object gekoppelde DLL (Dynamic Link Libraries) beschikbaar zijn. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	De klasse van het object is niet geregistreerd. Het kan zijn dat de klasse niet wordt genoemd in het systeemregister, of dat de klasse wel wordt genoemd, maar dat deze klasse een bestand opgeeft van het verkeerde type of dat het bestand niet kan worden gevonden.

Probeer zo mogelijk de toepassing van het object te starten. Als de informatie van het Register verouderd of fout is, moet de toepassing het Register controleren en de informatie corrigeren. Als het probleem niet wordt opgelost door het starten van de toepassing, voer dan nogmaals het installatieprogramma van de toepassing uit.

•	Een DLL die door het object wordt vereist, kan niet worden gebruikt omdat de DLL niet kon worden gevonden of omdat deze weliswaar gevonden is, maar niet meer functioneert.

Zorg dat alle aan het object gekoppelde DLL’s beschikbaar zijn. Een object als DAO (Data Access Object) heeft bijvoorbeeld ondersteunende DLL’s nodig die van platform tot platform kunnen verschillen. Als bovenstaand probleem de fout veroorzaakt, moet u wellicht nogmaals het installatieprogramma voor het betreffende object uitvoeren.

•	Het object is beschikbaar op de machine, maar het is een automatiseringsobject waarop een gebruiksrecht van toepassing is. Het is niet mogelijk te controleren of een gebruiksrecht is verleend.

Sommige objecten kunnen pas worden gebruikt als het bronprogramma een sleutel tot het gebruiksrecht heeft gevonden die verifieert dat het object is geregistreerd voor gebruik op de huidige machine. Als naar een object wordt verwezen via een op juiste wijze geïnstalleerde typebibliotheek of objectbibliotheek, wordt de juiste sleutel automatisch verstrekt.

Als de poging om het object te gebruiken echter het resultaat is van een oproep CreateObject of GetObject, moet het object de sleutel vinden. In dit geval kan het object het systeemregister doorzoeken of zoeken naar een speciaal bestand (bijvoorbeeld een bestand met de toevoeging .lic) dat bij de installatie door het object wordt gemaakt. Als de sleutel niet kan worden gevonden, kan het object niet worden gebruikt. Als de toepassing van het object op onjuiste wijze door een eindgebruiker is geïnstalleerd, of als een eindgebruiker per ongeluk een noodzakelijk bestand heeft verwijderd of het systeemregister heeft verwijderd, kan het zijn dat het object de eigen sleutel niet kan vinden. Als de sleutel niet kan worden gevonden, kan het object niet worden gebruikt. In dat geval kan het object mogelijk wel op het systeem van de ontwikkelaar, maar niet op het systeem van de gebruiker worden gebruikt. Mogelijk moet de gebruiker het betreffende object opnieuw installeren.

•	U probeert de functie GetObject te gebruiken om een verwijzing terug te vinden naar een klasse die met Visual Basic is gemaakt.

GetObject kan niet worden gebruikt om een verwijzing terug te vinden naar een klasse die met Visual Basic is gemaakt.

•	Toegang tot het object wordt expliciet geweigerd.

Mogelijk probeert u toegang te krijgen tot een gegevensobject dat op dat moment wordt gebruikt en dat is vergrendeld om een impasse te voorkomen. Als dit het geval is, kunt u wellicht op een ander tijdstip toegang krijgen tot het object.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldige waarde voor eigenschap (Fout 380)

De meeste eigenschappen accepteren slechts waarden van een bepaald type, binnen een bepaald bereik. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er is een ongeldige waarde toegewezen aan een eigenschap.

Zie het Help-onderwerp voor de betreffende eigenschap voor een overzicht van de geldige waarden voor de eigenschap.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldige figuur (Fout 481)

Aan de eigenschap Picture of het object Picture kan alleen een figuur worden toegewezen. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd iets toe te wijzen aan een eigenschap Picture of een object Picture dat niet wordt herkend als een pictogram, bitmap of Microsoft Windows-metabestand.

Zie de Help-onderwerpen voor het object Picture of de eigenschap Picture van het object waarmee u werkt voor een overzicht van geldige figuurtypen.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldige indeling in bronbestand (Fout 325)

Als u toegang wilt krijgen tot een bronbestand, moet de bron die u probeert op te halen een geldige indeling hebben. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Het bronbestand dat u probeert op te halen, heeft een ongeldige indeling, of een bepaalde bron in het bestand heeft een ongeldige indeling.

Installeer het bestand opnieuw vanaf de oorspronkelijke schijf als de inhoud is beschadigd. Als de fout opnieuw optreedt, dient u een nieuw bestand te gebruiken of een versie van de bron met de vereiste indeling.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Deze sleutel is al verbonden met een lid van deze collectie (Fout 457)

Een sleutel is een tekenreeks (opgegeven in de methode Add) die geldt als een unieke aanduiding van een bepaald lid van een collectie. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U geeft een sleutel op voor een lid van de collectie waarmee reeds een ander lid van de collectie wordt aangeduid.

Kies voor dit lid een andere sleutel.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Deze matrix is statisch of tijdelijk vergrendeld (Fout 10)

Niet van alle matrices kunnen de dimensies worden gewijzigd. Zelfs matrices waarvoor specifiek dynamische variabelen zijn gedeclareerd (en matrices binnen Variant-variabelen), zijn soms tijdelijk vergrendeld. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt ReDim willen gebruiken om het aantal elementen van een statische matrix te wijzigen. Zo wordt in de volgende programmacode de statische matrix FixedArr ontvangen door SomeArr in de procedure NextOne, waarna wordt getracht de grootte van SomeArr te wijzigen:

Sub FirstOne

Dim FixedArr(25) As Integer	' Create a fixed-size array and

NextOne FixedArr()	' pass it to another procedure.

End Sub

Sub NextOne(SomeArr() As Integer)

ReDim SomeArr(35)	' Error 10 occurs here.

. . .

End Sub

Maak de oorspronkelijke matrix dynamisch, en niet statisch, door deze te declareren met ReDim (bij declaratie binnen een procedure) of door deze te declareren zonder het aantal elementen op te geven (bij declaratie op moduleniveau).

•	U hebt de dimensies willen wijzigen van een dynamische matrix op moduleniveau, waarvan een van de elementen als een argument aan een procedure is doorgegeven. Zo is ModArray in de volgende programmacode een dynamische matrix op moduleniveau waarvan het 45ste element via verwijzing wordt doorgegeven aan de procedure Test:

Dim ModArray () As Integer	' Create a module-level dynamic array.

. . .

Sub AliasError()

ReDim ModArray (1 To 73) As Integer

Test ModArray (45)	' Pass an element of the module-level

' array to the Test procedure.

End Sub

Sub Test(SomeInt As Integer)

ReDim ModArray (1 To 40) As Integer  ' Error occurs here.

End Sub

Het is in dit geval niet nodig een element van de matrix op moduleniveau door te geven omdat deze zichtbaar is binnen alle procedures in de module. Wordt echter toch een element doorgegeven, dan wordt de matrix vergrendeld om te voorkomen dat het geheugen voor de verwijzingsparameter binnen de procedure wordt vrijgemaakt. Dat zou een onvoorspelbaar resultaat tot gevolg kunnen hebben wanneer de procedure terugkeert.

•	U hebt een waarde willen toewijzen aan een Variant-variabele met een matrix, maar de Variant blijkt vergrendeld. Als uw programmacode bijvoorbeeld gebruik maakt van een lus For Each...Next om een herhaling uit te voeren op een variant die een matrix bevat, wordt de matrix vergrendeld wanneer de instructies in de lus worden uitgevoerd en weer ontgrendeld wanneer de lus wordt beëindigd:

SomeArray = Array(9,8,7,6,5,4,3,2,1)

For Each X In SomeArray

SomeArray = 301	' Causes error since array is locked.

Next X

Gebruik For...Next in plaats van een lus For Each...Next om herhalingen uit te voeren. Wanneer een lus For Each...Next wordt uitgevoerd op een matrix, kunt u de matrix wel lezen, maar niet ernaar schrijven.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan een bestandsnaam of klassennaam niet vinden tijdens een automatiseringsbewerking (Fout 432)

De functie GetObject vereist een geldige bestandsnaam met een padspecificatie, dan wel de naam van een klasse die bij het systeem is geregistreerd. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De naam die is opgegeven als bestandsnaam of klasse in een oproep voor de functie GetObject werd niet gevonden.

Controleer de namen en probeer het nogmaals. Controleer of de naam die wordt gebruikt voor de parameter klasse overeenkomt met de naam die bij het systeem is geregistreerd.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Het automatiseringsobject heeft geen standaardwaarde (Fout 443)

Wanneer u een objectnaam zonder eigenschap of methode opgeeft, gaat Visual Basic ervan uit dat u verwijst naar het standaardlid (eigenschap of methode) van het object. Niet alle objecten hebben echter een standaardlid. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Visual Basic kan het standaardlid voor het opgegeven object niet vaststellen.

Controleer de documentatie bij het object en geef een expliciete specificatie op van de eigenschap of methode.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De externe server bestaat niet of is niet beschikbaar (Fout 462)

De functie CreateObject vereist een geldige server. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er is een serverparameter opgegeven maar de server kon niet bereikt of gevonden worden.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Klasse is niet geregistreerd op lokale computer (Fout 463)

De functie CreateObject vereist een geldige server. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er is een serverparameter opgegeven maar de opgegeven klassen-ProgID (de eerste parameter van de functie CreateObject) is niet geregistreerd op het lokale systeem.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan de methode of het gegevenslid niet vinden (Fout 461)

De collectie, het object of het door de gebruiker gedefinieerde type bevat niet het opgeroepen lid. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Mogelijk hebt u de naam van het object of van het lid verkeerd gespeld.

Controleer de spelling van de namen en controleer de instructie Type of de documentatie bij het object om de leden van het object en de juiste spelling van de objectnamen of lidnamen te bepalen.

•	Mogelijk hebt u een collectieindex opgegeven die buiten het bereik ligt.

Controleer de eigenschap Count om te bepalen of een lid van een collectie bestaat. Bedenk dat indexen van collecties beginnen met 1 en niet met nul. De eigenschap Count geeft dus het grootst mogelijke indexgetal als resultaat.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


<Onderdeel> is geen geldig besturingselementtype (Fout 720)

Alleen geldige ActiveX-onderdelen kunnen als besturingselementen op formulieren worden toegewezen. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd een ActiveX-onderdeel als een besturingselement op een formulier toe te wijzen maar het onderdeel wordt niet herkend als een geldig besturingselementonderdeel.

Raadpleeg de Help-onderwerpen over het maken van ActiveX-besturingselementen om te achterhalen waaruit een aanvaardbaar besturingselement is samengesteld.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Onverwachte fout; afsluiten

Er is een onverwachte fout opgetreden waardoor Visual Basic moet worden afgesloten. De oorzaak kan zijn gelegen in de hardware of in andere software op uw systeem.


Geldige waarden zijn hele getallen van 1 tot 32

U hebt getracht de breedte van een tabstop op te geven boven het toegestane bereik. Een getal van 1/m 32 is toegestaan voor dit veld.


Geldige waarden zijn hele getallen van 2 tot 60

U hebt getracht een Rasterbreedte of Rasterhoogte op te geven boven het toegestane bereik. Een getal van 2 t/m 60 is toegestaan voor dit veld.


Opgegeven item is een binair formulier en kan niet in Visual Basic worden geladen

Binaire formulieren die met eerdere versies van Visual Basic zijn gemaakt, kunnen niet in deze versie van Visual Basic worden geladen. Alleen versie 2.0 en 3.0 van Visual Basic ondersteunen de conversie van binaire formulieren naar ASCII. Als u in het bezit bent van Visual Basic 2.0 of 3.0, kunt u een formulier laden dat met die versies of met versie 1.0 is gemaakt en het vervolgens opslaan als tekst. Vervolgens kunt u het formulier laden in Visual Basic.


Het projectbestand is alleen-lezen

In dit projectbestand kan niet worden geschreven. Als u het bestand wilt wijzigen, moet u het onder een andere naam opslaan of het kenmerk alleen-lezen verwijderen.


Het bestand is alleen-lezen

In dit bestand kan niet worden geschreven. Als u het bestand wilt wijzigen, moet u het onder een andere naam opslaan of het kenmerk alleen-lezen verwijderen.


Er is al een procedure met die naam

Procedurenamen binnen hetzelfde bereik moeten uniek zijn. Wijzig de naam van de procedure.


Het opgegeven projectbestand bevat een ongeldige sleutelwaarde. Het geldige bereik ligt tussen 0 en 3

Het bereik van de sleutelwaarden is beperkt. Houd de sleutelwaarde binnen het aangegeven bereik.


De projectnaam is te lang. De naam is afgekapt

Als een projectnaam de toegestane lengte overschrijdt, wordt deze afgekapt tot de maximaal toegestane lengte.


Het opgegeven projectbestand bevat een ongeldige sleutel. Het project kan niet worden geladen

U kunt het project niet laden als het projectbestand een ongeldige sleutel bevat.


Het opgegeven item is een ongeldige sleutel. Het opgegeven bestand kan niet worden geladen

U kunt het bestand niet laden als het een ongeldige sleutel bevat.


Het opgegeven projectbestand bevat een ongeldige sleutelwaarde

De opgegeven waarde is ongeldig. Geef een andere waarde op.


Onvoldoende geheugen beschikbaar om te starten; afsluiten

Er is onvoldoende geheugen beschikbaar voor Visual Basic. Sluit andere toepassingen en probeer het nog eens.


Verkeerde versie van het besturingssysteem; opgegeven versie van Windows NT 3.51 of opgegeven versie van Windows 95 vereist

U kunt met deze versie van Visual Basic alleen werken als u tevens beschikt over de opgegeven versie van Windows 95 of Windows NT 3.51.


De opgegeven systeemfout heeft zich voorgedaan

Visual Basic heeft een fout geconstateerd die is veroorzaakt door het systeem of door een externe component.


Het opgegeven bestand is gemarkeerd als een versie die niet wordt ondersteund door de huidige versie van Visual Basic, en wordt derhalve niet geladen

U hebt geprobeerd een formulier te laden dat is gemaakt met Visual Basic 1.0 of met een latere versie dan de versie waarmee u werkt. Hiervoor is geen ondersteuning beschikbaar.


Het opgegeven projectbestand is beschadigd en kan niet worden geladen

Visual Basic kan het projectbestand niet laden. Dit kan zijn veroorzaakt doordat het bestand is gewijzigd met een editor buiten Visual Basic. U lost het probleem op door de wijzigingen in het bestand ongedaan te maken.


Kan het opgegeven cachebestand van De ontwerper niet schrijven; voor laden worden normale bestanden gebruikt

Uw ActiveX-ontwerper kon geen informatie naar een cachebestand schrijven. Daarom wordt de ontwerper geladen met informatie die niet uit de cache afkomstig is.

De volgende keer dat u Visual Basic uitvoert, wordt door een ActiveX-ontwerper een cachebestand gemaakt teneinde betere prestaties te waarborgen. De ontwerper kon niet naar een cachebestand schrijven omdat er te weinig schijfruimte beschikbaar was of vanwege ongeldige machtigingen voor het desbetreffende station. Zorg voor voldoende schijfruimte en een schrijfmachtiging voor het station. Als het probleem blijft bestaan, neemt u contact op met de leverancier van de ActiveX-ontwerper.


Onvoldoende geheugen om bestand te laden

Visual Basic heeft onvoldoende geheugen beschikbaar om het bestand te laden. Sluit andere toepassingen en probeer het nog eens.


Dubbele procedurenaam

U hebt meer dan één versie van een procedure met dezelfde naam gedefinieerd (of getracht te definiëren). Hernoem een van de procedures. Zorg ervoor dat dubbele instructies Declare voor dezelfde procedure ook dezelfde Alias hebben.


Kan geen Help weergeven

De Windows Help-toepassing is niet beschikbaar. Als de viewer voor MSDN-bibliotheken zich op uw computer bevindt, moet u ervoor zorgen dat deze toepassing ook in uw pad is opgenomen. Als deze toepassing zich niet op de computer bevindt, moet u deze installeren voordat u Help kunt weergeven.


Kan de systeeminformatie niet weergeven

Visual Basic kan geen systeeminformatie weergeven als u in het dialoogvenster Info op Systeeminfo klikt. Mogelijk is er op uw computer onvoldoende geheugen beschikbaar, ontbreekt een vereist bestand of is dit beschadigd.


De beschrijving van de toepassing mag niet langer zijn dan 2000 tekens

De beschrijving van een toepassing mag niet langer zijn dan 2000 tekens. Maak de beschrijving korter zodat het maximaal toegestane tekens niet wordt overschreden.


Opgeven van item(s) voor afdrukken vereist

U hebt niet opgegeven wat er moet worden afgedrukt. Kruis ten minste één van de aankruisvakjes Formulier of programmacode aan in het dialoogvenster Afdrukken nadat u Afdrukken in het menu Bestand hebt gekozen.


Opgegeven naam is geen geldige objectnaam

Namen van formulieren en besturingsinstructies moeten met een letter beginnen en kunnen uit maximaal 40 lettertekens bestaan — inclusief letters, cijfers en onderstrepingstekens (_).

Hierbij is van belang dat de eigenschap Name van een formulier of besturingsinstructie verschillend is van de eigenschappen van Label — Caption, Text en Value — die de inhoud van een besturingsinstructie aanduiden of weergeven tijdens uitvoering (run-time). Deze eigenschappen kunnen bestaan uit beperkte sleutelwoorden, kunnen met een cijfer beginnen en kunnen niet-alfanumerieke tekens bevatten.


De opgegeven naam is strijdig met een bestaande module, project of objectbibiliotheek

Deze fout heeft de volgende oorzaken:

•	U hebt een formulier, gebruikersbesturingsinstructie, gebruikersdocument of een pagina van een eigenschap geladen met objecten waarvan de namen strijdig met elkaar zijn. Deze situatie kan zich voordoen als het bestand is bewerkt buiten Visual Basic.

•	Deze fout kan zich voordoen wanneer u de naam van een formulier wijzigt in dezelfde naam als die van het project, een ander formulier of een module. De fout kan tevens voorkomen als u de naam van het project wijzigt in die van een formulier of een module.


Kan de projectnaam nu niet instellen

De projectnaam kan nu niet worden ingesteld.


Het opgegeven ActiveX-onderdeel is niet correct geregistreerd of is niet gevonden

Een onderdeel dient te worden geregistreerd in het systeemregister. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	De gegevens in het Register van het onderdeel zijn niet correct waardoor het onderdeel niet kan worden gevonden.

Corrigeer het Register. Installeer het onderdeel desnoods opnieuw.

•	Het onderdeel is (handmatig) verwijderd in plaats van gebruik te maken van het programma voor installatie ongedaan maken.

Plaats de bestanden van het onderdeel opnieuw in de in het Register aangegeven map.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan de bewerking niet uitvoeren omdat het project is beveiligd

Wanneer een project is beveiligd, kunnen bepaalde bewerkingen niet worden uitgevoerd. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Het project is abusievelijk beveiligd.

Verwijder de beveiliging en probeer de bewerking daarna opnieuw.

•	Het project is doelbewust beveiligd.

Probeer de bewerking pas opnieuw als de beveiliging is verwijderd door degene die de beveiliging in eerste instantie heeft ingesteld.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Kan pas een nieuwe opname starten als de huidige sessie is beëindigd

U kunt opnamen niet "nesten". Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt de opname reeds gestart.

Sluit de huidige opname af voordat u met een nieuwe begint.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Wilt u het opgegeven object exporteren voordat u het verwijdert?

U kunt formulieren en modules exporteren en deze op een ander tijdstip opnieuw laden. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U verwijdert nu een formulier of een module uit het project.

Als u de module wilt behouden, moet u deze exporteren. Deze kunt u dan op een later tijdstip weer importeren.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


De formulierklasse in het opgegeven bestand wordt niet ondersteund door Visual Basic for Applications; het bestand kan niet worden geladen

Visual Basic for Appications ondersteunt alleen formulierobjecten van het type UserForm. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U probeert nu een formulier te laden dat is gemaakt met een eerdere versie van Visual Basic, of een formulier dat is gemaakt met de huidige zelfstandige versie van Visual Basic.

Het is waarschijnlijk het gemakkelijkst om het formulier opnieuw te ontwerpen met behulp van de hulpmiddelen van UserForm in Visual Basic for Applications. Als u het formulier kunt opslaan in ASCII-indeling, kunt u het vervolgens bewerken en importeren. U dient echter een grondige kennis te hebben van de bestandsindelingen en beperkingen van de diverse pakketten voor formulierontwerp.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Het opgegeven bestand kan niet worden geladen

Niet alle bestanden kunnen worden geladen in Visual Basic for Applications. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Het bestand dat u probeert te laden, heeft een indeling die niet kan worden geïnterpreteerd door Visual Basic, of is beschadigd.

U kunt het bestand niet laden.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Deze opdracht onderbreekt de foutopsporing

Door bepaalde opdrachten en bewerkingen stopt Visual Basic met het analyseren van programmacode. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Bepaalde bewerkingsopdrachten, bijvoorbeeld het declareren van een variabele Static, en bepaalde opdrachten, bijvoorbeeld voor het toevoegen van een nieuwe module of een nieuw formulier, hebben tot gevolg dat programmacode die op dat moment wordt uitgevoerd of is opgeschort, wordt gestopt.

Als u wilt dat niet wordt gestopt met het uitvoeren van de programmacode, moet u de opdracht niet toevoegen of uitvoeren.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


U dient een project op te slaan voordat u ernaar kunt verwijzen

U kunt geen verwijzing naar een niet opgeslagen project toevoegen. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd een verwijzing naar een project toe te voegen terwijl dit project nog niet was opgeslagen.

Sla het project op voordat u de verwijzing toevoegt.

Selecteer voor aanvullende informatie het desbetreffende item en druk op F1 (in Windows) of op HELP (op de Macintosh).


Ongeldig gebruik van object (Fout 425)

De meeste objecten kunnen uitsluitend op een bepaalde manier worden gebruikt, meestal wanneer geprobeerd wordt een object te gebruiken buiten het bereik waarvoor het relevant is. Zo is het bijvoorbeeld waarschijnlijk dat een objectverwijzing die wordt doorgegeven aan een gebeurtenis voor slepen en neerzetten alleen kan worden gebruikt in de context van die gebeurtenis.


Kan formulierfiguur niet afdrukken op dit type printer (Fout 486)

U kunt een formulierfiguur alleen afdrukken op een printer waarop afbeeldingen kunnen worden afgedrukt.


Het opgegeven object kan niet worden gebruikt als eigenaarformulier voor Show() (Fout 371)

U moet een geldig object gebruiken met de methode Show.


Opgegeven ActiveX-besturingselement niet gevonden (Fout 363)

Het formulier dat wordt geladen, bevat een ActiveX-besturingselement dat geen deel uitmaakt van het huidige project. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt het .vbp-bestand van het project handmatig bewerkt om een formulier toe te voegen met een ActiveX-besturingselement dat nog geen deel uitmaakt van het project.

Nadat het project is geladen, gebruikt u de opdracht Bestand toevoegen in het menu Bestand om het ActiveX-besturingselement aan het project toe te voegen.

•	Misschien hebt u het .vbp-bestand van het project handmatig bijgewerkt om een formulier met een eerdere versie van een ActiveX-besturingselement toe te voegen dan het ActiveX-besturingselement dat al deel uitmaakt van het project.

Na het laden van het project verwijdert u de eerdere versie uit het formulier en zet u de latere versie van het besturingselement op het formulier.


Component ActiveX is niet juist geregistreerd (Fout 336)

De component ActiveX is niet correct geregistreerd in het systeemregister.


Gegevenswaarde niet gevonden (Fout 327)

De gegevenswaarde is niet gevonden.


Ongeldige figuur (Fout 481)

Er is een ongeldige indeling voor afbeeldingen toegekend aan de eigenschap Picture. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt een poging gedaan voor de eigenschap Picture van een formulier of besturingselement een andere bestandsindeling op te geven dan een bitmap, pictogram of Windows-metabestand.

Zorg ervoor dat het bestand dat u probeert te laden in de eigenschap Picture een geldig afbeeldingenbestand is dat door Visual Basic wordt ondersteund.


Printerfout (Fout 482)

Er is een probleem waardoor niet kan worden afgedrukt. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Er is geen printer geïnstalleerd in het Configuratiescherm van Windows.

Open het Configuratiescherm, dubbelklik op het pictogram Printers en klik op Printer toevoegen om een printer te installeren.

•	Uw printer staat niet on line.

Zet de printer fysiek on line.

•	Het papier zit vast of is op.

Verhelp het probleem.

•	U hebt geprobeerd een formulier af te drukken op een printer waarop alleen tekst kan worden afgedrukt.

Kies een geïnstalleerde printer waarop wel afbeeldingen kunnen worden afgedrukt.


Printerstuurprogramma ondersteunt opgegeven eigenschap niet (Fout 483)

Het stuurprogramma van de printer die wordt gebruikt ondersteunt deze eigenschap van het Printer-object niet. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Het effect van de eigenschappen van het Printer-object is afhankelijk van het door de fabrikant van de printer geleverde stuurprogramma. De instelling van sommige eigenschappen hebben geen effect terwijl verschillende instellingen van eigenschappen hetzelfde effect kunnen opleveren. Instellingen buiten het geldige bereik kunnen in sommige gevallen een fout veroorzaken.

Raadpleeg voor meer informatie de documentatie bij het specifieke stuurprogramma.


Probleem bij ophalen printergegevens uit het systeem; zorg ervoor dat de printer goed is ingesteld. (Fout 484)

Er is een probleem opgetreden waardoor de printer geen gegevens van uw computer ontvangt. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Er is geen printer geïnstalleerd in het Configuratiescherm van Windows.

Open het Configuratiescherm, dubbelklik op het pictogram Printers en klik op Printer toevoegen om een printer te installeren.

•	Uw printer staat niet on line.

Zet de printer fysiek on line.

•	Het papier zit vast of is op.

Verhelp het probleem.


Ongeldig figuurtype (Fout 485)

De beeldindeling van het bronbestand dat u probeert te laden, komt niet overeen met de opgegeven eigenschap van het object. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt een poging gedaan de methode LoadResPicture te gebruiken om een bitmapbron te laden als de eigenschap Icon van een formulier.

Wijzig de eigenschap in de eigenschap Picture of wijzig het argument indeling van LoadResPicture in vbResIcon.

•	U hebt geprobeerd de methode LoadResPicture te gebruiken om een cursorbron te laden als eigenschap van een object of besturingselement dat niet de eigenschap MousePointer is.

Wijzig de verwijzing naar de eigenschap in MousePointer.


Kan inhoud Klembord niet wissen (Fout 520)

Het Klembord is geopend maar de inhoud kan niet worden gewist. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Een andere toepassing gebruikt het Klembord en geeft dit niet door aan uw toepassing.

Stel voor deze situatie foutonderschepping in de programmacode in en zorg voor een berichtvenster met de knoppen Opnieuw en Annuleren om de gebruiker de kans te geven het na een korte wachttijd nog eens te proberen.


Kan Klembord niet openen (Fout 521)

Het Klembord is al geopend door een andere toepassing. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Een andere toepassing gebruikt het Klembord en geeft dit niet door aan uw toepassing.

Stel voor deze situatie foutonderschepping in de programmacode in en zorg voor een berichtvenster met de knoppen Opnieuw en Annuleren om de gebruiker de kans te geven het na een korte wachttijd nog eens te proberen.


Opgegeven indeling komt niet overeen met indeling van gegevens (Fout 461)

De opgegeven indeling van het Klembord is onverenigbaar met de methode die wordt uitgevoerd. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd de methode GetText of SetText te gebruiken met een andere indeling voor het Klembord dan vbCFText of vbCFLink.

Controleer voordat u deze methoden gebruikt, eerst met de methode GetFormat om te controleren of de huidige inhoud van het Klembord overeenkomt met de opgegeven indeling.

•	U hebt geprobeerd de methode GetData of SetData te gebruiken met een andere indeling voor het Klembord dan vbCFBitmap, vbCFDIB of vbCFMetafile.

Gebruik voordat u deze methoden gebruikt, de methode GetFormat om te controleren of de huidige inhoud van het Klembord overeenkomt met de opgegeven grafische indeling.


Ongeldige indeling Klembord (Fout 460)

De opgegeven indeling van het Klembord is onverenigbaar met de methode die wordt uitgevoerd. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd de methode GetText of SetText te gebruiken met een andere indeling voor het Klembord dan vbCFText of vbCFLink.

Verwijder de ongeldige indeling en geef een van de twee geldige indelingen op.

•	U hebt geprobeerd de methode GetData of SetData te gebruiken met een andere indeling voor het Klembord dan vbCFBitmap, vbCFDIB of vbCFMetafile.

Verwijder de ongeldige indeling en geef een van de drie geldige grafische indelingen op.


Gegevens betreffende gebruiksrechtovereenkomst voor dit onderdeel ontbreken. U heb niet de juiste gebruiksrechtovereenkomst om deze functionaliteit te gebruiken in een ontwerpomgeving (Fout 429)

U hebt geen gebruiksrecht voor het ActiveX-besturingselement. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd tijdens het ontwerpen een ActiveX-besturingselement op een formulier te plaatsen of u hebt geprobeerd om een formulier met een ActiveX-besturingselement erop toe te voegen aan een project terwijl de bijbehorende informatie in het Register niet kon worden gevonden.

Mogelijk is de informatie in het Register verwijderd of beschadigd. Installeer het ActiveX-besturingselement opnieuw of neem contact op met de leverancier van het besturingselement.


Formulier wordt al weergegeven; kan modaal worden weergegeven (Fout 400)

U kunt de methode Show niet gebruiken om een formulier dat al zichtbaar is, als modaal weer te geven. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd Show, met het argument stijl ingesteld op 1 - vbModal, te gebruiken op een formulier dat al zichtbaar is.

Gebruik ofwel de instructie Unload of de methode Hide voor het formulier voordat u probeert het weer te geven als een modaal formulier.


Bovenste modale formulier moet eerst worden gesloten of verborgen (Fout 402)

Het modale formulier dat u probeert te sluiten of te verbergen, bevindt zich niet bovenop de z-volgorde. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Een ander modaal formulier bevindt zich hoger in de z-volgorde dan het modale formulier dat u probeert te sluiten of te verbergen.

Gebruik ofwel de instructie Unload of de methode Hide voor een modaal formulier dat zich hoger in de z-volgorde bevindt. Een modaal formulier is een formulier dat wordt weergegeven via de methode Show met het argument stijl ingesteld op 1 - vbModal.


Kan dit object niet laden of uit geheugen verwijderen (Fout 361)

In een instructie Load of Unload is verwezen naar een ongeldig object of besturingselement. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd een object te laden of uit het geheugen te verwijderen dat geen laadbaar object is, zoals Screen, Printer of Klembord.

Verwijderd de onjuiste instructie uit de code.

•	U hebt geprobeerd een bestaand besturingselement te laden of uit het geheugen te verwijderen dat geen deel uitmaakt van een besturingselementmatrix. Stel bijvoorbeeld dat er een TextBox met Text1 als eigenschap Name bestaat, dan veroorzaakt de instructie Load Text1 deze fout.

Verwijder de onjuiste instructie uit de code of verwijs in plaats van naar een besturingselement naar een besturingselementmatrix.

•	U hebt geprobeerd een besturingselement Menu uit het geheugen te verwijderen tijdens een gebeurtenis Click van het bovenliggende menu.

Verwijder het besturingselement Menu met een andere procedure uit het geheugen.

•	U hebt geprobeerd de laatst zichtbare menuopdracht van een besturingselement Menu uit het geheugen te verwijderen.

Controleer de instelling van de eigenschap Visible voor de andere menuopdrachten in de besturingselementmatrix voordat u probeert een menuopdracht te verwijderen, of wis de incorrecte instructie.


Object al geladen (Fout 360)

Het besturingselement in de besturingselementmatrix is al geladen. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd tijdens de runtime met de instructie Load een besturingselement toe te voegen aan een besturingselementmatrix, maar de indexwaarde waarnaar u hebt verwezen, bestaat al.

Wijzig de indexverwijzing in een nieuwe waarde of controleer of de code dezelfde instructie Load, met een verwijzing naar dezelfde indexwaarde, meer dan een keer uitvoert.


Formulier niet gevonden (Fout 424)

Het formulier is niet gevonden.. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

U hebt geprobeerd met de methode Add een formulier toe te voegen aan de collectie UserForms, maar er bestaat geen formulierklasse met die naam. Bijvoorbeeld: UserForms.Add "MyForm", zonder dat MyForm bestaat.

Opmerking   Zorg ervoor dat de klassennaam voor uw project beschikbaar is.


Uit geheugen verwijderen binnen deze context niet mogelijk (Fout 365)

In sommige situaties is het niet toegestaan een formulier of besturingselement in een formulier te laden. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Er komt een instructie Unload voor in de gebeurtenis Paint voor het formulier of voor een besturingselement op het formulier met de gebeurtenis Paint.

Verwijder de instructie Unload uit de gebeurtenis Paint.

•	Er staat een instructie Unload in de gebeurtenissen Change, Click of DropDown van een ComboBox.

Verwijder de instructie Unload uit de gebeurtenis.

•	Er staat een instructie Unload in de gebeurtenis Scroll van een besturingselement HScrollBar of VscrollBar.

Verwijder de instructie Unload uit de gebeurtenis.

•	Er staat een instructie Unload in de gebeurtenis Resize van een besturingselement Data, Form, MDIForm of PictureBox.

Verwijder de instructie Unload uit de gebeurtenis.

•	Er staat een instructie Unload in de gebeurtenis Resize van een MDIForm dat probeert een onderliggend MDI-formulier uit het geheugen te verwijderen.

Verwijder de instructie Unload uit de gebeurtenis.

•	Er staat een instructie Unload in de gebeurtenis RePosition of Validate van een besturingselement Data.

Verwijder de instructie Unload uit de gebeurtenis.

•	Er staat een instructie Unload in de gebeurtenis ObjectMove van een besturingselement OLE Container.

Verwijder de instructie Unload uit de gebeurtenis.


Opgegeven systeem-DLL kan niet worden geladen (Fout 298)

Er kan geen door het besturingssysteem geleverd .dll-bestand, bijvoorbeeld DDEML.DLL, VERSION.DLL of WINSPOOL.DRV, worden gevonden. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het bestand bevindt zich niet in het juiste pad.

Zorg ervoor dat de DLL in het Windows systeempad staat.

•	De DLL is beschadigd of verwijderd.

Laad de DLL opnieuw.

•	Er is onvoldoende geheugen of wisselgeheugen.

Probeer geheugen vrij te maken door andere toepassingen af te sluiten.


Kan geen namen van op lettertekens gebaseerde apparaten in bestandsnamen gebruiken (Fout 320)

Vanuit Visual Basic kunt u een bestand niet de naam van een stuurprogramma voor op lettertekens gebaseerde apparaten geven. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd AUX, CON, COM1, COM2, LPT1, LPT2, LPT3, LPT4 of NUL als bestandsnaam te gebruiken.

Geef het bestand een andere naam.


Ongeldige bestandsindeling (Fout 321)

Een Visual Basic-formulierbestand is beschadigd. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het formulier bevat een beschadigd ActiveX-besturingselement.

Probeer het ActiveX-besturingselement op het formulier te vervangen.

•	Het aantal eigenschappen in de huidige versie van het ActiveX-besturingselement komt niet overeen met het verwachte aantal eigenschappen.

Probeer het ActiveX-besturingselement te vervangen door een eerdere of latere versie.


Ongeldige parameter. Kan geen matrices wegschrijven (Fout 328)

Een ongeldige parameter is doorgegeven aan de methode. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt tijdens de gebeurtenis WriteProperties van uw gebruikersbesturingselement geprobeerd een PropBag.WriteProperty X uit te voeren, waarbij X een matrix is. Dit wordt niet ondersteund.

U moet elk element van de matrix afzonderlijk schrijven.


Kan geen toegang verkrijgen tot systeemregister (Fout 335)

Een poging om te lezen van of te schrijven naar het systeemregister is mislukt.


Component ActiveX niet gevonden (Fout 337)

Het vereiste .exe- of .dll-bestand is niet gevonden.


Component ActiveX is niet goed uitgevoerd (Fout 338)

Het .exe-bestand van de component ActiveX is niet correct uitgevoerd. Mogelijk is er een robleem met de gegevens in het Register.


Object is verwijderd (Fout 364)

Een formulier is verwijderd uit de procedure _Load van datzelfde formulier. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Een formulier met een instructie Unload in de procedure _Load van dat formulier is impliciet geladen. De volgende opdracht bijvoorbeeld laadt impliciet YourForm als dit al niet geladen is:

MyForm.BackColor = YourForm.BackColor.

Verwijder de instructie Unload uit de procedure Form_Load.


Het opgegeven bestand is verouderd. Voor dit programma is een latere versie vereist (Fout 368)

Er is een verouderd ActiveX-besturingselement gevonden. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Het aantal eigenschappen in de huidige versie van het ActiveX-besturingselement komt niet overeen met het verwachte aantal eigenschappen.

Vervang het ActiveX-besturingselement door een latere versie.


Ongeldige waarde voor eigenschap (Fout 380)

Er is een onjuiste waarde toegekend aan een eigenschap. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd een van de eigenschappen van een object of besturingselement in te stellen op een waarde buiten het toegestane bereik.

Wijze de waarde van de eigenschap in een geldige instelling. De eigenschap MousePointer moet bijvoorbeeld zijn ingesteld op een integer van 0 tot 15 of 99.


Opgegeven eigenschap kan niet worden ingesteld op runtime (Fout 382)

De eigenschap is tijdens runtime alleen-lezen. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd een eigenschap in te stellen of te wijzigen waarvan de waarde alleen kan worden ingesteld tijdens het ontwerpen.

Verwijder de verwijzing naar de eigenschap in de code of wijzig de verwijzing zodat alleen de waarde van de eigenschap tijdens runtime als resultaat wordt gegeven.


Opgegeven eigenschap is alleen-lezen (Fout 383)

De eigenschap is zowel tijdens het ontwerpen als tijdens runtime alleen-lezen. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd een eigenschap in te stellen of te wijzigen waarvan de waarde alleen kan worden gelezen.

Verwijder de verwijzing naar de eigenschap in de code of wijzig de verwijzing zodat alleen de waarde van de eigenschap tijdens runtime als resultaat wordt gegeven.


Opgegeven eigenschap kan niet worden gelezen tijdens runtime (Fout 393)

De eigenschap is uitsluitend beschikbaar tijdens het ontwerpen. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt geprobeerd een eigenschap in runtime te lezen die alleen beschikbaar is tijdens het ontwerpen.

Wijzig de programmacode en verwijder de verwijzing naar de eigenschap.


Opgegeven eigenschap is alleen-schrijven (Fout 394)

De eigenschap kan niet worden gelezen.. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Een eigenschap kan niet worden gelezen; de eigenschap ctl.property = 3 is legaal, maar "Print ctl.property" zou resulteren in deze fout.

Wijzig de programmacode en verwijder de verwijzing naar de eigenschap.


Toestemming om object te gebruiken geweigerd (Fout 419)

U beschikt niet over de nodige machtigingen voor het opgegeven object. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt op dit moment geen toegangsrecht tot dit object.

Neem voor het wijzigen van uw machtigingen contact op meet de systeembeheerder of degene die het object heeft gemaakt.


Kan AutoRedraw-figuur niet maken (Fout 480)

Visual Basic kan geen permanente bitmap maken voor het automatisch vernieuwen van het formulier of de figuur. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	Er is onvoldoende geheugen beschikbaar om de eigenschap AutoRedraw in te stellen op True.

Stel de eigenschap AutoRedraw in op False en vernieuw de weergave zelf met de gebeurtenisprocedure Paint of maak het besturingselement PictureBox of het object Form kleiner en probeer de bewerking opnieuw uit te voeren met AutoRedraw ingesteld op True.


Onvoldoende geheugen (Fout 31001)

Uw systeem kon niet voldoende geheugen of schijfruimte toewijzen of beschikbaar maken voor de opgegeven bewerking.


Geen object (Fout 31004)

U hebt geprobeerd een actie uit te voeren voor een object dat niet bestaat.


Klasse is niet ingesteld (Fout 31018)

Als u geen brondocument (met de eigenschap SourceDoc) opgeeft tijdens het instellen van Action = 0 (methode CreateEmbed), moet de eigenschap Class worden ingesteld op de naam van een klasse die op uw computer beschikbaar is.

U kunt een lijst van alle bij het ontwerpen beschikbare klassennamen weergeven door met de rechtermuisknop op het containerbesturingselement OLE te klikken en de opdracht Object invoegen te kiezen.


Kan object niet activeren (Fout 31027)

Het brondocument van het object kan niet worden geladen of de toepassing die het object heeft gemaakt, is niet beschikbaar.

Deze fout wordt veroorzaakt als u probeert een gekoppeld object te activeren (instelling Action = 7) en het bestand dat is opgegeven in de eigenschap SourceDoc, is verwijderd of niet meer bestaat.

Ook kan deze fout optreden wanneer u een object activeert (instelling Action = 7) en de door de eigenschap Verb opgegeven actie ongeldig is. Sommige toepassingen die objecten leveren, kunnen verschillende actiewoorden ('verbs') ondersteunen, afhankelijk van de status van de toepassing. Alle actiewoorden die door een toepassing worden ondersteund, staan in de eigenschappenlijst die wordt weergegeven met ObjectVerbs. Sommige actiewoorden zijn echter niet geldig voor de huidige status van de toepassing.


Kan geen ingesloten object maken (Fout 31032)

De toepassing die het object maakt, kan dit niet doen zoals is opgegeven in de eigenschap SourceDoc.

Deze fout wordt bijvoorbeeld veroorzaakt als u probeert een spreadsheetobject in te sluiten en in SourceDoc een spreadsheet is opgegeven dat te groot is om door de spreadsheettoepassing te worden geladen.


Fout bij opslaan in bestand (Fout 31036)

Visual Basic kan het object niet wegschrijven naar het opgegeven bestand (instelling Action = 11 of 18). Mogelijke oorzaken:

•	De eigenschap FileNumber is ongeldig.

•	Het opgegeven bestand is niet geopend in de modus Binary.

•	Er is onvoldoende schijfruimte.


Fout bij laden vanuit bestand (Fout 31037)

Tijdens het lezen van het opgegeven bestand is een fout veroorzaakt (instelling Action = 12). Mogelijke oorzaken:

•	De eigenschap FileNumber is ongeldig.

•	Het bestand is niet geopend in de modus Binary.

•	Het bestand is niet goed opgeslagen (instelling Action = 11).

•	Het bestand is beschadigd.

•	De bestandspositie is niet gevonden aan het begin van een geldig OLE-object.


In opgegeven regel: De formuliernaam is ongeldig; kan dit formulier niet laden

Het ASCII-bestand bevat een formuliernaam die geen geldige tekenreeks is in Visual Basic. Het formulier wordt niet geladen.


In opgegeven regel: Kan opgegeven ingesloten object niet maken

Er kan geen ingesloten object worden gemaakt tijdens het laden van een formulier, gebruikersbesturingselement, gebruikersdocument of eigenschappenpagina vanuit een tekstbestand. Als u bijvoorbeeld eerder een Microsoft Word-document in het formulier hebt ingevoegd en vervolgens Microsoft Word verwijdert van uw computer, wordt deze fout veroorzaakt. Dit bericht wordt weggeschreven naar het foutenlogbestand.


In opgegeven regel: Kan opgegeven ingesloten object niet maken; geen licentie gevonden

Er kan geen ingesloten object worden gemaakt tijdens het laden van een formulier, gebruikersbesturingselement, gebruikersdocument of eigenschappenpagina van een tekstbestand, omdat er geen licentiebestand is gevonden. U moet een licentie hebben om dit object te gebruiken. Neem voor meer informatie contact op met de leverancier van het object. Dit bericht wordt weggeschreven naar het foutenlogbestand.


In opgegeven regel: Maximum aantal geneste niveaus voor besturingselementen heeft opgegeven item overschreden

Het ASCII-bestand bevat besturingselementen met meer dan zeven geneste niveaus.


In opgegeven regel: Alle besturingselementen moeten voorafgaan aan menu's; kan opgegeven besturingselement niet laden

Er staat een besturingselement op een onjuiste positie in het ASCII-formulierbestand. Alle besturingselementen moeten eerder worden geladen dan de menu's.


In opgegeven regel: Opgegeven bovenliggend menu kan niet worden geladen als een scheidingsteken

Het ASCII-bestand bevat een besturingselement Menu waarvan het menu op het hoogste of bovenliggende niveau wordt gedefinieerd als een scheidingsteken. Menu's van het hoogste niveau kunnen geen menuscheidingstekens zijn. Het scheidingsteken wordt niet ingesteld.


In opgegeven regel: Kan geen gecontroleerde eigenschap instellen in opgegeven menu. Het bovenliggende menu kan niet worden gecontroleerd

Het ASCII-formulierbestand bevat een besturingselement Menu van het hoogste niveau met de eigenschap Checked ingesteld op True. Menu's van het hoogste niveau kunnen niet worden gecontroleerd. Het besturingselement Menu wordt geladen maar de eigenschap Checked wordt niet ingesteld.


In opgegeven regel: Kan geen eigenschap Shortcut instellen in het opgegeven menu. Het bovenliggende menu kan geen sneltoets bevatten

Het ASCII-formulierbestand bevat een besturingselement Menu van het hoogste niveau met een sneltoetsdefinitie. Menu's van het hoogste niveau kunnen geen sneltoetsen bevatten. Het besturingselement Menu wordt geladen maar de eigenschap Shortcut wordt niet ingesteld.


In opgegeven regel: De formuliernaam wordt al gebruikt; kan dit formulier niet laden

Het ASCII-bestand bevat een formulier met een naam die al in de toepassing wordt gebruikt. Het formulier wordt niet geladen.


Strijdige kenmerken gevonden in opgegeven item. De standaardinstellingen worden gebruikt

Sommige van de instructies voor kenmerken in een formulier, gebruikersbesturingselement, eigenschappenpagina, gebruikersdocument of klassenmodule komen niet overeen met de vereiste instellingen voor het type. Voor formulieren moet het kenmerk VB_PredeclaredId bijvoorbeeld altijd gelijk zijn aan True. Deze fout kan worden veroorzaakt als het bestand is bijgewerkt met een andere editor dan Visual Basic.


Opgegeven item is alleen-lezen bestand

U wilt een bestand opslaan dat alleen-lezen is. Alleen-lezen bestanden worden in de Projectverkenner weergegeven als [image]. U kunt een alleen-lezen bestand niet opslaan. Gebruik in plaats daarvan Opslaan als.


In opgegeven regel: Kan opgegeven verwijzing niet maken

De verwijzing op de opgegeven regel kan niet worden gemaakt.


In opgegeven regel: Het opgegeven bestand kan niet worden geladen

Door syntaxisfouten kan Visual Basic een bestand niet parseren en laden of een ASCII-formulier kan door een formuliernaamconflict niet worden geladen. Het formulier wordt niet geladen en de formuliernaam wordt niet in de Projectverkenner weergegeven.

Zorg ervoor dat het bestand dat deze fout veroorzaakt een geldig ASCII-formulier is met de juiste indeling en dat er geen conflicten voorkomen in de andere formulieren in het project.


Er zijn fouten opgetreden tijdens het laden

Raadpleeg het foutenlogbestand voor nadere informatie.


Opgegeven item kan niet worden geladen. Wilt u het verwijderen uit de lijst met beschikbare invoegtoepassingen?

Visual Basic kan de invoegtoepassing die u hebt geselecteerd in de lijst Beschikbare invoegtoepassingen in het dialoogvenster Invoegbeheer niet laden. Klik op Ja om de invoegtoepassing uit het overzicht te verwijderen of klik op Nee om deze in het overzicht te laten staan. In geen van beide gevallen kan de invoegtoepassing worden geladen.


Visual Basic kan het opgegeven item niet laden omdat het zich niet in het Register van het systeem bevindt. Controleer of alle invoegtoepassingen goed zijn geïnstalleerd

Visual Basic kan de invoegtoepassing die u hebt geselecteerd in de lijst Beschikbare invoegtoepassingen in het dialoogvenster Invoegbeheer niet laden, omdat deze niet goed is geregistreerd of niet meer in het systeemregister is geregistreerd.


Meer fouten betreffende laden weergeven?

Klik op OK om meer fouten weer te geven. Klik op anders Annuleren.


Opgegeven item kan niet worden geladen

Door syntaxisfouten kan Visual Basic een bestand niet parseren en laden of een ASCII-formulier kan door een formuliernaamconflict niet worden geladen. Het formulier wordt niet geladen en de formuliernaam wordt niet in de Projectverkenner weergegeven.

Zorg ervoor dat het bestand dat deze fout veroorzaakt een geldig ASCII-formulier is met de juiste indeling en dat er geen conflicten voorkomen in de andere formulieren in het project.


Het versienummer ontbreekt of is ongeldig

De versiehandtekening is niet gevonden of de opgegeven versie is niet herkend. Zorg ervoor dat de eerste regel niet is of dat in een opmerking in het ASCII-formulier de juiste versie wordt opgegeven.


Opgegeven item kan niet worden bijgewerkt want er wordt naar verwezen

Er wordt door meer dan een project naar het opgegeven besturingselement verwezen. Als het voor het ene project wordt bijgewerkt kan het voor een ander project ongeldig worden.


Kan besturingselement of verwijzing niet verwijderen; in gebruik

Het ActiveX-besturingselement of de verwijzing die u wilt verwijderen, wordt door een van de formulieren in het project gebruikt. Verwijder eerst het besturingselement of het object waarnaar wordt verwezen uit het formulier en hef vervolgens de selectie in de lijst op.


Kan nu nog niet afsluiten

U kunt Windows niet afsluiten terwijl Visual Basic wordt uitgevoerd of zich in de onderbrekingsmodus bevindt. Het is evenmin mogelijk Windows af te sluiten wanneer er een dialoogvenster of berichtvenster wordt weergegeven.


Fout tijdens laden van opgegeven item. Er is een fout opgetreden tijdens het laden van een eigenschap. Doorgaan?

Mogelijk hebt u geprobeerd een formulier te laden met besturingselementen waarvan de namen strijdig zijn met reeds in het project aanwezige formulieren. Als u bijvoorbeeld Formulier2 met een besturingselement uit Formulier1 laadt, wordt deze fout veroorzaakt.


Fout tijdens laden van opgegeven item. Een besturingselement kan niet worden geladen vanwege een laadfout. Doorgaan?

Dit foutbericht verschijnt nadat er een andere fout is opgetreden. Als u eenmaal deze voor het verhelpen van die fout nodige actie hebt ondernomen, verschijnt dit foutbericht. Als u het besturingselement toch wilt laden, klikt u op Ja. Als u het laden wilt annuleren, klikt u op Nee.


Opgegeven item heeft een oude bestandsindeling. Bij het opslaan zal de nieuwe bestandsindeling worden gebruikt

Dit bestand is gemaakt met een eerdere versie van Visual Basic. Als u het bestand opslaat, wordt de bestandsindeling van de nieuwe versie gebruikt.


Opgegeven item bestaat reeds in het project

Het bestand dat u hebt opgegeven, maakt al deel uit van het project. U kunt hetzelfde bestand niet meer dan een keer aan een project toevoegen. U kunt een bestand met dezelfde bestandsnaam niet opslaan als een ander bestand in het project.


Fouten tijdens laden. Raadpleeg opgegeven item voor meer informatie

Er is iets onverwachts gevonden in het ASCII-formulierbestand. Visual Basic heeft een logbestand gemaakt met meer details over de fouten. Bekijk het logbestand om de ernst van het probleem vast te stellen. Soms levert het geen problemen op wanneer u fouten negeert (bijvoorbeeld: Versienummer ontbreekt of is ongeldig...). In andere gevallen kunnen de fouten tot gevolg hebben dat het formulier niet goed kan worden gebruikt (bijvoorbeeld: Klasse MijnKlasse in besturingselement MijnBesturingselement is geen geladen besturingsklasse).


Tekenreekswaarde te lang om te verwerken; laden formulier afgebroken

Een tekenreeks die is ingesloten in het formulier dat wordt geladen, is te lang om te verwerken.


Een of meer bestanden in het project zijn gewijzigd. Wilt u de wijzigingen nu opslaan?

Een van de eigenschapinstellingen of een instructie in de code is gewijzigd voor een of meer van de bestanden in het project en de wijzigingen zijn nog niet opgeslagen. Dit is uw laatste kans om de wijzigingen op te slaan voordat een ander project wordt geladen.


Kan opgegeven item niet registreren

Het opgegeven bestand kan niet worden geregistreerd in het systeemregister. De fout heeft betrekking op typebibliotheken die worden gebruikt door onderdelen van de Visual Basic-ontwikkelomgeving en geeft aan dat de vermelding van het opgegeven bestand in het systeemregister beschadigd is of dat de DLL zelf ontbreekt of beschadigd is.


Andere toepassingen hebben toegang tot een object in uw programma. Als u het programma nu beëindigt, kan dit fouten veroorzaken in deze programma's. Wilt u het programma nu beëindigen? Programma nu beëindigen?

Een automatiseringsobject in het Visual Basic-programma dat momenteel wordt uitgevoerd, wordt gebruikt door ten minste één andere toepassing. Als u het programma beëindigt, kan een fout in de andere toepassing worden veroorzaakt. Klik op Ja om het programma af te sluiten of klik op Nee om ermee verder te gaan.


Een of meer van de eigenschappen in opgegeven item zijn beschadigd. Sommige of alle eigenschappen zijn misschien onjuist ingesteld

Het opgegeven projectbestand bevat een of meer ongeldige eigenschapinstellingen. Deze fout heeft alleen betrekking op een projectbestand.


Strijdige namen gevonden in opgegeven item. De opgegeven naam zal worden gebruikt

De naam van een formulier komt twee keer voor in het bronbestand van een formulier, gebruikersbesturingselement, eigenschappenpagina of gebruikersdocument. Deze fout kan worden veroorzaakt als het bestand is bijgewerkt met een andere editor dan Visual Basic.


In opgegeven regel: De opgegeven besturingselementnaam is ongeldig

De naam van een besturingselement in het ASCII-bestand is geen geldige tekenreeks in Visual Basic. Het besturingselement is niet geladen.


In opgegeven regel: De opgegeven eigenschapsnaam is ongeldig

Een eigenschapnaam in het ASCII-bestand is geen geldige eigenschap voor dat besturingselement.


Het item in de opgegeven regel bevat een tekenreeks in plaats van een eigenschapsnaam

In het ASCII-formulierbestand staat een tekenreeks tussen aanhalingstekens waar een eigenschapnaam wordt verwacht. Eigenschapnamen worden niet tussen aanhalingstekens (" ") geplaatst.


In opgegeven regel: Opgegeven eigenschap bevat een ongeldige eigenschappenindex

Een eigenschapnaam in het ASCII-bestand heeft een eigenschappenindex die groter is dan 255.


In opgegeven regel: Opgegeven eigenschap kan niet worden geladen

Het ASCII-bestand bevat een onbekende eigenschap. De eigenschap wordt tijdens het laden van het formulier overgeslagen.


In opgegeven regel: Opgegeven eigenschap moet een tekenreeks tussen aanhalingstekens zijn

Het ASCII-bestand bevat een eigenschap die tussen aanhalingstekens (" ") moet staan, maar de aanhalingstekens ontbreken. Deze regel in de formulierbeschrijving wordt genegeerd.


In opgegeven regel: Opgegeven eigenschap bevat een ongeldige waarde

Het ASCII-bestand bevat een eigenschap met een waarde die niet correct is voor dit besturingselement. De eigenschap wordt ingesteld met de standaardwaarde.


In opgegeven regel: Opgegeven eigenschap bevat een ongeldige bestandsverwijzing

Het ASCII-bestand bevat een verwijzing naar een bestand dat Visual Basic niet kan vinden in de opgegeven map.


In opgegeven regel: Opgegeven eigenschap kan niet worden ingesteld

Visual Basic kan de eigenschap van het opgegeven besturingselement niet instellen zoals wordt aangegeven door de formulierbeschrijving in het ASCII-bestand.


In opgegeven regel:  Opgegeven klasse van opgegeven besturingselement is geen geladen besturingselementklasse

Het ASCII-bestand bevat een besturingselementklasse die Visual Basic niet herkent. Voeg met deze klasse het aangepaste besturingselement toe aan het project.


In opgegeven regel: Geen eigenschappenindex gevonden en opgegeven besturingselement bestaat al

Het besturingselement kan niet worden geladen omdat er geen index is en het dezelfde naam heeft als een eerder geladen besturingselement.


In opgegeven regel: Naam van besturingselement is te lang; wordt afgebroken zoals opgegeven

De naam van een besturingselement in het ASCII-bestand bevat meer dan 40 tekens. Het besturingselement wordt wel geladen, maar de naam wordt afgekapt tot 40 tekens.


In opgegeven regel: Klassennaam is te lang; wordt afgebroken zoals opgegeven

Het ASCII-bestand bevat een klassennaam van meer dan 40 tekens. De klasse wordt wel geladen, maar de naam wordt afgekapt tot 40 tekens.


In opgegeven regel: Syntaxisfout: opgegeven eigenschap mist een '='-teken

Het ASCII-bestand bevat een eigenschapnaam en een waarde die niet door een gelijkteken (=) van elkaar worden gescheiden. De eigenschap wordt niet geladen.


In opgegeven regel: Kan het opgegeven besturingselement niet laden; besturingselement is een ongeldige container

U hebt geprobeerd een besturingselement te laden dat geen geldige container is.


In opgegeven regel: Kan het opgegeven besturingselement niet laden; de naam wordt al gebruikt

Het in het ASCII-tekstbestand genoemde besturingselement kan niet worden geladen omdat de naam al in de toepassing wordt gebruikt.


In opgegeven regel: Ontbrekende of ongeldige besturingselementklasse in opgegeven bestand

Het ASCII-bestand bevat een onbekende besturingselementklasse in de formulierbeschrijving, of de klassennaam is geen geldige tekenreeks in Visual Basic.


In opgegeven regel: Ontbrekende of ongeldige besturingselementnaam in opgegeven bestand

Het ASCII-bestand bevat een onbekende besturingselementnaam in de formulierbeschrijving, of de besturingselementnaam is geen geldige tekenreeks in Visual Basic.


In opgegeven regel: Kan opgegeven besturingselement niet vinden; geen licentie gevonden

Tijdens het laden van een formulier, gebruikersbesturingselement, gebruikersdocument of eigenschappenpagina vanuit een tekstbestand kon een ActiveX-besturingselement niet worden gemaakt. Mogelijk ontbreekt het element of is het beschadigd. Installeer het besturingselement opnieuw en probeer het opnieuw. Dit bericht wordt weggeschreven naar het foutenlogbestand.


In opgegeven regel: De opgegeven CLSID is ongeldig

Tijdens het laden van een formulier, gebruikersbesturingselement, gebruikersdocument of eigenschappenpagina vanuit een tekstbestand kan een object niet worden geladen. De opgegeven CLSID in het bestand is niet geldig. Is alleen van toepassing op objecten die eigenschappen zijn, zoals het object Font. Dit bericht wordt weggeschreven naar het foutenlogbestand.


Kan verwijzing naar opgegeven item niet maken

Er is een fout veroorzaakt bij het maken van een verwijzing tijdens het laden van het bestand. De verwijzing is niet toegevoegd.


Opgegeven item wordt niet geladen. Naam is al in gebruik

Twee items van dezelfde soort kunnen niet gelijktijdig geladen zijn.


Voorbeeld van de instructie ChDir

Dit voorbeeld maakt gebruik van de instructie ChDir om de huidige directory of map te wijzigen.  Op de Macintosh is "HD" de standaardstationsnaam en worden delen van de padnaam gescheiden door dubbele punten en niet door schuine strepen. Bovendien moet u dan Macintosh-mappen opgeven in plaats van \Windows. Jokertekens, tot slot, hebben op de Macintosh geen speciale betekenis en worden als gewone tekens behandeld.

' Verander de huidige directory of map in "MIJNDIR".

ChDir "MIJNDIR"

' Stel dat "C:" het huidige station is. De volgende instructie verandert

' de standaardmap in station "D:". "C:" blijft het huidige station.

ChDir "D:\WINDOWS\SYSTEM"


Voorbeeld van de instructie ChDrive

Dit voorbeeld maakt gebruik van de instructie ChDrive om het huidige station te wijzigen. Op de Macintosh is "HD:" de standaardstationsnaam en met ChDrive maakt u van de hoofdmap van het opgegeven station de huidige map. In het volgende voorbeeld wordt uitgegaan van de veronderstelling dat de computer werkelijk een station met de naam D heeft.

ChDrive "D"	' Maakt van "D" het huidige station.


Voorbeeld van de functie CurDir

Dit voorbeeld maakt gebruik van de functie CurDir om het huidige pad als resultaat te geven.  Op de Macintosh worden stationsaanduidingen voor CurDir genegeerd. De standaardstationsnaam is 'HD' en delen van de padnaam worden gescheiden door dubbele punten en niet door schuine strepen. Bovendien moet u dan Macintosh-mappen opgeven in plaats van \Windows.

' Stel, het huidige pad in station C is "C:\WINDOWS\SYSTEM".

' Stel, het huidige pad in station D is "D:\EXCEL".

' Stel, C is het huidige station.

Dim MijnPad

MijnPad = CurDir	' geeft "C:\WINDOWS\SYSTEM" als resultaat.

MijnPad = CurDir("C")	' geeft "C:\WINDOWS\SYSTEM" als resultaat.

MijnPad = CurDir("D")	' geeft "D:\EXCEL" als resultaat.


Voorbeeld van de functie Dir

Dit voorbeeld maakt gebruik van de functie Dir om te controleren of bepaalde bestanden en mappen bestaan. Op de Macintosh is "HD:" de standaardstationsnaam en worden delen van de padnaam gescheiden door dubbele punten en niet door schuine strepen. Bovendien worden de jokertekens van Microsoft Windows op de Macintosh als geldige tekens in bestandsnamen geaccepteerd. Toch kunt u met de functie MacID bestandsgroepen opgeven.

Dim MijnBestand, MijnPad, MijnNaam

' geeft "WIN.INI" (op Microsoft Windows) als resultaat, als dit bestand bestaat.

MijnBestand = Dir("C:\WINDOWS\WIN.INI")

' geeft bestandsnaam met opgegeven extensie als resultaat. Als er meer dan één bestand met de extensie .ini

' bestaat, is het eerste gevonden bestand het resultaat.

MijnBestand = Dir("C:\WINDOWS\*.INI")

' Geef de opdracht Dir nogmaals zonder argumenten als u het volgende .INI-bestand in dezelfde

' directory als resultaat wilt krijgen.

MyFile = Dir

' Return first *.TXT file with a set hidden attribute.

MyFile = Dir("*.TXT", vbHidden)

' Display the names in C:\ that represent directories.

MyPath = "c:\"	' Set the path.

MyName = Dir(MyPath, vbDirectory)	' Retrieve the first entry.

Do While MyName <> ""	' Start the loop.

' Ignore the current directory and the encompassing directory.

If MyName <> "." And MyName <> ".." Dan

' Use bitwise comparison to make sure MyName is a directory.

If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then

Debug.Print MyName	' Display entry only if it

End If	' it represents a directory.

End If

MyName = Dir	' Get next entry.

Loop


Voorbeeld van de functie Environ

Dit voorbeeld maakt gebruik van de functie Environ om het regelnummer en de regellengte van de instructie PATH in de tabel met omgevingsreeksen als resultaat te geven. Niet beschikbaar op de Macintosh.

Dim EnvString, Indx, Msg, PathLen	' Declare variables.

Indx = 1	' Initialize index to 1.

Do

EnvString = Environ(Indx)	' Get environment

' variable.

If Left(EnvString, 5) = "PATH=" Then	' Check PATH entry.

PathLen = Len(Environ("PATH"))	' Get length.

Msg = "PATH-regelnummer = " & Indx & " en PATH-lengte = " & PathLen

Exit Do

Else

Indx = Indx + 1	' Not PATH entry,

End If	' so increment.

Loop Until EnvString = ""

If PathLen > 0 Then

MsgBox Msg	' Display message.

Else

MsgBox "Er is geen variabele voor de PAD-omgeving."

End If


Voorbeeld van de instructie FileCopy

Dit voorbeeld maakt gebruik van de instructie FileCopy om het ene bestand naar het andere te kopiëren. In dit voorbeeld wordt ervan uitgegaan dat BRONBSTD een bestand is dat gegevens bevat.

Dim SourceFile, DestinationFile

SourceFile = "BRONBSTD"	' Define source filename.

DestinationFile = "BRONBSTD"	' Define target filename.

Filecopy SourceFile, DestinationFile	' Copy source to target.


Voorbeeld van de functie FileDateTime

Dit voorbeeld maakt gebruik van de functie FileDateTime om de datum en het tijdstip te bepalen waarop een bestand werd gemaakt of het laatst werd gewijzigd. De notatie van de weergegeven datum of tijd is gebaseerd op de lokale instellingen van uw systeem.

Dim MyStamp

' Assume TESTBESTAND was last modified on February 12, 1993 at 4:35:47 PM.

' Assume English/U.S. locale settings.

MyStamp = FileDateTime("TESTFILE")	' Returns "2/12/93 4:35:47 PM".


Voorbeeld van de functie FileLen

Dit voorbeeld maakt gebruik van de functie FileLen om de grootte van een bestand in bytes te geven. Dit voorbeeld gaat ervan uit dat TESTBESTAND een bestand is dat gegevens bevat.

Dim MySize

MySize = FileLen("TESTFILE")	' Returns file length (bytes).


Voorbeeld van de functie GetAttr

Dit voorbeeld maakt gebruik van de functie GetAttr om de kenmerken van een bestand en directory of map te bepalen. Op de Macintosh zijn alleen de constanten vbNormal, vbReadOnly, vbHidden en vbAlias beschikbaar.

Dim MyAttr

' Assume file TESTBESTAND has hidden attribute set.

MyAttr = GetAttr("TESTBESTAND")	' Returns 2.

' Returns nonzero if hidden attribute is set on TESTBESTAND.

Debug.Print MyAttr And vbHidden

' Assume file TESTBESTAND has hidden and read-only attributes set.

MyAttr = GetAttr("TESTBESTAND")	' Returns 3.

' Returns nonzero if hidden attribute is set on TESTBESTAND.

Debug.Print MyAttr And (vbHidden + vbReadOnly)

' Assume MIJNDIR is a directory or folder.

MyAttr = GetAttr("MIJNDIR")	' Returns 16.


Voorbeeld van de instructie Kill

Dit voorbeeld maakt gebruik van de instructie Kill om een bestand van een schijf te verwijderen.

' Assume TESTBESTAND is a file containing some data.

Kill "TESTBESTAND"	' Delete file.

' Delete all *.TXT files in current directory.

Kill "*.TXT"


Voorbeeld van de instructie MkDir

Dit voorbeeld maakt gebruik van de instructie MkDir om een directory of map te maken. Als het station niet is opgegeven, wordt de nieuwe directory of map op het huidige station gemaakt.

MkDir "MIJNDIR"	' Make new directory or folder.


Voorbeeld van de instructie Name

Dit voorbeeld maakt gebruik van de instructie Name om een bestand een andere naam te geven. In dit voorbeeld wordt ervan uitgegaan dat de opgegeven mappen of mappen reeds bestaan.  Op de Macintosh is "HD:" de standaardstationsnaam en worden delen van de padnaam gescheiden door dubbele punten en niet door schuine strepen.

Dim OldName, NewName

OldName = "OUDBST": NewName = "NIEUWBST"	' Define file names.

Name OldName As NewName	' Rename file.

OldName = "C:\MIJNDIR\OUDBST": NewName = "C:\UWDIR\NIEUWBST"

Name OldName As NewName	' Move and rename file.


Voorbeeld van de functie QBColor

Dit voorbeeld maakt gebruik van de functie QBColor om de eigenschap BackColor van het formulier dat is doorgegeven als MyForm, te wijzigen in de kleur die aangegeven wordt door ColorCode. QBColor accepteert integerwaarden tussen 0 en 15.

Sub ChangeBackColor (ColorCode As Integer, MyForm As Form)

MyForm.BackColor = QBColor(ColorCode)

End Sub


Voorbeeld van de functie RGB

Dit voorbeeld laat zien hoe de functie RGB wordt gebruikt om een geheel getal te geven dat de RGB-kleurwaarde aangeeft. De functie wordt gebruikt voor die toepassingsmethoden en -eigenschappen waarbij een kleurspecificatie kan worden opgegeven. Het object MyObject en de bijbehorende eigenschap worden alleen ter illustratie gebruikt. Als MyObject niet bestaat of geen kleureigenschap heeft, treedt er een fout op.

Dim RED, I, RGBValue, MyObject

Red = RGB(255, 0, 0)	' Return the value for Red.

I = 75	' Initialize offset.

RGBValue = RGB(I, 64 + I, 128 + I) 	' Same as RGB(75, 139, 203).

MyObject.Color = RGB(255, 0, 0)	' Set the Color property of

' MyObject to Red.


Voorbeeld van de instructie RmDir

Dit voorbeeld maakt gebruik van de instructie RmDir om een bestaande directory of map te verwijderen.

' Assume that MIJNDIR is an empty directory or folder.

RmDir "MIJNDIR"	' Remove MIJNDIR.


Voorbeeld van de instructie SetAttr

Dit voorbeeld maakt gebruik van de instructie SetAttr om de kenmerken voor een bestand in te stellen. Op de Macintosh zijn alleen de constanten vbNormal, vbReadOnly, vbHidden en vbAlias beschikbaar.

SetAttr "TESTBESTAND", vbHidden	' Set hidden attribute.

SetAttr "TESTBESTAND", vbHidden + vbReadOnly	' Set hidden and read-only

' attributes.


ChDir, instructie

Wijzigt de huidige directory of map.

Syntaxis

ChDir pad

Het vereiste argument pad is een reeksexpressie waarmee u opgeeft welke directory of map de nieuwe standaarddirectory of standaardmap wordt. U kunt het station opnemen in pad. Als u geen station opgeeft, wordt met ChDir de huidige directory of map op het huidige station gewijzigd.

Notities

Met de instructie ChDir wijzigt u wel de standaarddirectory, maar niet het standaardstation. Als het huidige station bijvoorbeeld C is, wijzigt u met de volgende instructie wel de huidige directory op station D, maar blijft C het huidige station:

ChDir "D:\TIJD"

Op de Power Macintosh wordt het station dat u met pad hebt opgegeven altijd het standaardstation. Een volledige padnaam begint met de volumenaam, een relatief pad begint met een dubbele punt (:). De aliassen die u in de padnaam van de instructie ChDir gebruikt, worden ingevuld:

ChDir "MacDrive:Tmp"	' Op de Macintosh.

Er worden verschillende tekens gebruikt in Microsoft Windows en op de Macintosh als u de map wijzigt met een relatief pad:

ChDir ".."	' De huidige map wordt één niveau hoger in Windows.

ChDir "::"	' De huidige map wordt één niveau hoger op de Macintosh.


ChDrive, instructie

Wijzigt het huidige station.

Syntaxis

ChDrive station

Het vereiste argument station is een reeksexpressie waarmee een bestaand station wordt aangegeven. Wanneer u een argument zonder gegevens opgeeft (""), blijft het huidige station actief. Als het argument station uit meerdere tekens bestaat, neemt ChDrive alleen de eerste letter.

Op de Macintosh wordt met ChDrive de huidige map gewijzigd in de hoofdmap van het opgegeven station.


CurDir, functie

Geeft een Variant (string) met het huidige pad als resultaat.

Syntaxis

CurDir[(station)]

Het optionele argument station is een reeksexpressie die een bestaand station aangeeft. Als geen station is opgegeven of als het argument station leeg is (""), geeft CurDir het pad naar het huidige station als resultaat. Op de Macintosh wordt elk opgegeven station door CurDir genegeerd en heeft deze functie gewoon het pad naar het huidige station als resultaat.


Dir, functie

Geeft als resultaat een String met de naam van een bestand, directory of map die overeenkomt met het opgegeven patroon of bestandskenmerk, of met de volumenaam van een station.

Syntaxis

Dir[(padnaam[, kenmerken])]

De syntaxis van de functie Dir bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
padnaam	Optioneel. Een tekenreeksexpressie die de bestandsnaam aangeeft. U kunt hierin ook de directory of map en het station opnemen. Als padnaam niet wordt gevonden, wordt een tekenreeks met lengte nul ("") als resultaat gegeven.
kenmerken	Optioneel. Een constante of numerieke expressie waarvan de som de bestandskenmerken aangeeft. Als dit argument is weggelaten, bestaat het resultaat uit bestanden die overeenkomen met padnaam maar geen bestandskenmerken hebben.
Instellingen

Het argument kenmerken heeft de volgende instellingen:

Constante	Waarde	Beschrijving
vbNormal	0	(Standaard) Geeft bestanden zonder kenmerken aan.
vbReadOnly	1	Geeft naast bestanden zonder kenmerken ook alleen-lezen bestanden aan.
vbHidden	2	Geeft naast bestanden zonder kenmerken ook verborgen bestanden aan.
VbSystem	4	Geeft naast bestanden zonder kenmerken ook systeembestanden aan. Niet beschikbaar op de Macintosh.
vbVolume	8	Geeft het volumelabel aan. Als een ander kenmerk is opgegeven, wordt vbVolume genegeerd. . Niet beschikbaar op de Macintosh.
vbDirectory	16	Geeft naast bestanden zonder kenmerken ook directory's of mappen aan.
vbAlias	64	De opgegeven bestandsnaam is een alias. Alleen beschikbaar op de Macintosh.
Opmerking   Deze constanten worden gedefinieerd door Visual Basic for Applications. U kunt deze namen op elke gewenste positie in uw programmacode opnemen in plaats van de eigenlijke waarden.

Notities

In Microsoft Windows kunt u bij de functie Dir het jokerteken voor meer tekens (*) en dat voor een enkel teken (?) gebruiken als u meer bestanden wilt aanduiden. Op de Macintosh worden deze tekens daarentegen beschouwd als geldige tekens in bestandsnamen zodat u ze niet kunt gebruiken om meer bestanden aan te duiden.

Aangezien de Macintosh geen jokertekens ondersteunt, gebruikt u hier het bestandstype om groepen bestanden aan te duiden. Met de functie MacID kunt u het bestandstype opgeven, zodat u niet alle bestandsnamen hoeft te typen. Zo geeft de volgende instructie de naam van het eerste TEXT-bestand in de huidige map als resultaat:

Dir("EenPad", MacID("TEXT"))

Als u alle bestanden in een map wilt omvatten geeft u een tekenreeks zonder gegevens op:

Dir("")

Er treedt een fout op als u in Microsoft Windows de functie MacID gebruikt in combinatie met Dir.

Elke waarde voor kenmerken die groter is dan 256, wordt beschouwd als een MacID-waarde.

De eerste keer dat u de functie Dir oproept, dient u padnaam op te geven, anders treedt een fout op. Als u bestandskenmerken opgeeft, moet u padnaam ook opgeven.

De functie Dir geeft als resultaat de eerste bestandsnaam die overeenkomt met padnaam. Wanneer u meer bestandsnamen wilt weergeven die overeenkomen met padnaam, roept u Dir opnieuw aan, maar zonder argumenten. Wanneer geen bestanden meer overeenkomen, geeft Dir een lege tekenreeks ("") als resultaat. Zodra een lege tekenreeks het resultaat is, moet u in volgende instructies padnaam opgeven. Anders treedt een fout op. U kunt padnaam dan wijzigen zonder dat u alle bestandsnamen ophaalt die overeenkomen met de huidige padnaam. De functie Dir kan zich niet herhalen. Submappen worden willekeurig opgehaald als u Dir oproept met het kenmerk vbDirectory.

Tip   Aangezien de bestandsnamen in willekeurige volgorde worden opgehaald, kan het handig zijn de bestandsnamen die als resultaat zijn gegeven, op te slaan in een matrix en de matrix vervolgens te sorteren.


Environ, functie

Geeft als resultaat de String voor een omgevingsvariabele van een besturingssysteem. Niet beschikbaar op de Macintosh

Syntaxis

Environ({envstring | number})

De functie Environ heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
envstring	Optioneel. Een reeksexpressie die de naam van een omgevingsvariabele bevat.
number	Optioneel. Een numerieke expressie die correspondeert met de numerieke volgorde van de omgevingsreeks in de tabel met omgevingsreeksen. Het argument number kan een willekeurige numerieke expressie zijn, maar wordt afgerond tot een geheel getal voordat het wordt geëvalueerd.
Notities

Als envstring niet voorkomt in de tabel met omgevingsreeksen, wordt een gegevensreeks zonder gegevens ("") als resultaat gegeven. Anders geeft Environ als resultaat de tekst die is toegewezen aan de opgegeven envstring; dat wil zeggen, de tekst na het gelijkteken in de tabel met omgevingsvariabelen voor de betreffende omgevingsvariabele.

Als u number opgeeft, wordt de reeks op die numerieke positie in de tabel met omgevingsreeksen als resultaat gegeven. In dat geval geeft Environ alle tekst als resultaat, inclusief envstring. Als op de opgegeven positie geen omgevingsreeks staat, geeft Environ een tekenreeks met lengte nul als resultaat.


FileCopy, instructie

Kopieert een bestand.

Syntaxis

FileCopy source, destination

De syntaxis van de instructie FileCopy heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
source	Vereist. Een reeksexpressie waarmee u opgeeft welk bestand u wilt kopiëren. U kunt de directory of map en het station opnemen in source.
Destination	Vereist. Reeksexpressie waarmee u de naam van het doelbestand opgeeft. U kunt de directory of map en het station opnemen in destination.
Notities

Er treedt een fout op als u de instructie FileCopy wilt gebruiken voor een geopend bestand.


FileDateTime, functie

Geeft als resultaat een Variant (Date) met de datum en het tijdstip waarop het bestand werd gemaakt of voor het laatst werd gewijzigd.

Syntaxis

FileDateTime(padnaam)

Het vereiste argument padnaam is een reeksexpressie die een bestandsnaam aangeeft. U kunt de directory of map en het station opnemen in padnaam.


FileLen, functie

Geeft als resultaat een Long-waarde met de grootte van een bestand in bytes.

Syntaxis

FileLen(padnaam)

Het vereiste argument padnaam is een reeksexpressie die een bestand aangeeft. U kunt de directory of map en het station opnemen in padnaam.

Notities

Wanneer het opgegeven bestand is geopend op het moment dat u de functie FileLen oproept, is het resultaat de grootte van het bestand toen dit de laatste keer werd opgeslagen.

Opmerking   Bepaal de grootte van een geopend bestand met de functie LOF.


GetAttr, functie

Geeft als resultaat een Integer die staat voor de kenmerken van een bestand, directory of map.

Syntaxis

GetAttr(padnaam)

Het vereiste argument padnaam is een reeksexpressie die een bestandsnaam aangeeft. U kunt de directory of map en het station opnemen in padnaam.

Resultaatwaarden

De resultaatwaarde van GetAttr is de som van de volgende waarden van bestandskenmerken:

Constante	Waarde	Beschrijving
vbNormal	0	Normaal.
vbReadOnly	1	Alleen-lezen.
vbHidden	2	Verborgen.
vbSystem	4	Systeembestand. Niet beschikbaar op de Macintosh.
vbDirectory	16	Directory of map.
vbArchive	32	Bestand is gewijzigd na laatste reservekopie. Niet beschikbaar op de Macintosh..
vbAlias	64	De opgegeven bestandsnaam is een alias. Alleen beschikbaar op de Macintosh.
Opmerking   Deze constanten worden geleverd door Visual Basic for Applications. U kunt op een willekeurige plaats in de programmacode de eigenlijke waarden vervangen door de namen van de constanten.

Notities

Als u wilt bepalen welke kenmerken zijn ingesteld, kunt u met de operator And een bitsgewijze vergelijking uitvoeren tussen de resultaatwaarde van de functie GetAttr en de resultaatwaarde van het gewenste bestandskenmerk. Als de uitkomst geen nul is, betekent dit dat het kenmerk is ingesteld voor het genoemde bestand. Als de resultaatwaarde van de expressie And nul is in het volgende voorbeeld, is het kenmerk Archive niet ingesteld:

Result = GetAttr(BNaam) And vbArchive

Als het kenmerk Archive is ingesteld, wordt een andere waarde dan nul als resultaat gegeven.


Kill, instructie

Verwijdert bestanden van de schijf.

Syntaxis

Kill padnaam

Het vereiste argument padnaam is een reeksexpressie waarmee u een of meer bestanden opgeeft die u wilt verwijderen. U kunt de directory of map en het station opnemen in padnaam.

Notities

In Microsoft Windows ondersteunt Kill het gebruik van de jokertekens (*) (meerdere tekens) en (?) (één teken) om meerdere bestanden op te geven. Op de Macintosh kunt u deze tekens echter in bestandsnamen opnemen, waardoor u ze niet meer als jokertekens kunt gebruiken.

Aangezien de Macintosh geen jokertekens ondersteunt, gebruikt u hier het bestandstype om groepen bestanden te verwijderen. Met de functie MacID kunt u het bestandstype opgeven, zodat u niet alle bestandsnamen hoeft te typen. De volgende instructie verwijdert bijvoorbeeld alle TEXT-bestanden in de huidige map.

Kill MacID("TEXT")

Er treedt een fout op als u in Microsoft Windows de functie MacID gebruikt in combinatie met Kill.

Er treedt een fout op als u met Kill een geopend bestand wilt verwijderen.

Opmerking   Gebruik de instructie RmDir om mappen te verwijderen.


MkDir, instructie

Maakt een nieuwe directory of map.

Syntaxis

MkDir pad

Het vereiste argument pad is een reeksexpressie waarmee u de naam opgeeft voor de directory of map die u wilt maken. U kunt het station opnemen in pad. Als u geen station opgeeft, maakt MkDir de nieuwe directory of map op het huidige station.


Name, instructie

Geeft een bestand, directory of map een andere naam.

Syntaxis

Name oudepadnaam As nieuwepadnaam

De syntaxis van de instructie Name bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
oudepadnaam	Vereist. Een reeksexpressie die de naam en locatie van het bestaande bestand aangeeft (kan ook de directory of map en het station bevatten).
nieuwepadnaam	Vereist. Een reeksexpressie die de nieuwe naam en locatie van het bestand aangeeft (kan ook de directory of map en het station bevatten). De bestandsnaam die u in nieuwepadnaam opgeeft, mag nog niet bestaan.
Notities

De instructie Name verandert de naam van een bestand en verplaatst het bestand indien nodig naar een andere directory of map. De instructie Name kan een bestand tussen stations verplaatsen, maar kan een bestaande directory of map alleen van naam veranderen als zowel nieuwepadnaam als oudepadnaam zich in hetzelfde station bevinden. Met Name kunt u geen nieuw bestand, nieuwe directory of map maken.

Er treedt een fout op als u Name gebruikt voor een geopend bestand. Sluit een geopend bestand voordat u het een andere naam geeft. De argumenten van Name kunnen geen jokertekens * (meerdere tekens) en ? (één teken) bevatten.


QBColor, functie

Geeft als resultaat een Long-waarde met de RGB-kleurcode die correspondeert met het opgegeven kleurnummer.

Syntaxis

QBColor(kleur)

Het vereiste argument kleur is een geheel getal in het bereik van 0 tot en met 15.

Instellingen

Voor het argument kleur kunt u de volgende instellingen opgeven:

Number	Kleur	Number	Kleur
0	Zwart	8	Grijs
1	Blauw	9	Lichtblauw
2	Groen	10	Lichtgroen
3	Cyaan	11	Lichtcyaan
4	Rood	12	Lichtrood
5	Magenta	13	Lichtmagenta
6	Geel	14	Lichtgeel
7	Wit	15	Helderwit
Notities

Het argument kleur staat voor kleurwaarden die worden gebruikt door andere versies van Basic (zoals Microsoft Visual Basic voor MS-DOS en de Basic Compiler). Te beginnen met de minst belangrijke byte, geeft het resultaat de rood-, groen- en blauwwaarden aan waarmee de juiste kleur wordt ingesteld in het RGB-systeem dat door Visual Basic for Applications wordt gebruikt.


RGB, functie

Geeft als resultaat een Long-waarde met een geheel getal dat een RGB-kleurwaarde aangeeft.

Syntaxis

RGB(red, green, blue)

De syntaxis van de functie RGB heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
red	Vereist; Variant (Integer). Een getal in het bereik van 0 tot en met 255 dat het rode onderdeel van de kleur aangeeft.
green	Vereist; Variant (Integer). Een getal in het bereik van 0 tot en met 255 dat het groene onderdeel van de kleur aangeeft.
blue	Vereist; Variant (Integer). Een getal in het bereik van 0 tot en met 255 dat het blauwe onderdeel van de kleur aangeeft.
Notities

Toepassingsmethoden en -eigenschappen waarbij u een kleurspecificatie kunt opgeven, verwachten hiervoor een getal dat de RGB-kleurwaarde aangeeft. Een RGB-kleurwaarde geeft de relatieve intensiteit van rood, groen en blauw aan. Deze kleurwaarden zorgen er samen voor dat een bepaalde kleur wordt weergegeven.

Als een waarde van een argument van RGB de waarde 255 overschrijdt, krijgt deze de waarde 255.

De volgende tabel bevat een aantal standaardkleuren en de onderdelen rood, groen en blauw voor elke kleur:

Kleur	Roodwaarde	Groenwaarde	Blauwwaarde
Zwart	0	0	0
Blauw	0	0	255
Groen	0	255	0
Cyaan	0	255	255
Rood	255	0	0
Magenta	255	0	255
Geel	255	255	0
Wit	255	255	255
De RGB-waarden die deze functie als resultaat geeft, zijn niet compatibel met de waarden die het Macintosh-besturingssysteem gebruikt. U kunt deze waarden gebruiken binnen de context van Microsoft-toepassingen voor de Macintosh, maar u kunt deze niet gebruiken voor rechtstreekse overdracht van kleurwijzigingen aan het Macintosh-besturingssysteem.


RmDir, instructie

Verwijdert een bestaande directory of map.

Syntaxis

RmDir pad

Het vereiste argument pad is een reeksexpressie waarmee u aangeeft welke directory of map u wilt verwijderen. U kunt het station opnemen in pad. Als u geen station opgeeft, verwijdert RmDir de directory of map op het huidige station.

Notities

Er treedt een fout op als u RmDir gebruikt om een directory of map met bestanden te verwijderen. Gebruik de instructie Kill om eerst alle bestanden te verwijderen voordat u de directory of map verwijdert.


SetAttr, instructie

Stelt de kenmerken van een bestand in.

Syntaxis

SetAttr pathname, attributes

De syntaxis van de instructie SetAttr heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
pathname	Vereist. Een tekenreeksexpressie die de bestandsnaam aangeeft. U kunt hierin ook de directory of map en het station opnemen.
attributes	Vereist. Een constante of numerieke expressie waarvan de som de bestandskenmerken aangeeft.
Instellingen

Het argument attributes heeft de volgende instellingen:

Constante	Waarde	Beschrijving
vbNormal	0	Normaal (standaardinstelling).
vbReadOnly	1	Alleen-lezen.
vbHidden	2	Verborgen.
vbSystem	4	Systeembestand. Niet beschikbaar op de Macintosh.
vbArchive	32	Het bestand is gewijzigd na de laatste reservekopie.
vbAlias	64	De opgegeven bestandsnaam is een alias. Alleen beschikbaar op de Macintosh.
Opmerking   Deze constanten worden gedefinieerd door Visual Basic for Applications. U kunt op een willekeurige plaats in de programmacode de eigenlijke waarden vervangen door de namen van de constanten.

Notities

Er treedt een runtimefout op als u de kenmerken probeert in te stellen van een geopend bestand.


Voorbeeld van de instructie Close

Dit voorbeeld maakt gebruik van de instructie Close om alle drie de bestanden die zijn geopend voor Output, te sluiten.

Dim I, FileName

For I = 1 To 3	' Loop 3 times.

FileName = "TEST" & I	' Create file name.

Open FileName For Output As #I	' Open file.

Print #I, "Dit is een test."	' Write string to file.

Next I

Close	' Close all 3 open files.


Voorbeeld van de functie EOF

Dit voorbeeld maakt gebruik van de functie EOF om het einde van een bestand vast te stellen. Dit voorbeeld gaat ervan uit dat MIJNBSTD een tekstbestand is met enkele regels tekst.

Dim InputData

Open "MIJNBSTD" For Input As #1	' Open file for input.

Do While Not EOF(1)	' Check for end of file.

Line Input #1, InputData	' Read line of data.

Debug.Print InputData	' Print to the Immediate window.

Loop

Close #1	' Close file.


Voorbeeld van de functie FileAttr

Dit voorbeeld maakt gebruik van de functie FileAttr om de bestandsmodus en de bestandsafhandeling van een open bestand te geven. De bestandsingang wordt alleen op 16-bits-systemen geretourneerd. Als u op 32-bits-systemen 2 als tweede argument opgeeft, wordt een fout gegenereerd.

Dim FileNum, Mode, Handle

FileNum = 1	' Assign file number.

Open "TESTBSTD" For Append As FileNum	' Open file.

Mode = FileAttr(FileNum, 1)	' Returns 8 (Append file mode).

Handle = FileAttr(FileNum, 2)	' Returns file handle.

Close FileNum	' Close file.


Voorbeeld van de functie FreeFile

Dit voorbeeld maakt gebruik van de functie FreeFile om het volgende beschikbare bestandsnummer te geven. Vijf bestanden worden binnen de lus geopend voor uitvoer en er worden wat proefgegevens naar elk bestand geschreven.

Dim MyIndex, FileNumber

For MyIndex = 1 To 5	' Loop 5 times.

FileNumber = FreeFile	' Get unused file

' number.

Open "TEST" & MyIndex For Output As #FileNumber	' Create file name.

Write #FileNumber, "Dit is een proefbestand."	' Output text.

Close #FileNumber	' Close file.

Next MyIndex


Voorbeeld van de instructie Get

Dit voorbeeld maakt gebruik van de instructie Get om gegevens van een bestand aan een variabele toe te wijzen. Dit voorbeeld gaat ervan uit dat TESTBSTD een bestand is met vijf records van het door de gebruiker gedefinieerde type Record.

Type Record	' Define user-defined type.

ID As Integer

Name As String * 20

End Type

Dim MyRecord As Record, Position	' Declare variables.

' Open sample file for random access.

Open "TESTBSTD" For Random As #1 Len = Len(MyRecord)

' Read the sample file using the Get statement.

Position = 3	' Define record number.

Get #1, Position, MyRecord	' Read third record.

Close #1	' Close file.


Voorbeeld van de instructie Input #

Dit voorbeeld maakt gebruik van de instructie Input # om gegevens uit een bestand aan twee variabelen toe te wijzen. Dit voorbeeld gaat ervan uit dat TESTBSTD een bestand is waar enkele regels met gegevens naartoe zijn geschreven met behulp van de instructie Write #. Elk van deze regels bevat een tekenreeks tussen aanhalingsteken en een getal gescheiden door een komma, bijvoorbeeld ("Hallo", 234).

Dim MyString, MyNumber

Open "TESTBSTD" For Input As #1	' Open file for input.

Do While Not EOF(1)	' Loop until end of file.

Input #1, MyString, MyNumber	' Read data into two variables.

Debug.Print MyString, MyNumber	' Print data to the Immediate window.

Loop

Close #1	' Close file.


Voorbeeld van Input

Dit voorbeeld maakt gebruik van de functie Input om per keer één teken in een bestand te lezen en dat naar het venster Debug af te drukken. Het voorbeeld gaat ervan uit dat TESTBSTD een tekstbestand is met enkele regels proefgegevens.

Dim MyChar

Open "TESTBSTD" For Input As #1	' Open file.

Do While Not EOF(1)	' Loop until end of file.

MyChar = Input(1, #1)	' Get one character.

Debug.Print MyChar	' Print to the Immediate window.

Loop

Close #1	' Close file.


Voorbeeld van de instructie Line Input #

Dit voorbeeld maakt gebruik van de instructie Line Input # om een regel uit een sequentieel bestand te lezen en deze aan een variabele toe te wijzen. Dit voorbeeld gaat ervan uit dat TESTBSTD een tekstbestand is met enkele regels proefgegevens.

Dim TextLine

Open "TESTBSTD" For Input As #1	' Open file.

Do While Not EOF(1)	' Loop until end of file.

Line Input #1, TextLine	' Read line into variable.

Debug.Print TextLine	' Print to the Immediate window.

Loop

Close #1	' Close file.


Voorbeeld van de functie Loc

Dit voorbeeld maakt gebruik van de functie Loc om de huidige lees-/schrijfpositie in een geopend bestand als resultaat te geven. Dit voorbeeld gaat ervan uit dat TESTBSTD een tekstbestand is met enkele regels proefgegevens.

Dim MyLocation, MyLine

Open "TESTBSTD" For Binary As #1	' Open file just created.

Do While MyLocation < LOF(1)	' Loop until end of file.

MyLine = MyLine & Input(1, #1)	' Read character into variable.

MyLocation = Loc(1)	' Get current position within file.

' Print to the Immediate window.

Debug.Print MyLine; Tab; MyLocation

Loop

Close #1	' Close file.


Voorbeeld van de instructies Lock en Unlock

Dit voorbeeld laat zien hoe de instructies Lock en Unlock kunnen worden gebruikt. Tijdens het wijzigen van een record wordt toegang van andere processen tot die record niet toegestaan. Dit voorbeeld gaat ervan uit dat TESTBSTD een bestand is dat vijf records bevat van het door de gebruiker gedefinieerde type Record.

Type Record	' Define user-defined type.

ID As Integer

Name As String * 20

End Type

Dim MyRecord As Record, RecordNumber	' Declare variables.

' Open sample file for random access.

Open "TESTBSTD" For Random Shared As #1 Len = Len(MyRecord)

RecordNumber = 4	' Define record number.

Lock #1, RecordNumber	' Lock record.

Get #1, RecordNumber, MyRecord	' Read record.

MyRecord.ID = 234	' Modify record.

MyRecord.Name = "Jan Jansen"

Put #1, RecordNumber, MyRecord	' Write modified record.

Unlock #1, RecordNumber	' Unlock current record.

Close #1	' Close file.


Voorbeeld van de functie LOF

Dit voorbeeld maakt gebruik van de functie LOF om de grootte van een geopend bestand te bepalen. Dit voorbeeld gaat ervan uit dat TESTBSTD een tekstbestand is met proefgegevens.

Dim FileLength

Open "TESTBSTD" For Input As #1	' Open file.

FileLength = LOF(1)	' Get length of file.

Close #1	' Close file.


Voorbeeld van de instructie Open

Dit voorbeeld laat zien hoe de instructie Open op diverse manieren kan worden gebruikt om de invoer in en uitvoer uit een bestand mogelijk te maken.

De onderstaande programmacode opent het bestand TESTBSTD in sequentiële-invoermodus.

Open "TESTFILE" For Input As #1

' Close before reopening in another mode.

Close #1

Dit voorbeeld opent het bestand in de modus Binary voor alleen schrijfbewerkingen.

Open "TESTBSTD" For Binary Access Write As #1

' Close before reopening in another mode.

Close #1

Onderstaand voorbeeld opent het bestand in de modus Random. Het bestand bevat records van het door de gebruiker gedefinieerde type Record.

Type Record	' Define user-defined type.

ID As Integer

Name As String * 20

End Type

Dim MyRecord As Record	' Declare variable.

Open "TESTFILE" For Random As #1 Len = Len(MyRecord)

' Close before reopening in another mode.

Close #1

Dit voorbeeld van programmacode opent het bestand voor sequentiële uitvoer. Met elk proces kan naar het bestand worden geschreven of van het bestand worden gelezen.

Open "TESTBSTD" For Output Shared As #1

' Close before reopening in another mode.

Close #1

Dit voorbeeld van programmacode opent het bestand in de modus Binary voor lezen. Met andere processen kan het bestand niet worden gelezen.

Open "TESTBSTD" For Binary Access Read Lock Read As #1


Voorbeeld van de instructie Print #

Dit voorbeeld maakt gebruik van de instructie Print # om gegevens naar een bestand te schrijven.

Open "TESTBSTD" For Output As #1	' Open file for output.

Print #1, "Dit is een test"	' Print text to file.

Print #1,	' Print blank line to file.

Print #1, "Zone 1"; Tab ; "Zone 2"	' Print in two print zones.

Print #1, "Hallo" ; " " ; "allemaal"	' Separate strings with space.

Print #1, Spc(5) ; "5 leading spaces "	' Print five leading spaces.

Print #1, Tab(10) ; "Hallo"	' Print word at column 10.

' Assign Boolean, Date, Null and Error values.

Dim MyBool, MyDate, MyNull, MyError

MyBool = False : MyDate = #12 februari 1969# : MyNull = Null

MyError = CVErr(32767)

' True, False, Null, and Error are translated using locale settings of

' your system. Date literals are written using standard short date

' format.

Print #1, MyBool ; " is een Boole-waarde"

Print #1, MyDate ; " is een datum"

Print #1, MyNull ; " is een Null-waarde"

Print #1, MyError ; " is een foutwaarde"

Close #1	' Close file.


Voorbeeld van de instructie Put

Dit voorbeeld maakt gebruik van de instructie Put om gegevens naar een bestand te schrijven. Vijf records van het door de gebruiker gedefinieerde type Record worden naar het bestand geschreven.

Type Record	' Define user-defined type.

ID As Integer

Name As String * 20

End Type

Dim MyRecord As Record, RecordNumber	' Declare variables.

' Open file for random access.

Open "TESTBSTD" For Random As #1 Len = Len(MyRecord)

For RecordNumber = 1 To 5	' Loop 5 times.

MyRecord.ID = RecordNumber	' Define ID.

MyRecord.Name = "Mijn naam" & RecordNumber	' Create a string.

Put #1, RecordNumber, MyRecord	' Write record to file.

Next RecordNumber

Close #1	' Close file.


Voorbeeld van de instructie Reset

Dit voorbeeld maakt gebruik van de instructie Reset om alle geopende bestanden te sluiten en de inhoud van alle bestandsbuffers naar de schijf te schrijven. De Variant-variabele FileNumber wordt als tekenreeks en als nummer gebruikt.

Dim FileNumber

For FileNumber = 1 To 5	' Loop 5 times.

' Open file for output. FileNumber is concatenated into the string

' TEST for the file name, but is a number following a #.

Open "TEST" & FileNumber For Output As #FileNumber

Write #FileNumber, "Hallo allemaal"	' Write data to file.

Next FileNumber

Reset	' Close files and write contents

' to disk.


Voorbeeld van de functie Seek

Dit voorbeeld maakt gebruik van de functie Seek om de positie in het huidige bestand als resultaat te geven. Het voorbeeld gaat ervan uit dat TESTBSTD een bestand is met records van het door de gebruiker gedefinieerde type Record.

Type Record	' Define user-defined type.

ID As Integer

Name As String * 20

End Type

Voor bestanden die geopend zijn in de modus Random geeft Seek het nummer van de volgende record als resultaat.

Dim MyRecord As Record	' Declare variable.

Open "TESTBSTD" For Random As #1 Len = Len(MyRecord)

Do While Not EOF(1)	' Loop until end of file.

Get #1, , MyRecord	' Read next record.

Debug.Print Seek(1)	' Print record number to the

' Immediate window.

Loop

Close #1	' Close file.

Voor bestanden die in andere modi zijn geopend dan de modus Random, geeft Seek de positie van de byte waarop de volgende bewerking plaats vindt als resultaat. Hierbij wordt ervan uitgegaan dat TESTBSTD een bestand is met enkele regels tekst.

Dim MyChar

Open "TESTBSTD" For Input As #1	' Open file for reading.

Do While Not EOF(1)	' Loop until end of file.

MyChar = Input(1, #1)	' Read next character of data.

Debug.Print Seek(1)	' Print byte position to the

' Immediate window.

Loop

Close #1	' Close file.


Voorbeeld van de instructie Seek

Dit voorbeeld maakt gebruik van de instructie Seek om de positie voor de volgende lees- of schrijfbewerking in een bestand te bepalen. Dit voorbeeld gaat ervan uit dat TESTBSTD een bestand is met een record van het door de gebruiker gedefinieerde type Record.

Type Record	' Define user-defined type.

ID As Integer

Name As String * 20

End Type

Voor bestanden die met de modus Random zijn geopend, stelt Seek de volgende record in.

Dim MyRecord As Record, MaxSize, RecordNumber	' Declare variables.

' Open file in random-file mode.

Open "TESTBSTD" For Random As #1 Len = Len(MyRecord)

MaxSize = LOF(1) \ Len(MyRecord)	' Get number of records in file.

' The loop reads all records starting from the last.

For RecordNumber = MaxSize To 1 Step - 1

Seek #1, RecordNumber	' Set position.

Get #1, , MyRecord	' Read record.

Next RecordNumber

Close #1	' Close file.

Voor bestanden die in een andere modus zijn geopend dan de modus Random, stelt Seek de bytepositie in waarop de volgende bewerking plaatsvindt. Hierbij wordt ervan uitgegaan dat TESTBSTD een bestand is met enkele regels tekst.

Dim MaxSize, NextChar, MyChar

Open "TESTBSTD" For Input As #1	' Open file for input.

MaxSize = LOF(1)	' Get size of file in bytes.

' The loop reads all characters starting from the last.

For NextChar = MaxSize To 1 Step -1

Seek #1, NextChar	' Set position.

MyChar = Input(1, #1)	' Read character.

Next NextChar

Close #1	' Close file.


Voorbeeld van de functie Spc

Dit voorbeeld maakt gebruik van de functie Spc om uitvoer in een bestand en in het venster Debug te plaatsen.

' The Spc function can be used with the Print # statement.

Open "TESTBSTD" For Output As #1	' Open file for output.

Print #1, "10 spaties tussen hier"; Spc(10); "en hier."

Close #1	' Close file.

Door de volgende instructie wordt de tekst afgedrukt naar het venster Debug (met behulp van de methode Print), voorafgegaan door 30 spaties.

Debug.Print Spc(30); "Dertig spaties verder..."


Voorbeeld van de functie Tab

Dit voorbeeld maakt gebruik van de functie Tab om de uitvoer in een bestand en in het venster Debug te plaatsen.

' The Tab function can be used with the Print # statement.

Open "TESTBSTD" For Output As #1	' Open file for output.

' The second word prints at column 20.

Print #1, "Hallo"; Tab(20); "allemaal."

' If the argument is omitted, cursor is moved to the next print zone.

Print #1, "Hallo"; Tab; "allemaal"

Close #1	' Close file.

De functie Tab kan ook in combinatie met de methode Print worden gebruikt. De volgende instructie drukt tekst af, te beginnen bij kolom 10.

Debug.Print Tab(10); "10 kolommen vanaf begin."


Voorbeeld van de instructie Width #

Dit voorbeeld maakt gebruik van de instructie Width # om de breedte van de uitvoerregel voor een bestand in te stellen.

Dim I

Open "TESTBSTD" For Output As #1	' Open file for output.

VBA.Width 1, 5	' Set output line width to 5.

For I = 0 To 9	' Loop 10 times.

Print #1, Chr(48 + I);	' Prints five characters per line.

Next I

Close #1	' Close file.


Voorbeeld van de instructie Write #

Dit voorbeeld maakt gebruik van de instructie Write # om onbewerkte regels naar een sequentieel bestand te schrijven.

Open "TESTBSTD" For Output As #1	' Open file for output.

Write #1, "Hallo allemaal", 234	' Write comma-delimited data.

Write #1,	' Write blank line.

Dim MyBool, MyDate, MyNull, MyError

' Assign Boolean, Date, Null, and Error values.

MyBool = False : MyDate = #12 februari 1969# : MyNull = Null

MyError = CVErr(32767)

' Boolean data is written as #TRUE# or #FALSE#. Date literals are

' written in universal date format, for example, #1994-07-13#

 'represents July 13, 1994. Null data is written as #NULL#.

' Error data is written as #ERROR errorcode#.

Write #1, MyBool ; " is een Boole-waarde"

Write #1, MyDate ; " is a date"

Write #1, MyNull ; " is a null value"

Write #1, MyError ; " is an error value"

Close #1	' Close file.


Close, instructie

Beëindigt de invoer en uitvoer van een bestand dat is geopend met de instructie Open.

Syntaxis

Close [bestandsnummers]

Het optionele argument bestandsnummers kan bestaan uit een of meer bestandsnummers met de volgende syntaxis, waarbij bestandsnummer elk geldig bestandsnummer kan zijn:

[[#]bestandsnummer] [, [#]bestandsnummer] . . .

Notities

Als u bestandsnummers weglaat, worden alle actieve bestanden gesloten die u hebt geopend met de instructie Open.

Als u bestanden sluit die u hebt geopend voor Output of Append, wordt de laatste buffer met uitvoer naar de desbetreffende buffer in het besturingssysteem geschreven. Alle aan het bestand gekoppelde bufferruimte wordt vrijgegeven.

Nadat de instructie Close is uitgevoerd, wordt de koppeling van een bestand met het bestandsnummer verbroken.


EOF, functie

Geeft als resultaat een Integer met de Boole-waarde True als het einde van een bestand is bereikt, dat is geopend voor Random of voor sequentiële Input.

Syntaxis

EOF(bestandsnummer)

Het vereiste argument bestandsnummer is een Integer en kan elk geldig bestandsnummer zijn.

Notities

Met EOF voorkomt u dat een fout wordt gegenereerd als u na het einde van een bestand gegevens probeert in te voeren.

De functie EOF geeft False als resultaat totdat het einde van een bestand is bereikt. Als u EOF gebruikt met bestanden die voor Random of Binary toegang zijn geopend, is de resultaatwaarde False totdat de laatst uitgevoerde instructie Get niet meer de volledige record kan lezen.

Als u een bestand dat is geopend voor binaire toegang probeert te lezen met de functie Input totdat EOF als resultaat True geeft, resulteert dit in een fout. Gebruik voor het lezen van binaire bestanden met Input de functies LOF en Loc in plaats van de functie EOF, of gebruik Get bij het uitvoeren van de functie. Bij voor Output geopende bestanden geeft EOF altijd True als resultaat.


FileAttr, functie

Geeft als resultaat een Long-waarde met de bestandsmodus voor bestanden die u hebt geopend met de instructie Open.

Syntaxis

FileAttr(bestandsnummer, resultaatwaarde)

De syntaxis van de functie FileAttr heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
bestandsnummer	Vereist; Integer. Elk geldig bestandsnummer.
resultaatwaarde	Vereist; Integer. Een getal dat aangeeft om welk type gegevens wordt gevraagd. Kies 1 als het resultaat de bestandsmodus dient aan te geven. Alleen voor 16-bits systemen, kies 2 om de bestandsingang voor het besturingssysteem aan te geven. Resultaatwaarde 2 wordt niet ondersteund in 32-bits systemen en veroorzaakt een fout.
Resultaatwaarden

Als het argument resultaattype de waarde 1 heeft, wordt de bestandsmodus aangeduid met de volgende resultaatwaarden:

Modus	Waarde
Input	1
Output	2
Random	4
Append	8
Binary	32


FreeFile, functie

Geeft als resultaat een Integer met het volgende bestandsnummer dat voor de instructie Open kan worden gebruikt.

Syntaxis

FreeFile[(bereiknummer)]

Het optionele argument bereiknummer is een Variant die het bereik opgeeft voor de resultaatwaarde van het volgende vrije bestandsnummer. Geef 0 (standaard) op als de resultaatwaarde voor het bestandsnummer in het bereik van 1 tot en met 255 dient te liggen. Geef 1 op als de resultaatwaarde voor het bestandsnummer tussen 256 en 511 dient te liggen.

Notities

Gebruik FreeFile als u wilt weten of het op te geven bestandsnummer nog niet in gebruik is.


Get, instructie

Leest gegevens vanuit een geopend bestand op schijf en geeft deze door aan een variabele.

Syntaxis

Get [#]bestandsnummer, [recnummer], varnaam

De syntaxis van de instructie Get bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
bestandsnummer	Vereist. Elk geldig bestandsnummer.
recnummer	Optioneel. Variant (Long). Het recordnummer (bestanden in de modus Random) of bytenummer (bestanden in de modus Binary) waar het lezen wordt gestart.
Varnaam	Vereist. Een geldige variabelennaam waaraan de gegevens worden doorgegeven.
Notities

Gegevens die worden gelezen met Get worden meestal met Put weggeschreven naar een bestand.

De eerste record of byte in een bestand bevindt zich op positie 1, de tweede record of byte op positie 2, enzovoort. Als u geen recnummer opgeeft, wordt de volgende record of byte gelezen na de laatste instructie Get of Put (of aangewezen na de laatste functie Seek). Gebruik komma's als scheidingsteken, bijvoorbeeld:

Get #4,,BestandsBuffer

Voor bestanden die zijn geopend in de modus Random, gelden de volgende regels:

•	Als de lengte van de gegevens die u wilt lezen kleiner is dan de lengte die is opgegeven in de component Len van de instructie Open, worden met Get ook de records na de opgegeven grens gelezen. De ruimte tussen het einde van de ene record en het begin van de volgende record wordt opgevuld met de inhoud van de bestandsbuffer. Aangezien het moeilijk is om exact te bepalen hoeveel opvulgegevens aanwezig zijn, is het verstandig om een record dezelfde lengte te geven als de gegevens die worden gelezen.

•	Als de variabele waarnaar wordt gelezen een tekenreeks met variabele lengte is, wordt met Get een beschrijving van 2 bytes gelezen die de lengte van de tekenreeks bevat. Daarna worden de gegevens gelezen die worden opgenomen in de variabele. Daarom moet de recordlengte zoals aangegeven in de component Len van de instructie Open ten minste 2 bytes groter zijn dan de echte lengte van de tekenreeks.

•	Als de variabele waarnaar wordt gelezen een Variant is van een numeriek type, heeft Get 2 bytes nodig om het VarType van de Variant te lezen. Vervolgens worden de gegevens gelezen die in de variabele worden opgenomen. Bij een Variant van VarType 3, leest Get bijvoorbeeld 6 bytes: 2 bytes om de Variant te herkennen als VarType 3 (Long) en 4 bytes die de Long-gegevens bevatten. De recordlengte zoals aangegeven in de component Len van de instructie Open, moet ten minste 2 bytes groter zijn dan het feitelijke aantal bytes dat nodig is om de variabele op te slaan.

Opmerking   Met de instructie Get kunt u wel een Variant-matrix vanaf schijf inlezen, maar geen scalaire Variant met een matrix. U kunt Get evenmin gebruiken om objecten vanaf schijf in te lezen.

•	Als de variabele waarnaar wordt gelezen een Variant van het type VarType 8 (String) is, heeft Get 2 bytes nodig om het VarType te lezen en 2 bytes om de lengte van de tekenreeks aan te geven. Vervolgens worden de gegevens van de tekenreeks gelezen. Vervolgens worden de gegevens van de tekenreeks geschreven. De recordlengte zoals aangegeven in de component Len van de instructie Open dient ten minste 4 bytes groter te zijn dan de feitelijke lengte van de tekenreeks.

•	Als de variabele waarnaar wordt gelezen een dynamische matrix is, leest Get een descriptor waarvan de lengte gelijk is aan 2 plus 8 maal het aantal dimensies, dat wil zeggen, 2 + 8 * AantalDimensies. De recordlengte zoals is aangegeven in de component Len van de instructie Open moet groter zijn dan of gelijk zijn aan de som van alle bytes die nodig zijn om de gegevens uit de matrix en de matrixdescriptor in te lezen. De volgende matrixdeclaratie neemt bijvoorbeeld 118 bytes aan schijfruimte in beslag.

Dim MijnMatrix(1 To 5,1 To 10) As Integer

De 118 bytes kunnen als volgt worden herleid: 18 bytes voor de descriptor (2 + 8 * 2) en 100 bytes voor de gegevens (5 * 10 * 2).

•	Als de variabele waarnaar wordt gelezen een matrix is met vaste grootte, leest Get alleen de gegevens. In dat geval wordt geen descriptor gelezen.

•	Als de variabele waarnaar wordt gelezen een ander type variabele is (geen tekenreeks met variabele lengte of een Variant), leest Get alleen de variabele gegevens. De recordlengte zoals aangegeven in de component Len van de instructie Open dient groter of gelijk te zijn aan de lengte van de gegevens die worden gelezen.

•	Get leest de onderdelen van door de gebruiker gedefinieerde typen als afzonderlijke delen. Nu zijn echter geen opvulgegevens tussen de onderdelen opgenomen. Een dynamische matrix van een door de gebruiker gedefinieerd gegevenstype (geschreven met Put) wordt voorafgegaan door een descriptor waarvan de lengte gelijk is aan 2 plus 8 maal het aantal dimensies, dat wil zeggen, 2 + 8 * AantalDimensies. De recordlengte zoals aangegeven in de component Len van de instructie Open dient groter of gelijk te zijn aan de som van alle bytes die nodig zijn om de afzonderlijke onderdelen, inclusief matrices en bijbehorende descriptors, te lezen.

Voor bestanden die zijn geopend in de modus Binary, gelden alle regels voor Random, met de volgende uitzonderingen:

•	De component Len van de instructie Open heeft geen enkele invloed. Get leest alle variabelen aaneengesloten van de schijf, dat wil zeggen zonder opvulgegevens tussen de records.

•	Als de matrix niet van een door de gebruiker gedefinieerd gegevenstype is, leest Get alleen de gegevens. In dat geval wordt geen descriptor gelezen.

•	Get leest tekenreeksen met variabele lengte die geen onderdeel zijn van door de gebruiker gedefinieerde typen, zonder de descriptor van 2 bytes. Het aantal bytes dat wordt gelezen is gelijk aan het aantal tekens dat al in de tekenreeks aanwezig is. Uit de volgende instructies kunt u bijvoorbeeld opmaken dat er 10 bytes worden gelezen van bestandsnummer 1:

VarString = String(10," ")

Get #1,,VarString


Input #, instructie

Leest gegevens uit een geopend sequentieel bestand en wijst deze gegevens toe aan variabelen.

Syntaxis

Input #bestandsnummer, varlijst

De syntaxis van de instructie Input # bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
bestandsnummer	Vereist. Elk geldig bestandsnummer.
varlijst	Vereist. Lijst met variabelen die door komma's van elkaar zijn gescheiden. De variabelen zijn toegewezen waarden die uit het bestand worden gelezen. Dit kan geen matrix of objectvariabele zijn. U kunt echter wel variabelen gebruiken die een onderdeel van een matrix of een door de gebruiker gedefinieerd gegevenstype beschrijven.
Notities

Gegevens die met Input # worden gelezen, worden meestal met Write # naar een bestand weggeschreven. Gebruik deze instructie alleen voor bestanden die zijn geopend in de modus Input of Binary.

Als standaard tekenreeksen en numerieke gegevens worden gelezen, worden deze zonder wijzigingen toegewezen aan variabelen. In de volgende tabel kunt u zien wat er met andere invoergegevens gebeurt:

Gegevens	Waarde toegewezen aan variabele
Komma (scheidingsteken) of witregel	Leeg
#NULL#	Null
#TRUE# of #FALSE#	True of False
#jjjj-mm-dd hh:mm:ss#	De datum en/of tijd die door de expressie wordt gegeven.
#ERROR foutnummer#	foutnummer (variabele is een Variant met de label fout).
Dubbele aanhalingstekens (" ") in de invoergegevens worden genegeerd.

Opmerking   Gebruik in de instructie Input # nooit tekenreeksen die zelf aanhalingstekens bevatten, zoals in "1,2""X": Input # beschouwt deze tekenreeks als twee volledige en gescheiden tekenreeksen.

De gegevenselementen in een bestand moeten dezelfde volgorde hebben als de variabelen in de varlijst en kunnen alleen worden vergeleken met variabelen van hetzelfde gegevenstype. Als een variabele numeriek is en het gegevenselement niet, wordt de waarde nul toegewezen aan de variabele.

Als het einde van het bestand wordt bereikt terwijl nog een gegevenselement wordt ingevoerd, stopt de invoer en treedt een fout op.

Opmerking   Als u wilt dat gegevens uit een bestand op de juiste manier naar de variabelen worden gelezen met Input #, dient u de instructie Write # en niet Print # te gebruiken voor het schrijven van de gegevens naar de bestanden. Met Write # wordt elk gegevensveld juist gescheiden van de volgende en vorige velden.


Input, functie

Geeft als resultaat een String met tekens uit een bestand dat is geopend in de modus Input of Binary.

Syntaxis

Input(getal, [#]bestandsnummer)

De syntaxis van de functie Input bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
aantal	Vereist. Elke geldige numerieke expressie waarmee het aantal tekens van het resultaat wordt aangegeven.
bestandsnummer	Vereist. Elk geldig bestandsnummer.
Notities

Gegevens die met Input # worden gelezen, worden meestal met Print # of Put naar een bestand weggeschreven. Gebruik deze functie alleen voor bestanden die zijn geopend in de modus Input of Binary.

In tegenstelling tot de instructie Input #, geeft de functie Input alle gelezen tekens als resultaat, inclusief komma's, regelteruglopen, regelinvoer, aanhalingstekens en voorloopspaties.

Als u een bestand dat is geopend voor binaire toegang probeert te lezen met de functie Input totdat EOF als resultaat True geeft, resulteert dit in een fout. Gebruik voor het lezen van binaire bestanden met Input de functies LOF en Loc in plaats van de functie EOF, of gebruik Get bij het uitvoeren van de functie.

Opmerking   Gebruik de functie InputB voor bytegegevens in tekstbestanden. Met InputB bepaalt aantal het aantal bytes voor het resultaat in plaats van het aantal tekens dat als resultaat moet worden gegeven.


Line Input #, instructie

Leest een enkele regel uit een geopend sequentieel bestand en wijst deze toe aan een String-variabele.

Syntaxis

Line Input #bestandsnummer, varnaam

De syntaxis van de instructie Line Input # bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
bestandsnummer	Vereist. Elk geldig bestandsnummer.
Varnaam	Vereist. Geldige Variant of variabelennaam van het type String.
Notities

Gegevens die met Line Input # worden gelezen, worden meestal met Print # naar een bestand weggeschreven.

Met de instructie Line Input # wordt een bestand teken voor teken gelezen totdat een regelterugloop (Chr(13)) of een regelterugloop-regelinvoer (Chr(13) + Chr(10)) wordt gevonden. De reeks regelterugloop-regelinvoer zelf wordt niet aan de tekenreeks toegevoegd, maar overgeslagen.


Loc, functie

Geeft als resultaat een Long-waarde die de huidige lees-/schrijfpositie in een geopend bestand aangeeft.

Syntaxis

Loc(bestandsnummer)

Het vereiste argument bestandsnummer kan elk geldig Integer bestandsnummer zijn.

Notities

In de volgende tabel ziet u welke resultaatwaarden worden gegeven bij elke modus waarin u toegang kunt krijgen tot een bestand:

Modus	Resultaatwaarde
Random	Het nummer van de laatste record die uit het bestand werd gelezen of naar het bestand werd geschreven.
Sequentieel	De huidige positie van de byte in het bestand gedeeld door 128. De resultaatgegevens van Loc voor sequentiële bestanden worden noch gebruikt, noch vereist.
Binary	De positie van de laatst gelezen of geschreven byte.


Lock, Unlock, instructies

Beheert de toegang die andere processen hebben tot een bestand of een gedeelte van een bestand dat is geopend met de instructie Open.

Syntaxis

Lock [#]bestandsnummer[, recordbereik]
. . .

Unlock [#]bestandsnummer[, recordbereik]

De syntaxis van de instructies Lock en Unlock bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
bestandsnummer	Vereist. Elk geldig bestandsnummer.
recordbereik	Optioneel. Het bereik van de records die u wilt vergrendelen of ontgrendelen.
Instellingen

Het argument recordbereik heeft de volgende instellingen:

recnummer | [begin] To einde

Instelling	Beschrijving
recnummer	Het recordnummer (bestanden in de modus Random) of bytenummer (bestanden in de modus Binary) waar het vergrendelen of ontgrendelen begint.
begin	Het nummer van de eerste record of byte die wordt vergrendeld of ontgrendeld.
einde	Het nummer van de laatste record of byte die wordt vergrendeld of ontgrendeld.
Notities

U gebruikt de instructies Lock en Unlock in omgevingen waarin verschillende processen tegelijk toegang tot één bestand kunnen hebben.

De instructies Lock en Unlock worden altijd samen gebruikt. De argumenten bij Lock en Unlock dienen exact overeen te komen.

De eerste record of byte in een bestand bevindt zich op positie 1, de tweede record of byte op positie 2, enzovoort. Als u slechts één record opgeeft, wordt alleen deze record vergrendeld en ontgrendeld. Wanneer u een recordbereik opgeeft zonder beginrecord (begin), worden alle records vanaf de eerste record tot de laatste record in het bereik (einde) vergrendeld of ontgrendeld. Wanneer u Lock gebruikt zonder recnummer, wordt het hele bestand vergrendeld. Als u Unlock gebruikt zonder recnummer, wordt het hele bestand ontgrendeld.

Als u een bestand hebt geopend voor sequentiële in- of uitvoer, worden de instructies Lock en Unlock op het hele bestand uitgevoerd, ongeacht het bereik dat u hebt opgegeven bij begin en einde.

Let op   Zorg dat u alle vergrendelde records hebt ontgrendeld met de instructie Unlock voordat u een bestand sluit of het programma beëindigt. Als u vergeet vergrendelingen op te heffen, kan dit onverwachte resultaten tot gevolg hebben.


LOF, functie

Geeft als resultaat een Long-waarde die de grootte in bytes weergeeft van een bestand dat is geopend met de instructie Open.

Syntaxis

LOF(bestandsnummer)

Het vereiste argument bestandsnummer is een Integer met een geldig bestandsnummer.

Opmerking   Gebruik de functie FileLen voor gegevens over de lengte van een bestand dat niet is geopend.


Open, instructie

Maakt invoer in- en uitvoer (I/O) uit een bestand mogelijk.

Syntaxis

Open padnaam For modus [Access toegang] [vergrendel] As [#]bestandsnummer [Len=reclengte]

De syntaxis van de instructie Open bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
padnaam	Vereist. Een tekenreeksexpressie die de bestandsnaam aangeeft. U kunt hierin ook de directory of map en het station opnemen.
modus	Vereist. Een sleutelwoord dat de bestandsmodus aangeeft: Append, Binary, Input, Output of Random. Als niets is opgegeven wordt het bestand geopend met de toegang Random.
toegang	Optioneel. Sleutelwoord dat aangeeft welke bewerkingen zijn toegestaan voor het geopende bestand: Read, Write of Read Write.
vergrendel	Optioneel. Een sleutelwoord dat aangeeft welke bewerkingen door andere processen zijn toegestaan voor het geopende bestand: Shared, Lock Read, Lock Write en Lock Read Write.
bestandsnummer	Vereist. Een geldig bestandsnummer in het bereik van 1 tot en met 511. Gebruik de functie FreeFile om het volgende beschikbare bestandsnummer te verkrijgen.
reclengte	Optioneel. Een getal kleiner dan of gelijk aan 32.767 (bytes). Bij bestanden die zijn geopend met willekeurige toegang, geeft dit getal de lengte van de record aan. Bij sequentiële bestanden geeft dit getal aan hoeveel tekens in de buffer zijn geplaatst.
Notities

Voordat u een invoer- of uitvoerbewerking kunt uitvoeren, dient u het bestand te openen. Met de instructie Open wijst u een buffer voor in- en uitvoer toe aan het bestand en bepaalt u welke toegangsmodus geldt voor de buffer.

Wanneer het bestand dat wordt genoemd in padnaam niet bestaat, wordt dit bestand gemaakt op het moment dat een bestand wordt geopend in de modus Append, Binary, Output of Random.

Als het bestand al door een ander proces is geopend en het opgegeven type toegang niet is toegestaan, mislukt de bewerking Open en treedt een fout op.

De component Len wordt genegeerd wanneer modus Binary is.

Belangrijk   In de modi Binary, Input en Random kunt u hetzelfde bestand openen met een ander bestandsnummer zonder dit eerst te hebben gesloten. In de modi Append en Output dient u het bestand te sluiten voordat u het met een ander bestandsnummer kunt openen.


Print #, instructie

Schrijft gegevens met weergavenopmaak naar een sequentieel bestand.

Syntaxis

Print #bestandsnummer, [uitvoerlijst]

De syntaxis van de instructie Print # bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
bestandsnummer	Vereist. Elk geldig bestandsnummer.
uitvoerlijst	Optioneel. Een expressie of lijst met expressies die moet worden afgedrukt.
Instellingen

Het argument uitvoerlijst heeft de volgende instellingen:

[{Spc(n) | Tab[(n)]}] [expressie] [tekenpos]

Instelling	Beschrijving
Spc(n)	Hiermee kunt u spaties invoegen in de uitvoer, waarbij n staat voor het aantal in te voegen spaties.
Tab(n)	Hiermee kunt u de invoegpositie op een absoluut kolomnummer plaatsen, waarbij n het kolomnummer aangeeft. Gebruik Tab zonder argument om de invoegpositie aan het begin van het volgende afdrukgebied te plaatsen.
expressie	Een numerieke expressies of tekenreeksexpressie die u wilt afdrukken.
tekenpos	Geeft de invoegpositie voor het volgende teken aan. Gebruik een puntkomma als u de invoegpositie onmiddellijk na het laatst weergegeven teken wilt plaatsen. Plaats de invoegpositie op een absoluut kolomnummer met Tab(n). Gebruik Tab zonder argument om de invoegpositie aan het begin van het volgende afdrukgebied te plaatsen. Als tekenpos niet wordt gebruikt, wordt het volgende teken op de volgende regel afgedrukt.
Notities

Gegevens die worden geschreven met Print # worden meestal met Line Input # of Input gelezen uit een bestand.

Als u uitvoerlijst weglaat en alleen een lijstscheidingsteken opneemt na bestandsnummer, wordt een witregel afgebeeld in het bestand. Meerdere expressies kunnen worden gescheiden door een spatie of een puntkomma. Een spatie heeft dezelfde werking als een puntkomma.

Voor Boole-gegevens wordt True of False afgedrukt. De sleutelwoorden True en False worden niet vertaald, ongeacht de lokale instellingen.

Gegevens van het type Date worden naar het bestand geschreven in de korte datumnotatie (standaardinstelling) die wordt herkend door uw systeem. Als het datum- of tijdgedeelte ontbreekt of nul is, wordt alleen het andere gedeelte naar het bestand geschreven.

Er wordt niets naar het bestand geschreven als de gegevens van uitvoerlijst de waarde Empty hebben. Als de gegevens van uitvoerlijst echter Null bevatten, wordt Null naar het bestand geschreven.

De uitvoer van foutgegevens wordt geschreven als Error foutcode. Het sleutelwoord Error wordt niet vertaald ongeacht de lokale instellingen.

Alle gegevens die met Print # naar het bestand worden geschreven, zijn internationaal bijgewerkt. Dit houdt in dat de gegevens juist zijn opgemaakt met het geldige decimale scheidingsteken.

Aangezien met Print # een afbeelding van de gegevens naar het bestand wordt geschreven, dient u de gegevens te begrenzen als u wilt dat deze goed worden weergegeven. Als u Tab zonder argumenten gebruikt om de afdrukpositie naar het volgende afdrukgebied te verplaatsen, worden met Print # ook de spaties tussen de afgedrukte velden naar het bestand geschreven.

Opmerking   Als u de gegevens later vanuit een bestand wilt lezen met de instructie Input #, kunt u de gegevens het beste naar het bestand schrijven met de instructie Write # in plaats van met de instructie Print #. Wanneer u Write # gebruikt, weet u zeker dat alle gegevensvelden intact blijven omdat de grenzen van de velden juist worden afgebakend. Hierdoor kunt u met Input # de velden weer teruglezen. Bovendien zorgt het gebruik van Write # ervoor dat de gegevens in de lokale instellingen kunnen worden gelezen.


Put, instructie

Schrijft gegevens van een variabele naar een bestand op schijf.

Syntaxis

Put [#]bestandsnummer, [recnummer], varnaam

De syntaxis van de instructie Put bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
bestandsnummer	Vereist. Elk geldig bestandsnummer.
recnummer	Optioneel. Variant (Long). Een recordnummer (bestanden in de modus Random) of bytenummer (bestanden in de modus Binary) waar het schrijven begint.
Varnaam	Vereist. Een naam van de variabele met de gegevens die naar de schijf worden geschreven.
Notities

Gegevens die worden geschreven met Put worden meestal met Get gelezen uit een bestand.

De eerste record of byte in een bestand bevindt zich op positie 1, de tweede record of byte op positie 2, enzovoort. Als u geen recnummer opgeeft, wordt de volgende record of byte geschreven. Dit is de record of byte na de laatste instructie Get of Put, of de record of byte die is aangewezen toen u de functie Seek de laatste keer hebt uitgevoerd. Gebruik komma's als scheidingsteken, bijvoorbeeld:

Put #4,,BestandsBuffer

Voor bestanden die zijn geopend in de modus Random, gelden de volgende regels:

•	Als de lengte van de gegevens die u wilt schrijven kleiner is dan de lengte in de component Len van de instructie Open, worden met Put ook volgende records vanaf recordlengtebegrenzingen geschreven. De ruimte tussen het einde van de ene record en het begin van de volgende record wordt opgevuld met de inhoud van de bestandsbuffer. Aangezien het moeilijk is om exact te bepalen hoeveel opvulgegevens aanwezig zijn, is het verstandig om een record dezelfde lengte te geven als de gegevens die worden geschreven. Er treedt een fout op als de gegevens langer zijn dan de lengte die u hebt opgegeven in de component Len van de instructie Open.

•	Als de variabele die wordt geschreven een tekenreeks met variabele lengte is, wordt met Put een descriptor van 2 bytes geschreven die de lengte van de tekenreeks bevat en wordt vervolgens de variabele geschreven. Vervolgens worden de gegevens van de tekenreeks geschreven. De recordlengte zoals aangegeven in de component Len van de instructie Open dient ten minste 2 bytes groter te zijn dan de feitelijke lengte van de tekenreeks.

•	Als de variabele die wordt geschreven een Variant is van een numeriek type, heeft Put 2 bytes nodig om het VarType van de Variant aan te duiden en wordt vervolgens de variabele geschreven. Bij een Variant van VarType 3, schrijft Put bijvoorbeeld 6 bytes: 2 bytes om de Variant aan te duiden als VarType 3 (Long) en 4 bytes met de Long-gegevens. De recordlengte zoals aangegeven in de component Len van de instructie Open, moet ten minste 2 bytes groter zijn dan het feitelijke aantal bytes dat nodig is om de variabele op te slaan.

Opmerking Met de instructie Put kunt u wel een Variant-matrix naar de schijf schrijven, maar geen scalaire Variant met een matrix. U kunt Put evenmin gebruiken om een object naar de schijf te schrijven.

•	Als de variabele die wordt geschreven een Variant van VarType 8 (String) is, heeft Put 2 bytes nodig om het VarType aan te duiden en 2 bytes om de lengte van de tekenreeks aan te geven. Vervolgens worden de gegevens van de tekenreeks geschreven. De recordlengte zoals aangegeven in de component Len van de instructie Open dient ten minste 4 bytes groter te zijn dan de feitelijke lengte van de tekenreeks.

•	Als de variabele die wordt geschreven een dynamische matrix is, schrijft Put een descriptor waarvan de lengte gelijk is aan 2 plus 8 maal het aantal dimensies, dat wil zeggen, 2 + 8 * AantalDimensies. De recordlengte zoals is aangegeven in de component Len van de instructie Open moet groter zijn dan of gelijk zijn aan de som van alle bytes die nodig zijn om de gegevens uit de matrix en de matrixdescriptor te schrijven. De volgende matrixdeclaratie neemt bijvoorbeeld 118 bytes aan schijfruimte in beslag.

Dim MijnMatrix(1 To 5,1 To 10) As Integer

•	De 118 bytes kunnen als volgt worden herleid: 18 bytes voor de descriptor (2 + 8 * 2) en 100 bytes voor de gegevens (5 * 10 * 2).

•	Als de variabele die wordt geschreven een matrix is met een vaste lengte, schrijft Put alleen de gegevens. Er wordt geen descriptor naar de schijf geschreven.

•	Als de variabele die wordt geschreven een ander type variabele is (geen tekenreeks met variabele lengte of een Variant), schrijft Put alleen de variabele gegevens. De recordlengte zoals is aangegeven in de component Len van de instructie Open dient groter of gelijk te zijn aan de lengte van de gegevens die worden geschreven.

•	Put schrijft de onderdelen van door de gebruiker gedefinieerde typen als afzonderlijke onderdelen. Nu worden echter geen opvulgegevens tussen de onderdelen opgenomen. Als u met Put een dynamische matrix schrijft van een door de gebruiker gedefinieerd gegevenstype, wordt deze voorafgegaan door een descriptor waarvan de lengte gelijk is aan 2 plus 8 maal het aantal dimensies, dat wil zeggen, 2 + 8 * AantalDimensies. De recordlengte zoals aangegeven in de component Len van de instructie Open dient groter te zijn dan of gelijk aan de som van alle bytes die nodig zijn om de afzonderlijke onderdelen, inclusief matrices en descriptors te schrijven.

Voor bestanden die zijn geopend in de modus Binary, gelden alle regels voor Random, met de volgende uitzonderingen:

•	De component Len van de instructie Open heeft geen enkele invloed. Put schrijft alle variabelen aaneengesloten naar de schijf, dat wil zeggen zonder opvulgegevens tussen de records.

•	Als de matrix niet van een door de gebruiker gedefinieerd gegevenstype is, schrijft Put alleen de gegevens. In dat geval wordt geen descriptor geschreven.

•	Put schrijft tekenreeksen met variabele lengte die geen onderdeel zijn van door de gebruiker gedefinieerde typen, zonder de descriptor van 2 bytes. Het aantal bytes dat wordt geschreven is gelijk aan het aantal tekens dat al in de tekenreeks aanwezig is. Uit de volgende instructies kunt u bijvoorbeeld opmaken dat er 10 bytes worden geschreven naar bestand nummer 1:

VarReeks$ = String$(10," ")

Put #1,,VarReeks$


Reset, instructie

Sluit alle bestanden die zijn geopend met de instructie Open.

Syntaxis

Reset

Notities

De instructie Reset sluit alle actieve bestanden die zijn geopend met de instructie Open en schrijft de inhoud van de bestandsbuffers naar de schijf.


Seek, functie

Geeft als resultaat een Long-waarde met de huidige lees-/schrijfpositie in een bestand dat is geopend met de instructie Open.

Syntaxis

Seek(bestandsnummer)

Het vereiste argument bestandsnummer is een Integer met een geldig bestandsnummer.

Notities

Seek geeft als resultaat een waarde die ligt in het bereik van 1 tot en met 2.147.483.647 (gelijk aan 2^31 – 1).

De volgende tabel geeft de resultaatwaarden voor elk van de bestandstoegangsmodi.

Modus	Resultaatwaarde
Random	Het nummer van het volgende record dat wordt gelezen of geschreven.
Binary Output Append Input	De positie van de byte waarop de volgende bewerking begint. De eerste byte van een bestand bevindt zich op positie 1, de tweede byte op positie 2, enzovoort.


Seek, instructie

Bepaalt de positie voor de volgende lees- of schrijfbewerking in een bestand dat is geopend met de instructie Open.

Syntaxis

Seek [#]bestandsnummer, positie

De syntaxis van de instructie Seek bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
bestandsnummer	Vereist. Elk geldig bestandsnummer.
positie	Vereist. Een getal tussen 1 en 2.147.483.647 dat aangeeft waar de volgende lees- of schrijfbewerking dient plaats te vinden.
Notities

Als u recordnummers hebt opgegeven bij de instructies Get en Put, vervangen deze de positieaanduiding van Seek.

Als u met Seek een positie na het einde van het bestand opgeeft en dit bestand vervolgens schrijft, wordt het bestand groter. Er treedt een fout op wanneer u een negatief getal of nul opgeeft in de instructie Seek.


Spc, functie

Wordt gebruikt met de instructie Print # of de methode Print om de plaats van de uitvoer te bepalen.

Syntaxis

Spc(n)

Het vereiste argument n geeft het aantal spaties aan dat wordt ingevoegd voordat de volgende expressie van een lijst wordt weergegeven of afgedrukt.

Notities

Als n is kleiner is dan de breedte van de uitvoerregel, wordt het volgende element direct na de opgegeven hoeveelheid spaties afgedrukt. Als n groter is dan de breedte van de uitvoerregel, rekent Spc met de volgende formule uit wat de afdrukpositie voor het volgende element is:

huidigeafdrukpositie + (n Mod breedte)

Wanneer de huidige afdrukpositie bijvoorbeeld 24 is, de breedte van de uitvoerregel 80 en u Spc(90) opgeeft, wordt het volgende element afgedrukt vanaf positie 34 (huidige afdrukpositie + het restant van 90-80). Wanneer het verschil tussen de huidige afdrukpositie en de breedte van de uitvoerregel kleiner is dan n (of n Mod breedte), verspringt de functie Spc naar het begin van de volgende regel en wordt een aantal spaties geplaatst dat gelijk is aan n – (breedte – huidigeafdrukpositie).

Opmerking   Zorg dat de kolommen in uw tabellen ook breed genoeg zijn voor brede letters.

Wanneer u afdrukt volgens de methode Print en daarbij een proportioneel lettertype gebruikt, is de breedte van de spaties die u afdrukt met de functie Spc het gemiddelde van de breedte van alle tekens met de puntgrootte van het gekozen lettertype. Er bestaat echter geen correlatie tussen het aantal afgedrukte tekens en het aantal kolommen met vaste lengte dat in beslag wordt genomen door deze tekens. De hoofdletter W neemt bijvoorbeeld meer dan één kolom met vaste lengte in beslag en de kleine letter i minder dan één kolom.


Tab, functie

Wordt gebruikt met de instructie Print # of de methode Print om de plaats van de uitvoer te bepalen.

Syntaxis

Tab[(n)]

Het optionele argument n geeft het kolomnummer aan waarnaar de cursor wordt verplaatst voordat de volgende expressie van een lijst wordt weergegeven of afgedrukt. Als u n weglaat, verplaatst Tab de invoegpositie naar het begin van het volgende afdrukgebied. Hierdoor kunt u in de lokale instellingen, waar de komma het decimale scheidingsteken is, de functie Tab gebruiken in plaats van komma's.

Notities

Wanneer de huidige afdrukpositie op de huidige regel groter is dan n, springt Tab naar de nde kolom op de volgende uitvoerregel. Als n kleiner is dan 1, verplaatst Tab de afdrukpositie naar kolom 1. Als n groter is dan de breedte van de uitvoerregel, berekent Tab de volgende afdrukpositie met de volgende formule:

n Mod breedte

Als de breedte bijvoorbeeld 80 is en u geeft Tab(90) op, wordt het volgende element afgedrukt vanaf kolom 10 (het restant van 90-80). Als n kleiner is dan de huidige afdrukpositie, wordt op de volgende regel op de berekende positie begonnen met afdrukken. Als de berekende afdrukpositie groter is dan de huidige afdrukpositie, wordt op de berekende positie op dezelfde regel begonnen met afdrukken.

De meest linkse afdrukpositie op een uitvoerregel is altijd 1. Als u de instructie Print # gebruikt om naar bestanden af te drukken, is de meest rechtse afdrukpositie de huidige breedte van het uitvoerbestand. U kunt deze breedte instellen met behulp van de instructie Width #.

Opmerking   Zorg dat de kolommen in uw tabellen ook breed genoeg zijn voor brede letters.

Wanneer u afdrukt volgens de methode Print en daarbij de functie Tab gebruikt, wordt de afdrukbreedte onderverdeeld in gelijke kolommen met een vaste lengte. De kolombreedte is het gemiddelde van de breedte van alle tekens met de puntgrootte van het gekozen lettertype. Er bestaat echter geen correlatie tussen het aantal afgedrukte tekens en het aantal kolommen met vaste lengte dat in beslag wordt genomen door deze tekens. De hoofdletter W neemt bijvoorbeeld meer dan één kolom met vaste lengte in beslag en de kleine letter i minder dan één kolom.


Width #, instructie

Wijst een waarde voor de breedte van de uitvoerregel toe aan een bestand dat is geopend met de instructie Open.

Syntaxis

Width #bestandsnummer, breedte

De syntaxis van de instructie Width # bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
bestandsnummer	Vereist. Elk geldig bestandsnummer.
breedte	Vereist. Een numerieke expressie in het bereik van 0 tot en met 255 die aangeeft hoeveel tekens er op een regel worden geplaatst voordat er een nieuwe regel wordt begonnen. Als breedte gelijk is aan 0, is de lengte van een regel onbeperkt. De standaardwaarde voor breedte is 0.


Write #, instructie

Schrijft gegevens naar een sequentieel bestand.

Syntaxis

Write #bestandsnummer, [uitvoerlijst]

De syntaxis van de instructie Write # bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
bestandsnummer	Vereist. Elk geldig bestandsnummer.
uitvoerlijst	Optioneel. Een of meer door komma's van elkaar gescheiden numerieke expressies of tekenreeksexpressies die u naar een bestand wilt schrijven.
Notities

Gegevens die worden geschreven met Write # worden meestal met Input # gelezen uit een bestand.

Als u uitvoerlijst weglaat en een komma typt achter bestandsnummer, wordt een witregel in het bestand geplaatst. U kunt expressies van elkaar scheiden door een spatie, een puntkomma of een komma. Een spatie heeft dezelfde werking als een puntkomma.

Als u Write # gebruikt om gegevens naar een bestand uit te voeren, gebeurt dit volgens algemene instellingen, waardoor de gegevens altijd kunnen worden gelezen met Input #, ongeacht de lokale instellingen:

•	In numerieke gegevens wordt de punt (.) altijd als decimaal scheidingsteken gebruikt.

•	Bij gegevens van het type Boolean wordt #TRUE# of #FALSE# afgedrukt. De sleutelwoorden True en False worden niet vertaald, ongeacht de lokale instellingen.

•	Gegevens van het type Date worden in de algemene datumnotatie naar het bestand geschreven. Als het datum- of tijdgedeelte ontbreekt of nul is, wordt alleen het andere gedeelte naar het bestand geschreven.

•	Er wordt niets naar het bestand geschreven als de gegevens van uitvoerlijst de waarde Empty hebben. Bij gegevens met de waarde Null wordt echter #NULL# als uitvoer gegeven.

•	Als de gegevens in uitvoerlijst Null-gegevens zijn, wordt #NULL# naar het bestand geschreven.

•	Bij gegevens van het type Error verschijnt de volgende uitvoer: Het sleutelwoord Error wordt niet vertaald, ongeacht de lokale instellingen.

In tegenstelling tot de instructie Print # worden met de instructie Write # komma's tussen de onderdelen en aanhalingstekens om de reeksen heen geplaatst op het moment dat deze naar het bestand worden geschreven. U hoeft geen aparte scheidingstekens in de lijst op te nemen. Als u Write # gebruikt, wordt er automatisch een nieuwe-regelteken, in dit geval een regelterugloopteken (Chr(13) + Chr(10)), ingevoegd nadat het laatste teken in uitvoerlijst naar het bestand is geschreven.

Opmerking   Gebruik in de instructie Input # nooit tekenreeksen die zelf aanhalingstekens bevatten, zoals in "1,2""X": Input # beschouwt deze tekenreeks als twee volledige en gescheiden tekenreeksen.


Voorbeeld van de functie DDB

Dit voorbeeld laat zien hoe de functie DDB wordt gebruikt om de afschrijving te geven van een creditpost gedurende een opgegeven periode op basis van de beginkosten (InitCost), de waarde van de creditpost aan het einde van de nuttige levensduur (SalvageVal), de lengte van de levensduur van de creditpost in jaren (LifeTime) en de periode uitgedrukt in jaren waarover de afschrijving van de creditpost wordt berekend (Depr).

Dim Fmt, InitCost, SalvageVal, MonthLife, LifeTime, DepYear, Depr

Const YRMOS = 12	' Aantal maanden in een jaar.

Fmt = "###.##0,00"

InitCost = InputBox("Wat zijn de beginkosten van de creditpost?")

SalvageVal = InputBox("Voer de waarde in van de creditpost aan het einde van zijn levensduur.")

MonthLife = InputBox("Wat is de nuttige levensduur van de creditpost in maanden?")

Do While MonthLife < YRMOS	' Zorg ervoor dat de periode >= 1 jaar is.

MsgBox "Levensduur creditpost moet een jaar of langer zijn."

MonthLife = InputBox("Wat is de nuttige levensduur van de creditpost in maanden?")

Loop

LifeTime = MonthLife / YRMOS	' Converteer maanden in jaren.

If LifeTime <> Int(MonthLife / YRMOS) Then

LifeTime = Int(LifeTime + 1)	' Rond af naar meest nabije jaar.

End If

DepYear = CInt(InputBox("Voer jaar in voor berekening afschrijving."))

Do While DepYear < 1 Or DepYear > LifeTime

MsgBox "U moet ten minste 1 invoeren maar niet meer dan " & LifeTime

DepYear = InputBox("Voer jaar in voor berekening afschrijving.")

Loop

Depr = DDB(InitCost, SalvageVal, LifeTime, DepYear)

MsgBox "De afschrijving voor " & DepYear & " is " & _

Format(Depr, Fmt) & "."


Voorbeeld van de functie FV

In dit voorbeeld geeft de functie FV als resultaat de toekomstige waarde van een investering op basis van de rentevoet die groeit per periode (APR / 12), het totale aantal betalingen (TotPmts), de betaling (Payment), de huidige waarde van de investering (PVal) en een getal dat aangeeft of een betaling aan het begin of aan het einde van de betaalperiode plaatsvindt (PayType). Omdat Payment een uitbetaald bedrag vertegenwoordigt, is het een negatief getal.

Dim Fmt, Payment, APR, TotPmts, PayType, PVal, FVal

Const ENDPERIOD = 0, BEGINPERIOD = 1	' Wanneer betalingen plaatsvinden.

Fmt = "###.###.##0,00"	' Definieer valutanotatie.

Payment = InputBox("Hoeveel wilt u per maand sparen?")

APR = InputBox("Voer de verwachte rente in van de jaarlijkse rentevoet.")

If APR > 1 Then APR = APR / 100	' Zorg voor de juiste vorm.

TotPmts = InputBox("Gedurende hoeveel maanden verwacht u te sparen?")

PayType = MsgBox("Vinden de betalingen aan het eind van de maand plaats?", vbYesNo)

If PayType = vbNo Then PayType = BEGINPERIOD Else PayType = ENDPERIOD

PVal = InputBox("Hoeveel staat er nu op deze spaarrekening?")

FVal = FV(APR / 12, TotPmts, -Payment, -PVal, PayType)

MsgBox "Uw spaarrekening bedraagt dan " & Format(FVal, Fmt) & "."


Voorbeeld van de functie IPmt

Dit voorbeeld maakt gebruik van de functie IPmt om te berekenen welk deel van een betaling rente is wanneer alle betalingen dezelfde waarde hebben. Gegeven zijn de rentevoet per periode (APR / 12), de betalingsperiode waarvoor het rentedeel gewenst wordt (Period), het totale aantal betalingen (TotPmts), de huidige waarde van de hoofdsom van de lening (PVal), de toekomstige waarde van de lening (FVal) en een getal dat aangeeft of de betalingen aan het begin of aan het eind van de betalingsperiode plaatsvinden (PayType).

Dim FVal, Fmt, PVal, APR, TotPmts, PayType, Period, IntPmt, TotInt, Msg

Const ENDPERIOD = 0, BEGINPERIOD = 1	' Wanneer de betalingen plaatsvinden.

FVal = 0	' Gewoonlijk 0 voor een lening.

Fmt = "###.###.##0,00"	' Definieer valutanotatie.

PVal = InputBox("Hoeveel wilt u lenen?")

APR = InputBox("Wat is de jaarlijkse rentevoet van uw lening?")

If APR > 1 Then APR = APR / 100	' Zorg voor de juiste vorm.

TotPmts = InputBox("Hoeveel maandelijkse betalingen?")

PayType = MsgBox("Vinden de betalingen aan het eind van de maand plaats?", vbYesNo)

If PayType = vbNo Then PayType = BEGINPERIOD Else PayType = ENDPERIOD

For Period = 1 To TotPmts	' Tel alle rentebedragen bij elkaar op.

IntPmt = IPmt(APR / 12, Period, TotPmts, -PVal, FVal, PayType)

TotInt = TotInt + IntPmt

Next Period

Msg = "U betaalt in totaal " & Format(TotInt, Fmt)

Msg = Msg & " aan rente voor deze lening."

MsgBox Msg	' Toon resultaten.


Voorbeeld van de functie IRR

In dit voorbeeld berekent de functie IRR de interne rentabiliteit voor een reeks van 5 cash flows in de matrix Values(). Het eerste matrixonderdeel is een negatieve cash flow die de opstartkosten vertegenwoordigt. De overige 4 cash flows vertegenwoordigen positieve cash flows voor de volgende 4 jaren. Guess is de geschatte rentabiliteit.

Dim Guess, Fmt, RetRate, Msg

Static Values(5) As Double	' Stelt een matrix samen.

Guess = .1	' Geschatte rentabiliteit begint op 10 procent.

Fmt = "#0,00"	' Definieer percentagenotatie.

Values(0) = -70000	' Opstartkosten van bedrijf.

' Positieve cash flows die de inkomsten uitdrukken voor vier opeenvolgende jaren.

Values(1) = 22000 : Values(2) = 25000

Values(3) = 28000 : Values(4) = 31000

RetRate = IRR(Values(), Guess) * 100	' Bereken interne rentabiliteit.

Msg = "De interne rentabiliteit voor deze vijf cash flows is "

Msg = Msg & Format(RetRate, Fmt) & " procent."

MsgBox Msg	' Geef interne rentabiliteit weer.


Voorbeeld van de functie MIRR

Dit voorbeeld maakt gebruik van de functie MIRR om de gewijzigde interne rentabiliteit te geven voor een reeks cash flows in de matrix Values(). LoanAPR vertegenwoordigt de rente over de financiering en InvAPR vertegenwoordigt de rente die wordt ontvangen over herinvestering.

Dim LoanAPR, InvAPR, Fmt, RetRate, Msg

Static Values(5) As Double	' Stelt een matrix samen.

LoanAPR = .1	' Rente over financiering.

InvAPR = .12	' Herinvesteringsrente.

Fmt = "#0,00"	' Definieer valutanotatie.

Values(0) = -70000	' Opstartkosten van bedrijf.

' Positieve cash flows die inkomsten voor vier opeenvolgende jaren uitdrukken.

Values(1) = 22000 : Values(2) = 25000

Values(3) = 28000 : Values(4) = 31000

RetRate = MIRR(Values(), LoanAPR, InvAPR)	' Bereken interne rentabiliteit.

Msg = "De gewijzigde interne rentabiliteit voor deze cash flows is"

Msg = Msg & Format(Abs(RetRate) * 100, Fmt) & "%."

MsgBox Msg	' Geef interne rentabiliteit

' weer.


Voorbeeld van de functie NPer

Dit voorbeeld maakt gebruik van de functie NPer om het aantal perioden te geven gedurende welke betalingen moeten plaatsvinden om een lening af te lossen waarvan de waarde is opgenomen in PVal. Gegeven zijn de rentevoet per periode (APR / 12), de betaling (Payment), de toekomstige waarde van de lening (FVal) en een getal dat aangeeft of de betaling aan het eind of aan het begin van de betaalperiode plaatsvindt  (PayType).

Dim FVal, PVal, APR, Payment, PayType, TotPmts

Const ENDPERIOD = 0, BEGINPERIOD = 1	' Wanneer de betalingen plaatsvinden.

FVal = 0	' Gewoonlijk 0 voor een lening.

PVal = InputBox("Hoeveel wilt u lenen?")

APR = InputBox("Wat is de jaarlijkse rentevoet van uw lening?")

If APR > 1 Then APR = APR / 100	' Zorg voor de juiste vorm.

Payment = InputBox("Hoeveel wilt u per maand betalen?")

PayType = MsgBox("Vinden de betalingen aan het eind van de maand plaats?", vbYesNo)

If PayType = vbNo Then PayType = BEGINPERIOD Else PayType = ENDPERIOD

TotPmts = NPer(APR / 12, -Payment, PVal, FVal, PayType)

If Int(TotPmts) <> TotPmts Then TotPmts = Int(TotPmts) + 1

MsgBox "U doet er " & TotPmts & " maanden over om uw lening af te lossen."


Voorbeeld van de functie NPV

Dit voorbeeld maakt gebruik van de functie NPV om de netto huidige waarde te geven van een reeks periodieke cash flows in de matrix Values(). RetRate vertegenwoordigt de vaste interne rentabiliteit.

Dim Fmt, Guess, RetRate, NetPVal, Msg

Static Values(5) As Double	' Stelt een matrix samen.

Fmt = "###.##0,00"	' Definieer valutanotatie.

Guess = .1	' Geschatte rentabiliteit begint op 10 procent.

RetRate = .0625	' Stel vaste interne rentabiliteit in.

Values(0) = -70000	' Opstartkosten van bedrijf.

' Positieve cash flows die inkomsten voor vier opeenvolgende jaren uitdrukken.

Values(1) = 22000 : Values(2) = 25000

Values(3) = 28000 : Values(4) = 31000

NetPVal = NPV(RetRate, Values())	' Bereken netto huidige waarde.

Msg = "De netto huidige waarde van deze cash flows is "

Msg = Msg & Format(NettoPVal, Fmt) & "."

MsgBox Msg	' Geef netto huidige waarde weer.


Voorbeeld van de functie Pmt

Dit voorbeeld maakt gebruik van de functie Pmt om de maandelijkse aflossing van een lening gedurende een vaste periode als resultaat te geven. Gegeven zijn de rentevoet per periode (APR / 12), het totale aantal betalingen (TotPmts), de huidige waarde of hoofdsom van de lening (PVal), de toekomstige waarde van de lening (FVal) en een getal dat aangeeft of de betaling aan het begin of aan het eind van de betaalperiode plaatsvindt (PayType).

Dim Fmt, FVal, PVal, APR, TotPmts, PayType, Payment

Const ENDPERIOD = 0, BEGINPERIOD = 1	' Wanneer de betalingen plaatsvinden.

Fmt = "###.###.##0,00"	' Definieer valutanotatie.

FVal = 0	' Gewoonlijk 0 voor een lening.

PVal = InputBox("Hoeveel wilt u lenen?")

APR = InputBox("Wat is de jaarlijkse rentevoet van uw lening?")

If APR > 1 Then APR = APR / 100	' Zorg voor de juiste vorm.

TotPmts = InputBox("Hoeveel maandelijkse betalingen zullen er plaatsvinden?")

PayType = MsgBox("Vinden de betalingen aan het eind van de maand plaats?", vbYesNo)

If PayType = vbNo Then PayType = BEGINPERIOD Else PayType = ENDPERIOD

Payment = Pmt(APR / 12, TotPmts, -PVal, FVal, PayType)

MsgBox "Uw maandelijkse betaling is " & Format(Payment, Fmt) & "."


Voorbeeld van de functie PPmt

Dit voorbeeld maakt gebruik van de functie PPmt om te berekenen welk deel van een betaling voor een bepaalde periode de hoofdsom is wanneer alle betalingen even groot zijn. Gegeven zijn de rentevoet per periode (APR / 12), de betalingsperiode waarvoor het deel van de hoofdsom gewenst wordt (Period), het totale aantal betalingen (TotPmts), de huidige waarde of hoofdsom van de lening (PVal), de toekomstige waarde van de lening (FVal) en een getal dat aangeeft of de betalingen aan het begin of aan het eind van de betalingsperiode plaatsvinden (PayType).

Dim NL, TB, Fmt, FVal, PVal, APR, TotPmts, PayType, Payment, Msg, MakeChart, Period, P, I

Const ENDPERIOD = 0, BEGINPERIOD = 1	' Wanneer de betalingen plaatsvinden.

NL = Chr(13) & Chr(10)	' Definieer nieuwe regel.

TB = Chr(9)	' Definieer tab.

Fmt = "###.###.##0,00"	' Definieer valutanotatie.

FVal = 0	' Gewoonlijk 0 voor een lening.

PVal = InputBox("Hoeveel wilt u lenen?")

APR = InputBox("Wat is de jaarlijkse rentevoet van uw lening?")

If APR > 1 Then APR = APR / 100	' Zorg voor de juiste vorm.

TotPmts = InputBox("Hoeveel maandelijkse betalingen vinden er plaats?")

PayType = MsgBox("Vinden de betalingen aan het eind van de maand plaats?", vbYesNo)

If PayType = vbNo Then PayType = BEGINPERIOD Else PayType = ENDPERIOD

Payment = Abs(-Pmt(APR / 12, TotPmts, PVal, FVal, PayType))

Msg = "Uw maandelijkse betaling is " & Format(Payment, Fmt) & ". "

Msg = Msg & "Wilt u een specificatie van de hoofdsom en "

Msg = Msg & "rente per periode?"

MakeChart = MsgBox(Msg, vbYesNo)	' Kijk of een grafiek is gevraagd.

If MakeChart <> vbNo Then

If TotPmts > 12 Then MsgBox "Alleen eerste jaar wordt weergegeven."

Msg = "Maand  Betaling  Hoofdsom  Rente" & NL

For Period = 1 To TotPmts

If Period > 12 Then Exit For	' Toon alleen eerste 12.

P = PPmt(APR / 12, Period, TotPmts, -PVal, FVal, PayType)

P = (Int((P + .005) * 100) / 100)	' Rond hoofdsom af.

I = Payment - P

I = (Int((I + .005) * 100) / 100)	' Rond rente af.

Msg = Msg & Period & TB & Format(Payment, Fmt)

Msg = Msg & TB & Format(P, Fmt) & TB & Format(I, Fmt) & NL

Next Period

MsgBox Msg	' Geef afschrijvingstabel weer.

End If


Voorbeeld van de functie PV

In dit voorbeeld geeft de functie PV als resultaat de huidige waarde van een annuïteit van fel. 1.000.000 die de komende 20 jaar fl. 50.000 per jaar zal opleveren. Gegeven zijn de verwachte jaarlijkse rentevoet (APR), het totale aantal betalingen (TotPmts), het bedrag van elke betaling (YrIncome), de totale toekomstige waarde van de investering (FVal) en een getal dat aangeeft of een betaling aan het begin of aan het eind van de betalingsperiode plaatsvindt (PayType). Omdat YrIncome een jaarlijks uitbetaald bedrag van de annuïteit vertegenwoordigt, is het een negatief getal.

Dim Fmt, APR, TotPmts, YrIncome, FVal, PayType, PVal

Const ENDPERIOD = 0, BEGINPERIOD = 1	' Wanneer de betalingen plaatsvinden.

Fmt = "###.##0,00"	' Definieer valutanotatie.

APR = .0825	' Jaarlijkse rentevoet.

TotPmts = 20	' Totaal aantal betalingen.

YrIncome = 50000	' Jaarinkomen.

FVal = 1000000	' Toekomstige waarde.

PayType = BEGINPERIOD	' Betaling aan begin van maand.

PVal = PV(APR, TotPmts, -YrIncome, FVal, PayType)

MsgBox "De huidige waarde is " & Format(PVal, Fmt) & "."


Voorbeeld van de functie Rate

Dit voorbeeld maakt gebruik van de functie Rate om de rentevoet van de lening te berekenen op basis van het totale aantal betalingen (TotPmts), de omvang van de betaling van de lening (Payment), de huidige waarde of hoofdsom van de lening (PVal), de toekomstige waarde van de lening (FVal), een getal dat aangeeft of de betaling aan het begin of aan het eind van de betalingsperiode plaatsvindt (PayType) en een benadering van de verwachte rentevoet (Guess).

Dim Fmt, FVal, Guess, PVal, Payment, TotPmts, PayType, APR

Const ENDPERIOD = 0, BEGINPERIOD = 1	' Wanneer de betalingen plaatsvinden.

Fmt = "##0,00"	' Definieer percentagenotatie.

FVal = 0	' Gewoonlijk 0 voor een lening.

Guess = .1	' Verwachte rentevoet 10 procent.

PVal = InputBox("Hoeveel hebt u geleend?")

Payment = InputBox("Hoeveel betaalt u per maand?")

TotPmts = InputBox("Hoeveel maandelijkse betalingen vinden er plaats?")

PayType = MsgBox("Vinden de betalingen aan het eind van de maand plaats?", _

vbYesNo)

If PayType = vbNo Then PayType = BEGINPERIOD Else PayType = ENDPERIOD

APR = (Rate(TotPmts, -Payment, PVal, FVal, PayType, Guess) * 12) * 100

MsgBox "Uw rente is " & Format(CInt(APR), Fmt) & " procent."


Voorbeeld van de functie SLN

Dit voorbeeld maakt gebruik van de functie SLN om de lineaire afschrijving van een creditpost voor een afzonderlijke periode te geven op basis van de beginkosten van de creditpost (InitCost), de waarde aan het einde van de nuttige levensduur (SalvageVal) en de totale levensduur van de creditpost in jaren (LifeTime).

Dim Fmt, InitCost, SalvageVal, MonthLife, LifeTime, PDepr

Const YEARMONTHS = 12	' Aantal maanden in een jaar.

Fmt = "###.##0,00"	' Definieer valutanotatie.

InitCost = InputBox("Wat zijn de beginkosten van de creditpost?")

SalvageVal = InputBox("Wat is de waarde van de creditpost aan het einde van de nuttige levensduur?")

MonthLife = InputBox("Wat is de nuttige levensduur van de creditpost in maanden?")

Do While MonthLife < YEARMONTHS	' Zorg ervoor dat de periode >= 1 jaar is.

MsgBox "Levensduur creditpost moet een jaar of langer zijn."

MonthLife = InputBox("Wat is de nuttige levensduur van de creditpost in maanden?")

Loop

LifeTime = MonthLife / YEARMONTHS	' Converteer maanden in jaren.

If LifeTime <> Int(MonthLife / YEARMONTHS) Then

LifeTime = Int(LifeTime + 1)	' Rond af naar meest nabije jaar.

End If

PDepr = SLN(InitCost, SalvageVal, LifeTime)

MsgBox "De afschrijving is " & Format(PDepr, Fmt) & " per jaar."


Voorbeeld van de functie SYD

Dit voorbeeld laat zien hoe de functie SYD wordt gebruikt om de afschrijving te geven van een creditpost voor een bepaalde periode op basis van de beginkosten van de creditpost (InitCost), de restwaarde van de creditpost aan het einde van de nuttige levensduur (SalvageVal) en de totale levensduur van de creditpost in jaren (LifeTime). De periode uitgedrukt in jaren waarover de afschrijving wordt berekend, is PDepr.

Dim Fmt, InitCost, SalvageVal, MonthLife, LifeTime, DepYear, PDepr

Const YEARMONTHS = 12	' Aantal maanden in een jaar.

Fmt = "###.##0,00"	' Definieer valutanotatie.

InitCost = InputBox("Wat zijn de beginkosten van de creditpost?")

SalvageVal = InputBox("Wat is de waarde van de creditpost aan het einde van de levensduur?")

MonthLife = InputBox("Wat is de nuttige levensduur van de creditpost in maanden?")

Do While MonthLife < YEARMONTHS	' Zorg ervoor dat de periode >= 1 jaar is.

MsgBox "Levensduur creditpost moet een jaar of langer zijn."

MonthLife = InputBox("Wat is de nuttige levensduur van de creditpost in maanden?")

Loop

LifeTime = MonthLife / YEARMONTHS	' Converteer maanden in jaren.

If LifeTime <> Int(MonthLife / YEARMONTHS) Then

LifeTime = Int(LifeTime + 1)	' Rond af naar meest nabije jaar.

End If

DepYear = CInt(InputBox("Voor welk jaar wilt u afschrijving?"))

Do While DepYear < 1 Or DepYear > LifeTime

MsgBox "U moet ten minste 1 invoeren maar niet meer dan " & LifeTime

DepYear = CInt(InputBox("Voor welk jaar wilt u afschrijving?"))

Loop

PDepr = SYD(InitCost, SalvageVal, LifeTime, DepYear)

MsgBox "De afschrijving voor het jaar " & DepYear & " is " & Format(PDepr, Fmt) & "."


DDB, functie

Geeft als resultaat een Double-waarde met de afschrijving van een creditpost voor een bepaalde periode. Dit geschiedt op basis van afschrijving op basis van verdubbeld vast percentage van de boekwaarde, of een andere methode die u opgeeft.

Syntaxis

DDB(cost, salvage, life, period[, factor])

De functie DDB heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
cost	Vereist. Een Double-waarde met de beginkosten van de creditpost.
salvage	Vereist. Een Double-waarde met de waarde van de creditpost aan het einde van de nuttige levensduur.
life	Vereist. Een Double-waarde met de lengte van de nuttige levensduur van de creditpost.
period	Vereist. Een Double-waarde met de periode waarvoor de afschrijving van de creditpost wordt berekend.
factor	Optioneel. Een Variant met de mate waarin de balans afneemt. Als dit argument wordt weggelaten, wordt uitgegaan van 2 (“Double-Declining Balance”-methode).
Notities

Met de “Double-Declining Balance”-methode wordt de afschrijving versneld berekend. De afschrijving is het hoogst in de eerste periode en neemt af in de volgende perioden.

De argumenten life en period moeten in dezelfde eenheden worden uitgedrukt. Als life bijvoorbeeld is opgegeven in maanden, moet period ook in maanden worden opgegeven. Alle argumenten moeten positieve getallen zijn.

De functie DDB gebruikt de volgende formule om de afschrijving voor een gegeven periode te berekenen:

Afschrijving / period = ((cost – salvage) * factor) / life


FV, functie

Geeft als resultaat een Double-waarde met de toekomstige waarde van een annuïteit op basis van periodieke, constante betalingen en een constante rentevoet.

Syntaxis

FV(rate, nper, pmt[, pv[, type]])

De functie FV heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
rate	Vereist. Een Double-waarde met de rentevoet per periode. Als u bijvoorbeeld een lening hebt voor een auto met een jaarlijkse rente van 10 procent en u deze per maand afbetaalt, is de rentevoet per periode 0,1/12 of 0,0083.
nper	Vereist. Een Integer-waarde met het totale aantal betalingsperioden in de annuïteit. Als u bijvoorbeeld maandelijks afbetaalt op een autolening van vier jaar, bestaat de lening in totaal uit 4 * 12 (of 48) betalingsperioden.
pmt	Vereist. Een Double-waarde met de betaling die in elke periode moet plaatsvinden. Betalingen bestaan normaal gesproken uit een hoofdsom- en rentegedeelte die ongewijzigd blijven tijdens de levensduur van de annuïteit.
pv	Optioneel. Een Variant met de huidige waarde van een reeks betalingen die in de toekomst moeten plaatsvinden. Als u bijvoorbeeld geld leent om een auto te kopen, is het bedrag van de lening voor de kredietverschaffer de huidige waarde van de maandelijkse afbetalingen die u in de toekomst verricht. Als dit argument wordt weggelaten, wordt uitgegaan van 0.
type	Optioneel. Een Variant met een getal dat aangeeft wanneer de betalingen plaatsvinden. Geef een 0 op als de betalingen aan het einde van de betalingsperiode plaatsvinden of een 1 als de betalingen aan het begin van de periode plaatsvinden. Als dit argument wordt weggelaten, wordt uitgegaan van 0.
Notities

Een annuïteit is een reeks constante betalingen die gedurende een bepaalde periode plaatsvinden. Een annuïteit kan een lening zijn (bijvoorbeeld een hypotheek voor een huis) of een investering (bijvoorbeeld een maandelijks spaarplan).

De argumenten rate en nper moeten worden berekend met betalingsperioden die zijn uitgedrukt in dezelfde eenheden. Als rate bijvoorbeeld op maandbasis wordt berekend, moet nper ook op maandbasis worden berekend.

Voor alle argumenten geldt dat betalingen (zoals stortingen op een spaarrekening) worden weergegeven door negatieve getallen en ontvangsten (zoals dividendinkomsten) worden weergegeven door positieve getallen.


IPmt, functie

Geeft als resultaat een Double-waarde met de rente voor een gegeven periode van een annuïteit, op basis van periodieke, constante betalingen en een constante rentevoet.

Syntaxis

IPmt(rate, per, nper, pv[, fv[, type]])

De functie IPmt heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
rate	Vereist. Een Double-waarde met de rentevoet per periode. Als u bijvoorbeeld een lening hebt voor een auto met een jaarlijkse rente van 10 procent en u deze per maand afbetaalt, is de rentevoet per periode 0,1/12 of 0,0083.
per	Vereist. Een Double-waarde met de betalingsperiode in het bereik van 1 tot en met nper.
nper	Vereist. Een Double-waarde met het totale aantal betalingsperioden in de annuïteit. Als u bijvoorbeeld maandelijks afbetaalt op een autolening van vier jaar, bestaat de lening in totaal uit 4 * 12 (of 48) betalingsperioden.
pv	Vereist. Een Double-waarde met de huidige waarde van een reeks toekomstige betalingen of ontvangsten. Als u bijvoorbeeld geld leent om een auto te kopen, is het bedrag van de lening voor de kredietverschaffer de huidige waarde van de maandelijkse afbetalingen die u in de toekomst verricht.
fv	Optioneel. Een Variant met de gewenste toekomstige waarde of het gewenste saldo nadat de laatste betaling heeft plaatsgevonden. De toekomstige waarde van een lening is bijvoorbeeld fl 0, aangezien dat de waarde is na de laatste betaling. Als u echter fl 50.000 wilt sparen voor de opleiding van uw kind over 18 jaar, is fl 50.000 de toekomstige waarde. Als dit argument wordt weggelaten, wordt uitgegaan van 0.
type	Optioneel. Een Variant met een getal dat aangeeft wanneer de betalingen plaatsvinden. Geef een 0 op als de betalingen aan het einde van de betalingsperiode plaatsvinden of een 1 als de betalingen aan het begin van de periode plaatsvinden. Als dit argument wordt weggelaten, wordt uitgegaan van 0.
Notities

Een annuïteit is een reeks constante betalingen die gedurende een bepaalde periode plaatsvinden. Een annuïteit kan een lening zijn (bijvoorbeeld een hypotheek voor een huis) of een investering (bijvoorbeeld een maandelijks spaarplan).

De argumenten rate en nper moeten worden berekend met betalingsperioden die zijn uitgedrukt in dezelfde eenheden. Als rate bijvoorbeeld op maandbasis wordt berekend, moet nper ook op maandbasis worden berekend.

Voor alle argumenten geldt dat betalingen (zoals stortingen op een spaarrekening) worden weergegeven door negatieve getallen en ontvangsten (zoals dividendinkomsten) worden weergegeven door positieve getallen.


IRR, functie

Geeft als resultaat een Double-waarde met de interne rentabiliteit voor een reeks periodieke cash flows (betalingen en ontvangsten).

Syntaxis

IRR(values()[, guess])

De functie IRR heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
values()	Vereist. Een matrix of Double-waarde met cash flow-waarden. De matrix moet ten minste één negatieve waarde (een betaling) en één positieve waarde (een ontvangst) bevatten.
guess	Optioneel. Een Variant met een schatting van de waarde die door IRR als resultaat wordt gegeven. Als dit argument wordt weggelaten, is guess 0,1 (10 procent).
Notities

De interne rentabiliteit is de rente die wordt ontvangen over een investering die bestaat uit betalingen en ontvangsten die met regelmatige tussenpozen plaatsvinden.

De functie IRR gebruikt de volgorde van waarden binnen de matrix om de volgorde van betalingen en ontvangsten te interpreteren. Let erop dat u de waarden voor de betalingen en ontvangsten in de juiste volgorde opgeeft. De cash flow voor elke periode hoeft niet constant te zijn zoals bij een annuïteit.

IRR wordt berekend door herhaling. De functie start de berekening met de waarde van guess en IRR gaat door totdat het resultaat tot op 0,00001 procent nauwkeurig is. Als na 20 pogingen geen resultaat wordt gevonden, mislukt IRR.


MIRR, functie

Geeft als resultaat een Double-waarde met de gewijzigde interne rentabiliteit voor een reeks periodieke cash flows (betalingen en ontvangsten).

Syntaxis

MIRR(values(), finance_rate, reinvest_rate)

De functie MIRR heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
values()	Vereist. Een matrix of Double-waarde met cash flow-waarden. De matrix moet ten minste één negatieve waarde (een betaling) en één positieve waarde (een ontvangst) bevatten.
finance_rate	Vereist. Een Double-waarde met de rente die wordt betaald als financieringskosten.
reinvest_rate	Vereist. Een Double-waarde met de rente die wordt ontvangen over winsten op herinvestering.
Notities

De gewijzigde interne rentabiliteit is de interne rentabiliteit wanneer betalingen en ontvangsten worden gefinancierd met verschillende rentevoeten. De functie MIRR houdt rekening met zowel de kosten van de investering (finance_rate) als de rente die wordt ontvangen over herinvestering (reinvest_rate).

De argumenten finance_rate en reinvest_rate zijn percentages die zijn uitgedrukt als decimale waarden. Zo wordt 12 procent uitgedrukt als 0,12.

De functie MIRR gebruikt de volgorde van waarden binnen de matrix om de volgorde van betalingen en ontvangsten te interpreteren. Let erop dat u de waarden voor de betalingen en ontvangsten in de juiste volgorde opgeeft.


NPer, functie

Geeft als resultaat een Double-waarde met het aantal perioden voor een annuïteit op basis van periodieke, constante betalingen en een constante rentevoet.

Syntaxis

NPer(rate, pmt, pv[, fv[, type]])

De functie NPer heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
rate	Vereist. Een Double-waarde met de rentevoet per periode. Als u bijvoorbeeld een lening hebt voor een auto met een jaarlijkse rente van 10 procent en u deze per maand afbetaalt, is de rentevoet per periode 0,1/12 of 0,0083.
pmt	Vereist. Een Double-waarde met de betaling die elke periode moet plaatsvinden. Betalingen bestaan normaal gesproken uit een hoofdsom- en rentegedeelte die ongewijzigd blijven tijdens de levensduur van de annuïteit.
pv	Vereist. Een Double-waarde met de huidige waarde van een reeks toekomstige betalingen of ontvangsten. Als u bijvoorbeeld geld leent om een auto te kopen, is het bedrag van de lening voor de kredietverschaffer de huidige waarde van de maandelijkse afbetalingen die u in de toekomst verricht.
fv	Optioneel. Een Variant met de gewenste toekomstige waarde of het gewenste saldo nadat de laatste betaling heeft plaatsgevonden. De toekomstige waarde van een lening is bijvoorbeeld fl 0, aangezien dat de waarde is na de laatste betaling. Als u echter fl 50.000 wilt sparen voor de opleiding van uw kind over 18 jaar, is fl 50.000 de toekomstige waarde. Als dit argument wordt weggelaten, wordt uitgegaan van 0.
type	Optioneel. Een Variant met een getal dat aangeeft wanneer de betalingen plaatsvinden. Geef een 0 op als de betalingen aan het einde van de betalingsperiode plaatsvinden of een 1 als de betalingen aan het begin van de periode plaatsvinden. Als dit argument wordt weggelaten, wordt uitgegaan van 0.
Notities

Een annuïteit is een reeks constante betalingen die gedurende een bepaalde periode plaatsvinden. Een annuïteit kan een lening zijn (bijvoorbeeld een hypotheek voor een huis) of een investering (bijvoorbeeld een maandelijks spaarplan).

Voor alle argumenten geldt dat betalingen (zoals stortingen op een spaarrekening) worden weergegeven door negatieve getallen en ontvangsten (zoals dividendinkomsten) worden weergegeven door positieve getallen.


NPV, functie

Geeft als resultaat een Double-waarde met de netto huidige waarde van een investering op basis van een reeks periodieke cash flows (betalingen en ontvangsten) en een korting.

Syntaxis

NPV(rate, values())

De functie NPV heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
rate	Vereist. Een Double-waarde met de korting over de lengte van de periode, uitgedrukt als een decimaal.
values()	Vereist. Een matrix of Double-waarde met cash flow-waarden. De matrix moet ten minste één negatieve waarde (een betaling) en één positieve waarde (een ontvangst) bevatten.
Notities

The netto huidige waarde van een investering is de huidige waarde van een toekomstige reeks betalingen en ontvangsten.

De functie NPV gebruikt de volgorde van waarden binnen de matrix om de volgorde van betalingen en ontvangsten te interpreteren. Let erop dat u de waarden voor de betalingen en ontvangsten in de juiste volgorde opgeeft.

De NPV-investering begint één periode voor de datum van de eerste cash flow-waarde en eindigt met de laatste cash flow-waarde in de matrix.

De berekening van de netto huidige waarde is gebaseerd op toekomstige cash flows. Als uw eerste cash flow aan het begin van de eerste periode plaatsvindt, moet de eerste waarde worden toegevoegd aan de waarde die door NPV als resultaat wordt gegeven. Deze mag geen deel uitmaken van de cash flow-waarden van values().

De functie NPV werkt ongeveer hetzelfde als de functie PV (voor de berekening van de huidige waarde), alleen kunnen bij de functie PV cash flows aan het einde of aan het begin van een periode beginnen. Bovendien kunnen bij NPV cash flow-waarden variabel zijn, terwijl bij PV cash flows voor de hele investering constant moeten zijn.


Pmt, functie

Geeft als resultaat een Double-waarde met de betaling voor een annuïteit op basis van periodieke, constante betalingen en een constante rentevoet.

Syntaxis

Pmt(rate, nper, pv[, fv[, type]])

De functie Pmt heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
rate	Vereist. Een Double-waarde met de rentevoet per periode. Als u bijvoorbeeld een lening hebt voor een auto met een jaarlijkse rente van 10 procent en u deze per maand afbetaalt, is de rentevoet per periode 0,1/12 of 0,0083.
nper	Vereist. Een Integer-waarde met het totale aantal betalingsperioden in de annuïteit. Als u bijvoorbeeld maandelijks afbetaalt op een autolening van vier jaar, bestaat de lening in totaal uit 4 * 12 (of 48) betalingsperioden.
pv	Vereist. Een Double-waarde met de huidige waarde van een reeks betalingen die in de toekomst moeten plaatsvinden. Als u bijvoorbeeld geld leent om een auto te kopen, is het bedrag van de lening voor de kredietverschaffer de huidige waarde van de maandelijkse afbetalingen die u in de toekomst verricht.
fv	Optioneel. Een Variant met de gewenste toekomstige waarde of het gewenste saldo nadat de laatste betaling heeft plaatsgevonden. De toekomstige waarde van een lening is bijvoorbeeld fl 0, aangezien dat de waarde is na de laatste betaling. Als u echter fl 50.000 wilt sparen voor de opleiding van uw kind over 18 jaar, is fl 50.000 de toekomstige waarde. Als dit argument wordt weggelaten, wordt uitgegaan van 0.
type	Optioneel. Een Variant met een getal dat aangeeft wanneer de betalingen plaatsvinden. Geef een 0 op als de betalingen aan het einde van de betalingsperiode plaatsvinden of een 1 als de betalingen aan het begin van de periode plaatsvinden. Als dit argument wordt weggelaten, wordt uitgegaan van 0.
Notities

Een annuïteit is een reeks constante betalingen die gedurende een bepaalde periode plaatsvinden. Een annuïteit kan een lening zijn (bijvoorbeeld een hypotheek voor een huis) of een investering (bijvoorbeeld een maandelijks spaarplan).

De argumenten rate en nper moeten worden berekend met betalingsperioden die zijn uitgedrukt in dezelfde eenheden. Als rate bijvoorbeeld op maandbasis wordt berekend, moet nper ook op maandbasis worden berekend.

Voor alle argumenten geldt dat betalingen (zoals stortingen op een spaarrekening) worden weergegeven door negatieve getallen en ontvangsten (zoals dividendinkomsten) worden weergegeven door positieve getallen.


PPmt, functie

Geeft als resultaat een Double-waarde met de betaling van de hoofdsom van een annuïteit voor een gegeven periode, op basis van periodieke, constante betalingen en een constante rentevoet.

Syntaxis

PPmt(rate, per, nper, pv[, fv[, type]])

De functie PPmt heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
rate	Vereist. Een Double-waarde met de rentevoet per periode. Als u bijvoorbeeld een lening hebt voor een auto met een jaarlijkse rente van 10 procent en u deze per maand afbetaalt, is de rentevoet per periode 0,1/12 of 0,0083.
per	Vereist. Een Integer-waarde met de betalingsperiode in het bereik van 1 tot en met nper.
nper	Vereist. Een Integer-waarde met het totale aantal betalingsperioden in de annuïteit. Als u bijvoorbeeld maandelijks afbetaalt op een autolening van vier jaar, bestaat de lening in totaal uit 4 * 12 (of 48) betalingsperioden.
pv	Vereist. Een Double-waarde met de huidige waarde van een reeks toekomstige betalingen of ontvangsten. Als u bijvoorbeeld geld leent om een auto te kopen, is het bedrag van de lening voor de kredietverschaffer de huidige waarde van de maandelijkse afbetalingen die u in de toekomst verricht.
fv	Optioneel. Een Variant met de gewenste toekomstige waarde of het gewenste saldo nadat de laatste betaling heeft plaatsgevonden. De toekomstige waarde van een lening is bijvoorbeeld fl 0, aangezien dat de waarde is na de laatste betaling. Als u echter fl 50.000 wilt sparen voor de opleiding van uw kind over 18 jaar, is fl 50.000 de toekomstige waarde. Als dit argument wordt weggelaten, wordt uitgegaan van 0.
type	Optioneel. Een Variant met een getal dat aangeeft wanneer de betalingen plaatsvinden. Geef een 0 op als de betalingen aan het einde van de betalingsperiode plaatsvinden of een 1 als de betalingen aan het begin van de periode plaatsvinden. Als dit argument wordt weggelaten, wordt uitgegaan van 0.
Notities

Een annuïteit is een reeks constante betalingen die gedurende een bepaalde periode plaatsvinden. Een annuïteit kan een lening zijn (bijvoorbeeld een hypotheek voor een huis) of een investering (bijvoorbeeld een maandelijks spaarplan).

De argumenten rate en nper moeten worden berekend met betalingsperioden die zijn uitgedrukt in dezelfde eenheden. Als rate bijvoorbeeld op maandbasis wordt berekend, moet nper ook op maandbasis worden berekend.

Voor alle argumenten geldt dat betalingen (zoals stortingen op een spaarrekening) worden weergegeven door negatieve getallen en ontvangsten (zoals dividendinkomsten) worden weergegeven door positieve getallen.


PV, functie

Geeft als resultaat een Double-waarde met de huidige waarde van een annuïteit op basis van periodieke, constante betalingen die in de toekomst moeten plaatsvinden en een constante rentevoet.

Syntaxis

PV(rate, nper, pmt[, fv[, type]])

De functie PV heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
rate	Vereist. Een Double-waarde met de rentevoet per periode. Als u bijvoorbeeld een lening hebt voor een auto met een jaarlijkse rente van 10 procent en u deze per maand afbetaalt, is de rentevoet per periode 0,1/12 of 0,0083.
nper	Vereist. Een Integer-waarde met het totale aantal betalingsperioden in de annuïteit. Als u bijvoorbeeld maandelijks afbetaalt op een autolening van vier jaar, bestaat de lening in totaal uit 4 * 12 (of 48) betalingsperioden.
pmt	Vereist. Een Double-waarde met de betaling die elke periode moet plaatsvinden. Betalingen bestaan normaal gesproken uit een hoofdsom- en rentegedeelte die ongewijzigd blijven tijdens de levensduur van de annuïteit.
fv	Optioneel. Een Variant met de gewenste toekomstige waarde of het gewenste saldo nadat de laatste betaling heeft plaatsgevonden. De toekomstige waarde van een lening is bijvoorbeeld fl 0, aangezien dat de waarde is na de laatste betaling. Als u echter fl 50.000 wilt sparen voor de opleiding van uw kind over 18 jaar, is fl 50.000 de toekomstige waarde. Als dit argument wordt weggelaten, wordt uitgegaan van 0.
type	Optioneel. Een Variant met een getal dat aangeeft wanneer de betalingen plaatsvinden. Geef een 0 op als de betalingen aan het einde van de betalingsperiode plaatsvinden of een 1 als de betalingen aan het begin van de periode plaatsvinden. Als dit argument wordt weggelaten, wordt uitgegaan van 0.
Notities

Een annuïteit is een reeks constante betalingen die gedurende een bepaalde periode plaatsvinden. Een annuïteit kan een lening zijn (bijvoorbeeld een hypotheek voor een huis) of een investering (bijvoorbeeld een maandelijks spaarplan).

De argumenten rate en nper moeten worden berekend met betalingsperioden die zijn uitgedrukt in dezelfde eenheden. Als rate bijvoorbeeld op maandbasis wordt berekend, moet nper ook op maandbasis worden berekend.

Voor alle argumenten geldt dat betalingen (zoals stortingen op een spaarrekening) worden weergegeven door negatieve getallen en ontvangsten (zoals dividendinkomsten) worden weergegeven door positieve getallen.


Rate, functie

Geeft als resultaat een Double-waarde met de rentevoet per periode voor een annuïteit.

Syntaxis

Rate(nper, pmt, pv[, fv[, type[, guess]]])

De functie Rate heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
nper	Vereist. Een Double-waarde met het totale aantal betalingsperioden in de annuïteit. Als u bijvoorbeeld maandelijks afbetaalt op een autolening van vier jaar, bestaat de lening in totaal uit 4 * 12 (of 48) betalingsperioden.
pmt	Vereist. Een Double-waarde met de betaling die elke periode moet plaatsvinden. Betalingen bestaan normaal gesproken uit een hoofdsom- en rentegedeelte die ongewijzigd blijven tijdens de levensduur van de annuïteit.
pv	Vereist. Een Double-waarde met de huidige waarde van een reeks toekomstige betalingen of ontvangsten. Als u bijvoorbeeld geld leent om een auto te kopen, is het bedrag van de lening voor de kredietverschaffer de huidige waarde van de maandelijkse afbetalingen die u in de toekomst verricht.
fv	Optioneel. Een Variant met de gewenste toekomstige waarde of het gewenste saldo nadat de laatste betaling heeft plaatsgevonden. De toekomstige waarde van een lening is bijvoorbeeld fl 0, aangezien dat de waarde is na de laatste betaling. Als u echter fl 50.000 wilt sparen voor de opleiding van uw kind over 18 jaar, is fl 50.000 de toekomstige waarde. Als dit argument wordt weggelaten, wordt uitgegaan van 0.
type	Optioneel. Een Variant met een getal dat aangeeft wanneer de betalingen plaatsvinden. Geef een 0 op als de betalingen aan het einde van de betalingsperiode plaatsvinden of een 1 als de betalingen aan het begin van de periode plaatsvinden. Als dit argument wordt weggelaten, wordt uitgegaan van 0.
guess	Optioneel. Een Variant met een schatting van de waarde die door Rate als resultaat wordt gegeven. Als dit argument wordt weggelaten, is guess 0,1 (10 procent).
Notities

Een annuïteit is een reeks constante betalingen die gedurende een bepaalde periode plaatsvinden. Een annuïteit kan een lening zijn (bijvoorbeeld een hypotheek voor een huis) of een investering (bijvoorbeeld een maandelijks spaarplan).

Voor alle argumenten geldt dat betalingen (zoals stortingen op een spaarrekening) worden weergegeven door negatieve getallen en ontvangsten (zoals dividendinkomsten) worden weergegeven door positieve getallen.

Rate wordt berekend door herhaling. De functie Rate start de berekening met de waarde van guess en gaat door totdat het resultaat tot op 0,00001 procent nauwkeurig is. Als na 20 pogingen geen resultaat wordt gevonden, mislukt Rate. Probeer een andere waarde voor guess als Rate mislukt met een schatting van 10 procent.


SLN, functie

Geeft als resultaat een Double-waarde met de lineaire afschrijving van een creditpost voor een afzonderlijke periode.

Syntaxis

SLN(cost, salvage, life)

De functie SLN heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
cost	Vereist. Een Double-waarde met de beginkosten van de creditpost.
salvage	Vereist. Een Double-waarde met de waarde van de creditpost aan het einde van de nuttige levensduur.
life	Vereist. Een Double-waarde met de lengte van de nuttige levensduur van de creditpost.
Notities

De afschrijvingsperiode moet worden uitgedrukt in dezelfde eenheid als het argument life. Alle argumenten moeten positieve getallen zijn.


SYD, functie

Geeft als resultaat een Double-waarde met de afschrijving van een creditpost voor een gegeven periode met behulp van de methode van de som van de jaareenheden.

Syntaxis

SYD(cost, salvage, life, period)

De functie SYD heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
cost	Vereist. Een Double-waarde met de beginkosten van de creditpost.
salvage	Vereist. Een Double-waarde met de waarde van de creditpost aan het einde van de nuttige levensduur.
life	Vereist. Een Double-waarde met de lengte van de nuttige levensduur van de creditpost.
period	Vereist. Een Double-waarde met de periode waarvoor de afschrijving van de creditpost wordt berekend.
Notities

De argumenten life en period moeten in dezelfde eenheden worden uitgedrukt. Als life bijvoorbeeld is opgegeven in maanden, moet period ook in maanden worden opgegeven. Alle argumenten moeten positieve getallen zijn.


Voorbeeld van de functie IsArray

Dit voorbeeld maakt gebruik van de functie IsArray om te controleren of een variabele een matrix is.

Dim MyArray(1 To 5) As Integer, YourArray, MyCheck	' Declareert matrixvariabelen.

YourArray = Array(1, 2, 3)	' Gebruikt functie Array.

MyCheck = IsArray(MyArray)	' Is True.

MyCheck = IsArray(YourArray)	' Is True.


Voorbeeld van de functie IsDate

Dit voorbeeld maakt gebruik van de functie IsDate om vast te stellen of een expressie naar een datum kan worden geconverteerd.

Dim MyDate, YourDate, NoDate, MyCheck

MyDate = "12 februari 1969": YourDate = #2/12/69#: NoDate = "Hallo"

MyCheck = IsDate(MyDate)	' Is True.

MyCheck = IsDate(YourDate)	' Is True.

MyCheck = IsDate(NoDate)	' Is False.


Voorbeeld van de functie IsEmpty

Dit voorbeeld maakt gebruik van de functie IsEmpty om vast te stellen of een variabele is geïnitialiseerd.

Dim MyVar, MyCheck

MyCheck = IsEmpty(MyVar)	' Is True.

MyVar = Null	' Assign Null.

MyCheck = IsEmpty(MyVar)	' Is False.

MyVar = Empty	' Kent de waarde Empty toe.

MyCheck = IsEmpty(MyVar)	' Is True.


Voorbeeld van de functie IsError

Dit voorbeeld maakt gebruik van de functie IsError om te controleren of een numerieke expressie een foutwaarde is. De functie CVErr wordt gebruikt om als resultaat een Error Variant te geven van een door de gebruiker gedefinieerde functie. In dit voorbeeld wordt ervan uitgegaan dat UserFunction een door de gebruiker gedefinieerde functie is die als resultaat een foutwaarde geeft, bijvoorbeeld een resultaatwaarde die is toegewezen met de instructie UserFunction = CVErr(32767), waarbij 32767 een door de gebruiker gedefinieerd getal is.

Dim ReturnVal, MyCheck

ReturnVal = UserFunction()

MyCheck = IsError(ReturnVal)	' Is True.


Voorbeeld van de functie IsMissing

Dit voorbeeld maakt gebruik van de functie IsMissing om te controleren of een optioneel argument is doorgegeven aan een door de gebruiker opgegeven procedure. De Optional-argumenten kunnen nu andere standaardwaarden en -typen hebben dan Variant.

Dim ReturnValue

' De volgende instructies activeren de door de gebruiker gedefinieerde functieprocedure.

ReturnValue = ReturnTwice()	' Resultaat is Null.

ReturnValue = ReturnTwice(2)	' Resultaat is 4.

' Definitie van functieprocedure.

Function ReturnTwice(Optional A)

If IsMissing(A) Then

' Resultaat is Null als argument ontbreekt.

ReturnTwice = Null

Else

' Resulteert in tweemaal de waarde als argument aanwezig is.

ReturnTwice = A * 2

End If

End Function


Voorbeeld van de functie IsNull

Dit voorbeeld maakt gebruik van de functie IsNull om vast te stellen of een variabele een Null bevat.

Dim MyVar, MyCheck

MyCheck = IsNull(MyVar)	' Is False.

MyVar = ""

MyCheck = IsNull(MyVar)	' Is False.

MyVar = Null

MyCheck = IsNull(MyVar)	' Is True.


Voorbeeld van de functie IsNumeric

Dit voorbeeld maakt gebruik van de functie IsNumeric om vast te stellen of een variabele als een getal kan worden geëvalueerd.

Dim MyVar, MyCheck

MyVar = "53"	' Kent een waarde toe.

MyCheck = IsNumeric(MyVar)	' Is True.

MyVar = "459.95"	' Kent een waarde toe.

MyCheck = IsNumeric(MyVar)	' Is True.

MyVar = "45 Help"	' Kent een waarde toe.

MyCheck = IsNumeric(MyVar)	' Is False.


Voorbeeld van de functie IsObject

Dit voorbeeld maakt gebruik van de functie IsObject om vast te stellen of een aanduiding een objectvariabele vertegenwoordigt. MyObject en YourObject zijn objectvariabelen van hetzelfde type. Het zijn algemene namen die alleen ter illustratie worden gebruikt.

Dim MyInt As Integer, YourObject, MyCheck	' Declareert variabelen.

Dim MyObject As Object

Set YourObject = MyObject	' Kent een objectverwijzing toe.

MyCheck = IsObject(YourObject)	' Is True.

MyCheck = IsObject(MyInt)	' Is False.


Voorbeeld van de functie TypeName

Dit voorbeeld maakt gebruik van de functie TypeName om informatie te geven over een variabele.

' Declareert variabelen.

Dim NullVar, MyType, StrVar As String, IntVar As Integer, CurVar As Currency

Dim ArrayVar (1 To 5) As Integer

NullVar = Null	' Kent waarde Null toe.

MyType = TypeName(StrVar)	' Resultaat is "String".

MyType = TypeName(IntVar)	' Resultaat is "Integer".

MyType = TypeName(CurVar)	' Resultaat is "Currency".

MyType = TypeName(NullVar)	' Resultaat is "Null".

MyType = TypeName(ArrayVar)	' Resultaat is "Integer()".


Voorbeeld van de functie VarType

Dit voorbeeld maakt gebruik van de functie VarType om het subtype van een variabele te bepalen.

Dim IntVar, StrVar, DateVar, MyCheck

' Initialiseert variabelen.

IntVar = 459: StrVar = "Hallo allemaal": DateVar = #2/12/69#

MyCheck = VarType(IntVar)	' Resultaat is 2.

MyCheck = VarType(DateVar)	' Resultaat is 7.

MyCheck = VarType(StrVar)	' Resultaat is 8.


IsArray, functie

Geeft als resultaat een Boole-waarde die aangeeft of een variabele een matrix is.

Syntaxis

IsArray(varnaam)

Het argument varnaam kan een willekeurige aanduiding zijn die een variabele aangeeft.

Notities

IsArray geeft True als resultaat als de variabele een matrix is. Anders geeft deze functie False als resultaat. Het gebruik van IsArray is met name handig bij varianten met matrices.


IsDate, functie

Geeft als resultaat een Boole-waarde die aangeeft of een expressie naar een datum kan worden geconverteerd.

Syntaxis

IsDate(expressie)

Het vereiste argument expressie is een Variant met een datumexpressie of reeksexpressie die herkenbaar is als datum of tijd.

Notities

IsDate geeft als resultaat True wanneer de expressie een datum is of herkenbaar is als een geldige datum. Anders is het resultaat False. In Microsoft Windows lopen de geldige datums van 1 januari van het jaar 100 tot en met 31 december van het jaar 9999. Het datumbereik verschilt echter per besturingssysteem.


IsEmpty, functie

Geeft als resultaat een Boole-waarde die aangeeft of een variabele is geïnitialiseerd.

Syntaxis

IsEmpty(expressie)

Het argument expressie is een Variant met een numerieke expressie of reeksexpressie. In de meeste gevallen zal het argument expressie echter een enkele variabelennaam zijn, omdat IsEmpty wordt gebruikt om te bepalen of een afzonderlijke variabele is geïnitialiseerd.

Notities

IsEmpty geeft als resultaat True als de variabele niet is geïnitialiseerd of als deze nadrukkelijk op Empty wordt ingesteld. Anders is het resultaat False. Als expressie meer dan één variabele bevat, is het resultaat altijd False. IsEmpty geeft alleen zinvolle gegevens voor varianten.


IsError, functie

Geeft als resultaat een Boole-waarde die aangeeft of een expressie een foutwaarde is.

Syntaxis

IsError(expressie)

Het vereiste expressieargument mag elke geldige expressie zijn.

Notities

Met de functie CVErr kunt u gewone getallen naar foutwaarden converteren. Gebruik de functie IsError als u wilt bepalen of een numerieke expressie een fout aangeeft. IsError geeft als resultaat True als het argument expressie een fout aangeeft. Anders is het resultaat False.


IsMissing, functie

Geeft als resultaat een Boole-waarde die aangeeft of een optioneel argument van het type Variant is doorgegeven aan een procedure.

Syntaxis

IsMissing(argnaam)

Het vereiste argument argnaam bevat de naam van een optioneel procedureargument Variant.

Notities

De functie IsMissing gebruikt u om te bepalen of optionele argumenten al dan niet zijn doorgegeven aan een procedure. IsMissing geeft als resultaat True als u geen waarde hebt doorgegeven voor het opgegeven argument. Anders is het resultaat False. Als IsMissing als resultaat voor een argument True geeft, kan een door de gebruiker gedefinieerde fout ontstaan als het ontbrekende argument in andere programmacode wordt gebruikt. IsMissing geeft als resultaat altijd False bij ParamArray-argumenten. U kunt testen of een ParamArray leeg is door te kijken of de bovenste limiet van een matrix minder is dan de onderste limiet.

Opmerking   IsMissing werkt niet met enkelvoudige gegevenstypen (zoals Integer of Double) aangezien deze, in tegenstelling tot Variants, geen ruimte hebben voor een 'ontbrekende' vlagbit. Daarom kunt u met de syntaxis voor optionele argumenten met type een standaardwaarde opgeven. Als de procedure zonder dit argument wordt geactiveerd, krijgt het argument de standaardwaarde, zoals in het volgende voorbeeld:

Sub MySub(Optional MyVar As String = "specialvalue")

    If MyVar = "specialvalue" Then

    ' MyVar is weggelaten.

    Else

    ...

End Sub

In veel gevallen kunt u de test If MyVar geheel achterwege laten. Daartoe maakt u de standaardwaarde gelijk aan de waarde die MyVar moet behouden als de gebruiker zelf geen waarde opgeeft. De code wordt dan beknopter en doeltreffender.


IsNull, functie

Geeft als resultaat een Boole-waarde die aangeeft of een expressie geen geldige gegevens bevat (Null).

Syntaxis

IsNull(expressie)

Het vereiste argument expressie is een Variant met een numerieke expressie of reeksexpressie.

Notities

IsNull geeft als resultaat True wanneer expressie Null is. Anders geeft IsNull als resultaat False. Als expressie uit meer dan één variabele bestaat en een van de variabelen is Null, is het resultaat True voor de volledige expressie.

De Null-waarde geeft aan dat de Variant geen geldige gegevens bevat. De Null-waarde is niet hetzelfde als Empty. Empty geeft aan dat een variabele nog niet is geïnitialiseerd. De nulwaarde is ook niet gelijk aan een tekenreeks zonder gegevens (""), ook wel aangeduid als een nulreeks of reeks met lengte nul.

Belangrijk   Gebruik de functie IsNull als u wilt bepalen of een expressie een Null-waarde heeft. Expressies waarvan u zou verwachten dat deze onder bepaalde omstandigheden True als resultaat geven, zoals If Var = Null en If Var <> Null, geven altijd False als resultaat. De reden hiervoor is dat een expressie met Null zelf de Null-waarde krijgt en dus False is.


IsNumeric, functie

Geeft als resultaat een Boole-waarde die aangeeft of een expressie als een getal kan worden geëvalueerd.

Syntaxis

IsNumeric(expressie)

Het vereiste argument expressie is een Variant met een numerieke expressie of reeksexpressie.

Notities

IsNumeric geeft als resultaat True als expressie volledig als getal wordt herkend. Anders is het resultaat False.

IsNumeric geeft als resultaat False als expressie een datumexpressie is.


IsObject, functie

Geeft als resultaat een Boole-waarde die aangeeft of een aanduiding een variabele is van het type object.

Syntaxis

IsObject(aanduiding)

Het vereiste argument aanduiding is de naam van een variabele.

Notities

IsObject is alleen van toepassing om te bepalen of een Variant van het type VarType vbObject is. Dit kan zijn als de Variant inderdaad verwijst (of ooit heeft verwezen) naar een object, of Nothing bevat.

IsObject geeft als resultaat True als aanduiding een variabele is van het type Object of een andere geldig type klasse, of als aanduiding een Variant van VarType vbObject is, of een door de gebruiker gedefinieerd object. Anders is het resultaat False. IsObject geeft als resultaat True zelfs als de variabele Nothing is.

Met foutbepaling kunt u uitzoeken of een objectverwijzing geldig is.


TypeName, functie

Geeft als resultaat een String die gegevens bevat over een variabele.

Syntaxis

TypeName(varnaam)

Het vereiste argument varnaam is een Variant met een willekeurige variabele, behalve een variabele van een door de gebruiker gedefinieerd type.

Notities

TypeName kan de volgende tekenreeksen als resultaat geven:

Resulterende tekenreeks	Variabele bevat
objecttype	Een object van het type objecttype
Byte	Bytewaarde
Integer	Geheel getal
Long	Lang geheel getal
Single	Een getal met enkelvoudige precisie en drijvende komma
Double	Een getal met dubbele precisie en drijvende komma
Currency	Valutawaarde
Decimal	Decimale waarde
Date	Datumwaarde
String	Tekenreeks
Boolean	Boole-waarde
Error	Een foutwaarde
Empty	Niet geïnitialiseerd
Null	Geen geldige gegevens
Object	Een object
Onbekend	Een object van een onbekend type
Nothing	Een objectvariabele die niet verwijst naar een object
Als varnaam een matrix is kan de resulterende tekenreeks een van de genoemde tekenreeksen (of een Variant) zijn, gevolgd door lege ronde haakjes. Als varnaam bijvoorbeeld een matrix is met gehele getallen, geeft TypeName "Integer()" als resultaat.


VarType, functie

Geeft als resultaat een Integer dat het subtype van de variabele aangeeft.

Syntaxis

VarType(varnaam)

Het vereiste argument varnaam is een Variant met een willekeurige variabele, behalve een variabele van een door de gebruiker gedefinieerd type.

Resultaatwaarden

Constante	Waarde	Beschrijving
vbEmpty	0	Empty (niet geïnitialiseerd)
vbNull	1	Null (geen geldige gegevens)
vbInteger	2	Geheel getal
vbLong	3	Lang geheel getal
vbSingle	4	Een getal met enkelvoudige precisie en drijvende komma
vbDouble	5	Een getal met dubbele precisie en drijvende komma
vbCurrency	6	Valutawaarde
vbDate	7	Datumwaarde
vbString	8	Tekenreeks
vbObject	9	Object
vbError	10	Foutwaarde
vbBoolean	11	Boole-waarde
vbVariant	12	Variant (alleen gebruikt voor matrices van Varianten)
vbDataObject	13	Een object voor gegevenstoegang
vbDecimal	14	Decimale waarde
vbByte	17	Bytewaarde
vbUserDefinedType	36	Varianten die door de gebruiker gedefinieerde typen kunnen bevatten.
vbArray	8192	Matrix
Opmerking   Deze constanten worden geleverd door Visual Basic for Applications. U kunt op een willekeurige plaats in de programmacode de eigenlijke waarden vervangen door de namen van de constanten.

Notities

De functie VarType geeft als resultaat nooit alleen de waarde van vbArray.

Deze waarde wordt altijd gecombineerd met een andere waarde om aan te geven om welk type matrix het gaat.

 De functie geeft de constante vbVariant alleen in combinatie met vbArray als resultaat om aan te geven dat het argument bij de functie VarType een matrix is van het type Variant. Het resultaat voor een matrix met integers wordt bijvoorbeeld berekend als vbInteger + vbArray, of 8194. Als een object een standaardeigenschap heeft, geeft VarType (object) de standaardeigenschap als resultaat.


Empty

Het sleutelwoord Empty wordt gebruikt als een subtype Variant. Hiermee wordt aangegeven dat de waarde van een variabele niet is geïnitialiseerd.


False

Het sleutelwoord False is gelijk aan 0.


Me

Het sleutelwoord Me gedraagt zich als een impliciet gedeclareerde variabele. Het is automatisch beschikbaar voor elke procedure in een klassenmodule. Wanneer een klasse meer dan één keer kan voorkomen, biedt Me een manier om te verwijzen naar het specifieke geval van de klasse waar de code wordt uitgevoerd. Werken met het sleutelwoord Me is met name handig wanneer u gegevens over de klasse die op dit moment wordt uitgevoerd, wilt overbrengen naar een procedure in een andere module. Neem bijvoorbeeld de volgende procedure in een module:

Sub WijzigFormulierKleur(FormulierNaam As Form)

FormulierNaam.BackColor = RGB(Rnd * 256, Rnd * 256, Rnd * 256)

End Sub

U kunt deze procedure oproepen en het voorkomende geval van de Formulierklasse met behulp van de volgende instructie doorgeven als een argument:

WijzigFormulierKleur Me


Nothing

Het sleutelwoord Nothing wordt gebruikt om een objectvariabele los te koppelen van een object. Gebruik de instructie Set om het sleutelwoord Nothing aan een objectvariabele toe te wijzen. Bijvoorbeeld:

Set MyObject = Nothing

Verschillende objectvariabelen kunnen naar hetzelfde object verwijzen. Wanneer Nothing is toegewezen aan een objectvariabele, verwijst die variabele niet langer naar het eigenlijke object. Wanneer verschillende objectvariabelen naar hetzelfde object verwijzen, worden geheugen- en systeembronnen die gekoppeld zijn aan het object waarnaar de variabelen verwijzen, alleen vrijgegeven nadat deze allemaal zijn ingesteld op het sleutelwoord Nothing. Dit kan expliciet met Set, of impliciet zodra de laatste objectvariabele die op Nothing is ingesteld, buiten het bereik valt.


Null

Het sleutelwoord Null wordt gebruikt als een subtype Variant. Hiermee wordt aangegeven dat een variabele geen geldige gegevens bevat.


True

De waarde van het sleutelwoord True is gelijk aan -1.


Voorbeeld van de functie MacScript

Het navolgende voorbeeld gebruikt de functie MacScript om het dialoogvenster Bestand kiezen (het Macintosh dialoogvenster voor standaardbestanden) te openen. Dit venster geeft het volledige pad van het door de gebruiker gekozen bestand als resultaat. Indien van toepassing, wordt de padspecificatie voorafgegaan door het type bestand.

ThePath$ = Macscript("ChooseFile")


MacID, functie

Wordt alleen op de Apple Macintosh gebruikt om een constante die uit vier tekens bestaat, naar een waarde te converteren die kan worden gelezen door Dir, Kill, Shell en AppActivate.

Syntaxis

MacID(constante)

Het vereiste constante argument bestaat uit 4 tekens. Deze geven een brontype, een bestandstype, een toepassingshandtekening of Apple-gebeurtenis aan, bijvoorbeeld TEXT, OBIN, "XLS5" voor Excel-bestanden ("XLS8"  voor Excel 97), Microsoft Word gebruikt "W6BN" ("W8BN" voor Word 97), enzovoort.

Notities

U kunt MacID gebruiken in combinatie met Dir en Kill om een Macintosh-bestandstype op te geven. Aangezien de Macintosh de jokertekens * en ? niet ondersteunt, kunt u in plaats hiervan een constante van vier tekens gebruiken om een groep bestanden aan te duiden. De volgende instructie geeft bijvoorbeeld alle bestanden van het type TEXT uit de huidige map als resultaat:

Dir("EenPad", MacID("TEXT"))

Als u een toepassing wilt opgeven met de unieke id van de toepassing, gebruikt u MacID in combinatie met Shell en AppActivate.


MacScript, functie

Voert een AppleScript uit, waarna de eventuele waarde van het script als resultaat wordt gegeven.

Syntaxis

MacScript script

Het argument script is een Tekenreeks-expressie. De String-uitdrukking kan een reeks met AppleScript-opdrachten zijn of kan de naam bevatten van een AppleScript-script of een scriptbestand.

Notities

U kunt scripts met meerdere regels maken door regelteruglooptekens (Chr(13)) op te nemen.


Voorbeeld van de functie Abs

Dit voorbeeld maakt gebruik van de functie Abs om de absolute waarde van een getal te berekenen.

Dim MyNumber

MyNumber = Abs(50,3)	' Resultaat is 50,3.

MyNumber = Abs(-50,3)	' Resultaat is 50,3.


Voorbeeld van de functie Atn

Dit voorbeeld maakt gebruik van de functie Atn om de waarde van pi te berekenen.

Dim pi

pi = 4 * Atn(1)	' Berekent de waarde van pi.


Voorbeeld van de functie Cos

Dit voorbeeld maakt gebruik van de functie Cos om de cosinus van een hoek te geven.

Dim MyAngle, MySecant

MyAngle = 1,3	' Definieert de hoek in radialen.

MySecant = 1 / Cos(MyAngle)	' Berekent secans.


Voorbeeld van de functie Exp

Dit voorbeeld maakt gebruik van de functie Exp om het getal e verheven tot een bepaalde macht als resultaat te geven.

Dim MyAngle, MyHSin

' Definieert hoek in radialen.

MyAngle = 1,3

' Berekent hyperbole sinus.

MyHSin = (Exp(MyAngle) - Exp(-1 * MyAngle)) / 2


Voorbeeld van de functies Int en Fix

Dit voorbeeld laat zien hoe de functies Int en Fix worden gebruikt om de integerdelen van getallen als resultaat te geven. Bij een negatief getal geeft de functie Int het eerste negatieve gehele getal dat lager is dan of gelijk is aan het getal. De functie Fix geeft het eerste negatieve gehele getal dat groter is dan of gelijk is aan het getal.

Dim MyNumber

MyNumber = Int(99,8)	' Resultaat is 99.

MyNumber = Fix(99,2)	' Resultaat is 99.

MyNumber = Int(-99,8)	' Resultaat is -100.

MyNumber = Fix(-99,8)	' Resultaat is -99.

MyNumber = Int(-99,2)	' Resultaat is -100.

MyNumber = Fix(-99,2)	' Resultaat is -99.


Voorbeeld van de functie Log

Dit voorbeeld maakt gebruik van de functie Log om de natuurlijke logaritme van een getal als resultaat te geven.

Dim MyAngle, MyLog

' Definieert hoek in radialen.

MyAngle = 1,3

' Berekent inverse hyperbole sinus.

MyLog = Log(MyAngle + Sqr(MyAngle * MyAngle + 1))


Voorbeeld van de instructie Randomize

Dit voorbeeld maakt gebruik van de instructie Randomize om de generator van willekeurige getallen te initialiseren. Omdat het getalargument is weggelaten, maakt Randomize gebruik van de resultaatwaarde van de functie Timer als nieuw begingetal.

Dim MyValue

Randomize	' Initialiseert generator van willekeurige getallen.

MyValue = Int((6 * Rnd) + 1)	' Genereert willekeurige waarde tussen 1 en 6.


Voorbeeld van de functie Rnd

Dit voorbeeld maakt gebruik van de functie Rnd om een willekeurige integer van 1 tot en met 6 te genereren.

Dim MyValue

MyValue = Int((6 * Rnd) + 1)	' Genereert willekeurige waarde tussen 1 en 6.


Voorbeeld van de functie Sgn

Dit voorbeeld maakt gebruik van de functie Sgn om na te gaan of een getal positief of negatief is.

Dim MyVar1, MyVar2, MyVar3, MySign

MyVar1 = 12: MyVar2 = -2,4: MyVar3 = 0

MySign = Sgn(MyVar1)	' Resultaat is 1.

MySign = Sgn(MyVar2)	' Resultaat is -1.

MySign = Sgn(MyVar3)	' Resultaat is 0.


Voorbeeld van de functie Sin

Dit voorbeeld maakt gebruik van de functie Sin om de sinus van een hoek als resultaat te geven.

Dim MyAngle, MyCosecant

MyAngle = 1,3	' Definieert hoek in radialen.

MyCosecant = 1 / Sin(MyAngle)	' Berekent cosecans.


Voorbeeld van de functie Sqr

Dit voorbeeld maakt gebruik van de functie Sqr om de vierkantswortel van een getal te berekenen.

Dim MySqr

MySqr = Sqr(4)	' Resultaat is 2.

MySqr = Sqr(23)	' Resultaat is 4,79583152331272.

MySqr = Sqr(0)	' Resultaat is 0.

MySqr = Sqr(-4)	' Genereert een runtimefout.


Voorbeeld van de functie Tan

Dit voorbeeld maakt gebruik van de functie Tan om de tangens van een hoek als resultaat te geven.

Dim MyAngle, MyCotangent

MyAngle = 1,3	' Definieert hoek in radialen.

MyCotangent = 1 / Tan(MyAngle)	' Berekent cotangens.


Wiskundige functies

Abs, functie

Atn, functie

Cos, functie

Exp, functie

Fix, functie

Int, functie

Log, functie

Rnd, functie

Sgn, functie

Sin, functie

Sqr, functie

Tan, functie

Afgeleide wiskundige functie


Abs, functie

Geeft als resultaat een waarde van het hetzelfde type met de absolute waarde van een getal.

Syntaxis

Abs(getal)

Het vereiste argument getal kan elke geldige numerieke expressie zijn. Als het getal Null bevat, is de resultaatwaarde Null. Als het een niet-geïnitialiseerde variabele betreft, wordt de resultaatwaarde nul.

Notities

De absolute waarde van een getal is de niet-gemarkeerde (positieve/negatieve) grootheid van het getal. Bijvoorbeeld: ABS(-1) en ABS(1) geven beide als resultaat 1.


Atn, functie

Geeft als resultaat een Double-waarde met de boogtangens van een getal.

Syntaxis

Atn(getal)

Het vereiste argument getal kan een Double-waarde of elke geldige numerieke expressie zijn.

Notities

De functie Atn neemt de verhouding van twee zijden van een rechthoekige driehoek (getal) en geeft als resultaat de corresponderende hoek in radialen. De verhouding is de lengte van de overliggende zijde van de hoek gedeeld door de lengte van de aanliggende zijde van de hoek.

Het bereik van het resultaat is -pi/2 tot pi/2 radialen.

U zet graden om in radialen door graden te vermenigvuldigen met pi/180. U zet radialen om in graden door radialen te vermenigvuldigen met 180/pi.

Opmerking   Atn is de inverse trigonometrische functie van Tan. Deze functie heeft een hoek als argument en geeft de verhouding van twee zijden van een rechthoekige driehoek als resultaat. Verwar Atn niet met de cotangens. De cotangens is de enkelvoudige inverse van een tangens (1/tangens).


Cos, functie

Geeft als resultaat een Double-waarde met de cosinus van een hoek.

Syntaxis

Cos(getal)

Het vereiste argument getal kan een Double-waarde of elke geldige numerieke expressie zijn die een hoek in radialen uitdrukt.

Notities

De functie Cos neemt een hoek als argument en geeft de verhouding van twee zijden van een rechthoekige driehoek als resultaat. De verhouding is de lengte van de aanliggende zijde van de hoek gedeeld door de lengte van de schuine zijde van de hoek.

Het resultaat valt binnen het bereik van -1 tot 1.

Zet graden om in radialen door graden te vermenigvuldigen met pi/180. Zet radialen om in graden door radialen te vermenigvuldigen met 180/pi.


Exp, functie

Geeft als resultaat een Double-waarde met het getal e (de basis van natuurlijke logaritmen) verheven tot een bepaalde macht.

Syntaxis

Exp(getal)

Het vereiste argument getal kan een Double-waarde of elke geldige numerieke expressie zijn.

Notities

Als de waarde van getal groter is dan 709,782712893, treedt een fout op. De constante e is bij benadering 2,718282.

Opmerking   De functie Exp is het complement van de bewerking die wordt uitgevoerd door de functie Log en wordt ook wel een antilogaritme genoemd.


Int, Fix, functies

Geeft het integergedeelte van een getal als resultaat.

Syntaxis

Int(getal)

Fix(getal)

Het vereiste argument getal kan een Double-waarde of elke geldige numerieke expressie zijn. Als number de waarde Null heeft, wordt Null als resultaat gegeven.

Notities

Zowel met de functie Int als met de functie Fix kunt u het gedeelte achter de komma (het breukgedeelte) van getal verwijderen en geven als resultaat het geheel getal dat overblijft.

Het verschil tussen Int en Fix is dat als getal negatief is, de functie Int het eerste negatieve geheel getal dat kleiner is dan of gelijk is aan getal als resultaat geeft, terwijl de functie Fix het eerste negatieve geheel getal dat groter is dan of gelijk is aan getal als resultaat geeft. Met de functie Int rondt u bijvoorbeeld -8,4 af op -9 en met de functie Fix rondt u -8,4 af op -8.

Fix(getal) is gelijk aan:

Sgn(getal) * Int(Abs(getal))


Log, functie

Geeft als resultaat een Double-waarde met de natuurlijke logaritme van een getal.

Syntaxis

Log(getal)

Het vereiste argument getal kan een Double-waarde of elke geldige numerieke expressie zijn die groter is dan 0.

Notities

De natuurlijke logaritme is de logaritme met het grondtal e. De constante e heeft ongeveer de waarde 2,718282.

Bereken logaritmen met het grondtal n voor een willekeurig getal x door de natuurlijke logaritme van x als volgt te delen door de natuurlijke logaritme van n:

Logn(x) = Log(x) / Log(n)

Hier volgt een voorbeeld van een aangepaste Function waarmee u logaritmen met het grondtal 10 berekent:

Static Function Log10(X)

Log10 = Log(X) / Log(10#)

End Function


Randomize, instructie

Initialiseert de generator van aselecte getallen.

Syntaxis

Randomize [getal]

Het optionele argument getal kan een Variant-waarde of elke geldige numerieke expressie zijn.

Notities

De instructie Randomize gebruikt het argument getal om de generator van aselecte getallen van de functie Rnd te starten en een nieuw begingetal te geven. Als u getal weglaat, wordt de resultaatwaarde van de systeemtimer als nieuw begingetal gebruikt.

Als u Randomize niet gebruikt, wordt steeds hetzelfde begingetal gebruikt voor de functie Rnd (zonder argumenten) als u deze opnieuw oproept. Het begingetal komt dan overeen met het laatst gegenereerde getal.

Opmerking   Als u een aselecte getallenreeks wilt herhalen, roept u Rnd aan met een negatief argument direct gevolgd door Randomize met een numeriek argument. Als u Randomize gebruikt met dezelfde waarde voor getal, wordt de vorige reeks niet herhaald.


Rnd, functie

Geeft als resultaat een Single-waarde met een aselect getal.

Syntaxis

Rnd[(getal)]

Het optionele argument getal kan een Single-waarde of elke geldige numerieke expressie zijn.

Resultaatwaarden

Als getal is	Rnd genereert
Kleiner dan nul	Telkens hetzelfde getal, met getal als begingetal
Groter dan nul	Het volgende aselecte getal in de reeks
Gelijk aan nul	Het meest recent gegenereerde getal
Niet aanwezig	Het volgende aselecte getal in de reeks
Notities

De functie Rnd geeft als resultaat een waarde kleiner dan 1 maar groter of gelijk aan 0.

De waarde van getal bepaalt hoe de functie Rnd een aselect getal genereert:

Voor een aselect initieel begingetal wordt dezelfde getallenreeks gegenereerd omdat elke opeenvolgende oproep van de functie Rnd gebruik maakt van het voorgaande getal als begingetal voor het volgende getal in de reeks.

Gebruik eerst de instructie Randomize zonder een argument om de generator van aselecte getallen te starten met een begingetal op basis van de systeemtimer voordat u de functie Rnd gebruikt.

Gebruik de volgende formule als u aselecte integers in een gegeven reeks wilt maken:

Int((bovengrens - benedengrens + 1) * Rnd + benedengrens)

In deze formule staat bovengrens voor het hoogste getal in het bereik en benedengrens voor het laagste getal in het bereik.

Opmerking   Als u een aselecte getallenreeks wilt herhalen, roept u Rnd aan met een negatief argument direct gevolgd door Randomize met een numeriek argument. Als u Randomize gebruikt met dezelfde waarde voor getal, wordt de vorige reeks niet herhaald.


Sgn, functie

Geeft als resultaat een Variant (Integer) dat de markering van een getal aangeeft.

Syntaxis

Sgn(getal)

Het vereiste argument getal kan elke geldige numerieke expressie zijn.

Resultaatwaarden

Als getal is	Sgn geeft als resultaatwaarde
Groter dan nul	1
Gelijk aan nul	0
Kleiner dan nul	-1
Notities

Het teken van het argument getal bepaalt de resultaatwaarde van de functie Sgn.


Sin, functie

Geeft als resultaat een Double-waarde met de sinus van een hoek.

Syntaxis

Sin(getal)

Het vereiste argument getal kan een Double-waarde of elke geldige numerieke expressie zijn die een hoek in radialen uitdrukt.

Notities

De functie Sin neemt een hoek als argument en geeft als resultaat de verhouding van twee zijden van een rechthoekige driehoek. De verhouding is de lengte van de overliggende zijde van de hoek gedeeld door de lengte van de schuine zijde van de hoek.

Het resultaat valt binnen het bereik van -1 tot 1.

Zet graden om in radialen door graden te vermenigvuldigen met pi/180. Zet radialen om in graden door radialen te vermenigvuldigen met 180/pi.


Sqr, functie

Geeft als resultaat een Double-waarde met de vierkantswortel van een getal.

Syntaxis

Sqr(getal)

Het vereiste argument getal kan een Double-waarde of elke geldige numerieke expressie zijn die groter is dan of gelijk is aan 0.


Tan, functie

Geeft als resultaat een Double-waarde met tangens van een hoek.

Syntaxis

Tan(getal)

Het vereiste argument getal kan een Double-waarde of elke geldige numerieke expressie zijn die een hoek in radialen uitdrukt.

Notities

De functie Tan neemt een hoek als argument en geeft als resultaat de verhouding van twee zijden van een rechthoekige driehoek. De verhouding is de lengte van de overliggende zijde van de hoek gedeeld door de lengte van de aanliggende zijde van de hoek.

Zet graden om in radialen door graden te vermenigvuldigen met pi/180. Zet radialen om in graden door radialen te vermenigvuldigen met 180/pi.


Afgeleide wiskundige functies

Hier volgt een lijst van niet-intrinsieke wiskundige functies die van de intrinsieke wiskundige functies kunnen worden afgeleid:

Functie	Afgeleide equivalenten
Secans	Sec(X) = 1 / Cos(X)
Cosecans	Cosec(X) = 1 / Sin(X)
Cotangens	Cotan(X) = 1 / Tan(X)
Inverse sinus	Arcsin(X) = Atn(X / Sqr(-X * X + 1))
Inverse cosinus	Arccos(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
Inverse secans	Arcsec(X) = Atn(X / Sqr(X * X - 1)) + Sgn((X) - 1) * (2 * Atn(1))
Inverse cosecans	Arccosec(X) = Atn(X / Sqr(X * X - 1)) + (Sgn(X) - 1) * (2 * Atn(1))
Inverse cotangens	Arccotan(X) = Atn(X) + 2 * Atn(1)
Hyperbole sinus	HSin(X) = (Exp(X) - Exp(-X)) / 2
Hyperbole cosinus	HCos(X) = (Exp(X) + Exp(-X)) / 2
Hyperbole tangens	HTan(X) = (Exp(X) - Exp(-X)) / (Exp(X) + Exp(-X))
Hyperbole secans	HSec(X) = 2 / (Exp(X) + Exp(-X))
Hyperbole cosecans	HCosec(X) = 2 / (Exp(X) - Exp(-X))
Hyperbole cotangens	HCotan(X) = (Exp(X) + Exp(-X)) / (Exp(X) - Exp(-X))
Inverse hyperbole sinus	HArcsin(X) = Log(X + Sqr(X * X + 1))
Inverse hyperbole cosinus	HArccos(X) = Log(X + Sqr(X * X - 1))
Inverse hyperbole tangens	HArctan(X) = Log((1 + X) / (1 - X)) / 2
Inverse hyperbole secans	HArcsec(X) = Log((Sqr(-X * X + 1) + 1) / X)
Inverse hyperbole cosecans	HArccosec(X) = Log((Sgn(X) * Sqr(X * X + 1) + 1) / X)
Inverse hyperbole cotangens	HArccotan(X) = Log((X + 1) / (X - 1)) / 2
Logaritme met grondtal N	LogN(X) = Log(X) / Log(N)


Voorbeeld van de methode Add

Dit voorbeeld maakt gebruik van de methode Add om Inst-objecten (aantal keren dat een klasse genaamd Class1 is aangetroffen met een variabele Public InstanceName) aan een collectie genaamd MyClasses toe te voegen. Om te zien hoe dit werkt, voegt u een klassenmodule in en declareert u een openbare variabele genaamd InstanceName op moduleniveau van Class1 (typ Public InstanceName) om daarin de namen van alle aangetroffen klassen op te nemen. Houd de standaardnaam Class1 aan. Kopieer de volgende programmacode naar de gebeurtenisprocedure Form_Load van een formuliermodule.

Dim MyClasses As New Collection	' Maakt een object van het type collectie.

Dim Num As Integer	' Teller voor het onderscheiden van sleutels.

Dim Msg

Dim TheName	' Plaats voor namen die gebruiker invoert.

Do

Dim Inst As New Class1	' Maakt een nieuwe instantie van Class1.

Num = Num + 1	' Verhoogt Num en leest volgende naam.

Msg = "Voer een naam in voor dit object." & Chr(13) _

 & "Klik op Annuleren om de namen in de collectie te zien."

TheName = InputBox(Msg, "Benoem de items in de collectie")

Inst.InstanceName = TheName	' Plaatst naam in objectinstantie.

' Als gebruiker naam heeft ingevoerd, wordt deze aan collectie toegevoegd.

If Inst.InstanceName <> "" Then

' Voegt het naamobject aan de collectie toe.

MyClasses.Add item := Inst, key := CStr(Num)

End If

' Wist de huidige verwijzing als voorbereiding op de volgende.

Set Inst = Nothing

Loop Until TheName = ""

For Each x In MyClasses

MsgBox x.instancename, , "Naam"

Next


Voorbeeld van de methode Clear

Dit voorbeeld maakt gebruik van de methode Clear van het object Err om de numerieke eigenschappen van het object Err opnieuw op nul en de tekenreekseigenschap op tekenreeks zonder gegevens in te stellen. Als Clear zou ontbreken in de volgende programmacode, zou het foutberichtvenster na elke herhaling van de lus worden geopend (na het optreden van een fout), ongeacht of er met een opeenvolgende berekening al dan niet een fout werd gegenereerd. U kunt de programmacode stapsgewijs doorlopen om het effect vast te stellen.

Dim Result(10) As Integer	' Declareert de matrix met elementen die

' gemakkelijk overlopen.

Dim indx

On Error Resume Next	' Stelt foutopsporing uit.

Do Until indx = 10

' Genereert een incidentele fout of slaat resultaat op indien foutloos.

Result(indx) = Rnd * indx * 20000

If Err.Number <> 0 Then

MsgBox Err, , "Fout gegenereerd: ", Err.HelpFile, Err.HelpContext

Err.Clear	' Wist eigenschappen van Err-object.

End If

indx = indx + 1

Loop


Voorbeeld van de methode Item

Dit voorbeeld maakt gebruik van de methode Item om een verwijzing naar een object in een collectie op te halen. Ervan uitgaande dat Verjaardagen een Collection-object is, haalt de volgende programmacode uit de collectie verwijzingen op naar de objecten die de verjaardagen van Jan Jansen en Piet Jansen vertegenwoordigen, met behulp van de sleutels 'JansenJan' en 'JansenPiet' als index-argumenten. De eerste oproep specificeert expliciet de methode Item, de tweede echter niet. De beide oproepen werken omdat de methode Item de standaard is voor een Collection-object. De verwijzingen, toegewezen aan JansenJanBD en JansenPietBD met behulp van Set, kunnen worden gebruikt om toegang te krijgen tot de eigenschappen en methoden van de opgegeven objecten. Om deze programmacode uit te voeren, maakt u de collectie en neemt u daarin minimaal de twee leden op waarnaar wordt verwezen.

Dim JansenJanBD As Object

Dim JansenPietBD As Object

Dim Verjaardagen

Set JansenJanBD = Verjaardagen.Item("JansenJan")

Set JansenPietBD = Verjaardagen("JansenPiet")


Voorbeeld van de methode Print

Dit voorbeeld geeft met behulp van de methode Print de waarde van de variabele MyVar weer in het deelvenster Direct. De methode Print geldt alleen voor objecten die tekst kunnen weergeven.

Dim MyVar

MyVar = "Zoek mij op in het deelvenster Direct."

Debug.Print MyVar


Voorbeeld van de methode Raise

Dit voorbeeld maakt gebruik van de methode Raise van het object Err om een fout te genereren binnen een automatiseringsobject geschreven in Visual Basic. Het heeft het programma-id MyProj.MyObject.  Op de Macintosh is 'HD' de standaardstationsnaam en worden delen van de padnaam gescheiden door dubbele punten en niet door schuine strepen.

Const MyContextID = 1010407	' Definieert een constante voor context-ID.

Function TestName(CurrentName, NewName)

If Instr(NewName, "jan") Then	' Test de geldigheid van NewName.

' Genereert de uitzondering

Err.Raise vbObjectError +513, "MyProj.MyObject", _

"Geen ""jan"" toegestaan in de naam", "c:\MyProj\MyHelp.Hlp", _

MyContextID

End If

End Function


Voorbeeld van de methode Remove

Dit voorbeeld laat zien hoe de methode Remove kan worden gebruikt om objecten uit het Collection-object MyClasses te verwijderen. Deze programmacode verwijdert het object waarvan de index 1 is bij elke herhaling van de lus.

Dim Num, MyClasses

For Num = 1 To MyClasses.Count

MyClasses.Remove 1	' Verwijdert het eerste object telkens wanneer

' de lus wordt uitgevoerd totdat er

' geen objecten meer in de collectie zijn.

Next Num


Add, methode

Voegt een lid toe aan een object Collection.

Syntaxis

object.Add item, key, before, after

De syntaxis van de methode Add heeft de volgende objectkwalificatie en benoemde argumenten:

Onderdeel	Beschrijving
Object	Vereist. Een objectexpressie die gelijkwaardig is aan een object in de lijst Van toepassing op.
item	Vereist. Een willekeurige expressie die opgeeft welk lid aan de collectie moet worden toegevoegd.
key	Optioneel. Een unieke tekenreeksexpressie die een sleuteltekenreeks opgeeft die in plaats van een positionele index kan worden gebruikt om toegang te krijgen tot een onderdeel van de collectie.
before	Optioneel. Een expressie die een relatieve positie in de collectie opgeeft. Het lid dat moet worden toegevoegd, wordt in de collectie geplaatst vóór het lid dat wordt herkend aan het argument before. Als dit een numerieke expressie is, moet before een getal zijn van 1 tot de waarde van de eigenschap Count van de collectie. Als dit een tekenreeksexpressie is, moet before overeenkomen met de waarde voor key die werd opgegeven toen het lid waarnaar wordt verwezen aan de collectie werd toegevoegd. U kunt posities voor before of after opgeven, maar niet voor beide.
after	Optioneel. Een expressie die een relatieve positie in de collectie opgeeft. Het onderdeel dat moet worden toegevoegd, wordt in de collectie geplaatst na het onderdeel dat wordt herkend aan het argument after. Als dit een numerieke expressie is, moet after een getal zijn van 1 tot de waarde van de eigenschap Count van de collectie. Als dit een tekenreeksexpressie is, moet after overeenkomen met de key-waarde die werd opgegeven toen het onderdeel waarnaar wordt verwezen, aan de collectie werd toegevoegd. U kunt posities voor before of after opgeven, maar niet voor beide.
Notities

Het argument before of after moet, ongeacht of het een tekenreeks- of numerieke expressie is, altijd naar een bestaand lid van de collectie verwijzen, anders treedt er een fout op.

Er treedt eveneens een fout op als de opgegeven key-waarde de key-waarde voor een bestaand element van de collectie dupliceert.


Clear, methode

Wist alle instellingen van de eigenschappen van het object Err.

Syntaxis

object.Clear

Het object is altijd het object Err.

Notities

Gebruik Clear om het object Err expliciet te wissen nadat een fout is afgehandeld. Dit is bijvoorbeeld noodzakelijk bij uitgestelde foutafhandeling met On Error Resume Next. Visual Basic for Applications roept de methode Clear automatisch op als een van de volgende instructies wordt uitgevoerd:

•	Elk type van de instructie Resume

•	Exit Sub, Exit Function, Exit Property

•	Elke instructie On Error

Opmerking   Gebruik bij voorkeur de constructie On Error Resume Next in plaats van On Error GoTo voor fouten die worden gegenereerd tijdens de toegang tot andere objecten. Door Err na elke interactie met een object te controleren voorkomt u onduidelijkheid over het object waartoe de code toegang zocht toen de fout optrad. U weet dan zeker door welk object de foutcode in Err.Number is geplaatst en door welk object de fout oorspronkelijk is gegenereerd (het object dat is opgegeven in Err.Source).


Item, methode

Geeft als resultaat een bepaald lid van een object Collection, op basis van positie of op basis van sleutel.

Syntaxis

object.Item(index)

De syntaxis van de methode Item heeft de volgende objectkwalificatie en onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Een objectexpressie die gelijkwaardig is aan een object in de lijst Van toepassing op.
index	Vereist. Een expressie die de positie van een onderdeel van de collectie aangeeft. Als dit een numerieke expressie is, moet index een getal zijn van 1 tot de waarde van de eigenschap Count van de collectie. Als dit een tekenreeksexpressie is, moet index overeenkomen met het key-argument dat werd opgegeven toen het onderdeel waarnaar wordt verwezen aan de collectie werd toegevoegd.
Notities

Een fout treedt op als de waarde voor index niet overeenkomt met een bestaand onderdeel van de collectie.

De methode Item is de standaardmethode voor een collectie. De volgende coderegels zijn daarom hetzelfde:

Print MijnCollectie(1)

Print MijnCollectie.Item(1)


Print, methode

Drukt tekst in het venster Direct af.

Syntaxis

object.Print [uitvoerlijst]

De syntaxis van de methode Print heeft de volgende objectkwalificatie en onderdelen:

Onderdeel	Beschrijving
Object	Optioneel. Een objectexpressie die gelijkwaardig is aan een object in de lijst Van toepassing op.
uitvoerlijst	Optioneel. Een expressie of lijst met expressies die moet worden afgedrukt. Als dit onderdeel wordt weggelaten, wordt een lege regel afgedrukt.
Het argument uitvoerlijst heeft de volgende syntaxis en onderdelen:

{Spc(n) | Tab(n)} expressie tekenpos

Onderdeel	Beschrijving
Spc(n)	Optioneel. Hiermee kunt u spaties invoegen in de uitvoer, waarbij n staat voor het aantal in te voegen spaties.
Tab(n)	Optioneel. Hiermee kunt u de invoegpositie op een absoluut kolomnummer plaatsen, waarbij n het kolomnummer is. Gebruik Tab zonder argument om de invoegpositie aan het begin van het volgende afdrukgebied te plaatsen.
expressie	Optioneel. Een numerieke expressie of tekenreeksexpressie die moet worden afgedrukt.
tekenpos	Optioneel. Geeft de invoegpositie voor het volgende teken aan. Gebruik een puntkomma (;) om de invoegpositie direct na het laatst weergegeven teken te plaatsen. Gebruik Tab(n) om de invoegpositie op een absoluut kolomnummer te plaatsen. Gebruik Tab zonder argument om de invoegpositie aan het begin van het volgende afdrukgebied te plaatsen. Als tekenpos niet wordt gebruikt, wordt het volgende teken op de volgende regel afgedrukt.
Notities

Meerdere expressies kunnen worden gescheiden door een spatie of een puntkomma.

Alle gegevens die worden afgedrukt naar het deelvenster Immediate zijn op de juiste manier opgemaakt met het juiste decimale scheidingsteken dat is opgegeven bij de lokale instellingen van uw systeem. De sleutelwoorden worden uitgevoerd in de geldige taal van de hosttoepassing.

Voor Boole-gegevens wordt True of False afgedrukt. De sleutelwoorden True en False worden op een Nederlands systeem omgezet in Waar en Onwaar.

Date-gegevens worden genoteerd in de korte datumnotitie die door uw systeem wordt herkend. Wanneer het datum- of tijdonderdeel ontbreekt of nul is, worden alleen de aanwezige gegevens genoteerd.

Als de uitvoerlijst Empty is, wordt niets geschreven. Is de uitvoerlijst echter Null, dan is Null de uitvoer. Het sleutelwoord Null wordt dan omgezet in de taal die voor uw systeem is ingesteld.

Op een Nederlands systeem is dat het sleutelwoord Nul. De uitvoer van foutgegevens wordt geschreven als Error foutcode. Het sleutelwoord Error wordt omgezet in de taal die voor uw systeem is ingesteld. Op een Nederlands systeem is dat het sleutelwoord Fout.

Het object is vereist als de methode buiten een module met een standaardweergaveruimte wordt gebruikt. Er treedt bijvoorbeeld een fout op als de methode wordt opgeroepen in een standaardmodule zonder dat u een object hebt opgegeven. Uitvoerlijst wordt echter weergegeven op het formulier als de methode in de formulierenmodule wordt opgeroepen.

Opmerking   Omdat de methode Print doorgaans proportionele tekens afdrukt, is het van belang te weten dat er geen verband bestaat tussen het aantal tekens dat wordt afgedrukt en het aantal kolommen met vaste breedte waarin de tekens zich bevinden. Een breed teken, zoals een "W", beslaat bijvoorbeeld meer dan één kolom met vaste breedte, terwijl een smal teken zoals een "I" minder ruimte beslaat. Rekening houdend met gevallen waar bredere tekens worden gebruikt, moet u ervoor zorgen dat er voldoende ruimte is tussen de kolommen in een tabel. U kunt ook in een lettertype met vaste tekenbreedte afdrukken (zoals Courier) om te zorgen dat elk teken precies één kolom beslaat.


Raise, methode

Genereert een runtimefout.

Syntaxis

object.Raise number, source, description, helpfile, helpcontext

De methode Raise heeft de volgende objectkwalificatie- en benoemde argumenten:

Argument	Beschrijving
Object	Vereist. Altijd het object Err.
number	Vereist. Een Long-integer die de aard van de fout aangeeft. Visual Basic-fouten (zowel in Visual Basic gedefinieerde als door de gebruiker gedefinieerde fouten) liggen tussen 0 en 65535. Het bereik 0-512 is gereserveerd voor systeemfouten, het bereik 513-65535 is beschikbaar voor door de gebruiker gedefinieerde fouten. Wanneer u de eigenschap Number instelt op uw eigen foutcode in een klassenmodule, voegt u uw foutcodenummer toe aan de constante vbObjectError. Als u bijvoorbeeld het foutnummer 513 wilt genereren, wijst u vbObjectError +513 toe aan de eigenschap Number.
source	Optioneel. Een tekenreeksexpressie met de naam van het object of de toepassing waardoor de fout oorspronkelijk is gegenereerd. Als u deze eigenschap instelt voor een object, gebruikt u de vorm project.klasse. Als bron niet is opgegeven, wordt het programma-id van het huidige Visual Basic-project gebruikt.
description	Optioneel. Een tekenreeksexpressie die de fout beschrijft. Als niets is opgegeven, wordt de waarde in Number gecontroleerd. Als deze kan worden toegewezen aan een runtimefoutcode van Visual Basic, wordt de tekenreeks die door de functie Error als resultaatwaarde zou worden gegeven, als Description gebruikt. Als er geen Visual Basic-fout is die correspondeert met Number, wordt de tekst "Door de gebruiker gedefinieerde fout" gebruikt.
helpfile	Optioneel. Het volledige en geldige pad naar het Help-bestand dat informatie over deze fout bevat. Als niets is opgegeven, wordt het volledige pad en de bestandsnaam van het Visual Basic Help-bestand gebruikt.
helpcontext	Optioneel. Het context-id voor een onderwerp in helpfile dat informatie over de fout bevat. Als niets is opgegeven, wordt het Visual Basic Help-context-id gebruikt dat correspondeert met de eigenschap Number, als die bestaat.
Notities

Alle argumenten zijn optioneel, behalve number. Als u Raise echter gebruikt zonder argumenten, terwijl de eigenschappen van het object Err instellingen bevatten die niet zijn gewist, worden die instellingen als waarden voor uw fout gebruikt.

Raise wordt gebruikt om runtimefouten te genereren en kan in plaats van de instructie Error worden gebruikt. Raise is met name handig om fouten te genereren tijdens het schrijven van klassenmodules omdat het object Err namelijk meer gedetailleerde informatie geeft dan mogelijk is als u fouten genereert met de instructie Error. Met de methode Raise kan bijvoorbeeld de oorspronkelijke generator van de fout worden opgegeven in de eigenschap Source, on line Help voor de fout worden weergegeven, enzovoort.


Remove, methode

Verwijdert een lid uit een object Collection.

Syntaxis

object.Remove index

De syntaxis van de methode Remove heeft de volgende objectkwalificatie en onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Een objectexpressie die gelijkwaardig is aan een object in de lijst Van toepassing op.
index	Vereist. Een expressie die de positie van een onderdeel van de collectieaangeeft. Als dit een numerieke expressie is, moet index een getal zijn van 1 tot de waarde van de eigenschap Count van de collectie. Als dit een tekenreeksexpressie is, moet index overeenkomen met het key-argument dat werd opgegeven toen het onderdeel waarnaar wordt verwezen aan de collectie werd toegevoegd.
Notities

Er treedt een fout op als de waarde voor index niet overeenkomt met een bestaand onderdeel van de collectie.


Voorbeeld van de instructie AppActivate

Dit voorbeeld laat zien hoe de instructie AppActivate op verschillende manieren kan worden gebruikt om een toepassingsvenster te activeren. De instructies Shell gaan ervan uit dat de toepassingen zich in de opgegeven paden bevinden.  Op de Macintosh is "HD" de standaardstationsnaam en worden delen van de padnaam gescheiden door dubbele punten en niet door schuine strepen.

Dim MyAppID, ReturnValue

AppActivate "Microsoft Word"	' Activeert Microsoft

' Word.

' AppActivate kan ook de resultaatwaarde van de functie Shell gebruiken.

MyAppID = Shell("C:\WORD\WINWORD.EXE", 1)	' Start Microsoft Word.

AppActivate MyAppID	' Activeert Microsoft

' Word.

' U kunt ook de resultaatwaarde van de functie Shell gebruiken.

ReturnValue = Shell("c:\EXCEL\EXCEL.EXE",1)	' Start Microsoft Excel.

AppActivate ReturnValue	' Activeert Microsoft

' Excel.


Voorbeeld van de instructie Beep

Dit voorbeeld maakt gebruik van de instructie Beep om drie opeenvolgende geluidssignalen te geven via de luidspreker van de computer.

Dim I

For I = 1 To 3	' Herhaalt lus 3 keer.

Beep	' Laat een geluid horen.

Next I


Voorbeeld van de functie Command

Dit voorbeeld maakt gebruik van de functie Command voor het verkrijgen van de opdrachtregelargumenten in een functie die ze als resultaat geeft in een Variant die een matrix bevat. Niet beschikbaar in Microsoft Office.

Function GetCommandLine(Optional MaxArgs)

' Declareert variabelen.

Dim C, CmdLine, CmdLnLen, InArg, I, NumArgs

'Controleert of MaxArgs is opgegeven.

If IsMissing(MaxArgs) Then MaxArgs = 10

'Geeft matrix de juiste omvang.

ReDim ArgArray(MaxArgs)

NumArgs = 0: InArg = False

'Leest opdrachtregelargumenten.

CmdLine = Command()

CmdLnLen = Len(CmdLine)

'Doorloopt opdrachtregel teken

'voor teken.

For I = 1 To CmdLnLen

C = Mid(CmdLine, I, 1)

'Test op spaties of tabs.

If (C <> " " And C <> vbTab) Then

'Geen spatie of tab gevonden.

'Test of al in argument aanwezig.

If Not InArg Then

'Nieuw argument begint.

'Test op teveel argumenten.

If NumArgs = MaxArgs Then Exit For

NumArgs = NumArgs + 1

InArg = True

End If

'Voegt teken samen met huidige argument.

ArgArray(NumArgs) = ArgArray(NumArgs) + C

Else

'Spatie of tab aangetroffen.

'Stelt vlag InArg in op False.

InArg = False

End If

Next I

'Past omvang matrix aan argumenten aan.

ReDim Preserve ArgArray(NumArgs)

'Geeft matrix terug in Function-naam.

GetCommandLine = ArgArray()

End Function


Voorbeeld van de functie InputBox

Dit voorbeeld toont verschillende manieren waarop de functie InputBox kan worden gebruikt om de gebruiker te vragen een waarde in te voeren. Als de x- en y-posities worden weggelaten, wordt het dialoogvenster automatisch gecentreerd voor de desbetreffende assen. De variabele MyValue bevat de ingevoerde waarde als u op OK klikt of op ENTER drukt. Als u op Annuleren klikt, wordt een tekenreeks met lengte nul als resultaat gegeven.

Dim Message, Title, Default, MyValue

Message = "Voer een waarde in tussen 1 en 3"	' Stel vraag in.

Title = "Demo InputBox"	' Stelt titel in.

Default = "1"	' Stelt standaard in.

' Geeft bericht, titel en standaardwaarde weer.

MyValue = InputBox(Message, Title, Default)

' Gebruikt Help-bestand en context. De knop Help wordt automatisch toegevoegd.

MyValue = InputBox(Message, Title, , , , "DEMO.HLP", 10)

' Geeft dialoogvenster weer op positie 100, 100.

MyValue = InputBox(Message, Title, Default, 100, 100)


Voorbeeld van de functie MsgBox

Dit voorbeeld maakt gebruik van de functie MsgBox om een bericht voor een kritieke fout weer te geven in een dialoogvenster met een knop Ja en Nee. De knop Nee is opgegeven als de standaardreactie. De waarde die de functie MsgBox als resultaat geeft, is afhankelijk van de knop die u kiest. Dit voorbeeld gaat ervan uit dat DEMO.HLP een Help-bestand is dat een onderwerp bevat met een Help-contextnummer dat gelijk is aan 1000.

Dim Msg, Style, Title, Help, Ctxt, Response, MyString

Msg = "Wilt u doorgaan?"	' Definieert bericht.

Style = vbYesNo + vbCritical + vbDefaultButton2	' Definieert knoppen.

Title = "Demo MsgBox"	' Definieert titel.

Help = "DEMO.HLP"	' Definieert Help-bestand.

Ctxt = 1000	' Definieert onderwerp

' context.

' Geeft bericht weer.

Response = MsgBox(Msg, Style, Title, Help, Ctxt)

If Response = vbYes Then	' Gebruiker koos Ja.

MyString = "Ja"	' Voert bepaalde handeling uit.

Else	' Gebruiker koos Nee.

MyString = "Nee"	' Voert bepaalde handeling uit.

End If


Voorbeeld van de instructie SendKeys

Dit voorbeeld maakt gebruik van de functie Shell om de toepassing Rekenmachine te starten die bij Microsoft Windows wordt geleverd. Met de instructie SendKeys worden toetsaanslagen doorgegeven om bepaalde getallen op te tellen, waarna de Rekenmachine wordt afgesloten. (Om het voorbeeld te kunnen zien, plakt u het in een procedure en start u de procedure. Omdat AppActivate de focus verplaatst naar de toepassing Rekenmachine, kunt u de programmacode niet stapsgewijs doorlopen.) Op de Macintosh gebruikt u in plaats van de Windows Rekenmachine een Macintosh-toepassing die toetsenbordinvoer accepteert.

Dim ReturnValue, I

ReturnValue = Shell("CALC.EXE", 1)	' Start Rekenmachine.

AppActivate ReturnValue 	' Activeert de Rekenmachine.

For I = 1 To 100	' Maakt een lus die als teller fungeert.

SendKeys I & "{+}", True	' Stuurt toetsaanslagen naar Rekenmachine

Next I	' om elke waarde van I op te tellen.

SendKeys "=", True	' Leest eindtotaal.

SendKeys "%{F4}", True	' Verstuurt ALT+F4 om de Rekenmachine te sluiten.


AppActivate, instructie

Activeert een toepassingsvenster.

Syntaxis

AppActivate title[, wait]

De instructie AppActivate heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
title	Vereist. Een tekenreeksexpressie met de titel op de titelbalk van het toepassingsvenster dat u wilt activeren. U kunt in plaats van title de taak-id gebruiken die door de functie Shell als resultaat wordt gegeven om een toepassing te starten.
wait	Optioneel. Een Boole-waarde die aangeeft of de oproepende toepassing op de voorgrond wordt weergegeven voordat een andere toepassing wordt geactiveerd. Als de waarde False is (standaardinstelling), wordt de opgegeven toepassing direct geactiveerd, zelfs als de oproepende toepassing niet op de voorgrond wordt weergegeven. Als de waarde True is, wacht de oproepende toepassing totdat deze op de voorgrond wordt weergegeven en activeert vervolgens de opgegeven toepassing.
Notities

De instructie AppActivate activeert de benoemde toepassing of het benoemde venster, maar is niet van invloed op de weergave als pictogram of maximumvenster. Het geactiveerde toepassingsvenster blijft niet geactiveerd wanneer de gebruiker de activering wijzigt of het venster sluit. Gebruik de functie Shell als u een toepassing wilt starten en de vensteropmaak wilt instellen.

Bij het zoeken naar de te activeren toepassing wordt gezocht naar een toepassing waarvan de titeltekenreeks exact overeenkomt met title. Als deze niet wordt gevonden, wordt de titeltekenreeks geactiveerd van een toepassing die begint met title. Als de toepassing met de naam title meerdere keren voorkomt, wordt een van deze toepassingen willekeurig geopend.


Beep, instructie

Het systeem geeft een geluidssignaal.

Syntaxis

Beep

Notities

Het interval en de duur van het geluidssignaal zijn afhankelijk van uw apparatuur en systeemsoftware. Dit varieert per computer.


Command, functie

Deze instructie geeft het argumentgedeelte van de opdrachtregel die wordt gebruik voor het starten van Microsoft Visual Basic of een met Visual Basic ontwikkeld uitvoerbaar programma. De Visual Basic-functie Command is niet beschikbaar in Microsoft Office-toepassingen.

Syntaxis

Command

Notities

Wanneer Visual Basic wordt gestart van de opdrachtregel, wordt elk gedeelte van de opdrachtregel dat volgt na /cmd, aan het programma doorgegeven als een opdrachtregelargument. In het volgende voorbeeld vormt cmdlineargs de argumentgegevens als resultaat van de functie Command.

VB /cmd cmdlineargs

Voor toepassingen die zijn ontwikkeld met Visual Basic en tot een uitvoerbaar .exe-bestand zijn gecompileerd, geeft Command als resultaat alle argumenten die voorkomen achter de naam van de toepassing op de opdrachtregel. Bijvoorbeeld:

MijnToep cmdlineargs

Als u wilt weten hoeveel opdrachtregelargumenten kunnen worden gewijzigd in de gebruikersinterface van de door u gebruikte toepassing, zoekt u in Help naar "opdrachtregelargumenten".


InputBox, functie

Geeft een aanwijzing weer in een dialoogvenster, wacht tot de gebruiker tekst invoert of een knop kiest en geeft een String met de inhoud van het tekstvak als resultaat.

Syntaxis

InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])

De functie InputBox heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
prompt	Vereist. Een tekenreeksexpressie die wordt weergegeven als het bericht in het dialoogvenster. De maximumlengte van prompt is ongeveer 1024 tekens, afhankelijk van de breedte van de gebruikte tekens. Neem tussen elke regel een regelterugloop (Chr(13)), een regelinvoer (Chr(10)) of een regelterugloop-regelinvoer (Chr(13) & Chr(10)) op wanneer prompt uit meer dan één regel bestaat.
title	Optioneel. Een tekenreeksexpressie die op de titelbalk van het dialoogvenster wordt weergegeven. Als u title weglaat wordt de toepassingsnaam in de titelbalk geplaatst.
default	Optioneel. Een tekenreeksexpressie die in het tekstvak wordt weergegeven als standaardantwoord wanneer geen andere invoer wordt geleverd. Als u default weglaat, wordt het tekstvak leeg weergegeven.
xpos	Optioneel. Een numerieke expressie die de horizontale afstand tussen de linkerrand van het dialoogvenster en de linkerrand van het scherm aangeeft in twips. Als u xpos weglaat, wordt het dialoogvenster horizontaal gecentreerd.
ypos	Optioneel. Een numerieke expressie die de verticale afstand tussen de bovenrand van het dialoogvenster en de bovenkant van het scherm aangeeft in twips. Als u ypos weglaat, wordt het dialoogvenster verticaal op ongeveer een derde van de bovenkant van het scherm geplaatst.
helpfile	Optioneel. Een tekenreeksexpressie die het Help-bestand aangeeft dat wordt gebruikt voor contextafhankelijke Help voor het dialoogvenster. Als u helpfile opgeeft, dient u ook het argument context op te geven.
context	Optioneel. Een numerieke expressie voor het Help-contextnummer dat de schrijver van de Help aan het desbetreffende Help-onderwerp heeft toegekend. Als u context opgeeft, dient u ook het argument helpfile op te geven.
Notities

Als zowel het argument helpfile als context is opgegeven, kan de gebruiker op F1 (Windows) of HELP (Macintosh) drukken om het met context corresponderende Help-onderwerp op te roepen. In sommige hosttoepassingen, zoals bijvoorbeeld Microsoft Excel, wordt automatisch een Help-knop aan het dialoogvenster toegevoegd. Als de gebruiker OK kiest of op ENTER , drukt, geeft de functie InputBox de inhoud van het tekstvak als resultaat. Als de gebruiker Cancel kiest, geeft de functie als resultaat een tekenreeks zonder gegevens ("").

Opmerking   Gebruik InputBox in een expressie als u niet alleen het eerste benoemde argument wilt opgeven. Als u positionele argumenten wilt weglaten, neemt u de komma als scheidingsteken op.


MsgBox, functie

Geeft een bericht weer in een dialoogvenster, wacht totdat de gebruiker een knop kiest en geeft als resultaat een Integer-waarde die aangeeft welke knop de gebruiker heeft gekozen.

Syntaxis

MsgBox(prompt[, knoppen] [, titel] [, helpbestand, context])

De functie MsgBox heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
prompt	Vereist. Een tekenreeksexpressie die wordt weergegeven als het bericht in het dialoogvenster. De maximumlengte van prompt is ongeveer 1024 tekens, afhankelijk van de breedte van de gebruikte tekens. Neem tussen elke regel een regelterugloop (Chr(13)), regelinvoer (Chr(10)) of een regelterugloop-regelinvoer (Chr(13) & Chr(10)) op wanneer prompt uit meer dan één regel bestaat.
buttons	Optioneel. Een numerieke expressie die de som van verschillende waarden vormt. Deze waarden vertegenwoordigen het aantal en type weer te geven knoppen, de pictogramopmaak die wordt gebruikt, de standaardknop en de modaliteit van het dialoogvenster. Als u dit getal weglaat, is de standaardwaarde voor buttons 0.
title	Optioneel. Een tekenreeksexpressie die op de titelbalk van het dialoogvenster wordt weergegeven. Als u title weglaat wordt de toepassingsnaam in de titelbalk geplaatst.
helpfile	Optioneel. Een tekenreeksexpressie die het Help-bestand aangeeft dat wordt gebruikt voor contextafhankelijke Help voor het dialoogvenster. Als u helpfile opgeeft, dient u ook het argument context op te geven.
context	Optioneel. Een numerieke expressie voor het Help-contextnummer dat de schrijver van de Help aan het desbetreffende Help-onderwerp heeft toegekend. Als u context opgeeft, dient u ook het argument helpfile op te geven.
Instellingen

Het argument buttons heeft de volgende instellingen:

Constante	Waarde	Beschrijving
vbOKOnly	0	Uitsluitend de knop OK weergeven.
vbOKCancel	1	De knoppen OK en Cancel weergeven.
vbAbortRetryIgnore	2	De knoppen Abort, Retry en Ignore weergeven.
vbYesNoCancel	3	De knoppen Yes, No en Cancel weergeven.
vbYesNo	4	De knoppen Yes en No weergeven.
vbRetryCancel	5	De knoppen Retry en Cancel weergeven.
vbCritical	16	Het pictogram Critical Message weergeven.
vbQuestion	32	Het pictogram Warning Query weergeven.
vbExclamation	48	Het pictogram Warning Message weergeven.
vbInformation	64	Het pictogram Information Message weergeven.
VbDefaultButton1	0	De eerste knop is de standaardinstelling.
VbDefaultButton2	256	De tweede knop is de standaardinstelling.
VbDefaultButton3	512	De derde knop is de standaardinstelling.
vbDefaultButton4	768	De vierde knop is de standaardinstelling.
vbApplicationModal	0	Voorwaarde voor uitvoering van de toepassing. De gebruiker moet op het berichtvenster reageren voordat het werken in de actieve toepassing kan worden voorgezet.
vbSystemModal	4096	Voorwaarde voor uitvoering van het systeem. Alle toepassingen worden onderbroken totdat de gebruiker op het berichtvenster heeft gereageerd.
vbMsgBoxHelpButton	16384	Voegt de knop Help aan het berichtvenster toe.
VbMsgBoxSetForeground	65536	Specificeert het berichtvenster als het voorgrondvenster.
vbMsgBoxRight	524288	Tekst wordt rechts uitgelijnd.
vbMsgBoxRtlReading	1048576	Geeft op dat tekst op Hebreeuwse en Arabische systemen van rechts naar links moet worden weergegeven.
De eerste groep waarden (0 - 5) beschrijft het aantal knoppen en het type knop dat in het dialoogvenster wordt weergegeven. De tweede groep (16, 32, 48, 64) beschrijft de pictogramopmaak. De derde groep (0, 256, 512) stelt de standaardknop in en de vierde groep (0, 4096) bepaalt de modaliteit voor het berichtvenster. Gebruik, als u getallen optelt, slechts één getal uit elke groep om een eindwaarde voor het argument buttons te maken.

Opmerking   Deze constanten worden geleverd door Visual Basic for Applications. Hierdoor kunt u de namen van de constanten op willekeurige posities in de programma-instructies gebruiken in plaats van de waarden.

Resultaatwaarden

Constante	Waarde	Beschrijving
vbOK	1	OK
vbCancel	2	Annuleren
vbAbort	3	Abort
vbRetry	4	Retry
vbIgnore	5	Ignore
vbYes	6	Yes
vbNo	7	No
Notities

Als zowel het argument helpfile als context is opgegeven, kan de gebruiker op F1 (Windows) of HELP (Macintosh) drukken om het met context corresponderende Help-onderwerp op te roepen. In sommige hosttoepassingen, zoals bijvoorbeeld Microsoft Excel, wordt automatisch een Help-knop aan het dialoogvenster toegevoegd.

Als het dialoogvenster een knop Cancel bevat, heeft het drukken op de knop ESC hetzelfde resultaat als het kiezen van Cancel. Als het dialoogvenster een knop Help bevat, is contextgevoelige Help voor het dialoogvenster aanwezig. Er wordt echter pas een resultaatwaarde gegeven nadat u een andere knop hebt gekozen.

Opmerking   Gebruik MsgBox in een expressie als u niet alleen het eerste benoemde argument wilt opgeven. Als u positionele argumenten wilt weglaten, neemt u de komma als scheidingsteken op.


SendKeys, instructie

Zendt een of meer toetsaanslagen naar het actieve venster alsof deze op het toetsenbord werden getypt.

Syntaxis

SendKeys string[, wait]

De instructie SendKeys heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
string	Vereist. Een tekenreeksexpressie die de te zenden toetsaanslagen aangeeft.
wait	Optioneel. Een Boole-waarde die de wachtmodus aangeeft. Als het resultaat False is (standaardinstelling), wordt onmiddellijk nadat de toetsen zijn verzonden de besturing opnieuw overgedragen aan de procedure. Als het resultaat True is, dienen de toetsaanslagen te worden verwerkt voordat de besturing opnieuw aan de procedure wordt overgedragen.
Notities

Elke toets wordt weergegeven door een of meer tekens. Als u een enkel toetsenbordteken wilt opgeven, gebruikt u het teken zelf. Voor het opgeven van de letter A gebruikt u "A" voor string. Als u meer dan een teken wilt opgeven, voegt u elk extra teken toe aan het voorgaande. Voor het weergeven van de letters A, B en C gebruikt u "ABC" voor string.

Het plusteken (+), de caret (^), het procentteken (%), de tilde (~) en de ronde haken ( ) hebben een speciale betekenis voor de instructie SendKeys. Als u een van deze tekens wilt opgeven, moet u het teken tussen accolades plaatsen ({}). Als u bijvoorbeeld het plusteken wilt opgeven, gebruikt u {+}. Vierkante haken ([ ]) hebben geen speciale betekenis voor SendKeys, maar u moet ze toch tussen accolades zetten. In andere toepassingen hebben ze immers wel een speciale betekenis, die belangrijk kan zijn wanneer dynamische gegevensuitwisseling (DDE) plaatsvindt. Als u accolades wilt zenden, gebruikt u {{} en {}}.

Als u tekens wilt zenden die niet worden weergegeven wanneer u op een toets drukt (bijvoorbeeld ENTER of TAB ) en toetsen die een handeling in plaats van een teken weergeven, gebruikt u de onderstaande programmacode:

Toets	Code
BACKSPACE	{BACKSPACE}, {BS} of {BKSP}
BREAK	{BREAK}
CAPS-LOCK	{CAPSLOCK}
DEL of DELETE	{DELETE} of {DEL}
PIJL-OMLAAG	{DOWN}
END	{END}
ENTER	{ENTER}of ~
ESC	{ESC}
HELP	{HELP}
HOME	{HOME}
INS of INSERT	{INSERT} of {INS}
PIJL-LINKS	{LEFT}
NUMLOCK	{NUMLOCK}
PGDN	{PGDN}
PGUP	{PGUP}
PRINT SCREEN	{PRTSC}
PIJL-RECHTS	{RIGHT}
SCROLL-LOCK	{SCROLLLOCK}
TAB	{TAB}
PIJL-OMHOOG	{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}
Als u toetsen wilt opgeven in willekeurige combinatie met de toetsen SHIFT, CTRL en ALT, plaatst u een of meer van de volgende programmacodes voor de standaardtekencode:

Toets	Code
SHIFT	+
CTRL	^
ALT	%
Als u wilt opgeven dat SHIFT, CTRL en ALT ingedrukt moeten blijven terwijl een aantal andere toetsen worden ingedrukt, plaatst u de code van de toetsen tussen haakjes. Als u bijvoorbeeld wilt opgeven dat de toets SHIFT ingedrukt moet blijven, terwijl op E en C wordt gedrukt, gebruikt u '+(EC)'. Als u wilt opgeven dat SHIFT ingedrukt moet blijven, terwijl op E wordt gedrukt, gevolgd door C zonder dat SHIFT is ingedrukt, gebruikt u '+EC'.

Toetsen die herhaald moeten worden, geeft u op in de vorm {toets aantal}. Plaats een spatie tussen toets en aantal. Zo betekent {LEFT 42}: druk 42 maal op de toets PIJL-LINKS. {h 10} betekent: druk 10 keer op de toets H.

Opmerking   Met de instructie SendKeys kunt u geen toetsaanslagen zenden naar een toepassing die niet voor Microsoft Windows of Macintosh is gemaakt. Bovendien kunt u de toets PRINT SCREEN {PRTSC} niet verzenden met Sendkeys.


Tekenset (0 - 127)

0	•	32	[space]	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	•
•	Deze tekens worden niet ondersteund door Microsoft Windows.

* *	De waarden 8, 9, 10 en 13 worden respectievelijk geconverteerd naar een backspace, tab, regelinvoer en regelterugloop. Deze worden niet grafisch weergegeven, maar kunnen afhankelijk van de toepassing wel van invloed zijn op de tekstweergave.


IMEStatus, functie

Geeft als resultaat een Integer met de actieve IME (Input Method Editor)-modus van Microsoft Windows. Deze functie is alleen beschikbaar in versies voor Oost-Aziatische landen.

Syntaxis

IMEStatus

Resultaatwaarden

De resultaatwaarden voor de Japanse lokale instellingen zijn als volgt:

Constante	Waarde	Beschrijving
vbIMEModeNoControl	0	IME niet controleren (standaard)
vbIMEModeOn	1	IME aan.
vbIMEModeOff	2	IME uit.
vbIMEModeDisable	3	IME uitgeschakeld.
vbIMEModeHiragana	4	Hiragana-modus met volledige breedte
vbIMEModeKatakana	5	Katakana-modus met volledige breedte
vbIMEModeKatakanaHalf	6	Katakana-modus met halve breedte
vbIMEModeAlphaFull	7	Alfanumerieke modus met volledige breedte
vbIMEModeAlpha	8	Alfanumerieke modus met halve breedte
De resultaatwaarden voor de Koreaanse lokale instellingen zijn als volgt:

Constante	Waarde	Beschrijving
vbIMEModeNoControl	0	IME niet controleren (standaard)
vbIMEModeAlphaFull	7	Alfanumerieke modus met volledige breedte
vbIMEModeAlpha	8	Alfanumerieke modus met halve breedte
vbIMEModeHangulFull	9	Hangul-modus met volledige breedte
vbIMEModeHangul	10	Hangul-modus met halve breedte
De resultaatwaarden voor de Chinese lokale instellingen zijn als volgt:

Constante	Waarde	Beschrijving
vbIMEModeNoControl	0	IME niet controleren (standaard)
vbIMEModeOn	1	IME aan.
vbIMEModeOff	2	IME uit.


Kan de programmacode niet uitvoeren in onderbrekingsmodus

De onderbrekingsmodus wordt actief wanneer u de uitvoering van programmacode uitstelt. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd programmacode uit te voeren vanuit het dialoogvenster Macro. Visual Basic was echter al programmacode aan het uitvoeren, hoewel deze code in de onderbrekingsmodus was uitgesteld.

Mogelijk hebt u de onderbrekingsmodus geactiveerd zonder dat u het wist, bijvoorbeeld als er een syntaxisfout of runtimefout is veroorzaakt. Ga verder met het uitvoeren van de uitgestelde programmacode of beëindig de uitvoering ervan voordat u programmacode uitvoert vanuit het dialoogvenster Macro. U kunt de fout herstellen en vervolgens Doorgaan kiezen, of u kunt terugkeren naar het dialoogvenster Macro en de macro opnieuw te starten.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Kan geen verwante functie oproepen voor een object dat geen instantie van een definitieklasse is (Fout 97)

De procedure Friend is aan te roepen vanuit een module die zich buiten de klasse bevinden, maar deel uitmaakt van het project waarbinnen de klasse is gedefinieerd. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd de procedure Friend van een klasse te activeren. Hoewel de referentievariabele het juiste type heeft, wijst deze naar een instantie die geen instantie van de klasse is.

Een dergelijke situatie kan zich bijvoorbeeld voordoen wanneer er twee klassen zijn, klassiek en klassikaal (die klassikaal implementeert), maar u per abuis klassikaal toewijst aan het exemplaar klassiek.

•	U hebt geprobeerd tussen processen of tussen threads een eigenschap Friend of methode te benaderen. Friend-procedures maken geen deel uit van de openbare interface van een klasse en kunnen dus niet tussen processen of threads worden ingezet.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Kan de ontwerpmodus niet afsluiten omdat besturingselement 'item1' niet kan worden gemaakt

Van alle besturingselementen dient een exemplaar actief te zijn voordat u de ontwerpmodus verlaat. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het in het berichtenvenster opgegeven besturingselement kan niet worden gemaakt.

Programmacode kan pas worden uitgevoerd nadat exemplaren zijn gemaakt van alle besturingselementen en deze op de juiste manier zijn verbonden. Zorg ervoor dat elk bestand dat nodig is voor het besturingselement beschikbaar is voordat u het nogmaals probeert.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Object kan geen automatiseringsgebeurtenissen vinden

Een object moet een standaardbroninterface geven zodat u gebeurtenisprocedures voor de gebeurtenissen ervan kunt schrijven. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U probeert een gebeurtenisprocedure te schrijven voor een gebeurtenis voor een object, maar die gebeurtenis is buiten het object niet beschikbaar.

Raadpleeg de documentatie van het object voor suggesties over minder directe manieren om met de gebeurtenis waarin u bent geïnteresseerd om te gaan.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Deze functionaliteit wordt niet ondersteund door de DLL

Niet alle Visual Basic-instructies zijn toegestaan binnen een dynamic link library (DLL).Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U probeert een DLL te maken vanuit een klasse die een instructie bevat die niet vanuit een DLL kan worden uitgevoerd.

Controleer de klasse en verwijder alle instructies die niet binnen een DLL kunnen worden uitgevoerd, bijvoorbeeld de instructie End.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Ongeldig buiten Enum

Een Enum is een gegevenstype waarmee u groepen gerelateerde constanten (zogenaamde opsommingen) kunt maken. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt een End Enum gebruikt op een plaats waar deze geen deel uitmaakte van een Enum-definitie.

Controleer of er tekst tussen de Enum-definitie en de instructie End Enum is geplaatst.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Kan de code niet uitvoeren omdat het project is geopend met uitgeschakelde macro's.

Een hosttoepassing kan macro's inschakelen of uitschakelen. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt het document geopend met Macro's uitgeschakeld.

Sluit het document en open het opnieuw met Macro's inschakelen.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Er wordt door het huidige project niet verwezen naar de bibliotheek met dit symbool, zodat het symbool ongedefinieerd is. Wilt u nu een verwijzing naar de bibliotheek toevoegen?

Type- en objectgegevens worden opgeslagen in bibliotheken. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Er bevindt zich een definitie voor dit symbool in een typebibliotheek.

Als u het symbool wilt definiëren zoals het in de genoemde bibliotheek is opgenomen, klikt u op OK om de verwijzing toe te voegen aan de bibliotheek.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Object heeft geen instructie Property Let

U kunt alleen een waarde aan een eigenschap toekennen als hiervoor een methode Property Let beschikbaar is gesteld. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U probeert een waarde toe te kennen aan een eigenschap waarvoor geen methode Property Let ter beschikking is gesteld.

Het is niet mogelijk direct een waarde aan deze eigenschap toe te kennen. Als u een klasse hebt gemaakt, kunt u de interface wijzigen door de methode Property Let weer te geven. Raadpleeg anders de documentatie van het onderdeel om te bepalen of er een indirecte methode is om de waarde toe te kennen.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Er is geen Help beschikbaar

Niet voor alle fouten bestaat een Help-onderwerp. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt een fout veroorzaakt waarvoor geen Help-onderwerp beschikbaar is.

Lees het bestand Readme. Informatie over pas onlangs bekend geworden fouten is doorgaans te vinden in het bestand Readme.


Kan de gebeurtenissen van het object niet ontvangen omdat het object reeds gebeurtenissen naar het maximum aantal ontvangers stuurt die door het object worden ondersteund (Fout 96)

Elk object geeft het maximum aantal ontvangers op waarnaar het gelijktijdig gebeurtenissen kan verzenden. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U probeert Set te gebruiken voor een variabele WithEvents voor een besturingselement op een formulier.

U kunt Set niet voor een variabele van het type WithEvents gebruiken, vanwege het aantal ontvangers dat voor deze gebeurtenissen is toegestaan.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Kan ingangspunt van DLL in opgegeven DLL niet vinden

Een invoerpunt is de naam van een DLL (Windows) of programmacodebron (Macintosh) -procedure (of het rangtelwoord dat de procedure voorstelt). Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het invoerpunt wordt onjuist beschreven in een typebibliotheek. Misschien bevat de naam een spelfout of is het rangtelwoord onjuist opgegeven.

Neem contact op met de leverancier voor een herstelde typebibliotheek.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Kan opgegeven programma niet uitvoeren

Wanneer u een uitvoerbaar bestand in lokale code maakt, moeten enkele extra programma's worden uitgevoerd. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Geheugen- of systeembronnen waren onvoldoende om de programmacodegenerator of -koppelaar te starten.

Sluit zoveel mogelijk open toepassingen om geheugen en andere systeembronnen vrij te maken.

•	Visual Basic is niet op de juiste wijze geïnstalleerd.

Installeer Visual Basic opnieuw.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Dubbele bron met dezelfde type-aanduiding en naam

Een Microsoft Windows-bronbestand bevat doorgaans bitmaps, teksttekenreeksen en andere soortgelijke gegevens, die door een toepassing worden gebruikt. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het Windows-bronbestand dat u probeert te gebruiken in het project, bevat twee of meer bronnen van hetzelfde type en met gelijke naam, of het bestand bevat een bron die automatisch door Visual Basic wordt gemaakt.

Gebruik een ander bronbestand of maak het ongeldige bronbestand opnieuw en verwijder één van de dubbele bronnen.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


De oproep van een eigenschap of een methode mag geen verwijzing bevatten naar een persoonlijk object, niet als argument en ook niet als resultaatwaarde (Fout 98)

Private objecten mogen nooit buiten een project worden doorgegeven. De volgende oorzaken, die allemaal niet zijn toegestaan, kunnen deze fout veroorzaken:

•	Een client heeft een eigenschap of methode aangeroepen van een onderdeel buiten het proces, en heeft geprobeerd als een van de argumenten een verwijzing naar een privaat object door te geven. Een client heeft een eigenschap of methode aangeroepen van een onderdeel buiten het proces en het onderdeel heeft geprobeerd een verwijzing naar een privaat object terug te geven, of een dergelijke verwijzing aan een ByRef-argument toe te kennen.

•	Een onderdeel buiten het proces heeft een call-back-methode voor zijn client aangeroepen en heeft geprobeerd een verwijzing naar een privaat object door te geven.

•	Een onderdeel buiten het proces heeft geprobeerd een verwijzing naar een privaat object door te geven als een argument van een gebeurtenis die het onderdeel deed ontstaan.

•	Een client heeft geprobeerd een verwijzing naar een privaat object toe te kennen aan een ByRef-argument van een gebeurtenis die de client afhandelde.

Het is in Visual Basic niet mogelijk om tussen processen verwijzingen naar niet-zichtbare private objecten door te geven. In enkele gevallen kan Visual Basic deze fout echter niet detecteren en dus ook niet voorkomen. Private objecten zijn niet ontworpen om buiten het project te gebruiken. Als u ze aan een client doorgeeft, brengt u de stabiliteit van het programma in gevaar en veroorzaakt u incompatibiliteit met latere versies van Visual Basic. Als u een eigen privaat klasse aan een client moet doorgeven, stelt u de eigenschap Instancing in op een andere waarde dan Private.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Toewijzing aan constante niet toegestaan

Een constante stelt een alleen-lezen waarde voor. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd een nieuwe waarde toe te kennen aan een variabele die als Const is gedeclareerd, of aan een typebibliotheekconstante.

Als u een nieuwe waarde moet toekennen, declareert u een gewone variabele van het gewenste type en kent u daaraan de waarde toe. Als u een variabele met een beperkte reeks waarden nodig hebt, kunt u met de instructie Enum een opsomming declareren.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Parametermatrices en optionele argumenten gaan niet samen

Met een ParamArray kunt u procedures definiëren die parameterlijsten van variabele lengte accepteren. Een Optional-argument is een argument dat de aanvrager van de procedure mag opgeven of weglaten zonder dat een fout wordt gegenereerd. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt in dezelfde parameterlijst zowel het sleutelwoord ParamArray als het sleutelwoord Optional gebruikt.

Verwijder ofwel de parameter Optional ofwel de parameter ParamArray. U mag beide sleutelwoorden niet in dezelfde parameterlijst gebruiken. Beide benaderingen kunt u toepassen voor het type parameterlijst dat u wenst.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Kan het opgegeven bestand niet vinden

Controleer het bericht op de naam van het bestand dat niet is gevonden. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het bestand dat in het foutbericht is genoemd, kon niet als zodanig worden gevonden.

Controleer of de stationsaanduiding, het pad en de bestandsnaam correct zijn opgegeven.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Ongeldig optioneel parametertype

Niet alle Visual Basic-typen zijn als Optional-parameters toegestaan. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt een parameter met een ongeldig gegevenstype gedefinieerd.

U kunt bijvoorbeeld geen Optional-parameter van een door de gebruiker gedefinieerd type opgeven. U kunt hiervoor misschien wel een matrix van het type Variant gebruiken, aangezien de elementen van een matrix van het type Variant gegevens van verschillende typen kunnen opslaan.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Ongeldige sjabloon

Een afgeleide klasse van een sjabloon kan geen sjabloon zijn. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd een sjaboononderdeel te maken door deze van een sjabloon af te leiden.

U kunt geen sjabloonklasse van een sjabloon afleiden.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Alleen geldig in de objectmodule

Enkele Visual Basic-instructies of -constructies zijn alleen geldig in objectmodules (formulieren, klassenmodules, enzovoort). Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd een ongeldige instructie of constructie (bijvoorbeeld de instructie Implements, het sleutelwoord WithEvents of een opvolging van een gebeurtenis) in een niet-klassenmodule te gebruiken.

Plaats instructies die deze fout genereren in een objectmodule.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


De opgegeven typebibliotheek of wizard is geen VBA-project

Niet alle elementen die in Visual Basic beschikbaar zijn, kunnen zowel worden gelezen als beschreven. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd vanuit een Visual Basic-project naar een Addin of een typebibliotheek te schrijven.

U kunt als onderdeel van een Visual Basic-project niet direct naar een in de handel verkrijgbare Addin of een typebibliotheek schrijven.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Voor deze bewerking is een instructie Reset vereist

In de meeste gevallen kunt u programmacode bewerken en de programmacode vanaf de bewerking verder uitvoeren. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt een wijziging in de programmacode aangebracht waarvoor u de programmacode vanaf het initialisatiepunt opnieuw moet starten.

Dit kan zich voordoen als u de code in een procedure hebt opgedeeld en de actieve uitvoeringsregel zich niet langer in dezelfde procedurele context bevindt als het geval was toen de uitvoering werd uitgesteld.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Vertaling is mislukt. Controleer het bestand trnslate.log voor meer informatie.

Huidige versies van Visual Basic vertalen alleen ten behoeve van achterwaartse compatibiliteit. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	De vertaling mislukte onverwacht.

Dit komt doorgaans door een verbroken verwijzing naar een typebibliotheek. Meer details vindt u in het opgegeven vertalingslogbestand.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Wizards kunnen niet verwijzen naar projecten

Een wizard kan naar een andere wizard verwijzen, maar niet naar een project. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Er is tijdens de opdracht Make Wizard een verwijzing naar een project aangetroffen.

Verwijder de verwijzing naar het project.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Onverwachte compileerfout

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Deze fout doet zich voor wanneer tijdens de compilatie een niet te ondervangen fout optreedt die door de compiler niet kan worden afgehandeld.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Kan gebeurtenissen voor het opgegeven object niet verwerken

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Gebeurtenissen voor dit object konden niet worden afgehandeld. Het is mogelijk dat gebeurtenissen in het object ontbreken, of aanwezig zijn maar niet correct werken, of met opzet zijn uitgeschakeld.

Controleer het object en de gebeurtenissen ervan in het Objectenoverzicht voor informatie over het object en de bijbehorende gebeurtenissen.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Ongeldig gebruik van basisklassennaam

U kunt de naam van een basisklasse niet zelfstandig gebruiken. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd de naam van een basisklasse zelfstandig te gebruiken zonder duidelijk te maken dat u probeerde het standaardlid van de basisklasse te benaderen.

Plaats de naam van de basisklasse tussen haakjes om aan te geven dat u het standaardlid wilt benaderen.

•	U hebt de naam van de basisklasse in een expressie gebruikt, maar het lid dat u probeerde te benaderen, was niet eenduidig opgegeven.

Plaats een eenduidigheidsteken (bijvoorbeeld een uitroepteken) tussen de naam van de basisklasse en het lid waarin u bent geïnteresseerd.

•	U hebt de naam van de basisklasse in een Set-instructie gebruikt alsof deze een verwijzing naar de klasse bevatte.

Gebruik de naam van de basisklasse om een verwijzing op te halen, bijvoorbeeld met GetObject.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Ongeldige gebeurtenisnaam

Vanaf een gebeurtenis worden procedurenamen samengesteld door de objectnaam met een onderstrepingsteken aan een gebeurtenisnaam te koppelen. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt in de gebeurtenisnaam een onderstrepingsteken gebruikt.

Verwijder het onderstrepingsteken uit de gebeurtenisnaam.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Gebeurtenis is niet gevonden

Een gebeurtenis, opgegeven in een RaiseEvent-instructie, moet overeenkomen met een gedefinieerde gebeurtenis. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt in een RaiseEvent-instructie een naam opgegeven, maar de definitie van de gebeurtenis kan niet worden gevonden.

Controleer of de gebeurtenisnaam correct is gespeld.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Geef een zoekreeks op

Bij het zoeken in het Objectenoverzicht, moet u een tekenreeks opgeven. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt een zoekopdracht in het Objectenoverzicht gestart, maar u hebt niet opgegeven wat u zoekt.

Voer een zoekargument in.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Opgegeven naam is verborgen en kan niet worden weergegeven

Enkele namen bestaan in een typebibliotheek, maar zijn gemarkeerd als verborgen. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	De opgegeven naam bevindt zich in de typebibliotheek, maar is gemarkeerd als verborgen.

Verborgen leden van de typebibliotheek kunt u niet gewoon weergeven. Kies Show Hidden Members in het snelmenu van het Objectenoverzicht als u verborgen leden zichtbaar wilt maken. Nu kunt u de informatie over het lid bekijken.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Kan niet naar het opgegeven type springen omdat het in de bibliotheek staat, waar nu niet naar wordt verwezen

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd een type op te geven in een bibliotheek waarnaar in het project niet wordt verwezen.

Stel vanuit het dialoogvenster References een verwijzing naar de typebibliotheek in.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Ongeldig binnen Enum

Niet alle typen zijn geldig in een definitie van een opsomming. Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd een tekenreeks of een ander ongeldig type op te geven als waarde voor een lid van het type Enum.

De constante expressie die wordt gebruikt om een Enum-lid op te geven, moet worden geëvalueerd in het type Long of een ander Enum-type.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Onverwachte fout

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Er heeft zich een niet te ondervangen fout voorgedaan. Probeer het systeem af te sluiten en opnieuw te starten.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Het huidige project ondersteunt dit soort bestanden niet

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het bestand dat u probeert te openen is geen geldig projectbestand, of is een projectbestand met functies die niet worden ondersteund door deze Visual Basic-hosttoepassing en Visual Basic-omgeving.

Controleer of het projectbestand dat u wilt openen een geldig projectbestand is (een bestand dat is gemaakt en opgeslagen in dezelfde Visual Basic-hosttoepassing en Visual Basic-omgeving).

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Dit VBA-project is gemaakt terwijl VBA onder een andere toepassing werd uitgevoerd. U kunt dit project alleen openen vanuit de toepassing waarin dit project is gemaakt.

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het bestand dat u probeert te openen is een projectbestand dat in een andere hosttoepassing is gemaakt.

Controleer of het projectbestand dat u wilt openen is gemaakt en opgeslagen in dezelfde Visual Basic-hosttoepassing.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Vensterloze besturingselementen kunnen geen menu's hebben

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd een menu op een vensterloos besturingselement te plaatsen. Dit is niet toegestaan.

Kies een besturingselement met venster als u een menu op een besturingselement wilt plaatsen.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Dit besturingselement kan alleen worden gebruikt met 'item'-ontwerpfuncties

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het gekozen besturingselement werkt alleen met de aangegeven ontwerper.

U moet of een ander besturingselement of een andere ontwerpfunctie kiezen.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Dit besturingselement kan niet worden gebruikt met 'item'-ontwerpfuncties

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het gekozen besturingselement werkt niet met de aangegeven ontwerper.

U moet of een ander besturingselement of een andere ontwerpfunctie kiezen.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Deze ontwerpfunctie mag niet worden gebruikt, omdat deze functie eigenschappen gebruikt die niet worden ondersteund in deze versie van Visual Basic

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	De gekozen ontwerper wordt niet in deze versie van Visual Basic ondersteund.

U moet een andere ontwerper gebruiken, of een die is ontworpen voor de aangegeven versie van Visual Basic.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


'item' kan niet worden toegevoegd omdat ernaar wordt verwezen, terwijl het niet door een item in het project wordt gebruikt. Als u dit wilt verhelpen, schakelt u 'Informatie over niet-gebruikte ActiveX-besturingselementen verwijderen' uit in de Projectopties.

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het aangegeven onderdeel kan niet worden toegevoegd omdat het door geen enkel element in het project wordt gebruikt.

Schakel het selectievakje 'Remove information about unused ActiveX Controls' uit in het dialoogvenster Project Options onder het menu Project.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Kan Internet Explorer niet starten

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Een onbekend probleem verhindert dat Internet Explorer wordt gestart.

Probeer Internet Explorer buiten Visual Basic om te starten om te controleren of het correct werkt.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


'item'-ontwerpfuncties kunnen alleen worden gebruikt in DLL-projecten

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	De aangegeven ontwerper kan alleen in ActiveX-DLL-projecten worden gebruikt.

Probeer de ontwerper in een ActiveX-DLL-project.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


'item'-ontwerpfuncties kunnen niet openbaar zijn in ActiveX EXE-projecten

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	De eigenschap Instancing van de aangegeven ontwerper kan in ActiveX-EXE-projecten niet op Public worden ingesteld.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


'item'-ontwerpfuncties moeten openbaar zijn en kunnen niet in standaard EXE-projecten worden gebruikt

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	De eigenschap Instancing van de aangegeven ontwerper moet zijn ingesteld op Public.

De ontwerper kan niet worden gebruikt in standaard .exe-projecten.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


'item'-ontwerpfuncties kunnen niet persoonlijk zijn

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	De eigenschap Instancing van de aangegeven ontwerper kan niet worden ingesteld op Public.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Een of meer instanties van dit object is actief. Het object kan nu nog niet worden verwijderd.

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd een object te verwijderen dat op dit moment nog actief is.

Sluit alle instanties van het object voordat u het uit het project verwijdert.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Naar dit project wordt op dit moment verwezen door een ander project. Dit project kan daarom niet worden gesloten.

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Een ander project verwijst naar het aangegeven project dat u probeerde te sluiten.

Sluit het nadat u de verwijzing vanuit het andere project hebt verwijderd.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


MDI-formulieren zijn niet toegestaan in projecten met meerdere threads. Elk MDI-formulier wordt uit dit project verwijderd. Als u het MDI-formulier in het project wilt houden, kiest u Annuleren en verandert u het threadmodel in een Threadgroep met slechts 1 thread.

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd een MDI-formulier aan een project met meerdere threads toe te voegen.

Als u het MDI-formulier in het project wilt houden, verandert u het threadmodel in Threadgroep met slechts 1 thread.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


'item' heeft een toegangsfout veroorzaakt. Wilt u |1 uit de lijst met beschikbare invoegtoepassingen verwijderen?

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	De aangegeven invoegtoepassing veroorzaakt een toegangsfout tot het bestand.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Er is niet bevestigd dat de geselecteerde invoegtoepassing veilig vanuit de opdrachtregel kan worden uitgevoerd. Tussenkomst van de gebruiker kan nodig zijn (mogelijk UI).

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	'Veilig uitvoerbaar vanuit de opdrachtregel' betekent dat de invoegtoepassing op een bepaalde manier is geregistreerd om aan te geven dat het geen gebruikersinterfaces bevat waarvoor gebruikersinvoer nodig is wanneer Visual Basic via een opdrachtregel wordt geactiveerd. Een gebruikersinterface kan interfereren met de werking van onbemande processen (zoals ingebouwde scripts).

Als u niet aangeeft dat een invoegtoepassing veilig vanuit de opdrachtregel kan worden uitgevoerd (zelfs als dit wel mogelijk is), verschijnt een waarschuwing wanneer een gebruiker deze invoegtoepassing selecteert en daarna de optie Opdrachtregel in het dialoogvenster Laadgedrag kiest. Dit is geen ernstig probleem, maar eerder een waarschuwing voor de gebruiker dat de geselecteerde invoegtoepassing misschien gebruikersinterface-elementen bevat die onverwacht kunnen opduiken en hun geautomatiseerde scripts kunnen onderbreken omdat op invoer van de gebruiker wordt gewacht.

Als u wilt aangeven dat een invoegtoepassing veilig vanuit de opdrachtregel kan worden uitgevoerd, maakt u de toepassing op die manier (u kunt hiervoor de ontwerpfunctie voor invoegtoepassingen gebruiken), of wijzigt u handmatig de waarde in de Register-sleutel.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Ongeldige parameter. Kan het door de gebruiker gedefinieerde type niet schrijven.

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd een door de gebruiker gedefinieerd type naar een PropertyBag-object te schrijven. Dit wordt niet ondersteund.

Als u dit probleem wilt omzeilen, schrijft u elk afzonderlijk element van het door de gebruiker gedefinieerd type naar het PropertyBag-object.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Ongeldige parameter. Kan het object niet schrijven omdat het geen persistentie ondersteunt.

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd een object naar een PropertyBag-object te schrijven, maar het object ondersteunt geen van de persistentie-interfaces van ActiveX.

U kunt dit alleen verhelpen als u toegang hebt tot de programmacode van het object. Het moet een in Visual Basic gemaakt object zijn waarvoor de eigenschap Persistable is ingesteld op True. Bovendien moet Class Public of Public Createable zijn en zich in een ActiveX-, Dll-, ActiveX Exe- of UserControl-project bevinden.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Ongeldige eigenschapsnaam

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	De naam die u voor de eigenschap hebt ingevoerd, is ongeldig. Dat betekent dat de naam al wordt gebruikt, is gereserveerd voor het systeem, of ongeldige tekens bevat.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


'item' is een onderdeel met één thread dat niet kan worden gebruikt in projecten met meerdere threads. Wijzig het threadmodel voor 'item' of neem contact op met de leverancier van het onderdeel voor een bijgewerkte versie.

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U probeert een onderdeel met één thread in een project met meerdere threads te gebruiken.

U kunt het threadmodel voor het onderdeel met de enkele thread wijzigen, of contact opnemen met de leverancier van het onderdeel voor een bijgewerkte versie.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Kan besturingselement 'item1' niet uit 'item2' laden. De versie van 'item2' is mogelijk achterhaald. Controleer of u de versie van het besturingselement gebruikt die bij de toepassing is geleverd.

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U werkt met een oude versie.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Kan besturingselement 'item 1' niet activeren. Dit besturingselement is misschien niet compatibel met de toepassing. Controleer of u de versie van het besturingselement gebruikt die bij de toepassing is geleverd.

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	De toepassing kan het aangegeven besturingselement niet activeren aangezien dit niet compatibel is met de toepassing. Dit kan voorkomen als de versie van het besturingselement op het systeem afwijkt van de versie die met de toepassing is geleverd.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


De typegegevens van de ActiveX-ontwerpfunctie komen niet overeen met de opgeslagen gegevens. Kan gegevens niet laden.

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het project kon niet worden geladen omdat de Type-informatie van de ActiveX-ontwerpfunctie niet overeenkomt met wat is opgeslagen. Dit kan zijn veroorzaakt door een beschadigd bestand.

Probeer een reservekopie van het project te laden.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Deze interactie tussen de gecompileerde onderdelen en de onderdelen van een ontwerpomgeving wordt niet ondersteund.

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Dit komt voor wanneer twee onderdelen tegelijkertijd worden uitgevoerd, waarbij het ene onderdeel (bijvoorbeeld een formulier of een UserControl) eerder is gecompileerd en nu runtime wordt uitgevoerd (msvbvm60.dll), terwijl het andere onderdeel in de IDE wordt uitgevoerd. Bijvoorbeeld, een gecompileerde UserControl die op een formulier in de IDE wordt uitgevoerd.

Het probleem treedt op omdat de interne geheugenstructuur bij een element dat in de IDE wordt uitgevoerd enigszins anders is dan bij een gecompileerd object en niet altijd compatibel is. In het algemeen zult u hiermee echter geen problemen tegenkomen tenzij u een instantie van een UserControl (Me) via een Property- of Sub-procedure doorgeeft aan een hostformulier of ander onderdeel.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Kan geminimaliseerde formulierafbeelding niet afdrukken.

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	De formulierafbeelding kan niet worden afgedrukt wanneer deze is geminimaliseerd.

Maximaliseer de afbeelding en probeer opnieuw af te drukken.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Er is een onverwachte fout opgetreden in de codegenerator of het linkerprogramma.

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	De codegenerator of linkerprogramma heeft een onverwachte fout veroorzaakt.

Klik op Yes als u de fouten in Kladblok wilt weergeven.

Deze fout wordt doorgaans veroorzaakt door te weinig schijfruimte of andere schijfkwesties.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Versienummers moeten tussen 0 en 9999 liggen

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd op het tabblad Maken van het dialoogvenster Projecteigenschappen een negatief getal, een niet-numeriek teken of een getal groter dan 9999 toe te kennen aan het onderdeel Primair, Secundair, Revisie van het versienummer voor een project. Gebruik een getal tussen 0 en 9999.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Ongeldig basisadres

U hebt een ongeldig basisadres ingevoerd. Voor deze fout zijn de volgende oorzaak en oplossing mogelijk:

•	U hebt op het tabblad Compileren van het dialoogvenster Projecteigenschappen een ongeldig basisadres opgegeven.

Een geldig basisadres moet een veelvoud zijn van 64kB, groter dan 64kB en kleiner dan &H7FFF0000.

Deze fout treedt op in projecten met ActiveX DLL's of ActiveX-besturingselementen.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Er is geen openbaar onderdeel gevonden dat kan worden gemaakt. Druk op F1 voor meer informatie.

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het project moet ten minste één te maken openbaar onderdeel bevatten.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Het bestand 'item' kan niet worden geregistreerd als een ActiveX-onderdeel

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd een besturingselement of dynamic link library (.dll) te registreren die geen geldig ActiveX-onderdeel is. Controleer of u het juiste besturingselement of .dll hebt. Neem contact op met de leverancier van het ActiveX-onderdeel voor meer informatie.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Het projectbestand 'item1' bevat een ongeldige sleutelwaarde 'item2'.

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het Visual Basic-projectbestand (.vbp) bevat een sleutel die Visual Basic niet herkent. Het bestand is misschien beschadigd.

Installeer een reservekopie van het opgegeven bestand of wijzig het bestand met een teksteditor en verbeter de fout.

Waarschuwing   Als u een Visual Basic-bestand verandert in een andere editor dan Visual Basic, kunt u het bestand beschadigen. Dit wordt alleen geavanceerde gebruikers aanbevolen.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Kan Help niet weergeven

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Als u WinHelp uitvoert, is de toepassing Windows Help niet beschikbaar. Als winhelp.exe zich op uw computer bevindt, moet u ervoor zorgen dat deze toepassing ook in uw pad is opgenomen. Als de toepassing zich niet op uw computer bevindt, kunt u deze installeren met het programma Setup van Microsoft Windows 9x of Microsoft Windows NT.

•	Als u HTMLHelp uitvoert en HH.exe zich op uw computer bevindt, moet u ervoor zorgen dat het in het pad is opgenomen. Als het programma zich niet op uw computer bevindt, moet u het installeren voordat u Help kunt weergeven.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Klasse is niet geregistreerd

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	De aangegeven klassenmodule is niet geregistreerd.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


De ProgID-reeks is te lang 'item'. De ProgID kan maximaal 39 tekens lang zijn.

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	De tekenreeks ProgID van het ActiveX-onderdeel mag niet langer zijn dan 39 tekens. ProgID wordt gemaakt door de projectnaam samen te voegen met de naam van de klassenmodule.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Project <naam> is gewijzigd. Wilt u de wijzigingen nu opslaan?

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Een van de eigenschapsinstellingen of een instructie in de code is gewijzigd voor een of meer van de bestanden in het project en de wijzigingen zijn nog niet opgeslagen. Dit is uw laatste kans om de wijzigingen op te slaan voordat een ander project wordt geladen.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Het laadgedrag voor 'item' kan niet worden bijgewerkt vanwege de huidige Register-machtigingen

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Visual Basic kan de invoegtoepassing die u hebt geselecteerd in de lijst Beschikbare invoegtoepassingen in het dialoogvenster Invoegbeheer niet laden, omdat deze niet goed is geregistreerd of niet meer in het systeemregister is geregistreerd.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Het onderdeel is niet juist geregistreerd

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het aangegeven onderdeel is niet correct geregistreerd.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Het onderdeel is niet gevonden op de geregistreerde locatie

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het vereiste uitvoerbare bestand (.exe) of dynamic link library-bestand (.dll) is niet gevonden.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Het opgegeven object is niet gemaakt

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het uitvoerbare bestand (.exe) van de component ActiveX is niet correct uitgevoerd.

Mogelijk is er een robleem met de gegevens in het Register.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Onderdeel 'item' of een van de afhankelijkheden zijn niet juist geregistreerd: er ontbreekt een bestand of het bestand is ongeldig

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het opgegeven bestand is verplaatst of verwijderd.

•	Het opgegeven bestand is verkeerd geregistreerd.

Installeer het opgegeven bestand opnieuw om het correct te registreren. Neem contact op met de leverancier van het object voor meer informatie.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Voor deze voorziening is Internet Explorer 'item' of hoger vereist. U kunt de nieuwste versie verkrijgen via www.microsoft.com.

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Deze functie werkt alleen correct als u over de aangegeven versie van Internet Explorer beschikt.

Zie http://www.microsoft.com voor de laatste beschikbare versie van Internet Explorer.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Een formulier kan niet worden verwijderd of aangepast als het is geminimaliseerd of gemaximaliseerd

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd een formulier te verplaatsen of van formaat te veranderen terwijl het was geminimaliseerd of gemaximaliseerd. Dit is niet toegestaan.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Kan niet-modaal formulier niet weergeven wanneer modaal formulier wordt weergegeven

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd een niet-modaal formulier weer te geven voordat een modaal formulier was gesloten.

Sluit eerst het modaal formulier.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Kan ReDim of Erase niet uitvoeren, of kan niet toewijzen aan Variant als deze een matrix bevat waarvan het element een With-object is

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	U hebt geprobeerd om ReDim of Erase te gebruiken voor, of een variabele toe te kennen aan een Variant met een element dat een With-object is.

Deze fout wordt bijvoorbeeld veroorzaakt door de volgende code:

Type Test

Name as Integer

End Type

Sub Main()

Dim c(0) As Test

Dim e

e = c

With e(0)

ReDim e(1)

End With

End Sub

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Het project kan niet worden weergegeven

Voor deze fout zijn de volgende oorzaken en oplossingen mogelijk:

•	Het project dat u probeert te bekijken, is beveiligd.

Raadpleeg de documentatie bij de hosttoepassing voor informatie over hoe u het project kunt weergeven.

Voor aanvullende informatie selecteert u het element in kwestie en drukt u op F1 (in Windows) of HELP (op de Macintosh).


Voorbeeld van de gebeurtenissen Activate en Deactivate

De volgende programmacode maakt gebruik van twee gebruikersformulieren: UserForm1 en UserForm2. Kopieer deze procedures naar de module UserForm1 en voeg vervolgens UserForm2 toe. De titel van UserForm1 wordt gemaakt in de gebeurtenisprocedure Activate. Wanneer de gebruiker op het clientgebied van UserForm1 klikt, wordt UserForm2 geladen en wordt weergegeven hoe deze de gebeurtenis Deactivate van UserForm1 start en de titels verandert.

' Activate-gebeurtenis voor UserForm1

Private Sub UserForm_Activate()

    UserForm1.Caption = "Klik op het clientgebied"

End Sub

' Click-gebeurtenis voor UserForm1

Private Sub UserForm_Click()

    Load UserForm2

    UserForm2.StartUpPosition = 3

    UserForm2.Show

End Sub

' Deactivate-gebeurtenis voor UserForm1

Private Sub UserForm_Deactivate()

    UserForm1.Caption = "Focus is verdwenen!"

    UserForm2.Caption = "Focus is zojuist van UserForm1 hierheen verplaatst"

End Sub


Voorbeeld van de gebeurtenis Initialize

In het volgende voorbeeld wordt uitgegaan van twee gebruikersformulieren in een programma. Tijdens de gebeurtenis Initialize van UserForm1 wordt UserForm2 geladen en weergegeven. Als de gebruiker op UserForm2 klikt, wordt het verborgen en verschijnt UserForm1. Als de gebruiker op UserForm1 klikt, verschijnt UserForm2 weer.

' Dit is de procedure voor de gebeurtenis Initialize voor UserForm1

Private Sub UserForm_Initialize()

Load UserForm2

UserForm2.Show

End Sub

' Dit is de gebeurtenis Click van UserForm2

Private Sub UserForm_Click()

UserForm2.Hide

End Sub

' Dit is de gebeurtenis Click van UserForm1

Private Sub UserForm_Click()

UserForm2.Show

End Sub


Voorbeeld van de gebeurtenis QueryClose

De volgende programmacode dwingt de gebruiker op het clientgebied van het gebruikersformulier te klikken om deze af te sluiten. Wanneer de gebruiker het vak Sluiten in de titelbalk probeert te gebruiken, wordt de parameter Annuleren ingesteld op een waarde die geen nul is, waardoor afsluiten wordt voorkomen. Als de gebruiker echter op het clientgebied heeft geklikt, krijgt CloseMode de waarde 1 en wordt Unload Me voltooid.

Private Sub UserForm_Activate()

    UserForm1.Caption = "Klik om af te sluiten."

End Sub

Private Sub UserForm_Click()

  Unload Me

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

    'Voorkomt dat gebruiker sluit met het sluitblokje in de titelbalk.

    If CloseMode <> 1 Then Cancel = 1

    UserForm1.Caption = "Het sluitblokje werkt niet! Klik hier!"

End Sub


Voorbeeld van de gebeurtenis Resize

Het volgende voorbeeld maakt gebruik van de gebeurtenissen Activate en Click om het starten van de gebeurtenis Resize van UserForm te illustreren. Als de gebruiker op het clientgebied van het formulier klikt, wordt het formulier groter of kleiner en wordt de nieuwe hoogte aangegeven in de titelbalk. De eigenschap Tag wordt gebruikt om de oorspronkelijke hoogte van UserForm op te slaan.

' Activate-gebeurtenis voor UserForm1

Private Sub UserForm_Activate()

UserForm1.Caption = "Klik om mij groter te maken!"

Tag = Height	' Slaat oorspronkelijke hoogte op.

End Sub

' Click-gebeurtenis voor UserForm1

Private Sub UserForm_Click()

Dim NewHeight As Single

NewHeight = Height

' Als het formulier klein is, wordt het groter gemaakt.

If NewHeight = Val(Tag) Then

Height = Val(Tag) * 2

Else

' Als het formulier groot is, wordt het kleiner gemaakt.

Height = Val(Tag)

End If

End Sub

' Resize-gebeurtenis voor UserForm1

Private Sub UserForm_Resize()

UserForm1.Caption = "Nieuwe hoogte: " & Height & "  " & "Klik om de grootte te wijzigen."

End Sub


Voorbeeld van de gebeurtenis Terminate

De volgende gebeurtenisprocedures zorgen ervoor dat UserForm enkele seconden lang een geluidssignaal geeft nadat de gebruiker op het clientgebied heeft geklikt om het formulier af te sluiten.

Private Sub UserForm_Activate()

    UserForm1.Caption = "Klik om af te sluiten."

End Sub

Private Sub UserForm_Click()

  Unload Me

End Sub

Private Sub UserForm_Terminate()

    Dim Count As Integer

    For Count = 1 To 100

        Beep

    Next

End Sub


Activate, Deactivate, gebeurtenissen

De gebeurtenis Activate vindt plaats als een object het actieve venster wordt. De gebeurtenis Deactivate vindt plaats als een object niet langer het actieve venster is.

Syntaxis

Private Sub object_Activate()

Private Sub object_Deactivate()

De tijdelijke plaatsaanduiding van object staat voor een objectexpressie die de waarde van een object krijgt in de lijst Van toepassing op.

Notities

Een object kan actief worden door de methode Weergeven in de programmacode te gebruiken.

Activeren kan alleen bij een object dat zichtbaar is. Een UserForm die is geladen met Load is niet zichtbaar, tenzij u de methode Display gebruikt.

De gebeurtenissen Activeren en Deactiveren vinden alleen plaats als u de focus binnen een toepassing verandert. Het verleggen van de focus naar of van een object in een andere toepassing brengt deze procedures niet op gang.

De procedure Deactivate vindt niet plaats bij het uit het geheugen verwijderen van een object.


Initialize, gebeurtenis

Deze gebeurtenis vindt plaats nadat een object is geladen, maar voordat het wordt weergegeven.

Syntaxis

Private Sub object_Initialize()

De tijdelijke plaatsaanduiding van object staat voor een objectexpressie die de waarde van een object krijgt in de lijst Van toepassing op.

Notities

De procedure Initialize wordt speciaal gebruikt om een toepassing of UserForm klaar te maken voor gebruik. Variabelen krijgen initiële waarden en besturingselementen kunnen verplaatst of aangepast worden aan de initialisatiegegevens.


QueryClose, gebeurtenis

Deze procedure vindt plaats voordat een UserForm wordt afgesloten.

Syntaxis

Private Sub UserForm_QueryClose(cancel As Integer, closemode As Integer)

De syntaxis van de procedure QueryClose bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
cancel	Een integer. Als u dit argument instelt op een andere waarde dan 0, wordt de procedure QueryClose in alle geladen gebruikersformulieren stopgezet en kunnen de UserForm en de toepassing niet afgesloten worden.
closemode	Een waarde of constante die de aanleiding tot de procedure QueryClose aangeeft.
Resultaatwaarden

Het argument closemode geeft de volgende waarden als resultaat:

Constante	Waarde	Beschrijving
vbFormControlMenu	0	De gebruiker heeft de opdracht Sluiten in het systeemmenu van de UserForm gekozen.
vbFormCode	1	De instructie Unload is opgeroepen in de programmacode.
vbAppWindows	2	De momenteel werkzame Windows-omgeving gaat stoppen. (Alleen in Visual Basic 5.0.)
vbAppTaskManager	3	Taakoverzicht van Windows gaat de toepassing afsluiten. (Alleen in Visual Basic 5.0.)
Deze constanten staan in het Objectenoverzicht in de objectenbibliotheek van Visual Basic for Applications. Merk op dat vbFormMDIForm ook in het Objectenoverzicht staat, maar nog niet ondersteund wordt.

Notities

Deze procedure wordt met name gebruikt om er zeker van te zijn, dat er geen onafgemaakte taken in de gebruikersformulieren in een toepassing overblijven voordat die toepassing wordt afgesloten. Bijvoorbeeld: als een gebruiker nieuwe gegevens niet heeft opgeslagen in een UserForm, kan de toepassing de gebruiker ertoe aanzetten de gegevens te bewaren.

Als een toepassing afgesloten wordt, kunt u de gebeurtenisprocedure QueryClose gebruiken om de eigenschap Cancel in te stellen op True, waarmee u het afsluitproces stopt.


Resize, gebeurtenis

Deze gebeurtenis vindt plaats wanneer het formaat van een gebruikersformulier wordt gewijzigd.

Syntaxis

Private Sub UserForm_Resize()

Notities

U gebruikt de gebeurtenisprocedure Resize om besturingselementen een nieuw formaat te geven als het hoofdobject UserForm nieuwe afmetingen heeft gekregen. U kunt deze gebeurtenisprocedure ook gebruiken om variabelen of eigenschappen opnieuw te berekenen.


Terminate, gebeurtenis

Deze procedure komt voor als alle verwijzingen naar een object uit het geheugen verwijderd zijn, doordat alle variabelen die naar het object verwijzen ingesteld zijn op Nothing of als de laatste verwijzing naar het object buiten het bereik valt.

Syntaxis

Private Sub object_Terminate( )

De tijdelijke plaatsaanduiding van object staat voor een objectexpressie die de waarde van een object krijgt in de lijst Van toepassing op.

Notities

De procedure Terminate komt voor nadat het object uit het geheugen is verwijderd. De procedure Terminate wordt niet in werking gesteld als de exemplaren van de UserForm of klasse uit het geheugen verdwijnen doordat de toepassing op een abnormale manier beëindigd wordt. Bijvoorbeeld: als uw toepassing de instructie End oproept, voordat alle bestaande exemplaren van de klasse of UserForm uit het geheugen verwijderd zijn, wordt de procedure Terminate niet in werking gesteld voor de desbetreffende klasse of UserForm.


Voorbeeld van de methode Hide

In het volgende voorbeeld wordt uitgegaan van twee gebruikersformulieren in een programma. Tijdens de gebeurtenis Initialize van UserForm1 wordt UserForm2 geladen en weergegeven. Als de gebruiker op UserForm2 klikt, wordt het verborgen en verschijnt UserForm1. Als de gebruiker op UserForm1 klikt, verschijnt UserForm2 weer.

' Dit is de procedure voor de gebeurtenis Initialize van UserForm1

Private Sub UserForm_Initialize()

Load UserForm2

UserForm2.Show

End Sub

' Dit is de gebeurtenis Click van UserForm2

Private Sub UserForm_Click()

UserForm2.Hide

End Sub

' Dit is de gebeurtenis Click van UserForm1

Private Sub UserForm_Click()

UserForm2.Show

End Sub


Voorbeeld van de instructie Load

In het volgende voorbeeld wordt UserForm2 geladen tijdens de gebeurtenis Initialize van UserForm1. Door vervolgens op UserForm2 te klikken, verschijnt UserForm1.

' Dit is de procedure voor de gebeurtenis Initialize van UserForm1

Private Sub UserForm_Initialize()

Load UserForm2

UserForm2.Show

End Sub

' Dit is de gebeurtenis Click van UserForm2

Private Sub UserForm_Click()

UserForm2.Hide

End Sub

' Dit is de gebeurtenis Click van UserForm1

Private Sub UserForm_Click()

UserForm2.Show

End Sub


Voorbeeld van de methode PrintForm

In het volgende voorbeeld wordt het clientgebied van het formulier afgedrukt als de gebruiker op het formulier klikt.

' Dit is de gebeurtenis Click van UserForm1

Private Sub UserForm_Click()

UserForm1.PrintForm

End Sub


Voorbeeld van de methode Show

In het volgende voorbeeld wordt uitgegaan van twee gebruikersformulieren in een programma. Tijdens de gebeurtenis Initialize van UserForm1 wordt UserForm2 geladen en weergegeven. Als de gebruiker op UserForm2 klikt, wordt het verborgen en verschijnt UserForm1. Als de gebruiker op UserForm1 klikt, verschijnt UserForm2 weer.

' Dit is de procedure voor de gebeurtenis Initialize van UserForm1

Private Sub UserForm_Initialize()

Load UserForm2

UserForm2.Show

End Sub

' Dit is de gebeurtenis Click van UserForm2

Private Sub UserForm_Click()

UserForm2.Hide

End Sub

' Dit is de gebeurtenis Click van UserForm1

Private Sub UserForm_Click()

UserForm2.Show

End Sub


Voorbeeld van de instructie Unload

In het volgende voorbeeld wordt uitgegaan van twee gebruikersformulieren in een programma. Tijdens de gebeurtenis Initialize van UserForm1 wordt UserForm2 geladen en weergegeven. Als de gebruiker op UserForm2 klikt, wordt dit formulier uit het geheugen verwijderd en verschijnt UserForm1. Als er op UserForm1 wordt geklikt, wordt dit formulier uit het geheugen verwijderd.

' Dit is de procedure voor de gebeurtenis Initialize van UserForm1

Private Sub UserForm_Initialize()

Load UserForm2

UserForm2.Show

End Sub

' Dit is de gebeurtenis Click van UserForm2

Private Sub UserForm_Click()

Unload UserForm2

End Sub

' Dit is de gebeurtenis Click van UserForm1

Private Sub UserForm_Click()

Unload UserForm1

End Sub


Voorbeeld van de methode WhatsThisMode

Het volgende voorbeeld verandert de muisaanwijzer in de What's This-aanwijzer (het vraagteken) wanneer de gebruiker op UserForm klikt. Als noch de eigenschap WhatsThisHelp noch de eigenschap WhatsThisButton in het venster Properties is ingesteld op True, heeft het volgende geen effect.

Private Sub UserForm_Click()

' Verandert muisaanwijzer in het What's This-vraagteken.

WhatsThisMode

End Sub


Hide, methode

Verbergt een object maar verwijdert het niet uit het geheugen.

Syntaxis

object.Hide

De tijdelijke plaatsaanduiding van object staat voor een objectexpressie die de waarde van een object krijgt in de lijst Van toepassing op. Indien object weggelaten is, wordt de UserForm met de focus beschouwd als object.

Notities

Als een object verborgen is, is het van het scherm verwijderd. De eigenschap Visible heeft dan de waarde False. De besturingselementen van een verborgen object zijn niet toegankelijk voor de gebruiker. Ze zijn wel beschikbaar voor de actieve toepassing, voor andere processen die misschien via Automation met de toepassing communiceren, en in Windows voor gebeurtenissen in de besturingselementen van de Timer.

Als een UserForm verborgen is, kan de gebruiker niet met de toepassing communiceren totdat de volledige programmacode in de gebeurtenisprocedure die de UserForm verborgen hield uitgevoerd is.

Indien de UserForm niet geladen is, terwijl de methode Hide aangeroepen wordt, laadt Hide de UserForm wel, maar geeft deze niet weer.


Load, instructie

Laadt een object wel, maar geeft deze niet weer.

Syntaxis

Load object

De tijdelijke plaatsaanduiding van object staat voor een objectexpressie die de waarde van een object krijgt in de lijst Van toepassing op.

Notities

Als een object geladen wordt, wordt deze in het geheugen geplaatst, maar is niet zichtbaar. Gebruik de methode Display om het object zichtbaar te maken. Totdat een object zichtbaar is, kan een gebruiker er niets mee doen. Het object kan wel door een programma gemanipuleerd worden in de gebeurtenisprocedure Initialize.


PrintForm, methode

Stuurt een sequentieel bestand met een afbeelding van een UserForm-object naar de printer.

Syntaxis

object.PrintForm

De tijdelijke plaatsaanduiding van object staat voor een objectexpressie die de waarde van een object krijgt in de lijst Van toepassing op. Indien object weggelaten is, wordt de UserForm met de focus beschouwd als object.

Notities

PrintForm drukt alle zichtbare objecten en bitmaps van het object UserForm af. PrintForm drukt ook figuren af die toegevoegd zijn aan een UserForm-object.

Welke printer door PrintForm wordt gebruikt, wordt bepaald door de instellingen van het besturingssysteem van het Configuratiescherm.


Show, methode

Geeft een UserForm-object weer.

Syntaxis

[object.]Show modal

De syntaxis van de methode Show bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Optioneel. Een objectexpressie die gelijkwaardig is aan een object in de lijst Van toepassing op. Indien object is weggelaten, wordt de UserForm die met de actieve UserForm-module samenhangt, beschouwd als object.
modal	Optioneel. Boole-waarde die bepaalt of het UserForm modaal of niet modaal is.
Instellingen

De instellingen voor modal zijn:

Constante	Waarde	Beschrijving
vbModal	1	UserForm is modaal. Standaard.
vbModeless	0	UserForm is niet modaal.
Notities

Indien het gespecificeerde object niet geladen is wanneer de methode Display wordt aangeroepen, laadt Visual Basic het automatisch.

Opmerking   Als een UserForm in Microsoft Office 97 is ingesteld om als niet-modaal te worden weergegeven, veroorzaakt dit een runtimefout. Office 97 UserForms zijn altijd modaal.

Wanneer een UserForm niet modaal is, wordt de verdere programmacode uitgevoerd zoals deze verschijnt. Niet-modale formulieren verschijnen niet in de taakbalk en staan niet op de venstertabs.

Opmerking   Het is mogelijk dat u gegevens verliest die aan een niet modaal UserForm zijn gekoppeld als u het UserForm-project wijzigt zodat het opnieuw moet worden gecompileerd, bijvoorbeeld wanneer u een module met programmacode verwijdert.

Wanneer een UserForm modaal is, moet de gebruiker eerst reageren voordat hij enig ander onderdeel van de toepassing gebruikt. Er wordt geen volgend deel van de programmacode uitgevoerd totdat de UserForm verborgen of uit het geheugen verwijderd is. Andere formulieren in de toepassing worden uitgeschakeld als een UserForm weergegeven wordt, maar voor andere toepassingen geldt dat niet.


Unload, instructie

Verwijdert een object uit het geheugen.

Syntaxis

Unload object

De vereiste tijdelijke plaatsaanduiding van object staat voor een objectexpressie die in de lijst Van toepassing op de waarde krijgt van een object.

Notities

Als een object uit het geheugen verwijderd wordt, wordt de hele geheugenruimte die met het object samenhangt voor iets anders gebruikt. Totdat het met de instructie Load weer in het geheugen geplaatst is, kan een gebruiker niets met een object uitvoeren en kan het object ook niet door een programma gemanipuleerd worden.


WhatsThisMode, methode

Verandert de muisaanwijzer in de pijl met het vraagteken van Wat is dit? en bereidt het weergeven van Help voor een geselecteerd object voor. Deze methode bestaat op de Macintosh, maar er is geen aanwijzerfunctionaliteit aan gekoppeld.

Syntaxis

object.WhatsThisMode

De tijdelijke plaatsaanduiding van object staat voor een objectexpressie die de waarde van een object krijgt in de lijst Van toepassing op. Indien object weggelaten is, wordt de UserForm met de focus beschouwd als object.

Notities

Als u de methode WhatsThisMode gebruikt, gebeurt hetzelfde als wanneer u op de knop Wat is dit? klikt op de titelbalk. De muisaanwijzer verandert in een pijl met een vraagteken, de Wat is dit?-aanwijzer.

Als de gebruiker op een object klikt, wordt de eigenschap WhatsThisHelpID van het aangeklikte object gebruikt om contextafhankelijke Help weer te geven.


UserForm, object, UserForms, collectie

Een UserForm-object is een venster of dialoogvenster dat onderdeel is van de gebruikersinterface van een toepassing.

De collectie UserForms is een collectie waarvan de elementen elke geladen UserForm in een toepassing vertegenwoordigen. De collectie UserForms bevat de eigenschap Count, de eigenschap Item en de methode Add. Met Count wordt het aantal elementen in de collectie weergegeven, Item (het standaardlid) geeft een specifiek lid van de collectie op en Add plaatst een nieuw UserForm-element in de collectie.

Syntaxis

UserForm

UserForms[.Item](index)

De tijdelijke plaatsaanduiding index bestaat uit een integer met een bereik van 0 tot UserForms.Count – 1. Item is het standaardlid van de collectie UserForms en hoeft niet gespecificeerd te worden.

Notities

U kunt de collectie UserForms gebruiken om zo vaak u wilt door alle geladen gebruikersformulieren van een toepassing te bladeren. Hiermee identificeert u een intrinsieke globale variabele genaamd UserForms. U kunt UserForms(index) naar een functie doorgeven waarvan het argument gespecificeerd is als een UserForm-klasse.

Bij de gebruikersformulieren horen eigenschappen voor het uiterlijk zoals positie, grootte en kleur; daarnaast bepalen deze eigenschappen mede hoe de toepassing zich gedraagt.

Gebruikersformulieren kunnen ook reageren op gebeurtenissen die door de gebruiker of het systeem in gang gezet worden. U kunt bijvoorbeeld programmacode schrijven in de gebeurtenisprocedure Initialize van de UserForm om variabelen op moduleniveau te initialiseren voordat de UserForm weergegeven wordt.

Naast eigenschappen en gebeurtenissen kunt u methoden gebruiken om gebruikersformulieren met behulp van programmacode te manipuleren. Bijvoorbeeld: u kunt de methode Move gebruiken om de locatie en de grootte van een UserForm te veranderen.

Stel bij het ontwerpen van gebruikersformulieren de eigenschap BorderStyle in om de randen te definiëren en stel de eigenschap Caption in voor de tekst in de titelbalk. In programmacode gebruikt u de methoden Hide en Show om een UserForm in de runtime zichtbaar of onzichtbaar te maken.

UserForm is van het gegevenstype Object. U kunt variabelen van het type UserForm declareren voordat u ze instelt op een instantie van een type van UserForm dat tijdens in de ontwerpfase is gedeclareerd. Op dezelfde manier kunt u een argument aan een procedure doorgeven als het type UserForm. U kunt meerdere gebruikersformulieren in programmacode creëren met het sleutelwoord New in de instructies Dim, Set en Static.

U kunt toegang krijgen tot de collectie besturingselementen op een UserForm met de collectie Controls. U gebruikt bijvoorbeeld programmacode zoals hieronder om alle besturingselementen op een UserForm te verbergen:

For Each Control in UserForm1.Controls

Control.Visible = False

Next Control


Voorbeeld van de eigenschap StartUpPosition

Dit voorbeeld maakt gebruik van de instructie Load en de methode Show in de Click-gebeurtenis van UserForm1 om UserForm2 te laden met de eigenschap StartUpPosition ingesteld op 3 (de standaardpositie voor Windows). De methode Show maakt vervolgens UserForm2 zichtbaar.

Private Sub UserForm_Click()

Load UserForm2

UserForm2.StartUpPosition = 3

UserForm2.Show

End Sub


StartUpPosition, eigenschap

Geeft een waarde als resultaat of stelt een waarde in die de positie van een UserForm specificeert als deze voor het eerst verschijnt.

U kunt een van de volgende vier instellingen gebruiken voor StartUpPosition:

Instelling	Waarde	Beschrijving
Manual	0	Geen oorspronkelijke instelling gespecificeerd.
CenterOwner	1	Centreren ten opzichte van het onderdeel waartoe de UserForm behoort.
CenterScreen	2	Centreren ten opzichte van het hele scherm.
WindowsDefault	3	Positie in de linkerbovenhoek van het scherm.
Notities

U kunt de eigenschap StartUpPosition door het programma laten instellen of vanuit het venster Eigenschappen.


WhatsThisButton, eigenschap

Geeft een Boole-waarde als resultaat die bepaalt of de knop Wat is dit? op de titelbalk van een UserForm-object verschijnt. Tijdens runtime alleen-lezen. Deze eigenschap is niet van toepassing op de Macintosh.

Notities

De instellingen van de eigenschap WhatsThisButton zijn:

Instelling	Beschrijving
True	Schakelt de weergave van de knop What's This Help in.
False	(Standaardinstelling) Schakelt de weergave van de knop What's This Help uit.
Notities

De eigenschap WhatsThisHelp kan alleen True zijn als WhatsThisButton de waarde True heeft.


WhatsThisHelp, eigenschap

Geeft een Boole-waarde die bepaalt of context-gevoelige Help het pop-up venster van Windows 95 Help gebruikt of het algemene Help-venster. Tijdens runtime alleen-lezen. Deze eigenschap is niet van toepassing op de Macintosh.

Notities

De instellingen voor de eigenschap WhatsThisHelp zijn:

Instelling	Beschrijving
True	De toepassing maakt gebruik van een van de toegangstechnieken van Wat is dit? om Windows Help te starten en een onderwerp te laden dat geïdentificeerd wordt door de eigenschap WhatsThisHelpID.
False	(Standaardinstelling) De toepassing gebruikt de toets F1 om Windows Help te starten en het onderwerp te laden dat geïdentificeerd wordt door de eigenschap HelpContextID.
Notities

Er zijn twee manieren om toegang te verschaffen tot What's This Help in een toepassing. De eigenschap WhatsThisHelp moet True zijn, wil een van deze technieken werken.

•	Een knop Wat is dit? op de titelbalk van de UserForm die gebruik maakt van de eigenschap WhatsThisButton. De muisaanwijzer verandert in de pijl met het vraagteken. Het onderwerp dat afgebeeld wordt, wordt geïdentificeerd door de eigenschap WhatsThisHelpID van het besturingselement dat door de gebruiker aangeklikt wordt.

•	De methode WhatsThisMode van een UserForm oproepen. Deze produceert hetzelfde gedrag als klikken op de knop What's This zonder een knop te gebruiken. U kunt bijvoorbeeld deze methode oproepen met een opdracht in een menu op de menubalk van de toepassing.


ShowModal, eigenschap

Stelt een UserForm in om in zijn weergave modaal of niet modaal te zijn. Tijdens runtime alleen-lezen.

Notities

De instellingen van de eigenschap ShowModal zijn:

Instelling	Beschrijving
True	(Standaard) Het UserForm is modaal.
False	Het UserForm is niet modaal.
Notities

Wanneer een UserForm modaal is, moet de gebruiker informatie verstrekken of het UserForm sluiten voordat hij of zij een ander deel van de toepassing kan gebruiken. Er wordt geen volgend deel van de programmacode uitgevoerd totdat de UserForm verborgen of uit het geheugen verwijderd is. Andere formulieren in de toepassing worden uitgeschakeld als een UserForm weergegeven wordt, maar voor andere toepassingen geldt dat niet.

Wanneer het UserForm niet modaal is, kan de gebruiker andere formulieren of vensters bekijken zonder UserForm te sluiten.

Niet-modale formulieren verschijnen niet in de taakbalk en staan niet op de venstertabs.

Opmerking   Als u in Microsoft Office 97 een UserForm probeert te openen dat de eigenschap ShowModal heeft, krijgt u een runtimefout, aangezien Office 97 alleen modale UserForms weergeeft. Office 97 negeert de eigenschap ShowModal en geeft de UserForm modaal weer.


RightToLeft, eigenschap

Geeft als resultaat een Boole-waarde die de weergaverichting van de tekst aangeeft en de visuele weergave op een tweerichtingssysteem regelt.

Notities

De instellingen van de eigenschap RightToLeft zijn:

Instelling	Beschrijving
True	De besturing werkt op een tweerichtingsplatform, zoals de Arabische of Hebreeuwse Windows 95, en tekst loopt van rechts naar links. De besturing moet het gedrag wijzigen, zo moeten verticale schuifbalken aan de linkerzijde van een tekstvak of keuzelijst worden geplaatst en labels aan de rechterkant van tekstvakken, enzovoort.
False	De besturing moet werken als op een niet-tweerichtingssysteem, zoals de Nederlandstalige Windows 95, en tekst moet van links naar rechts lopen. Als deze omgevingseigenschap niet wordt toegepast, is False de standaardwaarde.
De eigenschap RightToLeft bevat omgevingsinformatie uit het Userform die de besturingen in het UserForm voorziet van gedragsaanwijzingen.

Deze eigenschap is een Boole-waarde die de weergaverichting van tekst aangeeft en de visuele weergave op tweerichtingssystemen regelt.

De standaardinstelling is False.


Sleutelwoord niet gevonden

Het door u geselecteerde sleutelwoord is niet in Visual Basic Help aangetroffen. Misschien hebt u het sleutelwoord verkeerd gespeld, te veel of te weinig tekst geselecteerd of Help opgevraagd voor een woord dat geen geldig sleutelwoord in Visual Basic is.

Het sleutelwoord waarvoor u hulp wilt hebben bevindt zich mogelijk in een objectbibliotheek waarnaar niet wordt verwezen. Zorg ervoor dat voor alle in de code gebruikte objecten verwijzingen zijn ingesteld naar de juiste objectbibliotheken.

De eenvoudigste manier om Help voor een bepaald sleutelwoord op te vragen is door de invoegpositie in het sleutelwoord te plaatsen en op F1 te drukken. U hoeft het sleutelwoord niet te selecteren. Als u slechts een deel van het sleutelwoord of meer dan één woord selecteert, dan wordt de gewenste informatie juist niet gevonden.

Het onderwerp Value (eigenschap) wordt weergegeven als u op F1 drukt met de invoegpositie tussen de 'a' en de 'l' in het sleutelwoord Value, zoals wordt weergegeven in het onderstaande voorbeeld.

Worksheets(1).Range ("A2").value=3.14159

Als u de ingebouwde Help-index wilt gebruiken, klikt u op Microsoft Visual Basic Help onder Inhoudsopgave en Index het menu Help.


Collection, objectenoverzicht

De module Collection bevat procedures die worden gebruikt om bewerkingen uit te voeren op het object Collection. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke procedure

1.	Kies de procedure in de lijst Leden van 'Collection'.

2.	Klik op de knop [image].


ColorConstants, objectenoverzicht

De module ColorConstants bevat van tevoren vastgelegde kleurconstanten. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke constante

1.	Kies de constante uit de lijst Leden van 'ColorConstants'.

2.	Klik op de knop [image].


Constants, objectenoverzicht

De module Constants bevat uiteenlopende constanten. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke constante

1.	Kies de constante uit de lijst Leden van 'Constants'.

2.	Klik op de knop [image].


Conversion, objectenoverzicht

De module Conversion bevat de procedures die worden gebruikt om diverse conversiebewerkingen uit te voeren. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke procedure

1.	Kies de procedure op de lijst Leden van 'Conversion'.

2.	Klik op de knop [image].

Opmerking   Als u variabelen van het gegevenstype Variant gebruikt, zijn expliciete conversies van het gegevenstype niet nodig.


DateTime, objectenoverzicht

De module DateTime bevat de procedures en eigenschappen die worden gebruikt bij bewerkingen van datum en tijd. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke eigenschap of procedure

1.	Kies de procedure uit de lijst Leden van 'DateTime'.

2.	Klik op de knop [image].


ErrObject, objectenoverzicht

De module ErrObject bevat eigenschappen en procedures die worden gebruikt om fouten tijdens de uitvoering te signaleren en af te handelen met behulp van het object Err. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke procedure

1.	Kies de eigenschap of procedure uit de lijst Leden van 'ErrObject'.

2.	Klik op de knop [image].


FileSystem, objectenoverzicht

De module FileSystem bevat de procedures die worden gebruikt om bewerkingen uit te voeren met bestanden, directory's of mappen en het systeem. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke procedure

1.	Kies de procedure op de lijst Leden van 'FileSystem'.

2.	Klik op de knop [image].


Financial, objectenoverzicht

De module Financial bevat procedures die worden gebruikt om financiële bewerkingen uit te voeren. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke procedure

1.	Kies de procedure op de lijst Leden van 'Financial'.

2.	Klik op de knop [image].


Global, objectenoverzicht

De module Global bevat procedures en eigenschappen die worden gebruikt om bewerkingen van het object UserForm uit te voeren. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke procedure

1.	Kies de procedure op de lijst Leden van 'Global'.

2.	Klik op de knop [image].


Information, objectenoverzicht

De module Information bevat de procedures die worden gebruikt om te kijken of er informatie is, en zo ja, of deze moeten worden geretourneerd of geverifieerd. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke procedure

1.	Kies de procedure op de lijst de Leden van 'Information'.

2.	Klik op de knop [image].


Interaction, objectenoverzicht

De module Interaction bevat procedures die worden gebruikt bij interactie met objecten, toepassingen en systemen. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke procedure

1.	Kies de procedure op de lijst de Leden van 'Interaction'.

2.	Klik op de knop [image].


KeyCodeConstants, objectenoverzicht

De module KeyCodeConstants bevat van tevoren gedefinieerde sleutelcodeconstanten die kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke constante

1.	Kies de constante uit de lijst Leden van 'KeyCodeConstants'.

2.	Klik op de knop [image].


Math, objectenoverzicht

De module Math bevat procedures die worden gebruikt om wiskundige bewerkingen uit te voeren. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke procedure

1.	Kies de procedure uit de lijst Leden van 'Math'.

2.	Klik op de knop [image].


Strings, objectenoverzicht

De module Strings bevat procedures die worden gebruikt om bewerkingen uit te voeren op tekenreeksen. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke procedure

1.	Kies de procedure uit de lijst Leden van 'Strings'.

2.	Klik op de knop [image].


SystemColorConstants, objectenoverzicht

De module SystemColorConstants bevat constanten die diverse onderdelen van de grafische gebruikersinterface identificeren. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke constante

1.	Kies de constante uit de lijst Leden van 'SystemColorConstants'.

2.	Klik op de knop [image].


VbAppWinStyle, objectenoverzicht

De opsomming VbAppWinStyle bevat constanten waarmee de functie Shell het uiterlijk van een toepassingsvenster beheert. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke constante

1.	Kies de constante uit de lijst Leden van 'VbAppWinStyle'.

2.	Klik op de knop [image].


VbCalendar, objectenoverzicht

De opsomming VbCalendar bevat constanten die worden gebruikt om vast te stellen welk type kalender Visual Basic gebruikt. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke constante

1.	Kies de constante uit de lijst Leden van 'VbCalendar'.

2.	Klik op de knop [image].


VbCompareMethod, objectenoverzicht

De opsomming VbCompareMethod bevat constanten die bepalen op welke manier tekenreeksen worden vergeleken als deze de functies Instr en StrComp gebruiken. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke constante

1.	Kies de constante uit de lijst Leden van 'VbCompareMethod’.

2.	Klik op de knop [image].


VbDayOfWeek, objectenoverzicht

De opsomming VbDayOfWeek bevat constanten die vaststellen welke dagen van de week van toepassing zijn bij de functies DateDiff, DatePart en Weekday. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke constante

1.	Kies de constante uit de lijst Leden van 'VbDayOfWeek'.

2.	Klik op de knop [image].


VbFileAttribute, objectenoverzicht

De opsomming VbFileAttribute bevat constanten die vaststellen welke bestandskenmerken van toepassing zijn bij de functies Dir, GetAttr en SetAttr. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke constante

1.	Kies de constante uit de lijst Leden van 'VbFile Attribute'.

2.	Klik op de knop [image].


VbFirstWeekOfYear, objectenoverzicht

De opsomming VbFirstWeekOfYear bevat constanten die signaleren hoe de eerste week van een jaar vastgesteld wordt bij het gebruik van de functies DateDiff en DatePart. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke constante

1.	Kies de constante uit de lijst Leden van 'VbFirstWeekOfYear'.

2.	Klik op de knop [image].


VbIMEStatus, objectenoverzicht

VbIMEStatus is alleen beschikbaar in versies voor Aziatische landen en bevat constanten die de Input Method Editor (IME) identificeren bij het gebruik van de functie IMEStatus. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke constante

1.	Kies de constante uit de lijst Leden van 'VbIMEStatus'.

2.	Klik op de knop [image].


VbMsgBoxResult, objectenoverzicht

De opsomming VbMsgBoxResult bevat constanten die vaststellen welke knop is ingedrukt in een berichtvenster dat wordt weergegeven bij het gebruik van de functie MsgBox. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke constante

1.	Kies de constante uit de lijst Leden van 'VbMsgBoxResult'.

2.	Klik op de knop [image].


VbMsgBoxStyle, objectenoverzicht

De opsomming VbMsgBoxStyle bevat constanten die worden gebruikt om het gedrag van berichtvensters (inclusief de symbolen en knoppen die daarin verschijnen) te specificeren, als ze weergegeven worden bij het gebruik van de functie MsgBox. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke constante

1.	Kies de constante uit de lijst Leden van 'VbMsgBoxStyle'.

2.	Klik op de knop [image].


VbQueryClose, objectenoverzicht

De opsomming VbQueryClose bevat constanten die worden gebruikt om vast te stellen wat de oorzaak is van het optreden van de procedure QueryClose. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke constante

1.	Kies de constante uit de lijst Leden van 'VbQueryClose'.

2.	Klik op de knop [image].


VbStrConv, objectenoverzicht

De opsomming VbStrConv bevat constanten die worden gebruikt om vast te stellen welk type tekenreeksconversie moet worden uitgevoerd door de functie StrConv. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke constante

1.	Kies de constante uit de lijst Leden van 'VbStrConv'.

2.	Klik op de knop [image].


VbVarType, objectenoverzicht

De opsomming VbVarType bevat constanten die worden gebruikt om de verschillende gegevenstypen te identificeren die een Variant kan bevatten. Deze constanten stemmen overeen met de resultaatwaarden van de functie VarType en kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke constante

1.	Kies de constante uit de lijst Leden van 'VbVarType'.

2.	Klik op de knop [image].


VbTriState, objectenoverzicht

De opsomming VbTriState definieert constanten die worden gebruikt om een van de drie mogelijke statussen aan te duiden.

U krijgt op de volgende manier Help bij een specifieke constante

1.	Kies de constante uit de lijst Leden van 'VbTriState'.

2.	Klik op de knop [image].


VbDateTimeFormat, objectenoverzicht

De opsomming VbDateTimeFormat definieert constanten die worden gebruikt om aan te geven hoe de datum en tijd worden opgemaakt.

U krijgt op de volgende manier Help bij een specifieke constante

1.	Kies de constante uit de lijst Leden van 'VbDateTimeFormat'.

2.	Klik op de knop [image].


VbCallType, objectenoverzicht

De opsomming VbCallType definieert constanten die worden gebruikt om het oproeptype te identificeren dat wordt gebruikt door de functie CallByName.

U krijgt op de volgende manier Help bij een specifieke constante

1.	Kies de constante uit de lijst Leden van 'VbCallType'.

2.	Klik op de knop [image].


FormShowConstants, objectenoverzicht

De module FormShowConstants bevat van tevoren vastgelegde UserForm-constanten. Deze constanten kunnen op elke willekeurige plaats in de programmacode worden gebruikt.

U krijgt op de volgende manier Help bij een specifieke constante

1.	Kies de constante uit de lijst Leden van 'FormShowConstants'.

2.	Klik op de knop [image].


Voorbeeld van het object Collection

Dit voorbeeld maakt eerst een object Collection (MyClasses) en vervolgens een dialoogvenster waarin gebruikers objecten aan de collecties kunnen toevoegen. Dit werkt als volgt: Kies de opdracht Klassenmodule in het menu Invoegen en declareer een openbare variabele met de naam InstanceName op moduleniveau van Class1 (typ Public InstanceName) om daarin de naam van alle aangetroffen klassen op te nemen. Houd de standaardnaam Class1 aan. Kopieer en plak de volgende programmacode in het gedeelte Algemeen van een andere module en start deze vervolgens met de instructie ClassNamer in een andere procedure. (Dit voorbeeld werkt alleen bij brontoepassingen die klassen ondersteunen.)

Sub ClassNamer()

Dim MyClasses As New Collection	' Maakt een object van het type Collection.

Dim Num	' Teller voor het onderscheiden van de sleutels.

Dim Msg As String	' Variabele die oproep gaat bevatten.

Dim TheName, MyObject, NameList	' Variants voor het opslaan van informatie.

Do

Dim Inst As New Class1	' Maakt een nieuwe instantie van Class1.

Num = Num + 1	' Verhoogt Num en leest een naam.

Msg = "Voer een naam in voor dit object." & Chr(13) _

 & "Klik op Annuleren om de namen in de collectie te zien."

TheName = InputBox(Msg, "Benoem de items in de collectie")

Inst.InstanceName = TheName	' Plaatst naam in objectinstantie.

' Ingevoerde naam wordt aan de collectie toegevoegd.

If Inst.InstanceName <> "" Then

' Voegt benoemd object aan collectie toe.

MyClasses.Add item := Inst, key := CStr(Num)

End If

' Wist de huidige verwijzing als voorbereiding op de volgende.

Set Inst = Nothing

Loop Until TheName = ""

For Each MyObject In MyClasses	' Maakt lijst met namen.

NameList = NameList & MyObject.InstanceName & Chr(13)

Next MyObject

' Geeft lijst met namen in een berichtvenster weer.

MsgBox NameList, , "Aangetroffen namen in collectie MyClasses"

For Num = 1 To MyClasses.Count	' Verwijdert naam uit collectie.

MyClasses.Remove 1	' Aangezien collecties opnieuw worden geïndexeerd

' wordt automatisch het eerste lid

Next	' verwijderd bij elke uitvoering van de lus.

End Sub


Voorbeeld van het object Err

Dit voorbeeld maakt gebruik van de eigenschappen van het object Err om een dialoogvenster voor foutberichten te maken. Wanneer u een Visual Basic-fout genereert met de methode Raise en eerst de methode Clear gebruikt, worden de standaardwaarden van Visual Basic de eigenschappen van het object Err.

Dim Msg

' Als een fout optreedt, wordt een foutbericht samengesteld

On Error Resume Next	' Stelt foutafhandeling uit.

Err.Clear

Err.Raise 6	' Genereert een "Overloop"-fout.

' Controleert op een fout en geeft vervolgens foutbericht weer.

If Err.Number <> 0 Then

Msg = "Fout # " & Str(Err.Number) & " werd gegenereerd door " _

& Err.Source & Chr(13) & Err.Description

MsgBox Msg, , "Fout", Err.Helpfile, Err.HelpContext

End If


Collection, object

Een object Collection is een geordende reeks elementen waarnaar kan worden verwezen als een eenheid.

Notities

Met het object Collection kunt u eenvoudig naar een gerelateerde groep elementen verwijzen als een enkelvoudig object. Voor de elementen van een collectie, aangeduid als leden, is het voldoende dat zij deel uitmaken van de collectie om aan elkaar gerelateerd te zijn. Leden van een collectie hoeven niet van hetzelfde gegevenstype te zijn.

Een collectie kan op dezelfde manier worden gemaakt als andere objecten. Bijvoorbeeld:

Dim X As New Collection

Als de collectie eenmaal is gemaakt, kunnen leden worden toegevoegd met de methode Add en worden verwijderd met de methode Remove. Specifieke leden kunnen uit de collectie worden opgevraagd met de methode Item. De gehele collectie kan worden herhaald met de instructie For Each...Next.


Debug, object

Het object Debug stuurt uitvoer naar het deelvenster Direct tijdens de runtime.


Err, object

Bevat gegevens over de runtimefouten.

Notities

De eigenschappen van het object Err worden ingesteld door de generator van een fout; Visual Basic, een object, of de programmeur.

De standaardeigenschap van het object Err is Number. Aangezien de standaardeigenschap kan worden weergegeven door de objectnaam Err, hoeft de bestaande code waarin de functie Err of de instructie Err werd gebruikt, niet gewijzigd te worden.

Als een runtimefout optreedt, worden de eigenschappen van het object Err gevuld met gegevens die de fout uniek identificeert en gegevens waarmee de fout kan worden afgehandeld. Gebruik de methode Raise om een runtimefout in uw code te genereren.

De eigenschappen van het object Err worden ingesteld op nul of op tekenreeksen zonder gegevens ("") na een instructie Exit Sub, Exit Function, Exit Property of Resume Next binnen een foutafhandelingsroutine. Wanneer u de instructie Resume buiten een foutafhandelingsroutine gebruikt, herstelt u daarmee niet de eigenschappen van het object Err. Met de methode Clear kunt u Err expliciet opnieuw instellen.

Gebruik de methode Raise in plaats van de instructie Error om runtimefouten te genereren voor systeemfouten en klassenmodules. Het gebruik van de methode Raise in andere programmacode hangt af van de uitgebreidheid van de gegevens die u als resultaat wilt geven.

Het object Err is een ingebouwd object met een globaal bereik.

U hoeft het niet zelf in uw code aan te brengen.


Voorbeeld van de operator ^

Dit voorbeeld maakt gebruik van de operator ^ om een getal te verheffen tot een bepaalde macht, die wordt aangegeven door de exponent..

Dim MyValue

MyValue = 2 ^ 2	' Geeft 4.

MyValue = 3 ^ 3 ^ 3	' Geeft 19683.

MyValue = (-5) ^ 3	' Geeft -125.


Voorbeeld van de operator +

Dit voorbeeld maakt gebruik van de operator + om getallen bij elkaar op te tellen. De operator + kan ook worden gebruikt om tekenreeksen aaneen te schakelen. Om onduidelijkheden te voorkomen, kunt u echter beter de operator & voor die bewerking gebruiken. Als de onderdelen van een expressie die gemaakt is met de operator +, zowel tekenreeksen als numerieke waarden bevatten, wordt het rekenkundige resultaat toegewezen. Als de onderdelen alleen uit tekenreeksen bestaan, worden de tekenreeksen aaneengeschakeld.

Dim MyNumber, Var1, Var2

MyNumber = 2 + 2	' Geeft 4.

MyNumber = 4257,04 + 98112	' Geeft 102369,04.

Var1 = "34": Var2 = 6	' Initialiseert gemengde variabelen.

MyNumber = Var1 + Var2	' Geeft 40.

Var1 = "34": Var2 = "6"	' Initialiseert variabelen met tekenreeksen.

MyNumber = Var1 + Var2	' Geeft "346" (samenvoeging van tekenreeksen).


Voorbeeld van de operator -

Dit voorbeeld maakt gebruik van de operator - om het verschil tussen twee getallen te berekenen.

Dim MyResult

MyResult = 4 - 2	' Geeft 2.

MyResult = 459,35 – 334,90	' Geeft 124,45.


Voorbeeld van de operator *

Dit voorbeeld maakt gebruik van de operator * om twee getallen te vermenigvuldigen.

Dim MyValue

MyValue = 2 * 2	' Geeft 4.

MyValue = 459,35 * 334,90 	' Geeft 153836,315.


Voorbeeld van de operator /

Dit voorbeeld maakt gebruik van de operator / om een getal te delen door een ander getal en geeft als resultaat een getal met een drijvende komma.

Dim MyValue

MyValue = 10 / 4	' Geeft 2,5.

MyValue = 10 / 3	' Geeft 3,333333.


Voorbeeld van de operator \

Dit voorbeeld maakt gebruik van de operator \ om een getal te delen door een ander getal en geeft als resultaat een integer.

Dim MyValue

MyValue = 11 \ 4	' Geeft 2.

MyValue = 9 \ 3	' Geeft 3.

MyValue = 100 \ 3	' Geeft 33.


Voorbeeld van de operator Mod

Dit voorbeeld maakt gebruik van de operator Mod om een getal door een ander getal te delen en alleen de rest als resultaat te geven. Als een van de getallen een getal met een drijvende komma is, wordt deze afgerond op een integer.

Dim MyResult

MyResult = 10 Mod 5	' Geeft 0.

MyResult = 10 Mod 3	' Geeft 1.

MyResult = 12 Mod 4,3	' Geeft 0.

MyResult = 12,6 Mod 5	' Geeft 3.


Voorbeeld van de operator &

Dit voorbeeld maakt gebruik van de operator & om aaneenschakeling van tekenreeksen af te dwingen.

Dim MyStr

MyStr = "Hallo" & " allemaal"	' Geeft "Hallo allemaal".

MyStr = "En " & 123 & " in de maat"	' Geeft "En 123 in de maat".


Voorbeeld van vergelijkingsoperatoren

Dit voorbeeld laat de gebruiksmogelijkheden zien van vergelijkingsoperatoren, die u gebruikt om expressies te vergelijken.

Dim MyResult, Var1, Var2

MyResult = (45 < 35)	' Is False.

MyResult = (45 = 45)	' Is True.

MyResult = (4 <> 3)	' Is True.

MyResult = ("5" > "4")	' Is True.

Var1 = "5": Var2 = 4	' Initialiseert variabelen.

MyResult = (Var1 > Var2)	' Is True.

Var1 = 5: Var2 = Empty

MyResult = (Var1 > Var2)	' Is True.

Var1 = 0: Var2 = Empty

MyResult = (Var1 = Var2)	' Is True.


Voorbeeld van de operator And

Dit voorbeeld maakt gebruik van de operator And om een logische conjunctie uit te voeren op twee expressies.

Dim A, B, C, D, MyCheck

A = 10: B = 8: C = 6: D = Null	' Initialiseert variabelen.

MyCheck = A > B And B > C	' Is True.

MyCheck = B > A And B > C	' Is False.

MyCheck = A > B And B > D	' Levert het resultaat Null op.

MyCheck = A And B	' Geeft 8 (bitsgewijze vergelijking).


Voorbeeld van de operator Eqv

Dit voorbeeld maakt gebruik van de operator Eqv om een logische equivalentie uit te voeren op twee expressies.

Dim A, B, C, D, MyCheck

A = 10: B = 8: C = 6: D = Null	' Initialiseert variabelen.

MyCheck = A > B Eqv B > C	' Is True.

MyCheck = B > A Eqv B > C	' Is False.

MyCheck = A > B Eqv B > D	' Levert het resultaat Null op.

MyCheck = A Eqv B	' Geeft -3 (bitsgewijze vergelijking).


Voorbeeld van de operator Imp

Dit voorbeeld maakt gebruik van de operator Imp om een logische implicatie uit te voeren op twee expressies.

Dim A, B, C, D, MyCheck

A = 10: B = 8: C = 6: D = Null	' Initialiseert variabelen.

MyCheck = A > B Imp B > C	' Is True.

MyCheck = A > B Imp C > B	' Is False.

MyCheck = B > A Imp C > B	' Is True.

MyCheck = B > A Imp C > D	' Is True.

MyCheck = C > D Imp B > A	' Levert het resultaat Null op.

MyCheck = B Imp A	' Geeft -1 (bitsgewijze vergelijking).


Voorbeeld van de operator Not

Dit voorbeeld maakt gebruik van de operator Not om een logische ontkenning uit te voeren op een expressie.

Dim A, B, C, D, MyCheck

A = 10: B = 8: C = 6: D = Null	' Initialiseert variabelen.

MyCheck = Not(A > B)	' Is False.

MyCheck = Not(B > A)	' Is True.

MyCheck = Not(C > D)	' Levert het resultaat Null op.

MyCheck = Not A	' Geeft -11 (bitsgewijze vergelijking).


Voorbeeld van de operator Or

Dit voorbeeld maakt gebruik van de operator Or om twee expressies logisch van elkaar te scheiden.

Dim A, B, C, D, MyCheck

A = 10: B = 8: C = 6: D = Null	' Initialiseert variabelen.

MyCheck = A > B Or B > C	' Is True.

MyCheck = B > A Or B > C	' Is True.

MyCheck = A > B Or B > D	' Is True.

MyCheck = B > D Or B > A	' Levert het resultaat Null op.

MyCheck = A Or B	' Geeft 10 (bitsgewijze vergelijking).


Voorbeeld van de operator Xor

Dit voorbeeld maakt gebruik van de operator Xor om een van twee mogelijke expressies logisch uit te sluiten.

Dim A, B, C, D, MyCheck

A = 10: B = 8: C = 6: D = Null	' Initialiseert variabelen.

MyCheck = A > B Xor B > C	' Is False.

MyCheck = B > A Xor B > C	' Is True.

MyCheck = B > A Xor C > B	' Is False.

MyCheck = B > D Xor A > B	' Levert het resultaat Null op.

MyCheck = A Xor B	' Geeft 2 (bitsgewijze vergelijking).


Voorbeeld van de operator Like

Dit voorbeeld maakt gebruik van de operator Like om twee tekenreeksen met een patroon te vergelijken.

Dim MyCheck

MyCheck = "aBBBa" Like "a*a"	' Is True.

MyCheck = "F" Like "[A-Z]"	' Is True.

MyCheck = "F" Like "[!A-Z]"	' Is False.

MyCheck = "a2a" Like "a#a"	' Is True.

MyCheck = "aM5b" Like "a[L-P]#[!c-e]"	' Is True.

MyCheck = "BAT123khg" Like "B?T*"	' Is True.

MyCheck = "CAT123khg" Like "B?T*"	' Is False.


Voorbeeld van de operator Is

Dit voorbeeld maakt gebruik van de operator Is om twee objectverwijzingen met elkaar te vergelijken. De namen van de objectvariabelen zijn algemeen en worden alleen ter illustratie gebruikt.

Dim MyObject, YourObject, ThisObject, OtherObject, ThatObject, MyCheck

Set YourObject = MyObject	' Kent objectverwijzingen toe.

Set ThisObject = MyObject

Set ThatObject = OtherObject

MyCheck = YourObject Is ThisObject	' Is True.

MyCheck = ThatObject Is ThisObject	' Is False.

' Stel dat MyObject <> OtherObject

MyCheck = MyObject Is ThatObject	' Is False.


Operatoren: overzicht

Operatoren	Beschrijving
Rekenkundige operatoren	Operatoren die worden gebuikt om rekenkundige of wiskundige berekeningen uit te voeren.
Vergelijkingsoperatoren	Operatoren die worden gebruikt om vergelijkingen uit te voeren.
Aaneenschakelings-operatoren	Operatoren die worden gebruikt om tekenreeksen te combineren.
Logische operatoren	Operatoren die worden gebruikt om logische bewerkingen uit te voeren.


Operatorvolgorde

Als in een expressie meerdere bewerkingen voorkomen, worden deze in een vooraf bepaalde volgorde geëvalueerd. Dit wordt de operatorvolgorde genoemd.

Als een expressie verschillende soorten operatoren bevat, worden eerst de rekenkundige operatoren geëvalueerd, vervolgens de vergelijkingsoperatoren en als laatste de logische operatoren. Vergelijkingsoperatoren zijn alle even belangrijk en worden geëvalueerd in de volgorde waarin ze van links naar rechts in de expressie zijn opgenomen. Rekenkundige en logische operatoren worden geëvalueerd in de volgende volgorde:

Rekenkundig	Vergelijking	Logisch
Machtsverheffen (^)	Gelijk aan (=)	Not
Negatief (–)	Niet gelijk aan(<>)	And
Vermenigvuldigen en delen (*, /)	Kleiner dan (<)	Or
Integer delen (\)	Groter dan(>)	Xor
Rekenkundige coëfficiënt (Mod)	Kleiner of gelijk  aan (<=)	Eqv
Optellen en aftrekken (+, –)	Groter of gelijk  aan (>=)	Imp
Aaneenschakeling tekenreeksen (&)	Like Is
Wanneer vermenigvuldigen en delen beide in een expressie voorkomen, worden de bewerkingen uitgevoerd in de volgorde waarin ze van links naar rechts optreden. Wanneer optellen en aftrekken beide in een expressie voorkomen, worden de bewerkingen uitgevoerd in de volgorde waarin ze van links naar rechts zijn opgenomen. Met ronde haken kunt u de operatorvolgorde wijzigen en zorgen dat bepaalde delen van een expressie eerder worden geëvalueerd dan andere. Bewerkingen tussen ronde haken worden altijd eerder uitgevoerd dan bewerkingen die niet tussen ronde haken staan. Binnen de ronde haken is de normale operatorvolgorde van toepassing.

Eigenlijk is de operator voor het aaneenschakelen van tekenreeksen (&) geen rekenkundige operator, maar in de operatorvolgorde komt het na alle rekenkundige operatoren en vóór alle vergelijkingsoperatoren.

Hoewel de operator Like in de operatorvolgorde op dezelfde plaats komt als alle vergelijkingsoperatoren, is het geen echte vergelijkingsoperator maar een operator die patronen vergelijkt.

De operator Is is een vergelijkingsoperator van objectverwijzingen. Er worden geen objecten of objectwaarden vergeleken, maar er wordt nagegaan of twee objectverwijzingen naar hetzelfde object verwijzen.


Rekenkundige operatoren

^, operator

*, operator

/, operator

\, operator

Mod, operator

+, operator

-, operator


Aaneenschakelingsoperatoren

&, operator

+, operator


Logische operatoren

And, operator

Eqv, operator

Imp, operator

Not, operator

Or, operator

Xor, operator


^, operator

Wordt gebruikt om een getal te verheffen tot een bepaalde macht, die wordt aangegeven door de exponent.

Syntaxis

resultaat = getal^exponent

De syntaxis van de operator ^ bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
resultaat	Vereist. Een willekeurige numerieke variabele.
number	Vereist. Een willekeurige numerieke expressie.
exponent	Vereist. Een willekeurige numerieke expressie.
Notities

Een getal mag alleen negatief zijn als exponent een geheel getal is. Wanneer meerdere machtsverheffingen voorkomen in een enkelvoudige expressie, wordt de operator ^ uitgevoerd in de volgorde waarin ze van links naar rechts optreden.

Meestal heeft resultaat het gegevenstype Double of Variant met Double als resultaat. Als getal of exponent echter een expressie Null is, is resultaat ook Null.


+, operator

Wordt gebruikt om twee getallen bij elkaar op te tellen.

Syntaxis

resultaat = expressie1+expressie2

De syntaxis van de operator + bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
resultaat	Vereist. Een willekeurige numerieke variabele.
expressie1	Vereist. Een willekeurige expressie.
expressie2	Vereist. een willekeurige expressie.
Notities

Als u de operator + gebruikt, is het soms moeilijk te bepalen of een optelling of aaneenschakeling van tekenreeksen gaat plaatsvinden. Gebruik de operator & voor aaneenschakeling om onduidelijkheden te voorkomen en voor het verschaffen van zelfverklarende programmeercode.

Wanneer ten minste één van de expressies geen Variant is, gelden de volgende regels:

Als	Dan
Beide expressies een numeriek gegevenstype (Byte, Boolean, Integer, Long, Single, Double, Date, Currency of Decimal) zijn,	Optelling.
Beide expressies het gegevenstype String zijn,	Aaneenschakeling.
De ene expressie een numeriek gegevenstype heeft en de andere een willekeurige Variant is behalve Null	Optelling.
De ene expressie het gegevenstype String heeft en de andere een Variant is behalve Null	Aaneenschakeling.
De ene expressie een Variant is van het type Empty	Ongewijzigde weergave van de andere expressie als resultaat.
De ene expressie een numeriek gegevenstype heeft en de andere het gegevenstype String heeft	Er treedt een fout op: Typen komen niet overeen.
Een van beide expressies Null is	Resultaat is Null.
Als beide expressies Variant zijn, gelden de volgende regels:

Als	Dan
Beide Variant-expressies numeriek zijn,	Optelling.
Beide Variant-expressies tekenreeksen zijn,	Aaneenschakeling.
Eén Variant-expressie numeriek is en de andere een tekenreeks,	Optelling.
Voor eenvoudige optellingen van expressies met numerieke gegevenstypen is het gegevenstype van resultaat normaal gesproken hetzelfde als het gegevenstype van de meest nauwkeurige expressie. De volgorde van de gegevenstypen van minst naar meest nauwkeurig is Byte, Integer, Long, Single, Double, Currency en Decimal. Hierbij gelden de volgende uitzonderingen:

Als	Dan is resultaat
De gegevenstypen Single en Long bij elkaar worden opgeteld,	een gegevenstype Double.
Het gegevenstype van resultaat een variant Long, Single of Date is waarvan het geldige bereik wordt overschreden,	geconverteerd naar een Double-variant.
Het gegevenstype van resultaat een variant Byte is waarvan het geldige bereik wordt overschreden,	geconverteerd naar een variant Integer.
Het gegevenstype van resultaat een variant Integer is waarvan het geldige bereik wordt overschreden,	geconverteerd naar een variant Long.
Gegevens van het type Date worden toegevoegd aan een ander gegevenstype,	een gegevenstype Date.
Wanneer een of beide expressies Null-expressies zijn, is resultaat ook Null. Als beide expressies Empty zijn, krijgt resultaat het gegevenstype Integer. Als slechts één van beide expressies Empty is, wordt de andere expressie ongewijzigd weergegeven als resultaat.

Opmerking   Bij optellen en aftrekken wordt niet dezelfde volgorde van nauwkeurigheid gehanteerd als bij vermenigvuldigen.


-, operator

Wordt gebruikt om het verschil tussen twee getallen te bepalen of om de negatieve waarde van een numerieke expressie aan te geven.

Syntaxis 1

resultaat = getal1-getal2

Syntaxis 2

–getal

De syntaxis van de operator - bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
resultaat	Vereist. Een willekeurige numerieke variabele.
number	Vereist. Een willekeurige numerieke expressie.
getal1	Vereist. Een willekeurige numerieke expressie.
getal2	Vereist. Een willekeurige numerieke expressie.
Notities

In syntaxis 1 is de operator - de rekenkundige operator voor aftrekken, waarmee u het verschil tussen twee getallen bepaalt. In syntaxis 2, wordt de operator - gebruikt als monadisch teken om de negatieve waarde van een expressie aan te geven.

Het gegevenstype van resultaat is normaal gesproken hetzelfde als het gegevenstype van de meest nauwkeurige expressie. De volgorde van de gegevenstypen van minst naar meest nauwkeurig is Byte, Integer, Long, Single, Double Currency en Decimal. Hierbij gelden de volgende uitzonderingen:

Als	Dan is resultaat
De gegevenstypen Single en Long in de aftrekking voorkomen,	geconverteerd naar een gegevenstype Double.
Het gegevenstype van resultaat een variant Long, Single of Date is waarvan het geldige bereik wordt overschreden,	geconverteerd naar een Variant met een Double.
Het gegevenstype van resultaat een variant Byte is waarvan het geldige bereik wordt overschreden,	geconverteerd naar een variant Integer.
Het gegevenstype van resultaat een variant Integer is waarvan het geldige bereik wordt overschreden,	geconverteerd naar een variant Long.
Gegevens van het type Date worden afgetrokken van een ander gegevenstype,	een gegevenstype Date.
Twee Date-expressies in de aftrekking voorkomen,	een gegevenstype Double.
Als een of beide expressies Null-expressies zijn, dan is resultaat Null. Als een expressie Empty is, wordt de waarde van de expressie ingesteld op 0.

Opmerking   Bij optellen en aftrekken wordt niet dezelfde volgorde van nauwkeurigheid gehanteerd als bij vermenigvuldigen.


*, operator

Wordt gebruikt om twee getallen met elkaar te vermenigvuldigen.

Syntaxis

resultaat = getal1*getal2

De syntaxis van de operator * bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
resultaat	Vereist. Een willekeurige numerieke variabele.
getal1	Vereist. Een willekeurige numerieke expressie.
getal2	Vereist. Een willekeurige numerieke expressie.
Notities

Het gegevenstype van resultaat is normaal gesproken hetzelfde als het gegevenstype van de meest nauwkeurige expressie. De volgorde van de gegevenstypen van minst naar meest nauwkeurig is Byte, Integer, Long, Single, Currency, Double en Decimal. Hierbij gelden de volgende uitzonderingen:

Als	Dan is resultaat
De gegevenstypen Single en Long in de vermenigvuldiging voorkomen,	geconverteerd naar een gegevenstype Double.
Het gegevenstype van resultaat een variant Long, Single of Date is waarvan het geldige bereik wordt overschreden,	geconverteerd naar een Variant met een Double.
Het gegevenstype van resultaat een variant Byte is waarvan het geldige bereik wordt overschreden,	geconverteerd naar een variant Integer.
Het gegevenstype van resultaat een variant Integer is waarvan het geldige bereik wordt overschreden,	geconverteerd naar een variant Long.
Wanneer een of beide expressies Null-expressies zijn, is resultaat ook Null. Als een expressie Empty is, wordt de waarde van de expressie ingesteld op 0.

Opmerking   Bij vermenigvuldigen wordt niet dezelfde volgorde van nauwkeurigheid gehanteerd als bij optellen en aftrekken.


/, operator

Wordt gebruikt om een getal te delen door een ander getal en geeft als resultaat een getal met een drijvende komma.

Syntaxis

resultaat = getal1/getal2

De syntaxis van de operator / bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
resultaat	Vereist. Een willekeurige numerieke variabele.
getal1	Vereist. Een willekeurige numerieke expressie.
getal2	Vereist. Een willekeurige numerieke expressie.
Notities

Het gegevenstype van resultaat is meestal Double of een Double-variant. Hierbij gelden de volgende uitzonderingen:

Als	Dan is resultaat
Beide expressies van het type Byte, Integer of Single zijn,	het gegevenstype Single, tenzij het geldige bereik ervan wordt overschreden. In dat geval treedt een fout op.
Beide expressies varianten van het type Byte, Integer of Single zijn,	een variant Single, tenzij het geldige bereik ervan wordt overschreden. In dat geval wordt resultaat een Variant met het gegevenstype Double.
Het gegevenstype Decimal en een willekeurig ander gegevenstype in de deling voorkomen,	een gegevenstype Decimal.
Als een of beide expressies Null-expressies zijn, dan is resultaat Null. Wanneer een expressie Empty is, wordt de waarde van de expressie ingesteld op 0.


\, operator

Wordt gebruikt om een getal te delen door een ander getal en geeft als resultaat een integer.

Syntaxis

resultaat = getal1\getal2

De syntaxis van de operator \ bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
resultaat	Vereist. Een willekeurige numerieke variabele.
getal1	Vereist. Een willekeurige numerieke expressie.
getal2	Vereist. Een willekeurige numerieke expressie.
Notities

Voordat de deling wordt uitgevoerd, worden de numerieke expressies afgerond op expressies van het type Byte, Integer of Long.

Meestal is het gegevenstype van resultaat Byte, een Byte-variant, Integer, een Integer-variant, Long of een Long-variant, ongeacht of resultaat een geheel getal is of niet. Het gedeelte achter de komma wordt verwijderd. Als een van de expressies echter Null is, wordt resultaat ook Null. Wanneer een expressie Empty is, wordt de waarde van de expressie ingesteld op 0.


Mod, operator

Deelt een getal door een ander getal en geeft alleen de rest als resultaat.

Syntaxis

resultaat = getal1 Mod getal2

De syntaxis van de operator Mod bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
resultaat	Vereist. Een willekeurige numerieke variabele.
getal1	Vereist. Een willekeurige numerieke expressie.
getal2	Vereist. Een willekeurige numerieke expressie.
Notities

De operator modulus of rest, deelt getal1 door getal2 (getallen met een drijvende komma worden afgerond op integers) en geeft alleen de rest als resultaat. In de volgende expressie is A (resultaat) bijvoorbeeld 5.

A = 19 Mod 6.7

Meestal is het gegevenstype van resultaat Byte, een Byte-variant, Integer, een Integer-variant, Long of een Variant met een Long-waarde, ongeacht of resultaat een geheel getal is of niet. Het gedeelte achter de komma wordt verwijderd. Als een van beide expressies echter Null is, wordt resultaat ook Null. Wanneer een expressie Empty is, wordt de waarde van de expressie ingesteld op 0.


&, operator

Wordt gebruikt om twee expressies als tekenreeksen aaneen te schakelen.

Syntaxis

resultaat = expressie1 & expressie2

De syntaxis van de operator & bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
resultaat	Vereist. Een willekeurige variabele String of Variant.
expressie1	Vereist. een willekeurige expressie.
expressie2	Vereist. een willekeurige expressie.
Notities

Als een expressie geen tekenreeks is, wordt de expressie geconverteerd naar een String-variant. Het gegevenstype van resultaat is String als beide expressies tekenreeksexpressies zijn. In alle andere gevallen is resultaat een String-variant. Als beide expressies Null zijn, wordt resultaat ook Null. Als slechts één expressie Null is, wordt de expressie met de nulwaarde beschouwd als een tekenreeks zonder gegevens ("") als deze wordt aaneengeschakeld met de andere expressie. Ook expressies die Empty zijn, worden beschouwd als tekenreeksen met lengte nul.


Vergelijkingsoperatoren

Worden gebruikt om expressies met elkaar te vergelijken.

Syntaxis

resultaat = expressie1 vergelijkingsoperator expressie2

resultaat = object1 Is object2

resultaat = tekenreeks Like patroon

Vergelijkingsoperatoren bestaan uit de volgende onderdelen:

Onderdeel	Beschrijving
resultaat	Vereist. Een willekeurige numerieke variabele.
expressie	Vereist. een willekeurige expressie.
Vergelijkingsoperator	Vereist. Een willekeurige vergelijkingsoperator.
Object	Vereist. Een willekeurige objectnaam.
string	Vereist. Een willekeurige tekenreeksexpressie.
patroon	Vereist. Een willekeurige tekenreeksexpressie of een willekeurig tekenbereik.
Notities

De volgende tabel geeft een overzicht van de vergelijkingsoperatoren en de voorwaarden die bepalen of het resultaat True, False of Null is:

Operator	True als	False als	Null als
< (Kleiner dan)	expressie1 < expressie2	expressie1 >= expressie2	expressie1 of expressie2 = Null
<= (Kleiner of gelijk aan)	expressie1 <= expressie2	expressie1 > expressie2	expressie1 of expressie2 = Null
> (Groter dan)	expressie1 > expressie2	expressie1 <= expressie2	expressie1 of expressie2 = Null
>= (Groter of gelijk aan)	expressie1 >= expressie2	expressie1 < expressie2	expressie1 of expressie2 = Null
= (Gelijk aan)	expressie1 = expressie2	expressie1 <> expressie2	expressie1 of expressie2 = Null
<> (Niet gelijk aan)	expressie1 <> expressie2	expressie1 = expressie2	expressie1 of expressie2 = Null
Opmerking   De operatoren Is and Like hebben specifieke vergelijkingsfuncties, die verschillen van de functies van de operatoren in de volgende tabel.

Bij het vergelijken van twee expressies kunt u soms moeilijk bepalen of de expressies als getallen of als tekenreeksen worden vergeleken. In de volgende tabel ziet u hoe de expressies met elkaar worden vergeleken en wat het resultaat is als een van beide expressies geen Variant is:

Als	Dan
Beide expressies een numeriek gegevenstype (Byte, Boolean, Integer, Long, Single, Double, Date, Currency of Decimal) zijn,	Wordt een numerieke vergelijking uitgevoerd.
Beide expressies het gegevenstype String zijn,	Wordt een tekenreeksvergelijking uitgevoerd.
Eén expressie een numeriek gegevenstype is en de andere expressie een Variant is die uit een getal bestaat of een getal kan bevatten	Wordt een numerieke vergelijking uitgevoerd.
Eén expressie een numeriek gegevenstype is en de andere expressie een tekenreeksvariant is die niet naar een getal kan worden geconverteerd,	Treedt een fout op: Type komt niet overeen.
Eén expressie een String is en de andere een willekeurige Variant behalve Null is,	Wordt een tekenreeksvergelijking uitgevoerd.
Eén expressie Empty is en de andere een numeriek gegevenstype is,	Wordt een numerieke vergelijking uitgevoerd met 0 als waarde voor de expressie Empty.
Eén expressie Empty is en de andere een String is,	Wordt een tekenreeksvergelijking uitgevoerd met een tekenreeks zonder gegevens ("") voor de expressie Empty.
Als expressie1 en expressie2 beide expressies van het type Variant zijn, bepaalt het onderliggende gegevenstype hoe de expressies worden vergeleken. In de volgende tabel ziet u hoe de expressies met elkaar worden vergeleken en wat het resultaat van de vergelijking is, afhankelijk van het onderliggende gegevenstype van de Variant:

Als	Dan
Beide Variant-expressies numeriek zijn,	Wordt een numerieke vergelijking uitgevoerd.
Beide Variant-expressies tekenreeksen zijn,	Wordt een tekenreeksvergelijking uitgevoerd.
Eén Variant-expressie numeriek is en de andere een tekenreeks,	Is de numerieke expressie kleiner dan de tekenreeksexpressie.
Een Variant-expressie van het type Empty is en de andere numeriek,	Wordt een numerieke vergelijking uitgevoerd met 0 als waarde voor de expressie Empty.
Een Variant-expressie van het type Empty is en de andere een tekenreeks,	Wordt een tekenreeksvergelijking uitgevoerd met een tekenreeks zonder gegevens ("") voor de expressie Empty.
Beide Variant-expressies van het type Empty zijn,	Zijn de expressies gelijk.
Wanneer u een gegevenstype Single vergelijkt met een gegevenstype Double, wordt Double afgerond, zodat het gegevenstype dezelfde precisie heeft als Single.

Als u een gegevenstype Currency vergelijkt met een gegevenstype Single of Double, wordt Single of Double geconverteerd naar Currency. Vergelijkbaar, als u een gegevenstype Decimal vergelijkt met een gegevenstype Single of Double, wordt Single of Double geconverteerd naar Decimal. Bij Currency kunnen de waarden van decimale getallen die kleiner zijn dan 0,0001 verloren gaan. Bij Decimal kunnen de waarden van decimale getallen die kleiner zijn dan 1E-28 verloren gaan, of er treedt een fout op als het geldige bereik wordt overschreden. Dit verlies van decimale getallen kan tot gevolg hebben dat twee waarden die niet gelijk zijn, toch als gelijk uit de vergelijking komen.


And, operator

Wordt gebruikt om een logische conjunctie uit te voeren op twee expressies.

Syntaxis

resultaat = expressie1 And expressie2

De syntaxis van de operator And bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
resultaat	Vereist. Een willekeurige numerieke variabele.
expressie1	Vereist. een willekeurige expressie.
expressie2	Vereist. een willekeurige expressie.
Notities

Als beide expressies worden geëvalueerd als True, is resultaat True. Als een van beide expressies wordt geëvalueerd als False, is resultaat ook False. In de volgende tabel ziet u hoe resultaat wordt vastgesteld:

Als expressie1 is	En expressie2 is	Dan is resultaat
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
De operator And voert ook een bitsgewijze vergelijking uit tussen bits die op dezelfde positie staan in twee numerieke expressies en stelt de corresponderende bit in resultaat in zoals wordt aangegeven in de volgende tabel:

Als bit in expressie1 is	En bit in expressie2 is	Dan is het resultaat
0	0	0
0	1	0
1	0	0
1	1	1


Eqv, operator

Wordt gebruikt om een logische equivalentie uit te voeren op twee expressies.

Syntaxis

resultaat = expressie1 Eqv expressie2

De syntaxis van de operator Eqv bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
resultaat	Vereist. Een willekeurige numerieke variabele.
expressie1	Vereist. een willekeurige expressie.
expressie2	Vereist. een willekeurige expressie.
Notities

Als een van beide expressies Null is, is resultaat ook Null. Als geen van beide expressies Null is, wordt resultaat vastgesteld aan de hand van de volgende tabel:

Als expressie1 is	En expressie2 is	Dan is resultaat
True	True	True
True	False	False
False	True	False
False	False	True
De operator Eqv voert een bitsgewijze vergelijking uit tussen bits die op dezelfde positie staan in twee numerieke expressies en stelt de corresponderende bit in resultaat in zoals wordt aangegeven in de volgende tabel:

Als bit in expressie1 is	En bit in expressie2 is	Dan is resultaat
0	0	1
0	1	0
1	0	0
1	1	1


Imp, operator

Wordt gebruikt om een logische implicatie uit te voeren op twee expressies.

Syntaxis

resultaat = expressie1 Imp expressie2

De syntaxis van de operator Imp bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
resultaat	Vereist. Een willekeurige numerieke variabele.
expressie1	Vereist. een willekeurige expressie.
expressie2	Vereist. een willekeurige expressie.
Notities

In de volgende tabel ziet u hoe resultaat wordt vastgesteld:

Als expressie1 is	En expressie2 is	Dan is resultaat
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
De operator Imp voert een bitsgewijze vergelijking uit tussen bits die op dezelfde positie staan in twee numerieke expressies en stelt de corresponderende bit in resultaat in zoals wordt aangegeven in de volgende tabel:

Als bit in expressie1 is	En bit in expressie2 is	Dan is resultaat
0	0	1
0	1	1
1	0	0
1	1	1


Not, operator

Wordt gebruikt om een logische ontkenning uit te voeren op een expressie.

Syntaxis

resultaat = Not expressie

De syntaxis van de operator Not bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
resultaat	Vereist. Een willekeurige numerieke variabele.
expressie	Vereist. een willekeurige expressie.
Notities

In de volgende tabel ziet u hoe resultaat wordt vastgesteld:

Als expressie is	Dan is resultaat
True	False
False	True
Null	Null
Bovendien keert de operator Not de bitwaarden van alle variabelen om en stelt de corresponderende bit in resultaat in zoals wordt aangegeven in de volgende tabel:

Als bit in expressie is	Dan is bit in resultaat
o	1
1	0


Or, operator

Wordt gebruikt om twee expressies logisch van elkaar te scheiden.

Syntaxis

resultaat = expressie1 Or expressie2

De syntaxis van de operator Or bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
resultaat	Vereist. Een willekeurige numerieke variabele.
expressie1	Vereist. een willekeurige expressie.
expressie2	Vereist. een willekeurige expressie.
Notities

Wanneer een of beide expressies worden geëvalueerd als True, is resultaat ook True. In de volgende tabel ziet u hoe resultaat wordt vastgesteld:

Als expressie1 is	En expressie2 is	Dan is resultaat
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
De operator Or voert ook een bitsgewijze vergelijking uit tussen bits die op dezelfde positie staan in twee numerieke expressies en stelt de corresponderende bit in resultaat in zoals wordt aangegeven in de volgende tabel:

Als bit in expressie1 is	En bit in expressie2 is	Dan is resultaat
0	0	0
0	1	1
1	0	1
1	1	1


Xor, operator

Wordt gebruikt om twee expressies logisch uit te sluiten.

Syntaxis

[resultaat =] expressie1 Xor expressie2

De syntaxis van de operator Xor bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
resultaat	Optioneel. een willekeurige numerieke variabele.
expressie1	Vereist. een willekeurige expressie.
expressie2	Vereist. een willekeurige expressie.
Notities

Wanneer één van de twee expressies wordt geëvalueerd als True, is resultaat True. Wanneer één van beide expressies echter Null is, is resultaat ook Null. Als geen van beide expressies Null is, wordt resultaat vastgesteld aan de hand van de volgende tabel:

Als expressie1 is	En expressie2 is	Dan is resultaat
True	True	False
True	False	True
False	True	True
False	False	False
De operator Xor fungeert zowel als een logische en als een bitsgewijze operator. Een bitsgewijze vergelijking van twee expressies met behulp van de logistiek exclusive-or als resultaat, zoals wordt aangegeven in de volgende tabel:

Als bit in expressie1 is	En bit in expressie2 is	Dan is resultaat
0	0	0
0	1	1
1	0	1
1	1	0


Is, operator

Wordt gebruikt om twee variabelen met objectverwijzingen met elkaar te vergelijken.

Syntaxis

resultaat = object1 Is object2

De syntaxis van de operator Is bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
resultaat	Vereist. Een willekeurige numerieke variabele.
object1	Vereist. Een willekeurige objectnaam.
object2	Vereist. Een willekeurige objectnaam.
Notities

Als object1 en object2 allebei naar hetzelfde object verwijzen, is resultaat True. Zo niet is resultaat False. Er zijn verschillende manieren waarop u twee variabelen naar hetzelfde object kunt laten verwijzen.

In het volgende voorbeeld is A zodanig ingesteld dat deze variabele naar hetzelfde object verwijst als B:

Set A = B

In het volgende voorbeeld is opgegeven dat A en B naar hetzelfde object verwijzen als C:

Set A = C

Set B = C


Like, operator

Wordt gebruikt om twee tekenreeksen met elkaar te vergelijken.

Syntaxis

resultaat = tekenreeks Like patroon

De syntaxis van de operator Like bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
resultaat	Vereist. Een willekeurige numerieke variabele.
string	Vereist. Een willekeurige tekenreeksexpressie.
patroon	Vereist. Een willekeurige tekenreeksexpressie die voldoet aan de conventies voor het vergelijken van patronen die hieronder zijn beschreven.
Notities

Als tekenreeks overeenkomt met patroon, is resultaat True. Als geen sprake is van overeenkomst, is resultaat False. Als tekenreeks of patroon Null is, is resultaat ook Null.

Het gedrag van de operator Like wordt bepaald door de instructie Option Compare. De standaardmethode voor tekenreeksvergelijking voor elke module is Option Compare Binary.

Met Option Compare Binary worden tekenreeksvergelijkingen uitgevoerd op grond van een sorteervolgorde die is afgeleid van de interne binaire notatie van de tekens. De sorteervolgorde wordt bepaald door de codepagina. In het volgende voorbeeld ziet u een typische binaire sorteervolgorde:

A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø

Met Option Compare Text worden tekenreeksvergelijkingen uitgevoerd op grond van een tekstsorteervolgorde die afhangt van de lokale instellingen van uw systeem. Hierbij wordt geen onderscheid gemaakt tussen hoofdletters en kleine letters. Wanneer u dezelfde tekst als in het vorige voorbeeld sorteert met Option Compare Text, levert dit de volgende tekstsorteervolgorde op:

(A=a) < (À=à) < (B=b) < (E=e) < (Ê=ê) < (Z=z) < (Ø=ø)

Patronen vergelijken is een ingebouwde functie waarmee u over een veelzijdig hulpmiddel beschikt voor het vergelijken van tekenreeksen. U kunt jokertekens, tekenlijsten of tekenbereiken in elke gewenste combinatie opgeven en deze vergelijken met tekenreeksen. De volgende tabel geeft een overzicht van de tekens die u in een patroon kunt opnemen en de tekens waarmee deze overeenkomen:

Tekens in patroon	Komen in tekenreeks overeen met
?	Een willekeurig teken.
*	Nul of meer tekens.
#	Eén willekeurig cijfer (0–9).
[tekenlijst]	Eén willekeurig teken dat in tekenlijst voorkomt.
[!tekenlijst]	Eén willekeurig teken dat niet in tekenlijst voorkomt.
Een groep van een of meer tekens (tekenlijst) die tussen vierkante haken staat ([ ]) kunt u gebruiken om na te gaan of één teken in de tekenreeks overeenkomt met de tekens in de opgegeven lijst. Bovendien kunt u in de tekenlijst bijna elke tekencode opnemen, inclusief cijfers.

Opmerking   U kunt de speciale tekens linker vierkant haakje ([), vraagteken (?), hekje (#) en sterretje (*) alleen gebruiken om zichzelf aan te duiden wanneer u deze tekens tussen vierkante haakjes plaatst. U kunt het rechter vierkante haakje (]) niet letterlijk in een groep gebruiken, maar wel als afzonderlijk teken buiten een groep.

In tekenlijst kunt u ook een tekenbereik opgeven, waarbij u een afbreekstreepje (-) gebruikt om de boven- en benedengrens van het bereik van elkaar te scheiden. Als patroon bijvoorbeeld [A-Z] bevat, levert dit een overeenkomst op wanneer op de corresponderende positie in tekenreeks een hoofdletter in het bereik van A t/m Z staat. U kunt meerdere tekenreeksen tussen de vierkante haakjes opgeven zonder scheidingstekens te gebruiken tussen de tekenreeksen.

Welke tekens een opgegeven tekenreeks bevat, hangt af van de tekenvolgorde die tijdens de runtime geldt (de tekenvolgorde wordt bepaald door Option Compare en de lokale instellingen van het systeem waarop het programma is gestart). Als u het voorafgaande voorbeeld gebruikt met Option Compare Binary, komt de tekenreeks [A–E] overeen met A, B en E. Met Option Compare Text, komt [A–E] overeen met A, a, À, à, B, b, E, e. Deze tekenreeks levert geen Ê of ê op, omdat tekens met accenten in de sorteervolgorde pas na alle tekens zonder accenten komen.

Andere belangrijke regels bij patroonvergelijkingen:

•	Een uitroepteken (!) aan het begin van de tekenlijst betekent dat er een overeenkomst is wanneer in de tekenreeks een teken wordt gevonden dat niet in de tekenlijst voorkomt. Als u het uitroepteken zonder vierkante haakjes gebruikt, wordt het uitroepteken zelf als resultaat gegeven.

•	Een afbreekstreepje (–) kan zowel aan het begin (na het uitroepteken, indien aanwezig) als aan het einde van de tekenlijst worden geplaatst om als resultaat te worden gegeven. Op alle andere plaatsen wordt het afbreekstreepje gebruikt om een tekenbereik aan te geven.

•	Als u een tekenreeks opgeeft, dient u de oplopende sorteervolgorde te hanteren (van laag naar hoog). [A-Z] is een geldig patroon, [Z-A] niet.

•	De tekenreeks [] wordt beschouwd als een tekenreeks zonder gegevens ("").

In sommige talen bevat het alfabet speciale tekens die eigenlijk voor twee afzonderlijke tekens staan. Zo kennen verschillende talen het teken "æ" voor de combinatie van de tekens "a" en "e". De operator Like herkent dat het speciale enkelvoudige teken en de twee afzonderlijke tekens gelijk zijn.

Als in de lokale instellingen van het systeem een taal is ingesteld die gebruik maakt van dergelijke speciale tekens, komt een speciaal enkelvoudig teken in patroon of tekenreeks overeen met de equivalente tekenreeks van 2 tekens in de andere tekenreeks. Een speciaal teken dat in patroon tussen vierkante haakjes staat (alleen, in een lijst of in een bereik), komt ook overeen met de equivalente tekenreeks van twee tekens in tekenreeks.


Voorbeeld van de eigenschap Count

Dit voorbeeld maakt gebruik van de eigenschap Count van het object Collection om te bepalen hoeveel herhalingen er nodig zijn om alle elementen van de collectie MyClasses te verwijderen. Wanneer collecties numeriek zijn geïndexeerd, is de basis standaard 1. Aangezien collecties automatisch worden geïndexeerd wanneer iets wordt verwijderd, verwijdert de volgende programmacode het eerste element bij elke uitvoering van de lus.

Dim Num, MyClasses

For Num = 1 To MyClasses.Count	' Verwijdert naam uit collectie.

MyClasses.Remove 1	' Numerieke indexen van collecties beginnen standaard

Next	' met 1.


Voorbeeld van de eigenschap Description

Het volgende voorbeeld wijst een door de gebruiker gedefinieerd bericht toe aan de eigenschap Description van het object Err.

Err.Description = "Het was niet mogelijk toegang te krijgen tot een object dat noodzakelijk is " _

& "voor deze bewerking."


Voorbeeld van de eigenschap HelpContext

Dit voorbeeld maakt gebruik van de eigenschap HelpContext van het object Err om het Help-onderwerp van Visual Basic voor de fout Overloop weer te geven.

Dim Msg

Err.Clear

On Error Resume Next

Err.Raise 6 ' Genereert "Overloop"-fout.

If Err.Number <> 0 Then

Msg = "Druk op F1 of  of Help om " & Err.HelpFile & "-onderwerp te zien voor" & _

" de volgende HelpContext: " & Err.HelpContext

MsgBox Msg, , "Fout: " & Err.Description, Err.HelpFile, _

Err.HelpContext

End If


Voorbeeld van de eigenschap HelpFile

Dit voorbeeld maakt gebruik van de eigenschap HelpFile van het object Err om het Help-systeem te starten. De eigenschap HelpFile bevat standaard de naam van het Visual Basic Help-bestand.

Dim Msg

Err.Clear

On Error Resume Next	' Onderdrukt fouten omwille van demonstratiedoeleinden.

Err.Raise 6	' Genereert "Overloop"-fout.

Msg = "Druk op F1 of  of Help om " & Err.HelpFile & _

"-onderwerp te zien voor deze fout"

MsgBox Msg, , "Fout: " & Err.Description,Err.HelpFile, Err.HelpContext


Voorbeeld van de eigenschap LastDLLError

Wanneer onderstaande programmacode in een UserForm-module wordt geplakt, heeft dit als gevolg dat er een poging wordt gedaan een DLL-functie aan te roepen. De oproep mislukt omdat het doorgegeven argument (een null-pointer) een fout genereert. Bovendien kan SQL nooit worden geannuleerd als het niet is geactiveerd. De programmacode na de oproep controleert het resultaat van de oproep en drukt vervolgens bij de eigenschap LastDLLError van het object Err af om de foutcode te geven. Op systemen zonder DLL's levert LastDLLError altijd nul op.

 Private Declare Function SQLCancel Lib "ODBC32.dll" _

 (ByVal hstmt As Long) As Integer

Private Sub UserForm_Click()

Dim RetVal

' Roept aan met ongeldig argument.

RetVal = SQLCancel(myhandle&)

' Controleert op SQL-foutcode.

If RetVal = -2 Then

'Geeft informatiecode weer.

MsgBox "Foutcode is :" & Err.LastDllError

    End If

End Sub


Voorbeeld van de eigenschap Number

Het eerste voorbeeld laat een typische toepassing van de eigenschap Number zien in een foutafhandelingsroutine. Het tweede voorbeeld controleert de eigenschap Number van het object Err om vast te stellen of een fout gegeven door een automatiseringsobject door het object was gedefinieerd, of dat het object verbonden was met een fout gedefinieerd door Visual Basic. De constante vbObjectError is een bijzonder groot negatief getal dat door een object aan de eigen foutcode wordt toegevoegd om aan te geven dat de fout wordt gedefinieerd door de server. Door het getal van Err.Number af te trekken wordt deze uit het resultaat gehaald. Als de fout objectgedefinieerd is, wordt het basisgetal achtergelaten in MyError, dat samen met de oorspronkelijke bron van de fout wordt weergegeven in een dialoogvenster. Als Err.Number een Visual Basic-fout vertegenwoordigt, wordt het Visual Basic-foutnummer weergegeven in het dialoogvenster.

' Typical use of Number property

Sub test()

On Error GoTo out

Dim x, y

x = 1 / y	' Genereert fout door delen door nul

Exit Sub

out:

MsgBox Err.Number

MsgBox Err.Description

' Controleert op fout door delen door nul

If Err.Number = 11 Then

y = y + 1

End If

Resume

End Sub

' Gebruikt eigenschap Number met een fout uit een

' Automation-object

Dim MyError, Msg

' Verwijdert eerst de constante die door het object is toegevoegd om een

' van zijn eigen fouten aan te duiden.

MyError = Err.Number - vbObjectError

' Als u de constante vbObjectError aftrekt en het getal nog steeds

' in het bereik 0-65,535 ligt, betreft het een door het object gedefinieerde foutcode.

If MyError > 0 And MyError < 65535 Then

Msg = "Het object waartoe u toegang kreeg, wees dit nummer toe aan de fout: " _

 	& MyError & ". De veroorzaker van de fout was: " _

& Err.Source & ". Druk op F1 om het betreffende Help-onderwerp te openen."

' Anders betreft het een Visual Basic-foutnummer.

Else

Msg = "Deze fout (# " & Err.Number & ") is een foutnummer van" & _

" Visual Basic. Druk op Help-toets of F1  voor het Visual Basic Help-" _

& "onderwerp voor deze fout."

End If

MsgBox Msg, , "Objectfout", Err.HelpFile, Err.HelpContext


Voorbeeld van de eigenschap Source

Dit voorbeeld wijst de programmerings-id van een automatiseringsobject dat gemaakt is in Visual Basic, toe aan de variabele MyObjectID. Deze variabele wordt vervolgens toegewezen aan de eigenschap Source van het object Err wanneer deze een fout genereert met de methode Raise. Bij het afhandelen van fouten wordt u afgeraden in het programma gebruik te maken van de eigenschap Source (of andere eigenschappen van Err behalve Number). Het enige geldige gebruik van eigenschappen anders dan Number is voor het weergeven van informatie aan een eindgebruiker in gevallen waar een fout niet kan worden afgehandeld. In dit voorbeeld wordt uitgegaan van de veronderstelling dat App en MyClass geldige verwijzingen zijn.

Dim MyClass, MyObjectID, MyHelpFile, MyHelpContext

' Een object van het type MyClass genereert een fout en vult alle eigenschappen van het Err-object

' inclusief Source. Deze ontvangt MyObjectID, een

' combinatie van de eigenschap Title van het object App en de eigenschap Name

' van het object MyClass.

MyObjectID = App.Title & "." & MyClass.Name

Err.Raise	Number := vbObjectError + 894, Source := MyObjectID, _

Description := "Kon uw taak niet voltooien", _

HelpFile := MyHelpFile, HelpContext := MyHelpContext


Calendar, eigenschap

Deze eigenschap geeft als resultaat, of stelt in, een waarde die het type kalender aangeeft dat moet worden gebruikt bij uw project.

Voor Calendar kunt u een van beide volgende instellingen gebruiken:

Instelling	Waarde	Beschrijving
vbCalGreg	0	Gebruik van de Gregoriaanse kalender (standaard).
vbCalHijri	1	Gebruik van de Hijri-kalender.
Notities

U kunt de eigenschap Calendar alleen programmatisch instellen. De Hijri-kalender bijvoorbeeld kunt u als volgt gebruiken:

Calendar = vbCalHijri


Count, eigenschap

Geeft als resultaat een Long-waarde met het aantal onderdelen van een collectie. Alleen-lezen.


Description, eigenschap

Geeft als resultaat een tekenreeksexpressie met een beschrijvende tekenreeks voor een object of stelt deze in. Lezen/schrijven.

Geeft voor het object Err als resultaat een beschrijvende tekenreeks voor een fout of stelt deze in.

Notities

De eigenschap Description bevat een korte beschrijving van de fout. Gebruik deze eigenschap om de gebruiker attent te maken op een fout die u niet kunt of wilt afhandelen. Wijs een korte beschrijving van de fout aan de eigenschap Description toe als u een door de gebruiker gedefinieerde fout genereert. Als Description niet is opgegeven en de waarde van Number correspondeert met een Visual Basic runtimefout, wordt de tekenreeks die door de functie Error als resultaat wordt gegeven, in Description geplaatst als de fout wordt gegenereerd.


HelpContext, eigenschap

Geeft als resultaat een tekenreeksexpressie met het context-id voor een onderwerp in een Microsoft Windows Help-bestand of stelt deze in. Lezen/schrijven.

Notities

De eigenschap HelpContext wordt gebruikt om het Help-onderwerp dat is opgegeven bij de eigenschap HelpFile automatisch weer te geven. Als HelpFile en HelpContext beide leeg zijn, wordt de waarde van Number gecontroleerd. Als Number correspondeert met een runtimefoutwaarde van Visual Basic, wordt het Help-context-id van Visual Basic voor de fout gebruikt. Als de Number-waarde niet correspondeert met een Visual Basic-fout, wordt de index van het Visual Basic Help-bestand weergegeven.

Opmerking   Breng in uw toepassing routines aan voor de afhandeling van veelvoorkomende fouten. Als u programmeert met een object, kunt u het Help-bestand voor dat object gebruiken om de kwaliteit van uw foutafhandeling te verbeteren of om een duidelijk bericht aan de gebruiker te tonen als de fout niet kan worden hersteld.


HelpFile, eigenschap

Geeft als resultaat een tekenreeksexpressie met een volledig en geldig pad naar een Help-bestand of stelt deze in. Lezen/schrijven.

Notities

Als in Helpfile een Help-bestand is opgegeven, wordt dit bestand automatisch opgeroepen als de gebruiker op de knop Help klikt (of op F1  in Windows of op HELP op de Macintosh) in het dialoogvenster met het foutbericht. Als de eigenschap HelpContext een geldig context-id voor het opgegeven bestand bevat, wordt dat onderwerp automatisch weergegeven. Als HelpFile niet is opgegeven, verschijnt het Visual Basic Help-bestand.

Opmerking   Breng in uw toepassing routines aan voor de afhandeling van veelvoorkomende fouten. Als u programmeert met een object, kunt u het Help-bestand voor dat object gebruiken om de kwaliteit van uw foutafhandeling te verbeteren of om een duidelijk bericht aan de gebruiker te tonen als de fout niet kan worden hersteld.


LastDLLError, eigenschap

Geeft als resultaat een systeemfoutcode die wordt veroorzaakt door een oproep van een DLL (dynamic link library). Alleen-lezen. LastDLLError geeft op de Macintosh altijd een nul als resultaat.

Notities

De eigenschap LastDLLError is alleen van toepassing op DLL-oproepen vanuit de Visual Basic-programmacode. Als een dergelijke oproep optreedt, geeft de opgeroepen functie meestal een code als resultaat die aangeeft of de oproep is geslaagd of mislukt en wordt de eigenschap LastDLLError gevuld. Raadpleeg de documentatie van de DLL-functies voor het bepalen van de resultaatwaarden die aangeven of de oproep is geslaagd of mislukt. Als de code voor mislukking als resultaat wordt gegeven, dient de Visual Basic-toepassing meteen de eigenschap LastDLLError te controleren. Er geldt geen uitzondering als de eigenschap LastDLLError is ingesteld.


Number, eigenschap

Geeft als resultaat een numerieke waarde die een fout aangeeft of stelt deze in. Number is de standaardeigenschap van het object Err. Lezen/schrijven.

Notities

Als u een door de gebruiker gedefinieerde fout wilt opvragen van een object, stelt u Err.Number in door het nummer dat u als foutcode hebt gekozen, op te tellen bij de constante vbObjectError. Met de volgende code geeft u bijvoorbeeld de foutcode 1051 als resultaat:

Err.Raise Number := vbObjectError + 1051, Source:= "EenKlasse"


Source, eigenschap

Geeft als resultaat een tekenreeksexpressie met de naam van het object of de toepassing waardoor de fout oorspronkelijk is gegenereerd of stelt deze in. Lezen/schrijven.

Notities

De eigenschap Source geeft een reeksexpressie op voor het object dat de fout oorspronkelijk heeft gegenereerd. De expressie is meestal de naam van de klasse van het object of het programma-id. Gebruik Source om uw gebruikers gegevens te verschaffen wanneer uw code niet in staat is een fout af te handelen die is gegenereerd in een object waartoe u toegang heeft verkregen. Als u bijvoorbeeld toegang verkrijgt tot Microsoft Excel en deze toepassing een fout Delen door nul genereert, stelt Microsoft Excel Err.Number in op de eigen foutcode voor die fout en wordt Source ingesteld op Excel.Application.

Bij het genereren van een fout op basis van code, is Source het programma-id van uw toepassing. Voor klassenmodules moet Source een naam bevatten in de vorm project.klasse. Als een onverwachte fout optreedt in uw code, wordt de eigenschap Source automatisch ingevuld. Source bevat de projectnaam voor fouten in een standaardmodule. Voor fouten in een klassenmodule bevat Source een naam in de vorm project.klasse.


Voorbeeld van de instructie DeleteSetting

Het volgende voorbeeld maakt eerst gebruik van de instructie SaveSetting voor invoer in het Register van Windows (of .ini-bestand op 16-bits Windows-platformen)  voor de toepassing MijnToep en maakt vervolgens gebruik van de instructie DeleteSetting om de invoer te verwijderen. Omdat er geen argument key is opgegeven, wordt de hele sectie verwijderd, met inbegrip van de sectienaam en alle bijbehorende sleutels.

' Plaatst enkele instellingen in het Register.

SaveSetting appname := "MijnToep", section := "Starten", _

      key := "Boven", setting := 75

SaveSetting "MijnToep","Starten", "Links", 50

' Verwijdert sectie en alle bijbehorende instellingen uit het Register.

DeleteSetting "MijnToep", "Starten"


Voorbeeld van de functie GetAllSettings

Dit voorbeeld maakt eerst gebruik van de instructie SaveSetting voor invoer in het Register van Windows voor de toepassing gespecificeerd als appname en maakt vervolgens gebruik van de functie GetAllSettings om de instellingen weer te geven. De toepassingsnamen en namen van section kunnen niet worden opgehaald met GetAllSettings. Ten slotte verwijdert de instructie DeleteSetting de invoer van de toepassing.

' Variant voor tweedimensionale matrix die door GetAllSettings wordt teruggegeven

' Integer om teller te bewaren.

Dim MySettings As Variant, intSettings As Integer

' Plaatst enkele instellingen in het Register.

SaveSetting appname := "MijnToep", section := "Starten", _

key := "Boven", setting := 75

SaveSetting "MijnToep","Starten", "Links", 50

' Haalt de instellingen op.

MySettings = GetAllSettings(appname := "MijnToep", section := "Starten")

For intSettings = LBound(MySettings, 1) To UBound(MySettings, 1)

Debug.Print MySettings(intSettings, 0), MySettings(intSettings, 1)

Next intSettings

DeleteSetting "MijnToep", "Starten"


Voorbeeld van de functie GetSetting

Dit voorbeeld maakt eerst gebruik van de instructie SaveSetting voor invoer in het Register van Windows (of .ini-bestand bij 16-bit Windows-platformen) voor de toepassing gespecificeerd als appname en maakt vervolgens gebruik van de functie GetSetting om een van de instellingen weer te geven. Omdat het argument default is opgegeven, wordt altijd een waarde als resultaat gegeven. De namen van section kunnen niet worden opgehaald met GetSetting. Ten slotte verwijdert de instructie DeleteSetting alle invoer van de toepassing.

' Variant voor tweedimensionale matrix die door GetSetting wordt teruggegeven.

Dim MySettings As Variant

' Plaatst enkele instellingen in het Register.

SaveSetting "MijnToep","Starten", "Boven", 75

SaveSetting "MijnToep","Starten", "Links", 50

Debug.Print GetSetting(appname := "MijnToep", section := "Starten", _

           key := "Links", default := "25")

DeleteSetting "MijnToep", "Starten"


Voorbeeld van de instructie SaveSetting

Het volgende voorbeeld maakt eerst gebruik van de instructie SaveSetting voor invoer in het Register van Windows (of .ini-bestand op 16-bits Windows-platformen)  voor de toepassing MijnToep en maakt vervolgens gebruik van de instructie DeleteSetting om de invoer te verwijderen.

' Plaatst enkele instellingen in het Register.

SaveSetting appname := "MijnToep", section := "Starten", _

      key := "Boven", setting := 75

SaveSetting "MijnToep","Starten", "Links", 50

' Verwijdert sectie en alle bijbehorende instellingen uit het Register.

DeleteSetting "MijnToep", "Starten"


DeleteSetting, instructie

Verwijdert een sectie of sleutelinstelling uit een vermelding van een toepassing in het Windows-register of (op de Macintosh) informatie in het initialisatiebestand van de toepassing.

Syntaxis

DeleteSetting appname, section[, key]

De syntaxis van DeleteSetting bevat de volgende benoemde argumenten:

Onderdeel	Beschrijving
appname	Vereist. Tekenreeksexpressie met de naam van de toepassing of het project waarop de sectie of sleutelinstelling betrekking heeft. Op de Macintosh is dit de bestandsnaam van het initialisatiebestand in de map Voorkeuren van de systeemmap.
section	Vereist. Een tekenreeksexpressie met de naam van de sectie waaruit de sleutelinstelling wordt verwijderd. Als u alleen appname en section opgeeft, worden de opgegeven sectie en alle verbonden sleutelinstellingen verwijderd.
key	Optioneel. Een tekenreeksexpressie met de naam van de sleutelinstelling die u wilt verwijderen.
Notities

Als alle argumenten worden opgegeven, wordt de instelling verwijderd. Als u probeert de instructie DeleteSetting te gebruiken voor een niet-bestaande sectie of sleutelinstelling, treedt een runtimefout op.


GetAllSettings, functie

Haalt een lijst met sleutelinstellingen en hun waarden (oorspronkelijk gemaakt met SaveSetting) uit een vermelding van een toepassing in het Windows-register of (op de Macintosh) informatie in het initialisatiebestand van de toepassing.

Syntaxis

GetAllSettings(appname, section)

De syntaxis van de functie GetAllSettings bevat de volgende benoemde argumenten:

Onderdeel	Beschrijving
appname	Vereist. Tekenreeksexpressie met de naam van de toepassing of het project waarvan de sleutelinstellingen worden opgevraagd. Op de Macintosh is dit de bestandsnaam van het initialisatiebestand in de map Voorkeuren van de systeemmap.
section	Vereist. Een tekenreeksexpressie met de naam van de sectie waarvan de sleutelinstellingen worden opgevraagd. GetAllSettings geeft als resultaat een Variant met een tweedimensionale matrix waarin alle sleutelinstellingen van de opgegeven sectie en de bijbehorende waarden worden weergegeven.
Notities

Als appname of section niet bestaat, geeft GetAllSettings als resultaat een niet-geïnitialiseerde Variant.


GetSetting, functie

Haalt de waarde van een sleutelinstelling uit een vermelding van een toepassing in het Windows-register of (op de Macintosh) informatie in het initialisatiebestand van de toepassing.

Syntaxis

GetSetting(appname, section, key[, default])

De syntaxis van de functie GetSetting bevat de volgende benoemde argumenten:

Onderdeel	Beschrijving
appname	Vereist. Tekenreeksexpressie met de naam van de toepassing of het project waarvan de sleutelinstelling wordt opgevraagd. Op de Macintosh is dit de bestandsnaam van het initialisatiebestand in de map Voorkeuren van de systeemmap.
section	Vereist. Een tekenreeksexpressie met de naam van de sectie waarin de sleutelinstelling staat.
key	Vereist. Een tekenreeksexpressie met de naam van als resultaat te geven sleutelinstelling.
default	Optioneel. Een expressie met de waarde die wordt teruggegeven als er geen waarde is ingesteld voor de sleutelinstelling. Als u geen waarde opgeeft, wordt aan default een tekenreeks zonder gegevens ("") toegewezen.
Notities

Als de opgegeven elementen voor de argumenten van GetSetting niet bestaan, wordt de waarde van default teruggegeven.


SaveSetting, instructie

Bewaart of maakt de vermelding van een toepassing in het Register van Windows  of (op de Macintosh) de informatie in het initialisatiebestand van de toepassing.

Syntaxis

SaveSetting appname, section, key, setting

De syntaxis van de instructie SaveSetting bevat de volgende benoemde argumenten:

Onderdeel	Beschrijving
appname	Vereist. Tekenreeksexpressie met de naam van de toepassing of het project waarop de instelling betrekking heeft. Op de Macintosh is dit de bestandsnaam van het initialisatiebestand in de map Voorkeuren van de systeemmap.
section	Vereist. Een tekenreeksexpressie met de naam van de sectie waarin de sleutelinstelling wordt opgeslagen.
key	Vereist. Een tekenreeksexpressie met de naam van de opgeslagen sleutel.
setting	Vereist. Een expressie met de waarde waarop key wordt ingesteld.
Notities

Als de sleutelinstelling niet kan worden opgeslagen, levert dit een fout op.


Voorbeeld van de functie Chr

Dit voorbeeld maakt gebruik van de functie Chr om het teken dat hoort bij de opgegeven tekencode als resultaat te geven.

Dim MyChar

MyChar = Chr(65)	' Geeft A.

MyChar = Chr(97)	' Geeft a.

MyChar = Chr(62)	' Geeft >.

MyChar = Chr(37)	' Geeft %.


Voorbeeld van de functie Format

Dit voorbeeld laat zien hoe de functie Format op verschillende manieren kan worden gebruikt om waarden vorm te geven met behulp van zowel benoemde notaties als door de gebruiker gedefinieerde notaties. Voor het datumscheidingsteken (/), het tijdscheidingsteken (:) en de letterlijke tekennotatie voor AM/PM is de feitelijke opgemaakte uitvoer die door uw systeem wordt weergegeven, afhankelijk van de lokale instellingen waarop de programmacode is ingesteld. Wanneer tijden en datums worden weergegeven in de ontwikkelomgeving, worden de korte tijd- en datumnotaties van de lokale code gebruikt. Bij weergave door middel van programmacode die wordt uitgevoerd, worden de korte tijd- en datumnotaties van het lokale systeem gebruikt. Deze kunnen verschillen van de lokale code. In dit voorbeeld wordt uitgegaan van Nederlands (standaard).

MyTime en MyDate worden in de ontwikkelomgeving weergegeven met behulp van huidige korte tijd- en datuminstellingen van het systeem.

Dim MyTime, MyDate, MyStr

MyTime = #17:04:23#

MyDate = #27 januari 1993#

' Geeft de huidige systeemtijd in de door het systeem gedefinieerde lange tijdnotatie.

MyStr = Format(Time, "Lange tijdnotatie")

' Geeft de huidige systeemdatum in de door het systeem gedefinieerde lange datumnotatie.

MyStr = Format(Date, "Lange datumnotatie")

MyStr = Format(MyTime, "u:m:s")	' Geeft "17:4:23".

MyStr = Format(MyTime, "hh:mm:ss")	' Geeft "05:04:23".

MyStr = Format(MyDate, "dddd, d mmm jjjj")	' Geeft "woensdag

' 27 jan 1993".

' Als notatie niet wordt opgegeven, wordt een tekenreeks teruggegeven.

MyStr = Format(23)	' Geeft "23".

' Door gebruiker gedefinieerde notaties.

MyStr = Format(5459.4, "##.##0,00")	' Geeft "5.459,40".

MyStr = Format(334.9, "###0,00")	' Geeft "334,90".

MyStr = Format(5, "0,00%")	' Geeft "500,00%".

MyStr = Format("HALLO", "<")	' Geeft "hallo".

MyStr = Format("Dat was het", ">")	' Geeft "DAT WAS HET".


Voorbeeld van de functie Hex

Dit voorbeeld maakt gebruik van de functie Hex om de hexadecimale waarde van een getal te geven.

Dim MyHex

MyHex = Hex(5)	' Geeft 5.

MyHex = Hex(10)	' Geeft A.

MyHex = Hex(459)	' Geeft 1CB.


Voorbeeld van de functie InStr

Dit voorbeeld maakt gebruik van de functie InStr om de positie waarop een tekenreeks de eerste keer in een andere tekenreeks voorkomt, als resultaat te geven.

Dim SearchString, SearchChar, MyPos

SearchString ="XXpXXpXXPXXP"	' Tekenreeks waarin wordt gezocht.

SearchChar = "P"	' Zoekt naar "P".

' Een tekstvergelijking die op positie 4 begint. Het resultaat is 6.

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

' Een binaire vergelijking die op positie 1 begint. Het resultaat is 9.

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

' Vergelijking is standaard binair (laatste argument is weggelaten).

MyPos = Instr(SearchString, SearchChar)	' Geeft 9.

MyPos = Instr(1, SearchString, "W")	' Geeft 0.


Voorbeeld van de functie LCase

Dit voorbeeld maakt gebruik van de functie LCase om van de tekenreeks een versie met kleine letters als resultaat te geven.

Dim UpperCase, LowerCase

Uppercase = "Hallo Allemaal 1234"	' Om te zetten tekenreeks.

Lowercase = Lcase(UpperCase)	' Geeft "hallo allemaal 1234".


Voorbeeld van de functie Left

Dit voorbeeld maakt gebruik van de functie Left om een opgegeven aantal tekens vanaf de linkerkant van een tekenreeks te geven.

Dim AnyString, MyStr

AnyString = "Hallo allemaal"	' Definieert tekenreeks.

MyStr = Left(AnyString, 1)	' Geeft "H".

MyStr = Left(AnyString, 7)	' Geeft "Hallo a".

MyStr = Left(AnyString, 20)	' Geeft "Hallo allemaal".


Voorbeeld van de functie Len

Het eerste voorbeeld maakt gebruik van de functie Len om het aantal tekens in een tekenreeks of het aantal bytes dat nodig is om een variabele op te slaan, als resultaat te geven. Het blok Type...End Type dat de CustomerRecord definieert, moet worden voorafgegaan door het sleutelwoord Private als het in een klassenmodule verschijnt. In een standaardmodule kan een instructie Type Public zijn.

Type CustomerRecord	' Definieert door gebruiker gedefinieerd type.

ID As Integer	' Plaatst deze definitie in een

Name As String * 10	' standaardmodule.

Address As String * 30

End Type

Dim Customer As CustomerRecord	' Declareert variabelen.

Dim MyInt As Integer, MyCur As Currency

Dim MyString, MyLen

MyString = "Hallo allemaal"	' Initialiseert variabelen.

MyLen = Len(MyInt)	' Geeft 2.

MyLen = Len(Customer)	' Geeft 42.

MyLen = Len(MyString)	' Geeft 11.

MyLen = Len(MyCur)	' Geeft 8.

Het tweede voorbeeld gebruikt de functie LenB en een door de gebruiker gedefinieerde functie (LenMbcs) om het aantal bytetekens in een tekenreeks te geven als de tekenreeks met ANSI is weergegeven.

Function LenMbcs (ByVal str as String)

LenMbcs = LenB(StrConv(str, vbFromUnicode))

End Function

Dim MyString, MyLen

MyString = "ABc"

' Waarbij "A" en "B" DBCS zijn en "c" is SBCS.

MyLen = Len(MyString)

' Geeft 3 - 3 tekens in de tekenreeks.

MyLen = LenB(MyString)

' Geeft 6 - 6 bytes gebruikt voor Unicode.

MyLen = LenMbcs(MyString)

' Geeft 5 - 5 bytes gebruikt voor ANSI.


Voorbeeld van de functie LSet, instructie

Dit voorbeeld maakt gebruik van de instructie LSet om een tekenreeks in een tekenreeksvariabele links uit te lijnen. LSet kan ook worden gebruikt om een variabele van het ene door de gebruiker gedefinieerde type naar een andere variabele van een andere, maar compatibele, door de gebruiker gedefinieerd type te kopiëren. Deze werkwijze wordt echter afgeraden omdat door de verschillende implementaties van gegevensstructuren tussen platformen niet kan worden gegarandeerd dat het gebruik van LSet overdraagbaar is.

Dim MyString

MyString = "0123456789"	' Initialiseert tekenreeks.

Lset MyString = "<-Links"	' MyString bevat "<-Links    ".


Voorbeeld van de functies LTrim, RTrim en Trim

Dit voorbeeld maakt gebruik van de functie LTrim voor het weghalen van voorloopspaties en RTrim voor het weghalen van volgspaties uit een tekenreeksvariabele. De functie Trim alleen wordt gebruikt om beide spatiesoorten te verwijderen.

Dim MyString, TrimString

MyString = "  <-Trim->  "	' Initialiseert tekenreeks.

TrimString = LTrim(MyString)	' TrimString = "<-Trim->".

TrimString = RTrim(MyString)	' TrimString = "  <-Trim->".

TrimString = LTrim(RTrim(MyString))	' TrimString = "<-Trim->".

' Met de functie Trim alleen krijgt u hetzelfde resultaat.

TrimString = Trim(MyString)	' TrimString = "<-Trim->".


Voorbeeld van de functie Mid

Het eerste voorbeeld maakt gebruik van de functie Mid om een opgegeven aantal tekens uit een tekenreeks als resultaat te geven.

Dim MyString, FirstWord, LastWord, MidWords

MyString = "Demonstratie van functie Mid"	' Maakt tekenreeks.

FirstWord = Mid(MyString, 1, 12)	' Geeft "Demonstratie".

LastWord = Mid(MyString, 25, 3)	' Geeft "Mid".

MidWords = Mid(MyString, 14, 11)	' Geeft "van functie".

Het tweede voorbeeld gebruikt de functie MidB en een door de gebruiker gedefinieerde functie (MidMbcs) om eveneens tekens uit een tekenreeks te geven. Het verschil hier is dat de invoerreeks ANSI is en de lengte in bytes is opgegeven.

Function MidMbcs(ByVal str as String, start, length)

MidMbcs = StrConv(MidB(StrConv(str, vbFromUnicode), start, length), vbUnicode)

End Function

Dim MyString

MyString = "AbCdEfG"

' Waarbij "A", "C", "E" en "G" zijn DBCS en "b", "d"

' en "f" zijn SBCS.

MyNewString = Mid(MyString, 3, 4)

' Geeft ""CdEf"

MyNewString = MidB(MyString, 3, 4)

' Geeft ""bC"

MyNewString = MidMbcs(MyString, 3, 4)

' Geeft "bCd"


Voorbeeld van de instructie Mid

Dit voorbeeld maakt gebruik van de instructie Mid om een opgegeven aantal tekens in een tekenreeksvariabele door tekens uit een andere tekenreeks te vervangen.

Dim MyString

MyString = "Een aap sprong"	' Initialiseert tekenreeks.

Mid(MyString, 5, 3) = "kat"	' MyString = "Een kat sprong".

Mid(MyString, 5) = "koe"	' MyString = "Een koe sprong".

Mid(MyString, 5) = "koe springt over"	' MyString = "Een koe spring".

Mid(MyString, 5, 3) = "eend"	' MyString = "Een een spring".


Voorbeeld van de functie Oct

Dit voorbeeld maakt gebruik van de functie Oct om de octale waarde van een getal te geven.

Dim MyOct

MyOct = Oct(4) 	' Geeft 4.

MyOct = Oct(8)	' Geeft 10.

MyOct = Oct(459)	' Geeft 713.


Voorbeeld van de functie Right

Dit voorbeeld maakt gebruik van de functie Right om een opgegeven aantal tekens vanaf de rechterkant van een tekenreeks als resultaat te geven.

Dim AnyString, MyStr

AnyString = "Hallo allemaal"	' Definieert tekenreeks.

MyStr = Right(AnyString, 1)	' Geeft "l".

MyStr = Right(AnyString, 6)	' Geeft " lemaal".

MyStr = Right(AnyString, 20)	' Geeft "Hallo allemaal".


Voorbeeld van de instructie RSet

Dit voorbeeld maakt gebruik van de instructie RSet om een tekenreeks binnen een tekenreeksvariabele rechts uit te lijnen.

Dim MyString

MyString = "0123456789"	' Initialiseert tekenreeks.

Rset MyString = "Rechts->"	' MyString bevat "   Rechts->".


Voorbeeld van de functie Space

Dit voorbeeld maakt gebruik van de functie Space om een tekenreeks als resultaat te geven die bestaat uit het opgegeven aantal spaties..

Dim MyString

' Geeft een tekenreeks met 10 spaties.

MyString = Space(10)

' Plaatst 10 spaties tussen twee tekenreeksen.

MyString = "Hallo" & Space(10) & "allemaal"


Voorbeeld van de functie Str

Dit voorbeeld maakt gebruik van de functie Str om als resultaat een tekenreeks te geven die een getal vertegenwoordigt. Wanneer een getal wordt geconverteerd naar een tekenreeks, wordt er altijd een voorloopspatie gereserveerd voor het plus- of minteken.

Dim MyString

MyString = Str(459)	' Geeft " 459".

MyString = Str(-459,65)	' Geeft " 459,65".

MyString = Str(459,001)	' Geeft " 459,001".


Voorbeeld van de functie StrComp

Dit voorbeeld maakt gebruik van de functie StrComp om het resultaat van een tekenreeksvergelijking te geven. Als het derde argument 1 is, wordt een tekstvergelijking uitgevoerd; als het derde argument 0 is of ontbreekt, wordt een binaire vergelijking uitgevoerd.

Dim MyStr1, MyStr2, MyComp

MyStr1 = "ABCD": MyStr2 = "abcd"	' Definieert variabelen.

MyComp = StrComp(MyStr1, MyStr2, 1)	' Geeft 0.

MyComp = StrComp(MyStr1, MyStr2, 0)	' Geeft -1.

MyComp = StrComp(MyStr2, MyStr1)	' Geeft 1.


Voorbeeld van de functie String

Dit voorbeeld maakt gebruik van de functie String om herhalende tekenreeksen met de opgegeven lengte als resultaat te geven.

Dim MyString

MyString = String(5, "*")	' Geeft "*****".

MyString = String(5, 42)	' Geeft "*****".

MyString = String(10, "ABC")	' Geeft "AAAAAAAAAA".


Voorbeeld van de functie UCase

Dit voorbeeld maakt gebruik van de functie UCase om van de tekenreeks een versie met hoofdletters als resultaat te geven.

Dim LowerCase, UpperCase

LowerCase = "Hallo allemaal 1234"	' Om te zetten tekenreeks.

UpperCase = UCase(LowerCase)	' Geeft "HALLO ALLEMAAL 1234".


Voorbeeld van de functie StrConv

Dit voorbeeld gebruikt de functie StrConv om een tekenreeks in Unicode om te zetten in een ANSI-tekenreeks.

Dim i As Long

Dim x() As Byte

x = StrConv("ABCDEFG", vbFromUnicode)	' Converteert tekenreeks.

For i = 0 To UBound(x)

Debug.Print x(i)

Next


Chr, functie

Geeft als resultaat een String-waarde met het teken dat hoort bij de opgegeven tekencode.

Syntaxis

Chr(tekencode)

Het vereiste argument tekencode is een Long-waarde waarmee een teken wordt aangegeven.

Notities

De getallen 0 t/m 31 komen overeen met de standaard ASCII-codes die niet kunnen worden afgedrukt. Chr(10) geeft bijvoorbeeld het regelinvoerteken. Het normale bereik voor tekencode is 0 t/m 255. Op DBCS-systemen is het feitelijke bereik voor tekencode echter -32768 t/m 65535.

Opmerking   Voor bytegegevens in een String-waarde is de functie ChrB beschikbaar. In plaats van een teken, dat uit een of twee bytes kan bestaan, geeft ChrB altijd een afzonderlijke byte als resultaat. De functie ChrW geeft als resultaat een String-waarde met het Unicode-teken, behalve in het geval van platformen die Unicode niet ondersteunen; in dit geval is het gedrag identiek aan de functie Chr.

Opmerking   Visual Basic voor de Macintosh ondersteunt geen Unicode-tekenreeksen. Daarom kan de functie ChrW(n) niet alle Unicode-tekens voor n waarden in het bereik van 128 tot 65.535 teruggeven, zoals wel mogelijk is in de Windows-omgeving. In plaats daarvan probeert de functie ChrW(n) te gissen naar Unicode-waarden die n groter zijn dan 127. Daarom is het beter de functie ChrW niet in de Macintosh-omgeving te gebruiken.


Format, functie

Geeft als resultaat een Variant (String) met een expressie in de notatie die is opgegeven in een notatie-expressie.

Syntaxis

Format(expressie[, notatie[, eerstedagvanweek[, eersteweekvanjaar]]])

De syntaxis van de functie Format bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
expressie	Vereist. Elke geldige expressie.
notatie	Optioneel. Een geldige benoemde of door de gebruiker gedefinieerde notatie-expressie.
eerstedagvanweek	Optioneel. Een constante die de eerste dag van de week aangeeft.
eersteweekvanjaar	Optioneel. Een constante die de eerste week van het jaar aangeeft.
Instellingen

Voor het argument eerstedagvanweek kunt u de volgende instellingen opgeven:

Constante	Waarde	Beschrijving
vbUseSystem	0	De NLS API-instelling.
VbSunday	1	zondag (standaardinstelling)
vbMonday	2	maandag
vbTuesday	3	dinsdag
vbWednesday	4	woensdag
vbThursday	5	donderdag
vbFriday	6	vrijdag
vbSaturday	7	zaterdag
Voor het argument eersteweekvanjaar kunt u de volgende instellingen opgeven:

Constante	Waarde	Beschrijving
vbUseSystem	0	De NLS API-instelling.
vbFirstJan1	1	De week waarin 1 januari valt (standaardinstelling).
vbFirstFourDays	2	De eerste week waarin ten minste vier dagen in het nieuwe jaar vallen.
vbFirstFullWeek	3	De eerste volledige week in het nieuwe jaar.
Notities

Voor de notatie van	Doet u het volgende:
Getallen	Gebruik vooraf gedefinieerde benoemde numerieke notaties of maak door de gebruiker gedefinieerde numerieke notaties.
Datums en tijden	Gebruik vooraf gedefinieerde benoemde datum-/tijdnotaties of maak door de gebruiker gedefinieerde datum-/tijdnotaties.
Datum- en tijdserienummers	Gebruik datum- en tijdnotaties of numerieke notaties.
Tekenreeksen	Maak uw eigen door de gebruiker gedefinieerde tekenreeksopmaak.
Als u de functie uitvoert op een getal zonder een notatie op te geven, heeft Format dezelfde werking als de functie Str, maar dan internationaal geaard. Een verschil is echter dat positieve getallen die met de functie Format zijn opgemaakt als tekenreeksen, geen voorloopspatie hebben om een plus- of minteken weer te geven, terwijl getallen die zijn geconverteerd met Str die voorloopspatie wel behouden.

Als u een niet gelokaliseerde numerieke tekenreeks opmaakt, moet u een door de gebruiker gedefinieerde notatie gebruiken om ervoor te zorgen dat de waarde er uitziet zoals u dat wilt.

Opmerking   Als de instelling van de eigenschap Calendar Gregoriaans is en format de datumnotatie opgeeft, moet de gegeven expressie Gregoriaans zijn. Als de instelling van de Visual Basic-eigenschap Calendar Hijri is, moet de gegeven expressie Hijri zijn.

Als het een Gregoriaanse kalender betreft, verandert de betekenis van de symbolen in de format-expressie niet. Als het een Hijri-kalender betreft, hebben alle datumnotatiesymbolen (bijvoorbeeld dddd, mmmm, yyyy) dezelfde betekenis, maar hebben ze betrekking op de Hijri-kalender. Notatiesymbolen blijven in het Engels, symbolen die resulteren in tekstweergave (bijvoorbeeld AM en PM) geven de tekenreeks (Engels of Arabisch) weer die bij dat symbool hoort. Het bereik van bepaalde symbolen verandert bij een Hijri-kalender.

Symbool	Bereik
d	1-30
dd	1-30
ww	1-51
mmm	Toont volledige maandnamen (maandnamen in Hijri hebben geen afkorting).
y	1-355
yyyy	100-9666


Benoemde numerieke notaties, functie Format

De volgende tabel geeft een beschrijving van de vooraf gedefinieerde numerieke notaties:

Notatienaam	Beschrijving
General Number	Geeft een getal weer zonder scheidingstekens voor duizendtallen.
Currency	Geeft een getal weer met scheidingsteken voor duizendtallen (indien van toepassing) en geeft rechts van het decimale scheidingsteken twee cijfers weer. De uitvoer is gebaseerd op de lokale instellingen van het systeem.
Fixed	Geeft ten minste één cijfer links en twee cijfers rechts van het decimale scheidingsteken weer.
Standard	Geeft een getal weer met scheidingsteken voor duizendtallen, met ten minste één cijfer links van het decimale scheidingsteken en twee cijfers rechts van het decimale scheidingsteken.
Percent	Geeft een getal weer nadat het is vermenigvuldigd met 100 en het procentteken (%) rechts van het getal is toegevoegd. Geeft altijd twee cijfers rechts van het decimale scheidingsteken weer.
Scientific	Gebruikt de standaard wetenschappelijke notatie.
Yes/No	Geeft No weer als het getal 0 is en geeft in andere gevallen Yes weer.
True/False	Geeft False weer als het getal 0 is en geeft in andere gevallen True weer.
On/Off	Geeft Off weer als het getal 0 is en geeft in andere gevallen On weer.


Door de gebruiker gedefinieerde numerieke notaties, functie Format

De volgende tabel geeft een overzicht van de tekens waarmee u door de gebruiker gedefinieerde numerieke notaties kunt maken:

Teken	Beschrijving
Geen	Geeft het getal weer zonder opmaak.
(0)	Tijdelijke aanduiding voor een cijfer. Geeft een cijfer of een nul weer. Als de expressie een cijfer bevat op de positie waarop in de notatietekenreeks een 0 staat, wordt dit cijfer weergegeven. Geeft in de andere gevallen een 0 weer op deze positie. Als het getal minder cijfers bevat dan er nullen zijn in de notatie-expressie (aan beide kanten van het decimale scheidingsteken), worden voorloop- of volgnullen weergegeven. Wanneer het getal rechts van het decimale scheidingsteken meer cijfers bevat dan er rechts van het decimale scheidingsteken nullen staan in de notatie-expressie, wordt het getal afgerond op zoveel decimalen als er nullen staan. Wanneer het getal links van het decimale scheidingsteken meer cijfers bevat dan er links van het decimale scheidingsteken nullen staan in de notatie-expressie, worden de extra cijfers ongewijzigd weergegeven.
(#)	Tijdelijke aanduiding voor een cijfer. Geeft een cijfer weer of geeft niets weer. Wanneer de expressie een cijfer bevat op de positie waarop het teken # in de notatietekenreeks verschijnt, wordt dit cijfer weergegeven. In de andere gevallen wordt niets weergegeven op deze positie. Dit symbool werkt op dezelfde manier als de tijdelijke aanduiding 0 voor een cijfer, alleen worden geen voorloop- of volgnullen weergegeven wanneer het getal evenveel of minder cijfers bevat dan in de notatie-expressie hekjes # staan aan beide kanten van het decimale scheidingsteken.
(.)	Tijdelijke aanduiding voor decimalen. In sommige lokale instellingen wordt een komma gebruikt als decimaal scheidingsteken. Met de tijdelijke aanduiding voor decimalen kunt u aangeven hoeveel cijfers u links en rechts van het decimale scheidingsteken wilt weergeven. Wanneer in de notatie-expressie links van het decimale scheidingsteken alleen hekjes (#) staan, beginnen getallen die kleiner zijn dan 1 met het decimale scheidingsteken. Als u wilt dat bij breuken altijd een voorloopnul wordt weergegeven, geeft u een 0 op als de eerste cijferaanduiding links van het decimale scheidingsteken. Welk teken in de opgemaakte uitvoer als decimaal scheidingsteken wordt gebruikt, hangt af van de getalnotatie die door uw systeem wordt gebruikt.
(%)	Tijdelijke aanduiding voor een percentage. De expressie wordt met 100 vermenigvuldigd. Het procentteken (%) wordt ingevoegd op dezelfde positie als in de notatietekenreeks.
(,)	Scheidingsteken voor duizendtallen. In sommige lokale instellingen wordt een punt gebruikt als scheidingsteken voor duizendtallen. Het scheidingsteken voor duizendtallen scheidt de duizendtallen van de honderdtallen in getallen met vier of meer posities links van het decimale scheidingsteken. Als u het scheidingsteken voor duizendtallen op de standaardmanier wilt gebruiken, plaatst u dit scheidingsteken in de notatie tussen twee tijdelijke aanduidingen voor cijfers (0 of #). Twee scheidingstekens voor duizendtallen naast elkaar of een scheidingsteken voor duizendtallen direct links van het decimale scheidingsteken (ongeacht of een decimaal is opgegeven) betekenen dat het getal op schaal moet worden gebracht door het te delen door 1000 en zonodig, af te ronden. Met de notatietekenreeks "##0,," geeft u bijvoorbeeld 100 miljoen weer als 100. Getallen die kleiner zijn dan 1 miljoen worden in dat geval weergegeven als 0. Wanneer twee aangrenzende scheidingstekens voor duizendtallen niet direct links van het decimale scheidingsteken staan, geven deze alleen aan dat een scheidingsteken voor duizendtallen wordt gebruikt in de notatie. Welk teken in de opgemaakte uitvoer als scheidingsteken voor duizendtallen wordt gebruikt, hangt af van de getalnotatie die door uw systeem wordt gebruikt.
(:)	Tijdscheidingsteken. In sommige lokale instellingen wordt wellicht een ander tijdscheidingsteken gebruikt. In de notatie van tijdwaarden worden uren, minuten en seconden van elkaar gescheiden met het tijdscheidingsteken. Welk teken in de opgemaakte uitvoer als tijdscheidingsteken wordt gebruikt, hangt af van de instellingen op uw systeem.
(/)	Datumscheidingsteken. In sommige lokale instellingen wordt wellicht een ander datumscheidingsteken gebruikt. In de notatie van datumwaarden worden de dag, de maand en het jaar van elkaar gescheiden met het datumscheidingsteken. Welk teken in de opgemaakte uitvoer als datumscheidingsteken wordt gebruikt, hangt af van de instellingen op uw systeem.
(E- E+ e- e+)	Wetenschappelijke notatie. Als in de notatie-expressie rechts van E-, E+, e- of e+ ten minste één tijdelijke aanduiding voor een cijfer (0 of #) staat, wordt het getal weergegeven in de wetenschappelijke notatie en wordt E of e ingevoegd tussen het getal en de exponent. Het aantal tijdelijke aanduidingen voor cijfers aan de rechterkant bepaalt het aantal cijfers in de exponent. Met E- of e- plaatst u een minteken voor negatieve exponenten. Met E+ of e+ plaatst u een minteken voor negatieve exponenten en een plusteken voor positieve exponenten. - + $ ( ) spatie
- + $ ( )	Een letterlijk teken weergeven. Als u een letterlijk teken wilt afbeelden dat niet in de lijst staat, plaatst u een backslash (\) voor het teken of plaatst u het teken tussen dubbele aanhalingstekens (" ").
(\)	Het volgende teken in de notatietekenreeks weergeven. Veel tekens in de notatie-expressie hebben een speciale betekenis. Als u deze tekens wilt weergeven, moet u vóór het teken een (\) opgeven. De backslash zelf wordt niet weergegeven. Als u een backslash opgeeft, heeft dit hetzelfde effect als wanneer u het volgende teken tussen dubbele aanhalingstekens zet. Wanneer u een backslash wilt weergeven, dient u twee backslashes (\\) op te geven. Voorbeelden van tekens die niet kunnen worden weergegeven als letterlijke tekens zijn de tekens voor datum- en tijdnotatie (a, c, d, h, m, n, p, q, s, t, w, y, / en :), de tekens voor numerieke notatie (#, 0, %, E, e, komma en punt) en de opmaaktekens voor tekenreeksen (@, &, <, > en !).
("ABC")	De tekenreeks tussen de dubbele aanhalingstekens (" ") weergeven. Als u een tekenreeks in format van de programma-instructie wilt opnemen, gebruikt u Chr(34) om de tekst in te sluiten (34 is de tekencode voor een dubbel aanhalingsteken (")).


Verschillende notaties voor verschillende numerieke waarden, functie Format

Een door de gebruiker gedefinieerde notatie-expressie voor getallen kan uit een tot vier secties bestaan die van elkaar zijn gescheiden met een puntkomma. Als het argument notatie een van de benoemde numerieke notaties bevat, mag de expressie slechts uit één sectie bestaan.

U gebruikt	Resultaat
Eén sectie	De notatie-expressie geldt voor alle waarden.
Twee secties	De eerste sectie geldt voor positieve waarden en nullen, de tweede sectie voor negatieve waarden.
Drie secties	De eerste sectie geldt voor positieve waarden, de tweede voor negatieve waarden en de derde voor nullen.
Vier secties	De eerste sectie geldt voor positieve waarden, de tweede voor negatieve waarden, de derde voor nullen en de vierde voor Null-waarden.
Het volgende voorbeeld bestaat uit twee secties: de eerste bepaalt de notatie van positieve waarden en de tweede bepaalt de notatie van negatieve waarden.

"$#,##0;($#,##0)"

Als u puntkomma's zonder tekens ertussen in de expressie opneemt, wordt de ontbrekende sectie weergegeven in de notatie voor positieve waarden. Bij de volgende notatie worden bijvoorbeeld positieve en negatieve waarden weergegeven in de notatie van de eerste sectie en wordt "Nul" weergegeven als de waarde nul is.

"fl #.##0;;\N\u\l"


Voorbeeld van door de gebruiker gedefinieerde numerieke notatie-expressies

Hieronder ziet u een aantal voorbeelden van notatie-expressies voor getallen (in alle voorbeelden wordt ervan uitgegaan dat de landinstelling van uw systeem Nederlands is). In de eerste kolom staan de notatietekenreeksen. In de overige kolommen ziet u hoe de uitvoer er uit zou zien als de opgemaakte gegevens de waarden uit de kolomkoppen hebben.

Format (format)	Positief 5	Negatief 5	Decimaal ,5	Null
Tekenreeks, zonder gegevens ("")	5	-5	0.5
0	5	-5	1
0.00	5.00	-5.00	0.50
#,##0	5	-5	1
#.##0,00;;;Nul	5.00	-5.00	0.50	Nul
$#,##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


Benoemde datum-/tijdnotaties, functie Format

De volgende tabel bevat de namen van de vooraf gedefinieerde datum- en tijdnotaties:

Notatie	Beschrijving
General Date	Geeft een datum en/of tijd weer. Voor reële getallen wordt een datum en tijd weergegeven (bijvoorbeeld 4-3-93 17:34).Als er geen breukgedeelte is, wordt alleen een datum weergegeven (bijvoorbeeld 4-3-93). Als er geen getal voor de komma is, wordt alleen de tijd weergegeven (bijvoorbeeld 17:34). De weergave van de datum hangt af van de instellingen van uw systeem.
Long Date	Geeft een datum weer in de lange datumnotatie van uw systeem.
Medium Date	Geeft een datum weer in de korte datumnotatie. De notatie hangt af van de taalversie van de brontoepassing.
Short Date	Geeft een datum weer in de korte datumnotatie van uw systeem.
Long Time	Geeft een tijd weer in de lange tijdnotatie van uw systeem. Uren, minuten en seconden worden weergegeven.
Medium Time	Geeft een tijd weer in de 12-uurs klok. Uren, minuten en de aanduiding AM/PM worden weergegeven.
Short Time	Geeft een tijd weer in de 24-uurs klok (bijvoorbeeld 17:45).


Door de gebruiker gedefinieerde datum-/tijdnotaties, functie Format

In de volgende tabel ziet u de tekens die u kunt gebruiken bij het maken van door de gebruiker gedefinieerde datum-/tijdnotaties:

Teken	Beschrijving
(:)	Tijdscheidingsteken. In sommige lokale instellingen wordt wellicht een ander tijdscheidingsteken gebruikt. In de notatie van tijdwaarden worden uren, minuten en seconden van elkaar gescheiden met het tijdscheidingsteken. Welk teken in de opgemaakte uitvoer als tijdscheidingsteken wordt gebruikt, hangt af van de instellingen op uw systeem.
(/)	Datumscheidingsteken. In sommige lokale instellingen wordt wellicht een ander datumscheidingsteken gebruikt. In de notatie van datumwaarden worden de dag, de maand en het jaar van elkaar gescheiden met het datumscheidingsteken. Welk teken in de opgemaakte uitvoer als datumscheidingsteken wordt gebruikt, hangt af van de instellingen op uw systeem.
c	Geeft de datum weer als ddddd en de tijd als ttttt, in die volgorde. Geeft alleen de datum weer als het datumserienummer geen breukgedeelte bevat. Geeft alleen de tijd weer als het nummer geen geheel gedeelte bevat.
d	Geeft de dag weer als een getal zonder voorloopnul (1 – 31).
dd	Geeft de dag weer als een getal met voorloopnul (01 – 31).
ddd	Geeft de dag afgekort weer (zo – za).
dddd	Geeft de dag voluit weer (zondag – zaterdag).
ddddd	Geeft de datum volledig weer (inclusief dag, maand en jaar) in de notatie die op uw systeem is ingesteld als de korte datumnotatie. De korte datumnotatie is standaard m/d/jj
dddddd	Geeft een datumserienummer weer als een volledige datum (inclusief dag, maand en jaar) in de notatie die op uw systeem is ingesteld als de lange datumnotatie. De lange datumnotatie is standaard dddd mmmm yyyy.
aaaa	Hetzelfde als dddd, maar dit is de gelokaliseerde versie van de tekenreeks.
w	Geeft de dag van de week weer als een getal (1 voor zondag t/m 7 voor zaterdag).
ww	Geeft het weeknummer weer (1 – 54).
m	Geeft de maand weer als een getal zonder voorloopnul (1 – 12). Wanneer de m direct volgt op een h of hh, is het weergegeven getal een minuut in plaats van een maand.
mm	Geeft de maand weer als een getal met een voorloopnul  (01 – 12). Wanneer de m direct volgt op een h of hh, is het weergegeven getal een minuut in plaats van een maand.
mmm	Geeft de maand afgekort weer (jan – dec).
mmmm	Geeft de maand voluit weer (januari – december).
oooo	Hetzelfde als mmmm, maar dit is de gelokaliseerde versie van de tekenreeks.
q	Geeft het kwartaal weer als een getal (1 – 4).
y	Geeft de dag van het jaar weer als een getal (1 – 366).
yy	Geeft het jaar weer als een getal van twee cijfers (00 – 99).
yyyy	Geeft het jaar weer als een getal van vier cijfers (100 – 9999).
h	Geeft het uur weer als een getal zonder voorloopnullen (0 – 23).
Hh	Geeft het uur weer als een getal met voorloopnullen (00 – 23).
N	Geeft de minuut weer als een getal zonder voorloopnullen  (0 – 59).
Nn	Geeft de minuut weer als een getal met voorloopnullen  (00 – 59).
S	Geeft de seconde weer als een getal zonder voorloopnullen  (0 – 59).
Ss	Geeft de seconde weer als een getal met voorloopnullen  (00 – 59).
t t t t t	Geeft de tijd volledig weer (uur, minuut en seconde) met het tijdscheidingsteken dat op uw systeem is ingesteld voor de tijdnotatie. Wanneer de optie “Voorloopnul” is geselecteerd en het vroeger is dan 10:00 uur, wordt een voorloopnul weergegeven. De standaardtijdnotatie is u:mm:ss.
AM/PM	Gebruikt de 12-uurs klok en geeft bij alle tijden vóór 12 uur ‘s middags AM in hoofdletters weer. Geeft bij alle tijden tussen 12 uur ‘s middags en 11:59 ‘s nachts PM in hoofdletters weer.
am/pm	Gebruikt de 12-uurs klok en geeft bij alle tijden vóór 12 uur ‘s middags am in kleine letters weer. Geeft bij alle tijden tussen 12 uur ‘s middags en 11:59 ‘s nachts pm in kleine letters weer.
A/P	Gebruikt de 12-uurs klok en geeft bij alle tijden vóór 12 uur ‘s middags de hoofdletter A weer. Geeft bij alle tijden tussen 12 uur ‘s middags en 11:59 ‘s nachts de hoofdletter P weer.
a/p	Gebruikt de 12-uurs klok en geeft bij alle tijden vóór 12 uur ‘s middags de kleine letter a weer. Geeft bij alle tijden tussen 12 uur ‘s middags en 11:59 ‘s nachts de kleine letter p weer.
AMPM	Gebruikt de 12-uurs klok en geeft bij alle tijden vóór 12 uur ‘s middags de letterlijke tekenreeks voor AM weer zoals deze in uw systeem is opgegeven. Geeft bij alle tijden tussen 12 uur ‘s middags en 11:59 ‘s nachts de letterlijke tekenreeks voor PM weer zoals deze in uw systeem is opgegeven. AMPM kan zowel in hoofd- als in kleine letters worden opgegeven. Hoe de tekenreeks wordt weergegeven hangt af van de instelling van uw systeem. De standaardnotatie is AM/PM.


Voorbeeld van door de gebruiker gedefinieerde datum-/tijdnotaties

De volgende tabel bevat een aantal voorbeelden van door de gebruiker gedefinieerde datum-/tijdnotaties voor 7 december 1958:

Notatie	Weergave
m/d/yy	12/7/58
d-mmm	7-dec
d-mmmm-yy	7-december-58
d mmmm	7 december
mmmm yy	december 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
d-m-yy h:mm	12/7/58 20:50


Door de gebruiker gedefinieerde tekenreeksnotaties, functie Format

U kunt de volgende tekens gebruiken bij het maken van een notatie-expressie voor tekenreeksen:

Teken	Beschrijving
@	Tijdelijke aanduiding voor een teken. Geeft een teken of spatie weer. Als in de tekenreeks een teken staat op de positie van @ in de notatietekenreeks, wordt dit teken weergegeven. Als er geen teken staat, wordt een spatie weergegeven op die positie. Tijdelijke aanduidingen worden van rechts naar links ingevuld, tenzij een uitroepteken (!) in de notatietekenreeks voorkomt.
&	Tijdelijke aanduiding voor een teken. Geeft een teken of niets weer. Als in de tekenreeks een teken staat op de positie van & in de notatietekenreeks, wordt dit teken weergegeven. Als er geen teken staat, wordt niets weergegeven op die positie. Tijdelijke aanduidingen worden van rechts naar links ingevuld, tenzij een uitroepteken (!) in de notatietekenreeks voorkomt.
<	Alleen kleine letters. Geeft alle tekens in kleine letters weer.
>	Alleen hoofdletters. Geeft alle tekens in hoofdletters weer.
!	Tijdelijke aanduidingen worden van links naar rechts ingevuld. Standaard wordt van rechts naar links ingevuld.


Verschillende notaties voor verschillende tekenreekswaarden, functie Format

Een notatie-expressie voor tekenreeksen bestaat uit één sectie, of uit twee secties die met een puntkomma (;) van elkaar worden gescheiden.

U gebruikt	Resultaat
Eén sectie	De notatie geldt voor alle tekenreeksgegevens.
Twee secties	De eerste sectie geldt voor tekenreeksgegevens, de tweede voor Null-waarden en tekenreeksen zonder gegevens ("").


Hex, functie

Geeft als resultaat een String-waarde die de hexadecimale waarde van een getal aangeeft.

Syntaxis

Hex(getal)

Het vereiste argument getal kan elke geldige numerieke expressie of tekenreeksexpressie zijn.

Notities

Als getal al geen geheel getal is, wordt het afgerond op het dichtstbijzijnde gehele getal voordat de instructie wordt geëvalueerd.

Als getal is	Geeft Hex als resultaat
Null	Null
Empty	Nul (0)
Elk ander getal	Maximaal acht hexadecimale tekens
U kunt hexadecimale getallen direct weergeven door &H voor getallen in het juiste bereik te plaatsen. &H10 is bijvoorbeeld de hexadecimale notatie voor de decimaal 16.


InStr, functie

Geeft als resultaat een Variant (Long) met de positie waarop een tekenreeks de eerste keer voorkomt in een andere tekenreeks.

Syntaxis

InStr([start, ]tekenreeks1, tekenreeks2[, vergelijking])

De syntaxis van de functie InStr heeft argumenten:

Onderdeel	Beschrijving
begin	Optioneel. Een numerieke expressie waarmee u de beginpositie voor alle zoekbewerkingen opgeeft. Als u niets opgeeft, wordt gezocht vanaf de eerste tekenpositie. Wanneer start de waarde Null heeft, treedt een fout op. Wanneer u vergelijking opgeeft, bent u verplicht een waarde op te geven voor het argument start.
string1	Vereist. De tekenreeksexpressie waarin wordt gezocht.
string2	Vereist. De tekenreeksexpressie waarnaar wordt gezocht.
compare	Optioneel. Een getal dat het type tekenreeksvergelijking aangeeft. Als compare Null is, treedt een fout op. Als u compare weglaat, wordt het type vergelijking bepaald door de instelling van Option Compare. Geef een geldige LocaleID (LCID) op als u bij de vergelijking plaatsgebonden regels wilt toepassen.
Instellingen

De instellingen van het argument compare zijn:

Constante	Waarde	Beschrijving
vbUseCompareOption	-1	Voert een vergelijking uit, gebruik makend van de instelling van de instructie Option Compare.
vbBinaryCompare	0	Voert een binaire vergelijking uit.
vbTextCompare	1	Voert een tekstvergelijking uit.
vbDatabaseCompare	2	Alleen Microsoft Access. Voert een vergelijking uit op basis van de informatie in uw database.
Resultaatwaarden

Als	Geeft InStr als resultaat
string1 de lengte nul heeft	0
string1 Null is	Null
string2 de lengte nul heeft	begin
string2 Null is	Null
string2 niet is gevonden	0
string2 in string1 is gevonden	De positie waarop de overeenkomst is gevonden
start > string2	0
Notities

De functie InStrB wordt gebruikt voor bytegegevens binnen een tekenreeks. In plaats van de tekenpositie van de eerste keer dat een tekenreeks in een andere tekenreeks voorkomt, geeft InStrB de bytepositie als resultaat.


LCase, functie

Geeft als resultaat een String-waarde waarvan de tekens zijn geconverteerd naar kleine letters.

Syntaxis

LCase(tekenreeks)

Het vereiste argument tekenreeks kan elke geldige tekenreeksexpressie zijn. Als tekenreeks de waarde Null heeft, wordt Null als resultaat gegeven.

Notities

Alleen hoofdletters worden geconverteerd naar kleine letters. Alle kleine letters en andere tekens blijven ongewijzigd.


Left, functie

Geeft als resultaat een Variant (String) met het opgegeven aantal tekens vanaf de linkerkant van een tekenreeks.

Syntaxis

Left(string, length)

De functie Left heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
string	Vereist. Een tekenreeksexpressie waarvan de meest linkse tekens als resultaat worden gegeven. Als tekenreeks de waarde Null heeft, wordt Null als resultaat gegeven.
length	Vereist; Variant (Long). Een numerieke expressie die aangeeft hoeveel tekens als resultaat worden gegeven. Als u 0 opgeeft, wordt een tekenreeks zonder gegevens ("") als resultaat gegeven. Als u een getal opgeeft dat groter of gelijk is aan het aantal tekens in string, wordt de hele tekenreeks als resultaat gegeven.
Notities

Gebruik de functie Len om te bepalen hoeveel tekens string bevat.

Opmerking   Gebruik de functie LeftB voor bytegegevens in een tekenreeks. In plaats van het aantal tekens dat als resultaat wordt gegeven, bepaalt length bij deze functie het aantal bytes.


Len, functie

Geeft als resultaat een Long-waarde met het aantal tekens in een tekenreeks of het aantal bytes dat nodig is om een variabele op te slaan.

Syntaxis

Len(tekenreeks | varnaam)

De syntaxis van de functie Len bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
string	Elke geldige tekenreeksexpressie. Als tekenreeks de waarde Null heeft, wordt Null als resultaat gegeven.
varnaam	Elke geldige variabelennaam. Als varnaam de waarde Null heeft, wordt Null als resultaat gegeven. Als varnaam een Variant is, wordt deze door Len op dezelfde manier behandeld als een String en wordt altijd het aantal tekens dat de variabele bevat als resultaat gegeven.
Notities

Eén van de twee mogelijke argumenten moet worden opgegeven. Len geeft de grootte zoals deze naar het bestand wordt geschreven als resultaat bij door de gebruiker gedefinieerde typen.

Opmerking   Gebruik de functie LenB met bytegegevens die in een tekenreeks zijn opgeslagen, zoals in talen met tekensets met dubbele bytes (DBCS). In plaats van het aantal tekens in een tekenreeks, geeft LenB als resultaat het aantal bytes dat nodig is om de tekenreeks weer te geven. LenB geeft bij door de gebruiker gedefinieerde typen de grootte in het geheugen als resultaat, inclusief opvulgegevens tussen de elementen. Zie het volgende voorbeeld in het onderdeel met voorbeelden voor een voorbeeld van programmacode waarin LenB wordt gebruikt.

Opmerking   Wanneer u de functie Len gebruikt met tekenreeksen van variabele lengte in door de gebruiker gedefinieerde gegevenstypen, kan het aantal bytes dat nodig is om de gegevens op te slaan, niet altijd worden vastgesteld.


LSet, instructie

Lijnt een tekenreeks in een tekenreeksvariabele links uit of kopieert een variabele van het ene door de gebruiker gedefinieerde type naar een variabele van een ander door de gebruiker gedefinieerde type.

Syntaxis

LSet tekenreeksvar = tekenreeks

LSet varnaam1 = varnaam2

De syntaxis van de instructie LSet bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
tekenreeksvar	Vereist. De naam van een tekenreeksvariabele.
string	Vereist. Een tekenreeksexpressie die u links wilt uitlijnen in tekenreeksvar.
varnaam1	Vereist. Een variabelennaam van het door de gebruiker gedefinieerde type waarnaar u wilt kopiëren.
varnaam2	Vereist. Een variabelennaam van het door de gebruiker gedefinieerde type van waaruit u wilt kopiëren.
Notities

Als u LSet gebruikt, worden alle overgebleven tekens in tekenreeksvar vervangen door spaties.

Als tekenreeks langer is dan tekenreeksvar, plaatst LSet alleen de meest linkse tekens in tekenreeksvar, totdat de lengte van tekenreeksvar is bereikt.

Waarschuwing   Het gebruik van LSet om een variabele te kopiëren van het ene door de gebruiker gedefinieerde type naar een variabele van een ander door de gebruiker gedefinieerd gegevenstype wordt afgeraden. Het kopiëren van gegevens van het ene gegevenstype naar de ruimte die is gereserveerd voor een ander gegevenstype kan tot onvoorspelbare resultaten leiden.

Wanneer u een variabele van het ene door de gebruiker gedefinieerde type kopieert naar een ander door de gebruiker gedefinieerd gegevenstype, worden de binaire gegevens van de ene variabele gewoon naar de geheugenruimte van de andere variabele verplaatst, zonder rekening te houden met de gegevenstypen die zijn ingesteld voor de elementen hierin.


Ltrim, Rtrim en Trim, functies

Geeft als resultaat een Variant (String) met een kopie van een tekenreeks zonder voorloopspaties (LTrim), zonder volgspaties (RTrim) of zonder voorloop- en volgspaties (Trim).

Syntaxis

LTrim(tekenreeks)

RTrim(tekenreeks)

Trim(tekenreeks)

Het vereiste argument tekenreeks kan elke geldige tekenreeksexpressie zijn. Als tekenreeks de waarde Null heeft, wordt Null als resultaat gegeven.


Mid, functie

Geeft als resultaat een Variant (String) met het opgegeven aantal tekens uit een tekenreeks als resultaat.

Syntaxis

Mid(string, start[, length])

De syntaxis van de functie Mid heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
string	Vereist. Een tekenreeksexpressie waaruit tekens als resultaat worden gegeven. Als tekenreeks de waarde Null heeft, wordt Null als resultaat gegeven.
begin	Vereist; Long. De tekenpositie in string waar de tekenreeks die als resultaat wordt gegeven, begint. Als start groter is dan het aantal tekens in string, geeft Mid een tekenreeks zonder gegevens ("") als resultaat.
length	Optioneel. Variant (Long). Het aantal tekens dat als resultaat wordt gegeven. Als u dit argument weglaat of als de tekst minder tekens bevat (inclusief het teken start) dan length, worden alle tekens vanaf de startpositie tot en met het einde van de tekenreeks weergegeven.
Notities

Gebruik de functie Len om te bepalen hoeveel tekens string bevat.

Opmerking   Gebruik de functie MidB met bytegegevens die in een tekenreeks zijn opgeslagen, zoals in talen met tekensets met dubbele bytes (DBCS). In plaats van het aantal tekens geven de argumenten van deze functie het aantal bytes op. Zie het tweede voorbeeld in het onderdeel met voorbeelden voor een voorbeeld van programmacode waarin MidB wordt gebruikt.


Mid, instructie

Vervangt het opgegeven aantal tekens in een variabele van het type Variant (String) door tekens uit een andere tekenreeks.

Syntaxis

Mid(tekenreeksvar, begin[, lengte]) = tekenreeks

De syntaxis van de instructie Mid bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
tekenreeksvar	Vereist. De naam van de tekenreeksvariabele die u wilt wijzigen.
begin	Vereist. Variant (Long). De tekenpositie in tekenreeksvar van waaraf de tekst wordt vervangen.
length	Optioneel. Variant (Long). Het aantal te vervangen tekens. Als u dit argument weglaat, wordt de hele tekenreeks gebruikt.
string	Vereist. Een tekenreeksexpressie die een gedeelte van tekenreeksvar vervangt
Notities

Het aantal tekens dat wordt vervangen is altijd kleiner dan of gelijk aan het aantal tekens in tekenreeksvar.

Opmerking   Gebruik de instructie MidB voor bytegegevens in een tekenreeks. In de instructie MidB bepaalt begin de bytepositie in tekenreeksvar van waaraf de tekenreeks wordt vervangen en lengte het aantal bytes dat wordt vervangen.


Oct, functie

Geeft als resultaat een Variant (String) die de octale waarde van een getal aanduidt.

Syntaxis

Oct(getal)

Het vereiste argument getal kan elke geldige numerieke expressie of tekenreeksexpressie zijn.

Notities

Als getal al geen geheel getal is, wordt het afgerond op het dichtstbijzijnde gehele getal voordat de instructie wordt geëvalueerd.

Als getal is	Geeft Oct als resultaat
Null	Null
Empty	Nul (0)
Elk ander getal	Maximaal 11 octale tekens
U kunt octale getallen direct weergeven door &O te plaatsen vóór getallen in het juiste bereik. &O10 is bijvoorbeeld de octale notatie voor de decimaal 8.


Right, functie

Geeft als resultaat een Variant (String) met het opgegeven aantal tekens vanaf de rechterkant van een tekenreeks.

Syntaxis

Right(string, length)

De syntaxis van de functie Right heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
string	Vereist. Een tekenreeksexpressie waarvan de meest rechtse tekens als resultaat worden gegeven. Als tekenreeks de waarde Null heeft, wordt Null als resultaat gegeven.
length	Vereist. Variant (Long). Een numerieke expressie die aangeeft hoeveel tekens als resultaat worden gegeven. Als u 0 opgeeft, wordt een tekenreeks zonder gegevens ("") als resultaat gegeven. Als u een getal opgeeft dat groter of gelijk is aan het aantal tekens in string, wordt de hele tekenreeks als resultaat gegeven.
Notities

Gebruik de functie Len om te bepalen hoeveel tekens string bevat.

Opmerking   Gebruik de functie RightB voor bytegegevens in een tekenreeks. In plaats van het aantal tekens dat als resultaat wordt gegeven, bepaalt length bij deze functie het aantal bytes.


RSet, instructie

Lijnt een tekenreeks in een tekenreeksvariabele rechts uit.

Syntaxis

RSet tekenreeksvar = tekenreeks

De syntaxis van de instructie RSet bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
tekenreeksvar	Vereist. De naam van een tekenreeksvariabele.
string	Vereist. Een tekenreeksexpressie die u rechts wilt uitlijnen in tekenreeksvar.
Notities

Als tekenreeksvar langer is dan tekenreeks, worden met RSet alle overgebleven tekens in tekenreeksvar vervangen door spaties, tot aan het begin van de tekenreeksvariabele.

Opmerking   U kunt RSet niet gebruiken met door de gebruiker gedefinieerde typen.


Space, functie

Geeft als resultaat een Variant (String) die bestaat uit het opgegeven aantal spaties.

Syntaxis

Space(getal)

Het vereiste argument getal geeft aan hoeveel spaties u in de tekenreeks wilt opnemen.

Notities

De functie Space is met name handig bij het opmaken van uitvoer en het verwijderen van gegevens uit tekenreeksen met een vaste lengte.


Str, functie

Geeft als resultaat een Variant (String) met een getal.

Syntaxis

Str(getal)

Het vereiste argument getal is een Long-waarde die elke geldige numerieke expressie kan zijn.

Notities

Bij het converteren van getallen naar tekenreeksen wordt altijd een voorloopspatie gereserveerd voor het plus- of minteken van getal. Als getal een positieve waarde is, bevat de tekenreeks die als resultaat wordt gegeven een voorloopspatie, maar wordt het plusteken niet weergegeven.

Gebruik de functie Format om numerieke waarden te converteren waaraan u een datum-, tijd- of valutanotatie wilt geven of een andere, door de gebruiker gedefinieerde notatie. Met de functie Format wordt niet zoals bij de functie Str een voorloopspatie toegevoegd voor het plus- of minteken van getal.

Opmerking   De functie Str herkent alleen de punt (.) als een geldig decimaal scheidingsteken. Als de mogelijkheid bestaat dat andere decimale scheidingstekens worden gebruikt (bijvoorbeeld in internationale toepassingen), dient u CStr te gebruiken om getallen naar tekenreeksen te converteren.


StrComp, functie

Geeft als resultaat een Variant (Integer) die het resultaat van een tekenreeksvergelijking aanduidt.

Syntaxis

StrComp(string1, string2[, compare])

De syntaxis van de functie StrComp heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
String1	Vereist. Elke geldige tekenreeksexpressie.
String2	Vereist. Elke geldige tekenreeksexpressie.
Compare	Optioneel. Een getal dat het type tekenreeksvergelijking aangeeft. Als het argument compare Null is, treedt een fout op. Als u compare weglaat, wordt het type vergelijking bepaald door de instelling van Option Compare.
Instellingen

De instellingen van het argument compare zijn:

Constante	Waarde	Beschrijving
VbUseCompareOption	-1	Voert een vergelijking uit, gebruik makend van de instelling van de instructie Option Compare.
VbBinaryCompare	0	Voert een binaire vergelijking uit.
vbTextCompare	1	Voert een tekstvergelijking uit.
vbDatabaseCompare	2	Alleen Microsoft Access. Voert een vergelijking uit op basis van de informatie in uw database.
Resultaatwaarden

De functie StrComp heeft de volgende resultaatwaarden:

Als	Geeft StrComp als resultaat
string1 kleiner is dan string2	-1
string1 gelijk is aan string2	0
string1 groter is dan string2	1
string1 of string2 Null is	Null


StrConv, functie

Geeft als resultaat een Variant (String) met een opgegeven geconverteerde tekenreeks.

Syntaxis

StrConv(string, conversion, LCID)

De syntaxis van de functie StrConv heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
string	Vereist. De tekenreeksexpressie die u wilt converteren.
conversion	Vereist. Integer. De som van de waarden die het type conversie aanduiden dat u wilt uitvoeren.
LCID	Optioneel. De LocaleId, als deze afwijkt van de LocaleID van het systeem. (De LocaleID van het systeem is de standaardinstelling.)
Instellingen

Het argument conversion heeft de volgende instellingen:

Constante	Waarde	Beschrijving
vbUpperCase	1	Zet de tekenreeks om in hoofdletters.
vbLowerCase	2	Zet de tekenreeks om in kleine letters.
vbProperCase	3	Maakt van de eerste letter van elk woord in de tekenreeks een hoofdletter.
vbWide*	4*	Converteert smalle (enkelvoudige bytes) tekens in de tekenreeks naar brede (dubbele bytes) tekens.
vbNarrow*	8*	Converteert brede (dubbele bytes) tekens in de tekenreeks naar smalle (enkelvoudige bytes) tekens.
vbKatakana**	16**	Converteert smalle Hiragana-tekens in de tekenreeks naar brede Katakana-tekens.
vbHiragana**	32**	Converteert brede Katakana-tekens naar smalle Hiragana-tekens.
vbUnicode	64	Converteert de tekenreeks in Unicode met behulp van de standaardcodepagina van het systeem. (Niet beschikbaar op de Macintosh.)
vbFromUnicode	128	Converteert de tekenreeks vanuit Unicode met behulp van de standaardcodepagina van het systeem. (Niet beschikbaar op de Macintosh.)
*	Alleen van toepassing op Aziatische lokale instellingen.

**	Alleen van toepassing op Japan.

Opmerking   Deze constanten worden geleverd door Visual Basic for Applications. U kunt deze daarom overal in de code opnemen in plaats van de werkelijke waarden. U kunt de meeste constanten combineren (bijvoorbeeld vbUpperCase + vbWide), behalve als deze elkaar uitsluiten (bijvoorbeeld vbUnicode + vbFromUnicode). De constanten vbWide, vbNarrow, vbKatakana en vbHiragana veroorzaken runtimefouten als deze niet in overeenstemming zijn met de lokale instellingen.

U kunt de volgende scheidingstekens voor woorden gebruiken: Null (Chr$(0)), horizontale tab (Chr$(9)), regelinvoer (Chr$(10)), verticale tab (Chr$(11)), papierinvoer (Chr$(12)), regelterugloop (Chr$(13)) en spatie (SBCS) (Chr$(32)). Bij DBCS verschilt de werkelijke waarde voor een spatie per land.

Notities

Wanneer u een Bytematrix in ANSI-notatie naar een tekenreeks converteert, moet u de functie StrConv gebruiken. Wanneer u een dergelijke matrix in Unicode-notatie converteert, gebruikt u een toewijzingsinstructie.


String, functie

Geeft als resultaat een Variant (String) met een repeterende tekenreeks met de opgegeven lengte.

Syntaxis

String(number, character)

De syntaxis van de functie String heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
number	Vereist. Long. De lengte van de tekenreeks die als resultaat wordt gegeven. Als number de waarde Null heeft, wordt Null als resultaat gegeven.
character	Vereist. Variant. Een tekencode die aangeeft welk teken wordt gebruikt of welke tekenreeksexpressie waarvan het eerste teken wordt gebruikt voor de resultaatwaarde. Als character de waarde Null heeft, wordt Null als resultaat gegeven.
Notities

Als u voor character een getal opgeeft dat groter is dan 255, wordt dit getal door String met de volgende formule naar een geldige tekencode geconverteerd:

character Mod 256


UCase, functie

Geeft als resultaat een Variant (String) met de opgegeven tekenreeks, waarvan de tekens zijn geconverteerd naar hoofdletters.

Syntaxis

UCase(tekenreeks)

Het vereiste argument tekenreeks kan elke geldige tekenreeksexpressie zijn. Als tekenreeks de waarde Null heeft, wordt Null als resultaat gegeven.

Notities

Alleen kleine letters worden geconverteerd naar hoofdletters. Alle hoofdletters en andere tekens worden niet gewijzigd.


Sleutelwoorden naar taak geordend

Categorie	Beschrijving
Matrices	Matrices maken, definiëren en toepassen.
Compilerrichtlijnen	Compilaties besturen.
Besturingsverloop	Lussen vormen en het besturingsverloop beheersen.
Conversie	Getallen en gegevenstypen converteren.
Gegevenstypen	Gegevenstypen en variantsubtypen.
Datums en tijden	Datum- en tijdexpressies converteren en toepassen.
Directory's en bestanden	Het besturen van het bestandensysteem en het maken van bestanden.
Fouten	Het onderscheppen en opgeven van foutwaarden.
Financieel	Financiële berekeningen uitvoeren.
Invoer en uitvoer	Invoer ontvangen en uitvoer weergeven of afdrukken.
Rekenkundig	Trigonometrische en andere wiskundige berekeningen uitvoeren.
Gemengd	Andere toepassingen en gebeurtenissen in de wachtrij uitvoeren.
Operatoren	Vergelijkingen en andere bewerkingen uitvoeren.
Tekenreeksen manipuleren	Tekenreeksen en gegevenstypereeksen manipuleren.
Variabelen en constanten	Variabelen en constanten declareren en definiëren.


Sleutelwoordenoverzicht betreffende matrices

Actie	Sleutelwoord
Een matrix verifiëren.	IsArray
Een matrix maken.	Matrix
Standaardbeneden-grens wijzigen.	Option Base
Een matrix declareren en initialiseren.	Dim, Private, Public, ReDim, Static
De grenzen van een matrix zoeken.	LBound, UBound
Een matrix opnieuw initialiseren.	Erase, ReDim


Sleutelwoordenoverzicht betreffende Collection, object

Actie	Sleutelwoord
Een Collection-object maken.	Collection
Een object aan een collectie toevoegen.	Add
Een object uit een collectie verwijderen.	Remove
Een onderdeel van een collectie van een verwijzing voorzien.	Item


Sleutelwoordenoverzicht betreffende stuurinstructies voor compileren

Actie	Sleutelwoord
Een compileerconstante definiëren.	#Const
Geselecteerde blokken code compileren.	#If...Then...#Else


Sleutelwoordenoverzicht betreffende besturingsstructuur

Actie	Sleutelwoord
Vertakken.	GoSub...Return, GoTo, On Error, On...GoSub, On...GoTo
Het programma verlaten of onderbreken.	DoEvents, End, Exit, Stop
Lussen vormen.	Do...Loop, For...Next, For Each...Next, While...Wend, With
Beslissingen nemen.	Choose, If...Then...Else, Select Case, Switch
Procedures.	Call, Function, Property Get, Property Let, Property Set, Sub


Sleutelwoordenoverzicht betreffende conversie

Actie	Sleutelwoord
ANSI-waarde converteren naar tekenreeks.	Chr
Tekenreeks converteren naar kleine letters of hoofdletters.	Format, LCase, Ucase
Datum converteren naar serienummer.	DateSerial, DateValue
Decimaal getal converteren naar tekenreeks.	Hex, Oct
Getal converteren naar tekenreeks.	Format, Str
Het ene gegevenstype converteren naar het andere.	CBool, CByte, CCur, CDate, CDbl, CDec, CInt, CLng, CSng, CStr, CVar, CVErr, Fix, Int
Serienummer converteren naar datum.	Day, Month, Weekday, Year
Serienummer converteren naar tijd.	Hour, Minute, Second
Tekenreeks converteren naar ASCII-waarde.	Asc
Tekenreeks converteren naar getal.	Val
Tijd converteren  naar serienummer.	TimeSerial, TimeValue


Sleutelwoordenoverzicht betreffende gegevenstypen

Actie	Sleutelwoord
Converteren tussen gegevenstypen.	CBool, CByte, CCur, CDate, CDbl, CDec, CInt, CLng, CSng, CStr, CVar, CVErr, Fix, Int
Intrinsieke gegevenstypen instellen.	Boolean, Byte, Currency, Date, Double, Integer, Long, Object, Single, String, Variant (default)
Gegevenstypen verifiëren.	IsArray, IsDate, IsEmpty, IsError, IsMissing, IsNull, IsNumeric, IsObject


Sleutelwoordenoverzicht betreffende datums en tijden

Actie	Sleutelwoord
De huidige datum of tijd halen.	Date, Now, Time
Berekeningen uitvoeren met datums.	DateAdd, DateDiff, DatePart
Een datum als resultaatwaarde teruggeven.	DateSerial, DateValue
Een tijd als resultaatwaarde teruggeven.	TimeSerial, TimeValue
De datum of tijd instellen.	Date, Time
De tijdsduur van een proces meten.	Timer


Sleutelwoordenoverzicht betreffende mappen en bestanden

Actie	Sleutelwoord
Directory of map wijzigen.	ChDir
Station wijzigen.	ChDrive
Een bestand kopiëren.	FileCopy
Directory of map maken.	MkDir
Directory of map verwijderen.	RmDir
Naam van bestand, directory of map wijzigen.	Name
Geeft huidige pad.	CurDir
Bestandsdatum of  -tijd weergeven.	FileDateTime
Bestands-, directory- of volumekenmerken weergeven.	GetAttr
Bestandslengte weergeven.	FileLen
Bestandsnaam of volumenaam halen.	Dir
Kenmerken van bestand instellen.	SetAttr


Sleutelwoordenoverzicht betreffende fouten

Actie	Sleutelwoord
Fouten tijdens uitvoering genereren.	Clear, Error, Raise
Foutberichten halen.	Error$
Foutstatusgegevens halen.	Err
De variant Error als resultaatwaarde geven.	CVErr
Fouten tijdens uitvoering onderscheppen.	On Error, Resume
Gegevenstype verifiëren.	IsError


Overzicht van financiële sleutelwoorden

Actie	Sleutelwoord
Afschrijving berekenen.	DDB, SLN, SYD
Toekomstige waarde berekenen.	FV
Rentevoet berekenen.	Rate
Interne rentabiliteit berekenen.	IRR, MIRR
Aantal perioden berekenen.	NPer
Betalingen berekenen.	IPmt, Pmt, PPmt
Huidige waarde berekenen.	NPV, PV


Sleutelwoordenoverzicht betreffende invoer en uitvoer

Actie	Sleutelwoord
Een bestand maken of openen.	Open
Bestanden sluiten.	Close, Reset
Weergave van controle-uitvoer.	Format, Print, Print #, Spc, Tab, Width #
Een bestand kopiëren.	FileCopy
Informatie over een bestand weergeven.	EOF, FileAttr, FileDateTime, FileLen, FreeFile, GetAttr, Loc, LOF, Seek
Bestanden beheren.	Dir, Kill, Lock, Unlock, Name
Gegevens uit een bestand lezen.	Get, Input, Input #, Line Input #
Lengte van een bestand weergeven.	FileLen
Bestandskenmerken instellen of halen.	FileAttr, GetAttr, SetAttr
Positie voor de volgende lees- of schrijfbewerking in een bestand  instellen.	Seek
Naar een bestand schrijven.	Print #, Put, Write #


Overzicht van wiskundige sleutelwoorden

Actie	Sleutelwoord
Trigonometrische functies afleiden.	Atn, Cos, Sin, Tan
Algemene berekeningen.	Exp, Log, Sqr
Willekeurige getallen genereren.	Randomize, Rnd
Een absolute waarde halen.	Abs
Het teken van een expressie halen.	Sgn
Numerieke conversies uitvoeren.	Fix, Int


Sleutelwoordenoverzicht betreffende diversen

Actie	Sleutelwoord
Gebeurtenissen in de wachtrij uitvoeren.	DoEvents
Andere programma's uitvoeren.	AppActivate, Shell
Toetsaanslagen naar een toepassing sturen.	SendKeys
Een pieptoon geven.	Beep
Systeem.	Environ
Geeft een opdrachtregel- tekenreeks.	Command
Automatisering.	CreateObject, GetObject
Kleur.	QBColor, RGB


Sleutelwoordenoverzicht betreffende operatoren

Actie	Sleutelwoord
Rekenkundig.	^, – , *, /, \, Mod, +, &, =
Vergelijking.	=, <>, <, >, <=, >=, Like, Is
Logische bewerkingen.	Not, And, Or, Xor, Eqv, Imp


Sleutelwoordenoverzicht betreffende Register

Actie	Sleutelwoord
Programma-instellingen wissen.	DeleteSetting
Programma-instellingen lezen.	GetSetting, GetAllSettings
Programma-instellingen bewaren.	SaveSetting


Sleutelwoordenoverzicht betreffende tekenreeksmanipulatie

Actie	Sleutelwoord
Twee tekenreeksen vergelijken.	StrComp
Tekenreeksen converteren.	StrConv
Converteren naar kleine letters of hoofdletters.	Format, Lcase, Ucase
Een tekenreeks van een herhaald teken maken.	Space, String
De lengte van een tekenreeks zoeken.	Len
Een tekenreeks opmaken.	Format
Een tekenreeks uitlijnen.	LSet, Rset
Tekenreeksen manipuleren.	InStr, Left, LTrim, Mid, Right, RTrim, Trim
Regels voor vergelijking van tekenreeksen instellen.	Option Compare
Met ASCII- en ANSI- waarden werken.	Asc, Chr


Sleutelwoordenoverzicht betreffende variabelen en constanten

Actie	Sleutelwoord
Een waarde toewijzen.	Let
Variabelen of constanten declareren.	Const, Dim, Private, Public, New, Static
Een module als persoonlijk declareren.	Option Private Module
Gegevenstypen verifiëren.	IsArray, IsDate, IsEmpty, IsError, IsMissing, IsNull, IsNumeric, IsObject, TypeName, VarType
Naar het huidige object verwijzen.	Me
Expliciete variabelendeclaraties vereisen.	Option Explicit
Het standaard gegevenstype instellen.	Deftype


Onderschepbare fouten

Onderschepbare fouten kunnen optreden tijdens de uitvoering van een toepassing. Sommige van deze fouten kunnen ook voorkomen tijdens het ontwikkelen of compileren van een toepassing. U kunt deze fouten testen en maatregelen nemen met de instructie On Error en het object Err. Niet-gebruikte foutnummers tussen 1 en 1000 worden gereserveerd voor toekomstig gebruik in Visual Basic.

Code	Bericht
3	Return zonder GoSub
5	Ongeldige procedureoproep of ongeldig argument
6	Overloop
7	Onvoldoende geheugen
9	Het subscript valt buiten het bereik
10	Deze matrix is statisch of tijdelijk vergrendeld
11	Delen door nul
13	Typen komen niet overeen
14	Niet voldoende tekenreeksruimte
16	De expressie is te complex
17	Kan de opgegeven bewerking niet uitvoeren
18	De uitvoering is onderbroken door de gebruiker
20	Resume zonder fout
28	Onvoldoende stackruimte
35	Sub of Function niet gedefinieerd
47	Te veel broncode- of DLL-toepassingsclients
48	Fout bij laden van broncode of DLL
49	Ongeldige broncode- of DLL-oproepconventie
51	Interne fout
52	Onjuiste bestandsnaam of onjuist bestandsnummer
53	Kan opgegeven bestand niet vinden
54	Onjuiste bestandsmodus
55	Het bestand is al geopend
57	I/O-fout in apparaat
58	Het bestand bestaat al
59	Onjuiste recordlengte
61	De schijf is vol
62	Invoer na einde bestand
63	Onjuist recordnummer
67	Er zijn te veel bestanden geopend
68	Het apparaat is niet beschikbaar
70	Toegang geweigerd
71	De schijf is niet gereed
74	De nieuwe naam mag geen andere stationsaanduiding bevatten
75	Toegangsfout bij pad of bestand
76	Kan het pad niet vinden
91	Objectvariabele of blokvariabele With is niet ingesteld
92	De lus For is niet geïnitialiseerd
93	Ongeldig tekenreekspatroon
94	Ongeldig gebruik van Null
97	Kan procedure Friend niet oproepen voor een component die geen exemplaar is van de definiërende klasse
98	De oproep van een eigenschap of een methode mag geen verwijzing bevatten naar een persoonlijk object, niet als argument en ook niet als resultaatwaarde
298	Opgegeven systeembron of DLL kan niet worden geladen
320	Kan geen tekenreeks voor apparatuurnaam gebruiken in bestandsnamen
321	Ongeldige bestandsindeling
322	Kan het benodigde tijdelijke bestand niet maken
325	Ongeldige indeling in bronbestand
327	Gegevenswaarde niet gevonden
328	Ongeldige parameter. Kan geen matrices wegschrijven
335	Kan geen toegang verkrijgen tot systeemregister
336	Component niet juist geregistreerd
337	Component niet gevonden
338	Component is niet goed uitgevoerd
360	Object al geladen
361	Kan dit object niet laden of uit geheugen verwijderen
363	Opgegeven besturingselement niet gevonden
364	Object is uit geheugen verwijderd
365	Uit geheugen verwijderen binnen deze context niet mogelijk
368	Het opgegeven bestand is verouderd. Voor dit programma is een latere versie vereist
371	Het opgegeven object kan niet worden gebruikt als eigenaarformulier voor Show
380	Ongeldige waarde voor eigenschap
381	Ongeldige index voor eigenschappenmatrix
382	Set wordt niet ondersteund tijdens runtime
383	Set wordt niet ondersteund (alleen-lezen eigenschap)
385	Index eigenschappenmatrix vereist
387	Set is niet toegestaan
393	Get wordt niet ondersteund tijdens runtime (fout 393)
394	Get wordt niet ondersteund (alleen-lezen eigenschap)
400	Formulier wordt al weergegeven; kan niet modaal worden weergegeven
402	Bovenste modale formulier moet eerst worden gesloten of verborgen
419	Toestemming om object te gebruiken geweigerd
422	Eigenschap is niet gevonden
423	Kan een eigenschap of methode niet vinden
424	Object vereist
425	Ongeldig gebruik van object
429	Onderdeel kan geen object maken of verwijzing naar dit object teruggeven
430	Automatisering wordt niet ondersteund door deze klasse
432	Kan een bestandsnaam of klassennaam niet vinden tijdens een automatiseringsbewerking
438	Deze eigenschap of methode wordt niet ondersteund door dit object
440	Automatiseringsfout
442	De verbinding met een type- of objectbibliotheek voor externe verwerking is verbroken
443	Het automatiseringsobject heeft geen standaardwaarde
445	Deze actie wordt niet ondersteund door het object
446	Benoemde argumenten worden niet ondersteund door het object
447	De huidige lokale instellingen worden niet ondersteund door het object
448	Kan het benoemde argument niet vinden
449	Het argument is niet optioneel of is een ongeldige eigenschappentoewijzing
450	Onjuist aantal argumenten of ongeldige eigenschappentoewijzing
451	Dit object is geen collectie
452	Ongeldig rangtelwoord
453	Een functie is niet gedefinieerd in de opgegeven codebron
454	Kan programmacodebron niet vinden
455	Vergrendelingsfout bij programmacodebron
457	Deze sleutel is al verbonden met een lid van deze collectie
458	Variabele gebruikt een automatiseringstype dat niet wordt ondersteund in Visual Basic
459	Object of klasse ondersteunt de set van gebeurtenissen niet
460	Ongeldige indeling Klembord
461	Kan de methode of het gegevenslid niet vinden
462	De externe servercomputer bestaat niet of is niet beschikbaar
463	Klasse is niet geregistreerd op de lokale computer
480	Kan AutoRedraw-figuur niet maken
481	Ongeldige figuur
482	Printerfout
483	Printerstuurprogramma ondersteunt opgegeven eigenschap niet
484	Probleem bij ophalen printergegevens uit het systeem. Zorg ervoor dat de printer goed is ingesteld
485	Ongeldig figuurtype
486	Kan formulierfiguur niet afdrukken op dit type printer
520	Kan inhoud Klembord niet wissen
521	Kan Klembord niet openen
735	Kan het bestand niet opslaan naar TEMP
744	Gezochte tekst is niet gevonden
746	Vervangingen zijn te lang
31001	Onvoldoende geheugen
31004	Object vereist
31018	Klasse is niet ingesteld
31027	Kan object niet activeren
31032	Kan geen ingesloten object maken
31036	Fout bij opslaan in bestand
31037	Fout bij laden vanuit bestand


AddressOf, operator

Een enkelvoudige operator die ervoor zorgt dat het adres van de procedure waaraan de operator voorafgaat, wordt doorgegeven aan een API-procedure die op die positie in de lijst met argumenten een functiepointer verwacht.

Syntaxis

AddressOf procedurenaam

De vereiste procedurenaam noemt de procedure waarvan het adres moet worden doorgegeven. Dit moet een procedure zijn in een standaardmodule van het project waarin de aanroep wordt gepleegd.

Notities

Wanneer een procedurenaam in een lijst met argumenten voorkomt, wordt de procedure doorgaans geëvalueerd, en wordt het adres van de resultaatwaarde van de procedure doorgegeven. AddressOf maakt mogelijk dat het adres van de procedure in een dynamic link library (DLL) aan een Windows API-functie wordt doorgegeven, in plaats van de resultaatwaarde van de procedure. Nu kan de API-functie dit adres gebruiken om de Basic-procedure aan te roepen. Dit proces wordt een callback genoemd. De operator AddressOf staat alleen in de aanroep van de API-procudure.

Hoewel u AddressOf kunt gebruiken om procedurepointers tussen Basic-procedures door te geven, kunt u een functie niet vanuit Basic door middel van zo'n pointer opnieuw aanroepen. Dat betekent bijvoorbeeld dat een klasse, geschreven in Basic, met behulp van een dergelijke pointer geen callback naar zijn besturing kan uitvoeren. Wanneer u AddressOf gebruikt om een procedurepointer tussen procedures binnen Basic door te geven, moet de parameter van de aangeroepen procedure van het type As Long zijn.

Waarschuwing   Het gebruik van AddressOf kan onvoorspelbare resultaten opleveren als u het concept van functie-callbacks niet volledig begrijpt. U moet begrijpen hoe het Basic-gedeelte van de callback werkt, evenals de programmacode van de DLL waaraan u het functieadres doorgeeft. Het opsporen van fouten in dergelijke interacties is moeilijk aangezien het programma in hetzelfde proces wordt uitgevoerd als de ontwikkelomgeving. In dergelijke gevallen is het soms niet eens mogelijk om systematisch fouten op te sporen.

Opmerking   In DLL's, gecompileerd met Microsoft Visual C++ (of soortgelijke hulpmiddelen) kunt u uw eigen callback functieprototypen maken. Als u met AddressOf wilt werken, moet het prototype voldoen aan de aanroepconventie __stdcall. De standaardaanroepconventie (__cdecl) werkt niet met AddressOf.

Aangezien de initiator van een callback zich niet in het programma bevindt, is het belangrijk dat een fout in de callback procedure niet wordt weergegeven aan de initiator van de aanroep. U bereikt dit door de instructie On Error Resume Next aan het begin van de callback procedure te plaatsen.


Assert, methode

Onderbreekt de uitvoering voorwaardelijk op de regel waarop de methode voorkomt.

Syntaxis

object.Assert boole_expressie

De syntaxis van de methode Assert heeft de volgende objectkwalificatie en onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Altijd het object Debug.
Boole-expressie	Vereist. Een expressie die de waarde True of False als resultaat geeft.
Notities

Het activeren van de methode Assert werkt alleen in de ontwikkelomgeving. Wanneer de module wordt gecompileerd tot een uitvoerbare module, worden methodeaanroepen naar het object Debug weggelaten.

De Boole_expressie wordt altijd geheel geëvalueerd. Zelfs als bijvoorbeeld het eerste deel van een And-expressie het resultaat False oplevert, wordt de hele expressie geëvalueerd.


Friend

Wijzigt de definitie van een procedure in een formuliermodule of klassenmodule zodat de procedure kan worden aangeroepen vanuit modules die zich buiten de klasse bevinden, maar deel uitmaken van het project waarbinnen de klasse is gedefinieerd. Friend-procedures kunt u niet in standaardmodules gebruiken.

Syntaxis

[Private | Friend | Public] [Static] [Sub | Function | Property] procedurenaam

De vereiste procedurenaam is de naam van de procedure die zichtbaar moet worden gemaakt in het project, maar niet zichtbaar voor de besturingen van de klasse.

Notities

Public-procedures in een klasse kunnen overal vandaan worden aangeroepen, zelfs door besturingen van instanties van de klasse. Door een procedure als Private te declareren, voorkomt u dat besturingen van het object de procedure aanroepen. De procedure kan dan echter ook niet meer worden aangeroepen vanuit het project waarin de klasse zelf is gedefinieerd. Friend maakt de procedure zichtbaar in het project, maar niet voor een besturing van een instantie van het object. Friend kan enkel voorkomen in formuliermodules en klassenmodules, en kan alleen procedurenamen wijzigen, geen variabelen of typen. Procedures in een klasse kunnen de Friend-procedures benaderen van alle andere klassen in een project. Friend-procedures verschijnen niet in de typebibliotheek van hun klasse. Een Friend-procedure kan niet later worden gebonden.


RaiseEvent, instructie

Activeert een gebeurtenis die op moduleniveau is gedeclareerd binnen een klasse, formulier of document.

Syntaxis

RaiseEvent gebeurtenisnaam [(argumentenlijst)]

De vereiste gebeurtenisnaam is de naam van een gebeurtenis die in de module is gedeclareerd volgens de naamconventies voor Basic-variabelen.

De syntaxis van de instructie RaiseEvent bevat de volgende onderdelen:

Onderdeel	Beschrijving
Gebeurtenisnaam	Vereist. Naam van de te starten gebeurtenis.
argumentenlijst	Optioneel. Lijst met door komma gescheiden variabelen, matrices of expressies. De argumentenlijst moet tussen haakjes staan. Als er geen argumenten zijn, moeten de haakjes worden weggelaten.
Notities

Als de gebeurtenis niet is gedeclareerd in de module waarin deze wordt geactiveerd, treedt een fout op. Het volgende fragment illustreert de declaratie van een gebeurtenis en een procedure waarin de gebeurtenis wordt geactiveerd.

' Declareert een gebeurtenis op moduleniveau van een klassenmodule.

Event LogonCompleted (UserName as String)

Sub

' Genereert de gebeurtenis

RaiseEvent LogonCompleted ("AntoineJan")

End Sub

Als de gebeurtenis geen argumenten heeft en lege haakjes bevat, treedt een fout op wanneer de instructie RaiseEvent voor deze gebeurtenis wordt uitgevoerd. U kunt RaiseEvent niet gebruiken om gebeurtenissen te activeren die niet expliciet in de module zijn gegenereerd. Als een formulier bijvoorbeeld een Click-gebeurtenis bevat, kunt u deze gebeurtenis niet met RaiseEvent activeren. Als u een Click-gebeurtenis in de formuliermodule declareert, overschaduwt deze de Click-gebeurtenis van het formulier zelf. U kunt de Click-gebeurtenis van het formulier altijd activeren met de gebruikelijke syntaxis voor het aanroepen van de gebeurtenis, echter niet met de instructie RaiseEvent.

Gebeurtenissen worden geactiveerd in de volgorde waarin de verbindingen tot stand komen.

Aangezien gebeurtenissen ByRef-parameters kunnen hebben, is het mogelijk dat een proces dat achteraf wordt gekoppeld, parameters ontvangt die zijn gewijzigd door een vorige afhandeling van een gebeurtenis.


Voorbeeld van de operator AddressOf

Het volgende voorbeeld maakt een formulier met een keuzelijst die een alfabetisch gesorteerde lijst bevat van de lettertypen in uw systeem.

Als u dit voorbeeld wilt uitvoeren, maakt u een formulier met een keuzelijst. De code voor het formulier ziet er als volgt uit:

Option Explicit

Private Sub Form_Load()

    Module1.FillListWithFonts List1

End Sub

Plaats de volgende programmacode in een module. Het derde argument in de definitie van de functie EnumFontFamilies is een Long die een procedure voorstelt. Het argument moet het adres van de procedure bevatten, niet de waarde die de procedure oplevert. In de aanroep van EnumFontFamilies vereist het derde argument dat de operator AddressOf het adres van de procedure EnumFontFamProc teruggeeft. Dat wordt de naam van de callback procedure die u doorgeeft bij het aanroepen van de Windows API-functie EnumFontFamilies. Windows activeert EnumFontFamProc eenmaal voor elke lettertypefamilie op het systeem wanneer u AddressOf EnumFontFamProc aan EnumFontFamilies doorgeeft. Het laatste argument dat aan EnumFontFamilies wordt doorgegeven, noemt de keuzelijst waarin de informatie wordt weergegeven.

'Opsommingstypen voor het lettertype

Public Const LF_FACESIZE = 32

Public Const LF_FULLFACESIZE = 64

Type LOGFONT

        lfHeight As Long

        lfWidth As Long

        lfEscapement As Long

        lfOrientation As Long

        lfWeight As Long

        lfItalic As Byte

        lfUnderline As Byte

        lfStrikeOut As Byte

        lfCharSet As Byte

        lfOutPrecision As Byte

        lfClipPrecision As Byte

        lfQuality As Byte

        lfPitchAndFamily As Byte

        lfFaceName(LF_FACESIZE) As Byte

End Type

Type NEWTEXTMETRIC

        tmHeight As Long

        tmAscent As Long

        tmDescent As Long

        tmInternalLeading As Long

        tmExternalLeading As Long

        tmAveCharWidth As Long

        tmMaxCharWidth As Long

        tmWeight As Long

        tmOverhang As Long

        tmDigitizedAspectX As Long

        tmDigitizedAspectY As Long

        tmFirstChar As Byte

        tmLastChar As Byte

        tmDefaultChar As Byte

        tmBreakChar As Byte

        tmItalic As Byte

        tmUnderlined As Byte

        tmStruckOut As Byte

        tmPitchAndFamily As Byte

        tmCharSet As Byte

        ntmFlags As Long

        ntmSizeEM As Long

        ntmCellHeight As Long

        ntmAveWidth As Long

End Type

' vlaggen voor ntmFlags-velden

Public Const NTM_REGULAR = &H40&

Public Const NTM_BOLD = &H20&

Public Const NTM_ITALIC = &H1&

'  tmPitchAndFamily-vlaggen

Public Const TMPF_FIXED_PITCH = &H1

Public Const TMPF_VECTOR = &H2

Public Const TMPF_DEVICE = &H8

Public Const TMPF_TRUETYPE = &H4

Public Const ELF_VERSION = 0

Public Const ELF_CULTURE_LATIN = 0

'  EnumFonts-maskers

Public Const RASTER_FONTTYPE = &H1

Public Const DEVICE_FONTTYPE = &H2

Public Const TRUETYPE_FONTTYPE = &H4

Declare Function EnumFontFamilies Lib "gdi32" Alias _
 "EnumFontFamiliesA" _
 (ByVal hDC As Long, ByVal lpszFamily As String, _
 ByVal lpEnumFontFamProc As Long, LParam As Any) As Long

Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long

Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long, _
 ByVal hDC As Long) As Long

Function EnumFontFamProc(lpNLF As LOGFONT, lpNTM As NEWTEXTMETRIC, _
 ByVal FontType As Long, LParam As ListBox) As Long

Dim FaceName As String

Dim FullName As String

    FaceName = StrConv(lpNLF.lfFaceName, vbUnicode)

    LParam.AddItem Left$(FaceName, InStr(FaceName, vbNullChar) - 1)

    EnumFontFamProc = 1

End Function

Sub FillListWithFonts(LB As ListBox)

Dim hDC As Long

    LB.Clear

    hDC = GetDC(LB.hWnd)

    EnumFontFamilies hDC, vbNullString, AddressOf EnumFontFamProc, LB

    ReleaseDC LB.hWnd, hDC

End Sub


Voorbeeld van de methode Assert

Het volgende voorbeeld laat zien hoe u de methode Assert gebruikt. Het voorbeeld maakt gebruik van een formulier met twee knopbesturingen. De standaard knopnamen zijn Command1 en Command2.

Wanneer u tijdens de uitvoering van het voorbeeld op Command1 klikt, schakelt de tekst op de knop tussen 0 en 1. Klikt u op Command2, dan gebeurt er niets of wordt een bericht weergegeven, afhankelijk van de waarde die op Command1 is weergegeven. De mededeling stopt de uitvoering met de uitvoering van de laatste instructie en het gemarkeerd weergeven van de regel Debug.Assert.

Option Explicit

Private blnAssert As Boolean

Private intNumber As Integer

Private Sub Command1_Click()

    blnAssert = Not blnAssert

    intNumber = IIf(intNumber <> 0, 0, 1)

    Command1.Caption = intNumber

End Sub

Private Sub Command2_Click()

    Debug.Assert blnAssert

End Sub

Private Sub Form_Load()

    Command1.Caption = intNumber

    Command2.Caption = "Tester"

End Sub


Voorbeeld van Friend

Wanneer u de volgende programmacode in een klassenmodule plaatst, wordt de lidvariabele dblBalance toegankelijk voor alle gebruikers van de klasse in het project. Elke gebruiker van de klasse kan de waarde ophalen. Alleen programmacode in het project kan echter een waarde aan die variabele toekennen.

Private dblBalance As Double

Public Property Get Balance() As Double

    Balance = dblBalance

End Property

Friend Property Let Balance(dblNewBalance As Double)

    dblBalance = dblNewBalance

End Property


Voorbeeld van de instructie RaiseEvent

Het volgende voorbeeld gebruikt gebeurtenissen om de seconden af te tellen tijdens een demonstratie van de snelste 100-meterrace. De programmacode illustreert alle aan gebeurtenissen gerelateerde methoden, eigenschappen en instructies, waaronder de instructie RaiseEvent.

De klasse die een gebeurtenis genereert is de gebeurtenisbron, en de klassen die de gebeurtenissen implementeren, zijn de doelen. Een gebeurtenisbron kan meerdere doelen hebben voor de gebeurtenissen die deze genereert. Wanneer de klasse de gebeurtenis genereert, wordt die gebeurtenis uitgevoerd voor elke klasse die heeft gekozen om gebeurtenissen voor die instantie van het object uit te voeren.

Het voorbeeld gebruikt ook een formulier (Form1) met een knop (Command1), een label (Label1) en twee tekstvakken (Text1 and Text2). Wanneer u op de knop klikt, ziet u in het eerste tekstvak de tekst "Vanaf nu" en begint het tweede de seconden te tellen. Wanneer de volledige tijd (9,84 seconden) is verstreken, ziet u in het eerste tekstvak de tekst "Tot nu" en in het tweede de vermelding "9,94".

De programmacode voor Form1 geeft de begin- en eindstaat van het formulier op. Het bevat ook de code die wordt uitgevoerd wanneer de gebeurtenissen plaatsvinden.

Option Explicit

Private WithEvents mText As TimerState

Private Sub Command1_Click()

    Text1.Text = "Vanaf nu"

    Text1.Refresh

    Text2.Text = "0"

    Text2.Refresh

    Call mText.TimerTask(9.84)

End Sub

Private Sub Form_Load()

    Command1.Caption = "Klik om timer te starten"

    Text1.Text = ""

    Text1.Text = ""

    Label1.Caption = "De snelste 100 meter, ooit gelopen, heeft zo lang geduurd:"

    Set mText = New TimerState

    End Sub

Private Sub mText_ChangeText()

    Text1.Text = "Tot nu"

    Text2.Text = "9,84"

End Sub

Private Sub mText_UpdateTime(ByVal dblJump As Double)

    Text2.Text = Str(Format(dblJump, "0"))

    DoEvents

End Sub

De overige code bevindt zich in de klassenmodule TimerState. Tussen de opdrachten in deze module vindt u de Raise Event-instructies.

Option Explicit

Public Event UpdateTime(ByVal dblJump As Double)

Public Event ChangeText()

Public Sub TimerTask(ByVal Duration As Double)

    Dim dblStart As Double

    Dim dblSecond As Double

    Dim dblSoFar As Double

    dblStart = Timer

    dblSoFar = dblStart

    Do While Timer < dblStart + Duration

        If Timer - dblSoFar >= 1 Then

      dblSoFar = dblSoFar + 1

      RaiseEvent UpdateTime(Timer - dblStart)

        End If

    Loop

    RaiseEvent ChangeText

End Sub


Tekenset (128 - 255)
Tekenset (128 – 255)

128	•	160	[spatie]	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	ÿ
•	Deze tekens worden niet ondersteund door Microsoft Windows.

De waarden in de tabel zijn de Windows-standaarden. De waarden in de ANSI-tekenset boven 127 worden echter bepaald door de specifieke codepagina voor uw besturingssysteem.


Datumnotatie, constanten

Deze constanten zijn alleen beschikbaar wanneer uw project een expliciete verwijzing bevat naar de typebibliotheek die de definities van deze constanten bevat.

Constante	Waarde	Beschrijving
vbGeneralDate	0	Geeft een datum en/of tijd weer. Geeft voor reële getallen een datum en tijd weer. Als er geen gedeelte achter het decimaalteken is, wordt alleen een datum weergegeven. Als er geen geheel gedeelte is, wordt alleen een tijd weergegeven. De weergave van de datum en tijd hangt af van de instellingen van uw systeem.
vbLongDate	1	Geeft een datum weer in de lange datumnotatie, die wordt bepaald door de landinstellingen op uw computer.
vbShortDate	2	Geeft een datum weer in de korte datumnotatie, die wordt bepaald door de landinstellingen op uw computer.
vbLongTime	3	Geeft een tijd weer in de lange tijdnotatie, die wordt bepaald door de landinstellingen op uw computer.
vbShortTime	4	Geeft een tijd weer in de korte tijdnotatie, die wordt bepaald door de landinstellingen op uw computer.


DriveType, constanten

Deze constanten zijn alleen beschikbaar wanneer uw project een expliciete verwijzing bevat naar de typebibliotheek die de definities van deze constanten bevat.

Constante	Waarde	Beschrijving
Unknown	0	Stationstype kan niet worden bepaald.
Removable	1	Station heeft verwijderbare media. Dit zijn alle diskettestations en vele andere soorten opslagapparatuur.
Fixed	2	Station heeft vaste (niet-verwijderbare) media. Dit zijn alle vaste schijven, ook de verwijderbare vaste schijven.
Remote	3	Netwerkstations. Dit zijn stations die ergens in een netwerk worden gedeeld.
CDROM	4	Station is een cd-rom. Er wordt geen onderscheid gemaakt tussen stations die cd-rom's alleen kunnen lezen en stations die kunnen lezen en schrijven.
RAMDisk	5	Station is een blok Random Access Memory (RAM) op de lokale computer, dat zich als een schijfstation gedraagt.


Bestandskenmerk, constanten

Deze constanten zijn alleen beschikbaar wanneer uw project een expliciete verwijzing bevat naar de typebibliotheek die de definities van deze constanten bevat.

Constante	Waarde	Beschrijving
Normal	0	Normaal bestand. Er zijn geen kenmerken ingesteld.
ReadOnly	1	Alleen-lezen bestand. Kenmerk is lezen/schrijven.
Hidden	2	Verborgen bestand. Kenmerk is lezen/schrijven.
System	4	Systeembestand. Kenmerk is lezen/schrijven.
Volume	8	Volumelabel van schijfstation. Kenmerk is alleen-lezen.
Directory	16	Map of directory. Kenmerk is alleen-lezen.
Archive	32	Het bestand is gewijzigd na de laatste reservekopie. Kenmerk is lezen/schrijven.
Alias	64	Koppeling of snelkoppeling. Kenmerk is alleen-lezen.
Compressed	128	Gecomprimeerd bestand. Kenmerk is alleen-lezen.


Bestandsinvoer/uitvoer, constanten

Deze constanten zijn alleen beschikbaar wanneer uw project een expliciete verwijzing bevat naar de typebibliotheek die de definities van deze constanten bevat.

Constante	Waarde	Beschrijving
ForReading	1	Opent een bestand alleen om te lezen. U kunt geen gegevens naar het bestand wegschrijven.
ForWriting	2	Opent een bestand om gegevens naartoe te schrijven. Als een bestand met dezelfde naam bestaat, wordt de vorige inhoud overschreven.
ForAppending	8	Opent een bestand en schrijft tot aan het einde van het bestand.


SpecialFolder, constanten

Deze constanten zijn alleen beschikbaar wanneer uw project een expliciete verwijzing bevat naar de typebibliotheek die de definities van deze constanten bevat.

Constante	Waarde	Beschrijving
WindowsFolder	0	De map Windows bevat bestanden die door het besturingssysteem Windows zijn geïnstalleerd.
SystemFolder	1	De map System bevat bibliotheken, lettertypen en stuurprogramma's.
TemporaryFolder	2	De map Temp wordt gebruikt om tijdelijke bestanden op te slaan. Het pad hiernaartoe vindt u in de omgevingsvariabele TMP.


Tristate, constanten

Deze constanten zijn alleen beschikbaar wanneer uw project een expliciete verwijzing bevat naar de typebibliotheek die de definities van deze constanten bevat.

Constante	Waarde	Beschrijving
vbTrue	–1	True
vbFalse	0	False
vbUseDefault	–2	Gebruik de standaardinstelling


Filter, functie

Beschrijving

Geeft een op nul gebaseerde matrix die een deel van een tekenreeksmatrix bevat, gebaseerd op opgegeven filtercriteria.

Syntaxis

Filter(bronmatrix, match[, include[, vergelijk]])

De functie Filter bevat de volgende benoemde argumenten:

Onderdeel	Beschrijving
bronmatrix	Vereist. Een-dimensionale matrix met tekenreeksen waarin moet worden gezocht.
match	Vereist. Tekenreeks waarnaar u wilt zoeken.
include	Optioneel. Boole-waarde die aangeeft of het resultaat ook mag bestaan uit delen van tekenreeksen die match bevatten of niet bevatten. Als include True is, geeft Filter het deel van de matrix die match bevat als een subtekenreeks terug. Als include False is, geeft Filter het deel van de matrix die match niet bevat als een subtekenreeks terug.
vergelijk	Optioneel. Numerieke waarde die aangeeft welk soort tekenreeksvergelijking moet worden uitgevoerd. Zie Instellingen voor een overzicht van de mogelijke waarden.
Instellingen

Het argument vergelijk kan de volgende waarden bevatten:

Constante	Waarde	Beschrijving
vbUseCompareOption	–1	Voert een vergelijking uit, gebruik makend van de instelling van de instructie Option Compare.
vbBinaryCompare	0	Voert een binaire vergelijking uit.
vbTextCompare	1	Voert een tekstvergelijking uit.
vbDatabaseCompare	2	Alleen Microsoft Access. Voert een vergelijking uit op basis van de informatie in uw database.
Notities

Als in bronmatrix geen overeenkomsten met match worden gevonden, geeft Filter een lege matrix als resultaat terug. Als bronmatrix Null is of geen een-dimensionale matrix is, treedt een fout op.

De matrix die de functie Filter teruggeeft, bevat precies voldoende elementen om het aantal overeenstemmende items op te slaan.


FormatCurrency, functie

Beschrijving

Geeft een expressie als resultaat, opgemaakt als een valutawaarde met het valutateken dat in het configuratiescherm van het systeem is opgegeven.

Syntaxis

FormatCurrency(Expressie[,AantCijfNaDecimaal [,MetVoorloopNul [,HaakjesVoorNegGetallen [,GroepCijfers]]]])

De functie FormatCurrency heeft de volgende argumenten:

Onderdeel	Beschrijving
Expressie	Vereist. De op te maken expressie.
AantCijfNaDecimaal	Optioneel. Numerieke waarde die opgeeft hoeveel posities rechts van het decimaalteken worden weergegeven. De standaardwaarde is –1. Dat betekent dat de landinstellingen van de computer worden gehanteerd.
MetVoorloopNul	Optioneel. Tristate-constante die aangeeft of al dan niet een voorloopnul wordt weergegeven voor fractionele waarden. Zie Instellingen voor een overzicht van de mogelijke waarden.
HaakjesVoorNegGetallen	Optioneel. Tristate-constante die aangeeft of negatieve waarden tussen haakjes moeten worden geplaatst. Zie Instellingen voor een overzicht van de mogelijke waarden.
GroepCijfers	Optioneel. Tristate-constante die aangeeft of getallen moeten worden gegroepeerd met het groepsscheidingsteken dat in de landinstellingen van de computer is opgegeven. Zie Instellingen voor een overzicht van de mogelijke waarden.
Instellingen

De argumenten MetVoorloopNul, HaakjesVoorNegGetallen en GroepCijfers hebben de volgende instellingen:

Constante	Waarde	Beschrijving
vbTrue	–1	True
vbFalse	0	False
vbUseDefault	–2	Gebruikt de instelling uit de landinstellingen van de computer.
Notities

De waarde van weggelaten optionele argumenten wordt geleverd door de landinstellingen van de computer.

De positie van het valutateken ten opzichte van de valutawaarde wordt bepaald door de landinstellingen van het systeem.

Opmerking   Alle instellingsinformatie is afkomstig van het tabblad Landinstellingen – Valuta, behalve de instelling van de voorloopnul, die afkomstig is uit het tabblad Number.


FormatDateTime, functie

Beschrijving

Geeft een expressie, opgemaakt als een datum of tijd.

Syntaxis

FormatDateTime(Datum[,BenoemdeNotatie])

De syntaxis van de functie FormatDateTime bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Datum	Vereist. De op te maken datumexpressie.
BenoemdeNotatie	Optioneel. Numerieke waarde die de te gebruiken datum-/tijdnotatie aangeeft. Als dit argument is weggelaten, wordt vbGeneralDate gebruikt.
Instellingen

Het argument BenoemdeNotatie heeft de volgende instellingen:

Constante	Waarde	Beschrijving
vbGeneralDate	0	Geeft een datum en/of tijd weer. Als er een datumgedeelte is, wordt dit in de korte notatie weergegeven. Als er een tijdgedeelte is, wordt dit in de lange notatie weergegeven. Als beide delen aanwezig zijn, worden ze beide weergegeven.
vbLongDate	1	Geeft een datum weer in de lange datumnotatie, die wordt bepaald door de landinstellingen op uw computer.
vbShortDate	2	Geeft een datum weer in de korte datumnotatie, die wordt bepaald door de landinstellingen op uw computer.
vbLongTime	3	Geeft een tijd weer in de tijdnotatie, die wordt bepaald door de landinstellingen op uw computer.
vbShortTime	4	Geeft een tijd weer in de 24-uurs klok (uu:mm).


FormatNumber, functie

Beschrijving

Geeft een expressie, opgemaakt als een getal.

Syntaxis

FormatNumber(Expressie[,AantCijfNaDecimaal [,MetVoorloopNul [,HaakjesVoorNegGetallen [,GroepCijfers]]]])

De functie FormatNumber heeft de volgende argumenten:

Onderdeel	Beschrijving
Expressie	Vereist. De op te maken expressie.
AantCijfNaDecimaal	Optioneel. Numerieke waarde die opgeeft hoeveel posities rechts van het decimaalteken worden weergegeven. De standaardwaarde is –1. Dat betekent dat de landinstellingen van de computer worden gehanteerd.
MetVoorloopNul	Optioneel. Tristate-constante die aangeeft of al dan niet een voorloopnul wordt weergegeven voor fractionele waarden. Zie Instellingen voor een overzicht van de mogelijke waarden.
HaakjesVoorNegGetallen	Optioneel. Tristate-constante die aangeeft of negatieve waarden tussen haakjes moeten worden geplaatst. Zie Instellingen voor een overzicht van de mogelijke waarden.
GroepCijfers	Optioneel. Tristate-constante die aangeeft of getallen moeten worden gegroepeerd met het groepsscheidingsteken dat in de landinstellingen van de computer is opgegeven. Zie Instellingen voor een overzicht van de mogelijke waarden.
Instellingen

De argumenten MetVoorloopNul, HaakjesVoorNegGetallen en GroepCijfers hebben de volgende instellingen:

Constante	Waarde	Beschrijving
vbTrue	–1	True
vbFalse	0	False
vbUseDefault	–2	Gebruikt de instelling uit de landinstellingen van de computer.
Notities

De waarde van weggelaten optionele argumenten wordt geleverd door de landinstellingen van de computer.

Opmerking   Alle instellingsinformatie is afkomstig van het tabblad Landinstellingen - Getal.


FormatPercent, functie

Beschrijving

Geeft een expressie, opgemaakt als een percentage (vermenigdvuldigd met 100 en een procentteken (%) ervoor.

Syntaxis

FormatPercent(Expressie[,AantCijfersNaDecimaal [,MetVoorloopNul [,HaakjesVoorNegGetallen [,GroepCijfers]]]])

De functie FormatPercent heeft de volgende argumenten:

Onderdeel	Beschrijving
Expressie	Vereist. De op te maken expressie.
AantCijfNaDecimaal	Optioneel. Numerieke waarde die opgeeft hoeveel posities rechts van het decimaalteken worden weergegeven. De standaardwaarde is –1. Dat betekent dat de landinstellingen van de computer worden gehanteerd.
MetVoorloopNul	Optioneel. Tristate-constante die aangeeft of al dan niet een voorloopnul wordt weergegeven voor fractionele waarden. Zie Instellingen voor een overzicht van de mogelijke waarden.
HaakjesVoorNegGetallen	Optioneel. Tristate-constante die aangeeft of negatieve waarden tussen haakjes moeten worden geplaatst. Zie Instellingen voor een overzicht van de mogelijke waarden.
GroepCijfers	Optioneel. Tristate-constante die aangeeft of getallen moeten worden gegroepeerd met het groepsscheidingsteken dat in de landinstellingen van de computer is opgegeven. Zie Instellingen voor een overzicht van de mogelijke waarden.
Instellingen

De argumenten MetVoorloopNul, HaakjesVoorNegGetallen en GroepCijfers hebben de volgende instellingen:

Constante	Waarde	Beschrijving
vbTrue	–1	True
vbFalse	0	False
vbUseDefault	–2	Gebruikt de instelling uit de landinstellingen van de computer.
Notities

De waarde van weggelaten optionele argumenten wordt geleverd door de landinstellingen van de computer.

Opmerking   Alle instellingsinformatie is afkomstig van het tabblad Landinstellingen - Getal.


InStrRev, functie

Beschrijving

Geeft de positie van een instantie van de ene tekenreeks binnen een andere, vanaf het einde van de tekenreeks.

Syntaxis

InstrRev(stringcheck, stringmatch[, begin[, vergelijk]])

De syntaxis van de functie InstrRev heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
stringcheck	Vereist. De tekenreeksexpressie waarin wordt gezocht.
stringmatch	Vereist. De tekenreeksexpressie waarnaar wordt gezocht.
begin	Optioneel. Een numerieke expressie waarmee u de beginpositie voor alle zoekbewerkingen opgeeft. Als dit argument is weggelaten, wordt de waarde –1 gebruikt. Dat betekent dat het zoeken op de laatste tekenpositie begint. Als begin  Null is, treedt een fout op.
vergelijk	Optioneel. Numerieke waarde die aangeeft welk soort vergelijking bij het evalueren van de subtekenreeksen moet worden uitgevoerd. Als dit argument is weggelaten, wordt een binaire vergelijking uitgevoerd. Zie Instellingen voor een overzicht van de mogelijke waarden.
Instellingen

Het argument vergelijk kan de volgende waarden bevatten:

Constante	Waarde	Beschrijving
vbUseCompareOption	–1	Voert een vergelijking uit, gebruik makend van de instelling van de instructie Option Compare.
vbBinaryCompare	0	Voert een binaire vergelijking uit.
vbTextCompare	1	Voert een tekstvergelijking uit.
vbDatabaseCompare	2	Alleen Microsoft Access. Voert een vergelijking uit op basis van de informatie in uw database.
Resultaatwaarden

InStrRev geeft de volgende waarden terug:

Als	Resultaat van InStrRev
stringcheck leeg is	0
stringcheck Null is	Null
stringmatch leeg is.	begin
stringmatch Null is	Null
stringmatch niet is gevonden	0
stringmatch in stringcheck is gevonden	De positie waarop de overeenkomst is gevonden
start > Len(stringmatch)	0
Notities

De syntaxis voor de functie InstrRev is niet dezelfde als voor de functie Instr.


Join, functie

Beschrijving

Geeft een tekenreeks die het resultaat is van het samenvoegen van een aantal tekenreeksen uit een matrix.

Syntaxis

Join(bronmatrix[, scheidingsteken])

De syntaxis van de functie Join heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
bronmatrix	Vereist. Een-dimensionale matrix met tekenreeksen die moeten worden samengevoegd.
scheidingsteken	Optioneel. Het teken waarmee de subtekenreeksen in de resulterende tekenreeks worden gescheiden. Als dit argument niet is opgegeven, wordt de spatie (" ") gebruikt. Als scheidingsteken een lege tekenreeks ("") is, worden alle items in de lijst zonder scheidingsteken samengevoegd.


MonthName, functie

Beschrijving

Geeft een tekenreeks die de opgegeven maand aangeeft.

Syntaxis

MonthName(maand[, afkorting])

De syntaxis van de functie MonthName bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
maand	Vereist. De numerieke aanduiding van de maand. Januari, bijvoorbeeld, is 1, februari is 2, enzovoort.
afkorting	Optioneel. Boole-waarde die aangeeft of de naam van de maand moet worden afgekort. Als dit argument is weggelaten, is False de standaardinstelling. Dit betekent dat de naam niet moet worden afgekort.


Replace, functie

Beschrijving

Resulteert in een tekenreeks waarin een opgegeven subtekenreeks een gegeven aantal keer is vervangen door een andere subtekenreeks.

Syntaxis

Replace(expressie, zoek, vervang[, begin[, teller[, vergelijk]]])

De syntaxis van de functie Replace heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
expressie	Vereist. Tekenreeksexpressie met de te vervangen subtekenreeks.
zoek	Vereist. De subtekenreeks die wordt gezocht.
vervang	Vereist. Vervangende subtekenreeks.
begin	Optioneel. Positie in expressie waarop het zoeken naar de subtekenreeks moet beginnen. Als dit argument wordt weggelaten, wordt uitgegaan van 1.
Teller	Optioneel. Aantal maal dat subtekenreeks moet worden vervangen. Als dit argument is weggelaten, is de standaardwaarde –1. Dat betekent dat alle mogelijke vervangingen worden uitgevoerd.
vergelijk	Optioneel. Numerieke waarde die aangeeft welk soort vergelijking bij het evalueren van de subtekenreeksen moet worden uitgevoerd. Zie Instellingen voor een overzicht van de mogelijke waarden.
Instellingen

Het argument compare kan de volgende waarden bevatten:

Constante	Waarde	Beschrijving
vbUseCompareOption	–1	Voert een vergelijking uit, gebruik makend van de instelling van de instructie Option Compare.
vbBinaryCompare	0	Voert een binaire vergelijking uit.
vbTextCompare	1	Voert een tekstvergelijking uit.
vbDatabaseCompare	2	Alleen Microsoft Access. Voert een vergelijking uit op basis van de informatie in uw database.
Resultaatwaarden

Replace geeft de volgende waarden terug:

Als	Resultaat is
expressie de lengte nul heeft	Tekenreeks, zonder gegevens ("")
expressie Null is	Een fout.
zoek leeg is.	Kopie van expressie.
vervang de lengte nul heeft	Kopie van expressie waaruit alle instanties van zoek zijn verwijderd.
start > Len(expressie)	Lege tekenreeks
teller 0 is	Kopie van expressie.
Notities

De resultaatwaarde van de functie Replace is een tekenreeks waarin vervangingen zijn uitgevoerd. Deze vervangingen zijn gestart op de positie, aangegeven in begin en uitgevoerd tot aan het einde van de tekenreeks expressie. Het is geen kopie van de oorsponkelijke tekenreeks vanaf het begin tot aan het einde.


Round, functie

Beschrijving

Geeft een getal dat is afgerond tot op een opgegeven aantal decimale posities.

Syntaxis

Round(expressie [,AantDecPosities])

De syntaxis van de functie Round bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
expressie	Vereist. Numerieke expressie die moet worden afgerond.
AantDecPosities	Optioneel. Getal dat aangeeft hoeveel plaatsen, rechts van het decimaalteken bij het afronden moeten worden opgenomen. Als dit argument is weggelaten, resulteert de functie Round in gehele getallen.


Split, functie

Beschrijving

Geeft een op nul gebaseerde, een-dimensionale matrix die een opgegeven aantal subtekenreeksen bevat.

Syntaxis

Split(expressie[, scheidingsteken[, limiet[, vergelijk]]])

De syntaxis van de functie Split heeft de volgende benoemde argumenten:

Onderdeel	Beschrijving
expressie	Vereist. Tekenreeksexpressie die de subtekenreeksen en scheidingstekens bevat. Als expressie leeg is (""), geeft Split een lege matrix als resultaat, dus een matrix zonder elementen of gegevens.
scheidingsteken	Optioneel. Teken dat wordt gebruikt om het einde van subtekenreeksen aan te geven. Als dit argument niet is opgegeven, wordt aangenomen dat de spatie (" ") het scheidingsteken is. Als scheidingsteken leeg is, is het resultaat een matrix met slechts één element dat de hele expressietekenreeks bevat.
limiet	Optioneel. Het aantal terug te geven subtekenreeksen. –1 Betekent dat alle subtekenreeksen moeten worden teruggegeven.
vergelijk	Optioneel. Numerieke waarde die aangeeft welk soort vergelijking bij het evalueren van de subtekenreeksen moet worden uitgevoerd. Zie Instellingen voor een overzicht van de mogelijke waarden.
Instellingen

Het argument compare kan de volgende waarden bevatten:

Constante	Waarde	Beschrijving
vbUseCompareOption	–1	Voert een vergelijking uit, gebruik makend van de instelling van de instructie Option Compare.
vbBinaryCompare	0	Voert een binaire vergelijking uit.
vbTextCompare	1	Voert een tekstvergelijking uit.
vbDatabaseCompare	2	Alleen Microsoft Access. Voert een vergelijking uit op basis van de informatie in uw database.


StrReverse, functie

Beschrijving

Geeft een tekenreeks waarin de tekenvolgorde van een opgegeven tekenreeks is omgekeerd.

Syntaxis

StrReverse(expressie)

Het argument expressie is de tekenreeks waarvan de tekens moeten worden omgekeerd. Als expressie leeg is ("") is het resultaat een lege tekenreeks. Als expressie Null is, treedt een fout op.


WeekdayName, functie

Beschrijving

Geeft een tekenreeks die de opgegeven dag van de week weergeeft.

Syntaxis

WeekdayName(weekdag, afkorting, eerstedagvanweek)

De syntaxis van de functie WeekdayName bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
weekdag	Vereist. De numerieke aanduiding van de dag van de week. De numerieke waarde van een dag is afhankelijk van de instelling van eerstedagvanweek.
afkorting	Optioneel. Boole-waarde die aangeeft of de naam van de dag moet worden afgekort. Als dit argument is weggelaten, is False de standaardinstelling. Dit betekent dat de naam niet moet worden afgekort.
eerstedagvanweek	Optioneel. Numerieke waarde die de eerste dag van de week aangeeft. Zie Instellingen voor een overzicht van de mogelijke waarden.
Instellingen

Het argument eerstedagvanweek kan de volgende waarden bevatten:

Constante	Waarde	Beschrijving
vbUseSystem	0	Gebruikt de NLS (National Language Support) API-instelling.
vbSunday	1	zondag (standaardinstelling)
vbMonday	2	maandag
vbTuesday	3	dinsdag
vbWednesday	4	woensdag
vbThursday	5	donderdag
vbFriday	6	vrijdag
vbSaturday	7	zaterdag


Add, methode - Dictionary
Add, methode – Dictionary

Beschrijving

Voegt een sleutel- en itempaar aan een Dictionary-object toe.

Syntaxis

object.Add sleutel, item

De methode Add heeft de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een Dictionary-object.
key	Vereist. De sleutel die behoort bij het item dat wordt toegevoegd.
item	Vereist. Het item dat behoort bij de sleutel die wordt toegevoegd.
Notities

Als sleutel al bestaat, treedt een fout op.


Add, methode - Folders
Add, methode – Folders

Beschrijving

Voegt een nieuwe Map aan een collectie Folders toe.

Syntaxis

object.Add mapNaam

De methode Add heeft de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een Folders-object.
mapNaam	Vereist. De naam van de nieuwe Map die wordt toegevoegd.
Notities

Als mapNaam al bestaat, treedt een fout op.


BuildPath, methode

Beschrijving

Voegt een naam aan een bestaand pad toe.

Syntaxis

object.BuildPath(pad, naam)

De syntaxis van de methode BuildPath bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een FileSystemObject-object.
pad	Vereist. Bestaand pad waaraan naam wordt toegevoegd. Pad kan absoluut of relatief zijn, en hoeft geen bestaande map op te geven.
naam	Vereist. De naam die aan het bestaande pad wordt toegevoegd.
Notities

Indien nodig, plaatst de methode BuildPath een extra padscheidingsteken tussen het bestaande pad en de naam.


Close, methode

Beschrijving

Sluit een geopend TextStream-bestand.

Syntaxis

object.Close

Het object is altijd de naam van een TextStream-object.


Copy, methode

Beschrijving

Kopieert een opgegeven bestand of map van de ene plaats naar de andere.

Syntaxis

object.Copy bestemming[, overschrijven]

De syntaxis van de methode Copy bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een File- of Folder-object.
Bestemming	Vereist. De plaats waarnaar u het bestand of de map wilt kopiëren. Jokertekens zijn niet toegestaan.
overschrijven	Optioneel. Boole-waarde die True is (standaard) als bestaande bestanden of mappen moeten worden overschreven, en False als dat niet mag gebeuren.
Notities

De resultaten van de methode Copy voor een File of Folder zijn gelijk aan bewerkingen die worden uitgevoerd met FileSystemObject.CopyFile of FileSystemObject.CopyFolder, waarbij het bestand of de map waarnaar object verwijst, als een argument wordt doorgegeven. Met deze alternatieve methoden kunt u echter meer bestanden of mappen tegelijk kopiëren.


CopyFile, methode

Beschrijving

Kopieert een of meer bestanden van de ene locatie naar de andere.

Syntaxis

object.CopyFile bron, bestemming[, overschrijven]

De syntaxis van de methode CopyFile bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Het object is altijd de naam van een FileSystemObject-object.
bron	Vereist. Bestandsspecificatie die jokertekens mag bevatten voor een of meer bestanden die u wilt kopiëren.
Bestemming	Vereist. De plaats waar u het bestand of de bestanden uit bron naartoe wilt kopiëren. Jokertekens zijn niet toegestaan.
overschrijven	Optioneel. Boole-waarde die aangeeft of bestaande bestanden moet worden overschreven. Als dit argument True is, worden bestanden overschreven. Als het argument False is, worden ze niet overschreven. De standaardinstelling is True. CopyFile mislukt als voor bestemming het kenmerk alleen-lezen is ingesteld, ongeacht de waarde van overschrijven.
Notities

Jokertekens kunt u alleen gebruiken in het laatste padgedeelte van het argument bron. U mag bijvoorbeeld het volgende opgeven:

FileSystemObject.CopyFile "c:\mijndocumenten\brieven\*.doc", "c:\tmpmap\"

Het volgende is echter niet toegestaan:

FileSystemObject.CopyFile "c:\mijndocumenten\*\R1???97.xls", "c:\tmpmap"

Als bron jokertekens bevat of bestemming met een padscheidingsteken (\) eindigt, wordt verondersteld dat bestemming een bestaande map is waarnaar gelijknamige bestanden worden gekopieerd. Anders wordt verondersteld dat bestemming de naam is van een bestand dat nog moet worden gemaakt. In beide gevallen kunnen drie dingen gebeuren wanneer een afzonderlijk bestand wordt gekopieerd.

•	Als bestemming niet bestaat, wordt bron gekopieerd. Dit is doorgaans het geval.

•	Als bestemming een bestaand bestand is, treedt een fout op indien is False is. Anders wordt geprobeerd om bron over het bestaande bestand heen te schrijven.

•	Als bestemming een directory is, treedt een fout op.

Ook wanneer er geen enkel bestand overeenkomt met een bron met jokertekens treedt een fout. De methode CopyFile stopt bij de eerste fout die zich voordoet. Er wordt geen poging ondernomen om wijzigingen terug te draaien of ongedaan te maken die zijn uitgevoerd voordat de fout optrad.


CopyFolder, methode

Beschrijving

Kopieert een map recursief van de ene plaats naar de andere.

Syntaxis

object.CopyFolder bron, bestemming[, overschrijven]

De syntaxis van de methode CopyFolder bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een FileSystemObject-object.
bron	Vereist. Mapspecificatie die jokertekens mag bevatten voor een of meer mappen die u wilt kopiëren.
Bestemming	Vereist. De plaats waar u de map of mappen uit bron naartoe wilt kopiëren. Jokertekens zijn niet toegestaan.
overschrijven	Optioneel. Boole-waarde die aangeeft of bestaande mappen moet worden overschreven. Als dit argument True is, worden bestanden overschreven. Als het argument False is, worden ze niet overschreven. De standaardinstelling is True.
Notities

Jokertekens kunt u alleen gebruiken in het laatste padgedeelte van het argument bron. U mag bijvoorbeeld het volgende opgeven:

FileSystemObject.CopyFolder "c:\mijndocumenten\brieven\*", "c:\tmpmap\"

Het volgende is echter niet toegestaan:

FileSystemObject.CopyFolder "c:\mijndocumenten\*\*", "c:\tmpmap\"

Als bron jokertekens bevat of bestemming met een padscheidingsteken (\) eindigt, wordt verondersteld dat bestemming een bestaande map is waarnaar gelijknamige mappen en submappen worden gekopieerd. Anders wordt verondersteld dat bestemming de naam is van een map die nog moet worden gemaakt. In beide gevallen kunnen vier dingen gebeuren wanneer een afzonderlijke map wordt gekopieerd.

•	Als bestemming niet bestaat, wordt de bronmap met de hele inhoud gekopieerd. Dit is doorgaans het geval.

•	Als bestemming een bestaand bestand is, treedt een fout op.

•	Als bestemming een directory is, wordt geprobeerd de map met de hele inhoud te kopiëren. Als een bestand in de map bron al in bestemming voorkomt, treedt een fout op als overschrijven False is. Anders wordt geprobeerd om het bestand over het bestaande bestand heen te schrijven.

•	Als bestemming een alleen-lezen directory is, treedt een fout op als wordt geprobeerd om een bestaand alleen-lezen bestand naar die directory te kopiëren terwijl overschrijven False is.

Ook wanneer er geen enkele map overeenkomt met een bron met jokertekens treedt een fout.

De methode CopyFolder stopt bij de eerste fout die zich voordoet. Er wordt geen poging ondernomen om wijzigingen terug te draaien die zijn uitgevoerd voordat de fout optrad.


CreateFolder, methode

Beschrijving

Maakt een map.

Syntaxis

object.CreateFolder(mapnaam)

De syntaxis van de methode CreateFolder bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een FileSystemObject-object.
mapnaam	Vereist. Tekenreeksexpressie die de naam van de map aangeeft die u wilt maken.
Notities

Als genoemde map al bestaat, treedt een fout op.


CreateTextFile, methode

Beschrijving

Maakt een opgegeven bestandsnaam en geeft een TextStream-object terug dat u kunt gebruiken om uit het bestand te lezen of ernaartoe te schrijven.

Syntaxis

object.CreateTextFile(bestandsnaam[, overschrijven[, unicode]])

De syntaxis van de methode CreateTextFile bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een FileSystemObject- of Folder-object.
Bestandsnaam	Vereist. Tekenreeksexpressie die de naam van het bestand aangeeft dat u wilt maken.
overschrijven	Optioneel. Boole-waarde die aangeeft of een bestaand bestand kan worden overschreven. De waarde is True als het bestand kan worden overschreven en False als dat niet mag gebeuren. Als dit argument is weggelaten, worden bestaande bestanden niet overschreven.
unicode	Optioneel. Boole-waarde die aangeeft of het bestand als een Unicode- of ASCII-bestand wordt gemaakt. De waarde is True als het bestand wordt gemaakt als een Unicode-bestand, en False als het als een ASCII-bestand wordt gemaakt. Als dit argument is weggelaten, wordt uitgegaan van een ASCII-bestand.
Notities

De volgende code illustreert hoe u met de methode CreateTextFile een tekstbestand maakt en opent.

Sub CreateAfile

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set a = fs.CreateTextFile("c:\testbestand.txt", True)

    a.WriteLine("Dit is een test.")

    a.Close

End Sub

Als het argument overschrijven False is of niet is opgegeven, treedt een fout op voor een bestaande bestandsnaam.


Delete, methode

Beschrijving

Verwijdert een opgegeven bestand of map.

Syntaxis

object.Delete force

De syntaxis van de methode Delete bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een File- of Folder-object.
force	Optioneel. Boole-waarde die True is als bestanden of mappen waarvoor het kenmerk alleen-lezen is ingesteld, moeten worden verwijderd, en False is (standaard) als ze dan niet mogen worden verwijderd.
Notities

Een fout treedt op als het opgegeven bestand of de map niet bestaat.

De resultaten van de methode Delete voor een Bestand of Map zijn gelijk aan bewerkingen die worden uitgevoerd met FileSystemObject.DeleteFile of FileSystemObject.DeleteFolder.

De methode Delete maakt geen onderscheid tussen mappen met inhoud en mappen zonder inhoud. De opgegeven map wordt verwijderd, ook als deze niet leeg.


DeleteFile, methode

Beschrijving

Verwijdert een opgegeven bestand.

Syntaxis

object.DeleteFile bestandsspec[, force]

De syntaxis van de methode DeleteFile bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een FileSystemObject-object.
bestandsspec	Vereist. De naam van het te verwijderen bestand. De bestandsspec mag in het laatste deel van het pad jokertekens bevatten.
force	Optioneel. Boole-waarde die True is als bestanden waarvoor het kenmerk alleen-lezen is ingesteld, moeten worden verwijderd, en False is (standaard) als ze dan niet mogen worden verwijderd.
Notities

Een fout treedt of als de genoemde bestanden niet worden gevonden. De methode DeleteFile stopt bij de eerste fout die zich voordoet. Er wordt geen poging ondernomen om wijzigingen terug te draaien of ongedaan te maken die zijn uitgevoerd voordat de fout optrad.


DeleteFolder, methode

Beschrijving

Verwijdert de opgegeven map en de inhoud ervan.

Syntaxis

object.DeleteFolder mapspec[, force]

De syntaxis van de methode DeleteFolder bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een FileSystemObject-object.
mapspec	Vereist. De naam van de te verwijderen map. De mapspec mag in het laatste deel van het pad jokertekens bevatten.
force	Optioneel. Boole-waarde die True is als mappen waarvoor het kenmerk alleen-lezen is ingesteld, moeten worden verwijderd, en False is (standaard) als ze dan niet mogen worden verwijderd.
Notities

De methode DeleteFolder maakt geen onderscheid tussen mappen met inhoud en mappen zonder inhoud. De opgegeven map wordt verwijderd, ook als deze niet leeg.

Een fout treedt of als de genoemde mappen niet worden gevonden. De methode DeleteFolder stopt bij de eerste fout die zich voordoet. Er wordt geen poging ondernomen om wijzigingen terug te draaien of ongedaan te maken die zijn uitgevoerd voordat de fout optrad.


DriveExists, methode

Beschrijving

Geeft True als het opgegeven station bestaat en False als het niet bestaat.

Syntaxis

object.DriveExists(stationsspec)

De syntaxis van de methode DriveExists bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een FileSystemObject-object.
stationsspec	Vereist. Een stationsaanduiding of een volledige padspecificatie.
Notities

Voor stations met verwijderbare media resulteert de methode DriveExists in de waarde True, zelfs als er geen media aanwezig zijn. Gebruik de eigenschap IsReady van het Drive-object om te bepalen of een station gereed is.


Exists, methode

Beschrijving

Geeft True als een opgegeven sleutel in het Dictionary-object bestaat, en False als dat niet het geval is.

Syntaxis

object.Exists(sleutel)

De syntaxis van de methode Exists bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een Dictionary-object.
sleutel	Vereist. De sleutelwaarde die in het Dictionary-object moet worden gezocht.


FileExists, methode

Beschrijving

Geeft True als het opgegeven bestand bestaat en False als het niet bestaat.

Syntaxis

object.FileExists(bestandsspec)

De syntaxis van de methode FileExists bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een FileSystemObject-object.
bestandsspec	Vereist. De naam van het bestand waarvan wordt bepaald of het bestaat. Als niet wordt verwacht dat het bestand in de huidige map bestaat, moet een volledige padspecificatie (absoluut of relatie) worden opgegeven.


FolderExists, methode

Beschrijving

Geeft True als de opgegeven map bestaat en False als het niet bestaat.

Syntaxis

object.FolderExists(mapspec)

De syntaxis van de methode FolderExists bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een FileSystemObject-object.
mapspec	Vereist. De naam van de map waarvan wordt bepaald of deze bestaat. Als niet wordt verwacht dat de map in de huidige map bestaat, moet een volledige padspecificatie (absoluut of relatie) worden opgegeven.


GetAbsolutePathName, methode

Beschrijving

Geeft een volledig en ondubbelzinnig pad vanuit een gegeven padspecificatie.

Syntaxis

object.GetAbsolutePathName(padspec)

De syntaxis van de methode GetAbsolutePathName bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een FileSystemObject-object.
padspec	Vereist. Padspecificatie om een volledig en ondubbelzinnig pad op te geven.
Notities

Een pad is volledig en ondubbelzinnig als het een volledige verwijzing bevat vanuit de hoofdmap van het opgegeven station. Een volledig pad mag alleen eindigen met een padscheidingsteken (\) als het de hoofdmap van een toegewezen station opgeeft.

Stel dat de huidige directory c:\mijndocumenten/rapporten is, dan illustreert de volgende tabel het gedrag van de methode GetAbsolutePathName:

padspec	Resulterend pad
"c:"	"c:\mijndocumenten\rapporten"
"c:.."	"c:\mijndocumenten"
"c:\\\"	"c:\"
"c:*.*\mei97"	"c:\mijndocumenten\rapporten\*.*\mei97"
"regio1"	"c:\mijndocumenten\rapporten\regio1"
"c:\..\..\mijndocumenten"	"c:\mijndocumenten"


GetBaseName, methode

Beschrijving

Geeft een tekenreeks die de basisnaam bevat van het laatste onderdeel in een pad, min de bestandsextensie.

Syntaxis

object.GetBaseName(pad)

De syntaxis van de methode GetBaseName bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een FileSystemObject-object.
pad	Vereist. De padspecificatie naar het onderdeel waarvan de basisnaam moet worden teruggegeven.
Notities

De methode GetBaseName resulteert in een lege tekenreeks ("") als geen enkel onderdeel overeenkomt met het argument pad.

Opmerking   De methode GetBaseName werkt alleen voor de opgegeven tekenreeks pad. Er wordt niet geprobeerd het pad op te lossen, of gecontroleerd of het opgegeven pad bestaat.


GetDrive, methode

Beschrijving

Resulteert in een Drive-object dat correspondeert met het station in een opgegeven pad.

Syntaxis

object.GetDrive stationsspec

De syntaxis van de methode GetDrive bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een FileSystemObject-object.
stationsspec	Vereist. Het argument stationsspec kan een stationsaanduiding (c), een stationsaanduiding met een dubbele punt (c:), een stationsaanduiding met een dubbele punt en een padscheidingsteken (c:\) of een specificatie van een gedeeld netwerkstation (\\computer2\share1) zijn.
Notities

Voor gedeelde netwerkshares wordt gecontroleerd of de share bestaat.

Een fout treedt op als stationsspec niet conformeert met een van de geaccepteerde vormen of niet bestaat.

Als u de methode GetDrive activeert voor een normale padtekenreeks, gebruikt u de volgende sequentie om een tekenreeks op te halen die u als stationsspec kunt gebruiken:

DriveSpec = GetDriveName(GetAbsolutePathName(Pad))


GetDriveName, methode

Beschrijving

Geeft een tekenreeks die de naam van het station voor een opgegeven pad bevat.

Syntaxis

object.GetDriveName(pad)

De syntaxis van de methode GetDriveName bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een FileSystemObject-object.
pad	Vereist. De padspecificatie naar het onderdeel waarvan de stationsnaam moet worden teruggegeven.
Notities

De methode GetDriveName resulteert in een lege tekenreeks ("") als het station niet kan worden bepaald.

Opmerking   De methode GetDriveName werkt alleen voor de opgegeven tekenreeks pad. Er wordt niet geprobeerd het pad op te lossen, of gecontroleerd of het opgegeven pad bestaat.


GetExtensionName, methode

Beschrijving

Geeft een tekenreeks die de extensie bevat van het laatste deel in een pad.

Syntaxis

object.GetExtensionName(pad)

De syntaxis van de methode GetExtensionName bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een FileSystemObject-object.
pad	Vereist. De padspecificatie naar het onderdeel waarvan de extensie moet worden teruggegeven.
Notities

Voor netwerkstations wordt de hoofddirectory (\) ook als een onderdeel beschouwd.

De methode GetExtensionName resulteert in een lege tekenreeks ("") als geen enkel onderdeel overeenkomt met het argument pad.


GetFile, methode

Beschrijving

Resulteert in een File-object dat correspondeert met het bestand in een opgegeven pad.

Syntaxis

object.GetFile(bestandsspec)

De syntaxis van de methode GetFile bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een FileSystemObject-object.
bestandsspec	Vereist. De bestandsspec is het pad (absoluut of relatief) naar een gegeven bestand.
Notities

Een fout treedt op als het opgegeven bestand niet bestaat.


GetFileName, methode

Beschrijving

Geeft het laatste onderdeel van het opgegeven pad dat geen deel uitmaakt van de stationsaanduiding.

Syntaxis

object.GetFileName(padspec)

De syntaxis van de methode GetFileName bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een FileSystemObject-object.
padspec	Vereist. Het pad (absoluut of relatief) naar een gegeven bestand.
Notities

De methode GetFileName geeft een lege tekenreeks ("") als padspec niet eindigt met het genoemde onderdeel.

Opmerking   De methode GetFileName werkt alleen voor de opgegeven tekenreeks pad. Er wordt niet geprobeerd het pad op te lossen, of gecontroleerd of het opgegeven pad bestaat.


GetFolder, methode

Beschrijving

Resulteert in een Folder-object dat correspondeert met de map in een opgegeven pad.

Syntaxis

object.GetFolder(mapspec)

De syntaxis van de methode GetFolder bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een FileSystemObject-object.
mapspec	Vereist. De mapspec is het pad (absoluut of relatief) naar een gegeven map.
Notities

Een fout treedt op als de opgegeven map niet bestaat.


GetParentFolderName, methode

Beschrijving

Geeft een tekenreeks met de naam van de bovenliggende map van het laatste onderdeel in een opgegeven pad.

Syntaxis

object.GetParentFolderName(pad)

De syntaxis van de methode GetParentFolderName bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een FileSystemObject-object.
pad	Vereist. De padspecificatie naar het onderdeel waarvan de naam van de bovenliggende map moet worden teruggegeven.
Notities

De methode GetParentFolderName geeft een lege tekenreeks ("") als er geen map is boven het onderdeel dat in het argument pad is opgegeven.

Opmerking   De methode GetParentFolderName werkt alleen voor de opgegeven tekenreeks pad. Er wordt niet geprobeerd het pad op te lossen, of gecontroleerd of het opgegeven pad bestaat.


GetSpecialFolder, methode

Beschrijving

Geeft de opgegeven speciale map.

Syntaxis

object.GetSpecialFolder(mapspec)

De syntaxis van de methode GetSpecialFolder bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een FileSystemObject-object.
mapspec	Vereist. De naam van de speciale map die moet worden teruggegeven. Kan een van de constanten zijn die in Instellingen wordt beschreven.
Instellingen

Het argument mapspec kan de volgende waarden bevatten:

Constante	Waarde	Beschrijving
WindowsFolder	0	De map Windows bevat bestanden die door het besturingssysteem Windows zijn geïnstalleerd.
SystemFolder	1	De map System bevat bibliotheken, lettertypen en stuurprogramma's.
TemporaryFolder	2	De map Temp wordt gebruikt om tijdelijke bestanden op te slaan. Het pad hiernaartoe vindt u in de omgevingsvariabele TMP.


GetTempName, methode

Beschrijving

Geeft een willekeurig gegenereerde naam van een tijdelijk bestand of een tijdelijke map, die nuttig is voor het uitvoeren van bewerkingen waarvoor een tijdelijk bestand of een tijdelijke map nodig is.

Syntaxis

object.GetTempName

Het optionele object is altijd de naam van een FileSystemObject-object.

Notities

De methode GetTempName maakt geen bestanden. De methode verstrekt alleen de naam van een tijdelijk bestand. U kunt deze naam met CreateTextFile gebruiken om een bestand te maken.


Items, methode

Beschrijving

Geeft een matrix die alle items in een Dictionary-object bevat.

Syntaxis

object.Items

Het object is altijd de naam van een Dictionary-object.

Notities

De volgende code illustreert het gebruik van de methode Items.

Dim a, d, i       'Maakt enkele variabelen

Set d = CreateObject("Scripting.Dictionary")

d.Add "a", "Athene"     'Voegt enkele sleutels en items toe

d.Add "b", "Belgrado"

d.Add "c", "Caïro"

a = d.Items       'Leest de items

For i = 0 To d.Count -1 'Doorloopt de matrix

    Print a(i)    'Toont item

Next

...


Keys, methode

Beschrijving

Geeft een matrix die alle bestaande sleutels in een Dictionary-object bevat.

Syntaxis

object.Keys

Het object is altijd de naam van een Dictionary-object.

Notities

De volgende code illustreert het gebruik van de methode Keys.

Dim a, d, i       'Maakt enkele variabelen

Set d = CreateObject("Scripting.Dictionary")

d.Add "a", "Athene"     'Voegt enkele sleutels en items toe

d.Add "b", "Belgrado"

d.Add "c", "Caïro"

a = d.keys        'Leest de sleutels

For i = 0 To d.Count -1 'Doorloopt de matrix

    Print a(i)    Toont sleutel

Next

...


Move, methode

Beschrijving

Verplaatst een opgegeven bestand of map van de ene plaats naar de andere.

Syntaxis

object.Move bestemming

De syntaxis van de methode Move bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een File- of Folder-object.
bestemming	Vereist. De plaats waarnaar u het bestand of de map wilt verplaatsen. Jokertekens zijn niet toegestaan.
Notities

De resultaten van de methode Move voor een Bestand of Map zijn hetzelfde als voor bewerkingen die worden uitgevoerd met FileSystemObject.MoveFile of FileSystemObject.MoveFolder. Met de alternatieve methoden kunt u echter meer bestanden of mappen tegelijk verplaatsen.


MoveFile, methode

Beschrijving

Verplaatst een of meer bestanden van de ene locatie naar de andere.

Syntaxis

object.MoveFile bron, bestemming

De syntaxis van de methode MoveFile bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een FileSystemObject-object.
bron	Vereist. Het pad naar het bestand dat of de bestanden die u wilt verplaatsen. Het argument bron mag alleen in het laatste deel van het pad jokertekens bevatten.
bestemming	Vereist. Het pad waar u het bestand of de bestanden naartoe wilt verplaatsen. Het argument bestemming mag geen jokertekens bevatten.
Notities

Als bron jokertekens bevat of bestemming met een padscheidingsteken (\) eindigt, wordt verondersteld dat bestemming een bestaande map opgeeft waarnaar gelijknamige bestanden worden verplaatst. Anders wordt verondersteld dat bestemming de naam is van een doelbestand dat nog moet worden gemaakt. In beide gevallen kunnen drie dingen gebeuren wanneer een afzonderlijk bestand wordt verplaatst.

•	Als bestemming niet bestaat, wordt het bestand verplaatst. Dit is doorgaans het geval.

•	Als bestemming een bestaand bestand is, treedt een fout op.

•	Als bestemming een directory is, treedt een fout op.

Ook wanneer er geen enkel bestand overeenkomt met een bron met jokertekens treedt een fout. De methode MoveFile stopt bij de eerste fout die zich voordoet. Er wordt geen poging ondernomen om wijzigingen terug te draaien die zijn uitgevoerd voordat de fout optrad.

Belangrijk   Met deze methode kunt u bestanden alleen tussen volumes verplaatsen als dit door het besturingssysteem wordt ondersteund.


MoveFolder, methode

Beschrijving

Verplaatst een of meer mappen van de ene locatie naar de andere.

Syntaxis

object.MoveFolder bron, bestemming

De syntaxis van de methode MoveFolder bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een FileSystemObject-object.
bron	Vereist. Het pad naar de map of mappen die u wilt verplaatsen. Het argument bron mag alleen in het laatste deel van het pad jokertekens bevatten.
bestemming	Vereist. Het pad waar de map of mappen naartoe moeten worden verplaatst. Het argument bestemming mag geen jokertekens bevatten.
Notities

Als bron jokertekens bevat of bestemming met een padscheidingsteken (\) eindigt, wordt verondersteld dat bestemming een bestaande map opgeeft waarnaar gelijknamige bestanden worden verplaatst. Anders wordt verondersteld dat bestemming de naam is van een doelmap die nog moet worden gemaakt. In beide gevallen kunnen drie dingen gebeuren wanneer een afzonderlijke map wordt verplaatst.

•	Als bestemming niet bestaat, wordt de map verplaatst. Dit is doorgaans het geval.

•	Als bestemming een bestaand bestand is, treedt een fout op.

•	Als bestemming een directory is, treedt een fout op.

Ook wanneer er geen enkel bestand overeenkomt met een bron met jokertekens treedt een fout. De methode MoveFolder stopt bij de eerste fout die zich voordoet. Er wordt geen poging ondernomen om wijzigingen terug te draaien die zijn uitgevoerd voordat de fout optrad.

Belangrijk   Met deze methode kunt u mappen alleen tussen volumes verplaatsen als dit door het besturingssysteem wordt ondersteund.


OpenAsTextStream, methode

Beschrijving

Opent een opgegeven bestandsnaam en geeft een TextStream-object terug dat u kunt gebruiken om uit het bestand te lezen, ernaartoe te schrijven of iets aan het bestand toe te voegen.

Syntaxis

object.OpenAsTextStream([iomodus, [indeling]])

De syntaxis van de methode OpenAsTextStream bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een File-object.
iomodus	Optioneel. Geeft de invoer-/uitvoermodus aan. Kan een van de volgende constanten zijn: ForReading, ForWriting of ForAppending.
indeling	Optioneel. Een van de drie Tristate-waarden die worden gebruikt om de indeling van een geopend bestand aan te geven. Als dit argument is weggelaten, wordt het bestand als ASCII geopend.
Instellingen

Het argument iomodus kan de volgende waarden bevatten:

Constante	Waarde	Beschrijving
ForReading	1	Opent een bestand alleen om te lezen. U kunt geen gegevens naar het bestand wegschrijven.
ForWriting	2	Opent een bestand om gegevens naartoe te schrijven. Als een bestand met dezelfde naam bestaat, wordt de vorige inhoud overschreven.
ForAppending	8	Opent een bestand en schrijft tot aan het einde van het bestand.
Het argument indeling kan de volgende waarden bevatten:

Constante	Waarde	Beschrijving
TristateUseDefault	–2	Opent het bestand met de systeemstandaard.
TristateTrue	–1	Opent het bestand als Unicode.
TristateFalse	0	Opent het bestand als ASCII.
Notities

De methode OpenAsTextStream biedt dezelfde functionaliteit als de methode OpenTextFile van het FileSystemObject. Bovendien kunt u de methode OpenAsTextStream ook gebruiken om gegevens naar een bestand te schrijven.

De volgende code illustreert het gebruik van de methode OpenAsTextStream:

Sub TextStreamTest

    Const ForReading = 1, ForWriting = 2, ForAppending = 3

    Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0

    Dim fs, f, ts, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    fs.CreateTextFile "test1.txt"      'Maakt een bestand

    Set f = fs.GetFile("test1.txt")

    Set ts = f.OpenAsTextStream(ForWriting, TristateUseDefault)

    ts.Write "Hallo allemaal"

    ts.Close

    Set ts = f.OpenAsTextStream(ForReading, TristateUseDefault)

    s = ts.ReadLine

    MsgBox s

    ts.Close

End Sub


OpenTextFile, methode

Beschrijving

Opent een opgegeven bestandsnaam en geeft een TextStream-object terug dat u kunt gebruiken om uit het bestand te lezen of iets aan het bestand toe te voegen.

Syntaxis

object.OpenTextFile(bestandsnaam[, iomodus[, maken[, indeling]]])

De syntaxis van de methode OpenTextFile bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een FileSystemObject-object.
Bestandsnaam	Vereist. Tekenreeksexpressie die de naam van het bestand aangeeft dat u wilt openen.
iomodus	Optioneel. Geeft de invoer/uitvoermodus aan. Kan een van de twee constanten, ForReading of ForAppending zijn.
maken	Optioneel. Boole-waarde die aangeeft of een nieuw bestand moet worden gemaakt als de opgegeven bestandsnaam niet bestaat. De waarde is True als een nieuw bestand moet worden gemaakt, en False als het bestand niet moet worden gemaakt. De standaardinstelling is False.
indeling	Optioneel. Een van de drie Tristate-waarden die worden gebruikt om de indeling van een geopend bestand aan te geven. Als dit argument is weggelaten, wordt het bestand als ASCII geopend.
Instellingen

Het argument iomodus kan een van de volgende waarden bevatten:

Constante	Waarde	Beschrijving
ForReading	1	Opent een bestand alleen om te lezen. U kunt geen gegevens naar het bestand wegschrijven.
ForAppending	8	Opent een bestand en schrijft tot aan het einde van het bestand.
Het argument indeling kan de volgende waarden bevatten:

Constante	Waarde	Beschrijving
TristateUseDefault	–2	Opent het bestand met de systeemstandaard.
TristateTrue	–1	Opent het bestand als Unicode.
TristateFalse	0	Opent het bestand als ASCII.
Notities

De volgende code illustreert het gebruik van de methode OpenTextFile om een bestand te openen waaraan tekst wordt toegevoegd:

Sub OpenTextFileTest

    Const ForReading = 1, ForWriting = 2, ForAppending = 3

    Dim fs, f

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.OpenTextFile("c:\testbestand.txt", ForAppending,TristateFalse)

    f.Write "Hallo allemaal!"

    f.Close

End Sub


Read, methode

Beschrijving

Leest een opgegeven aantal tekens uit een TextStream-bestand en geeft de resulterende tekenreeks als resultaat.

Syntaxis

object.Read(tekens)

De syntaxis van de methode Read bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een TextStream-object.
tekens	Vereist. Aantal tekens dat u uit het bestand wilt lezen.


ReadAll, methode

Beschrijving

Leest een volledig TextStream-bestand en geeft de resulterende tekenreeks terug.

Syntaxis

object.ReadAll

Het object is altijd de naam van een TextStream-object.

Notities

Voor grote bestanden is het gebruik van de methode ReadAll een verspilling van geheugenbronnen. Gebruik andere technieken om een bestand in te voeren, bijvoorbeeld het regel voor regel lezen van een bestand.


ReadLine, methode

Beschrijving

Leest een hele regel (tot aan, maar niet tot en met het nieuwe-regelteken) uit een TextStream-bestand en geeft de resulterende tekenreeks weer.

Syntaxis

object.ReadLine

Het argument object is altijd de naam van een TextStream-object.


Remove, methode

Beschrijving

Verwijdert een sleutel- en itempaar uit een Dictionary-object.

Syntaxis

object.Remove(sleutel)

De syntaxis van de methode Remove bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een Dictionary-object.
sleutel	Vereist. Sleutel die bij het sleutel/itempaar hoort dat u uit het Dictionary-object wilt verwijderen.
Notities

Een fout treedt op als de opgegeven sleutel/itempaar niet bestaat.

De volgende code illustreert het gebruik van de methode Remove.

Dim a, d, i       'Maakt enkele variabelen

Set d = CreateObject("Scripting.Dictionary")

d.Add "a", "Athene"     'Voegt enkele sleutels en items toe

d.Add "b", "Belgrado"

d.Add "c", "Caïro"

...

a = d.Remove()    'Verwijdert tweede paar


RemoveAll, methode

Beschrijving

De methode RemoveAll verwijdert alle sleutel/itemparen uit een Dictionary-object.

Syntaxis

object.RemoveAll

Het object is altijd de naam van een Dictionary-object.

Notities

De volgende code illustreert het gebruik van de methode RemoveAll.

Dim a, d, i       'Maakt enkele variabelen

Set d = CreateObject("Scripting.Dictionary")

d.Add "a", "Athene"     'Voegt enkele sleutels en items toe

d.Add "b", "Belgrado"

d.Add "c", "Caïro"

...

a = d.RemoveAll   'Wist de woordenlijst


Skip, methode

Beschrijving

Slaat een opgegeven aantal tekens over bij het lezen van een TextStream-bestand.

Syntaxis

object.Skip(tekens)

De syntaxis van de methode Skip bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een TextStream-object.
tekens	Vereist. Aantal tekens dat bij het lezen van een bestand moet worden overgeslagen.
Notities

Overgeslagen tekens worden verwijderd.


SkipLine, methode

Beschrijving

Slaat de volgende regel over bij het lezen van een TextStream-bestand.

Syntaxis

object.SkipLine

Het object is altijd de naam van een TextStream-object.

Notities

Het overslaan van een regel betekent dat alle tekens in een regel tot en met het volgende nieuwe-regelteken worden gelezen en verwijderd.

Een fout treedt op als het bestand niet voor lezen is geopend.


Write, methode

Beschrijving

Schrijft een opgegeven tekenreeks naar een TextStream-bestand.

Syntaxis

object.Write(tekenreeks)

De syntaxis van de methode Write bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een TextStream-object.
tekenreeks	Vereist. De tekst die u naar het bestand wilt schrijven.
Notities

De opgegeven tekenreeksen worden zonder tussenliggende spaties of tekens tussen elke reeks naar het bestand geschreven. Gebruik de methode WriteLine om een nieuwe-regelteken of een tekenreeks die met een nieuwe-regelteken eindigt te schrijven.


WriteBlankLines, methode

Beschrijving

Schrijft een opgegeven aantal nieuwe-regeltekens naar een TextStream-bestand.

Syntaxis

object.WriteBlankLines(regels)

De syntaxis van de methode WriteBlankLines bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
object	Vereist. Is altijd de naam van een TextStream-object.
regels	Vereist. Het aantal nieuwe-regeltekens dat u naar het bestand wilt schrijven.


WriteLine, methode

Beschrijving

Schrijft een opgegeven tekenreeks en een nieuwe-regelteken naar een TextStream-bestand.

Syntaxis

object.WriteLine([tekenreeks])

De syntaxis van de methode WriteLine bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
object	Vereist. Is altijd de naam van een TextStream-object.
tekenreeks	Optioneel. De tekst die u naar het bestand wilt schrijven. Als dit argument is weggelaten, wordt alleen een nieuwe-regelteken naar het bestand geschreven.


Dictionary, object

Beschrijving

Object dat gegevenssleutel/itemparen opslaat.

Syntaxis

Scripting.Dictionary

Notities

Een Dictionary-object is het equivalent van een PERL associatieve matrix. Items, die uit elke soort gegevens kunnen bestaan, worden in de matrix opgeslagen. Elk item wordt aan een unieke sleutel gekoppeld. De sleutel wordt gebruikt om een afzonderlijk item op te halen en is doorgaans een geheel getal of een tekenreeks, maar kan in principe alles zijn behalve een matrix.

De volgende code illustreert hoe u een Dictionary-object maakt:

Dim d       'Maakt een variabele

Set d = CreateObject(Scripting.Dictionary)

d.Add "a", "Athene"     'Voegt enkele sleutels en items toe

d.Add "b", "Belgrado"

d.Add "c", "Caïro"

...


Drive, object

Beschrijving

Verschaft toegang tot de eigenschappen van een bepaald schijfstation of een netwerkshare.

Notities

De volgende code illustreert hoe u het Drive-object gebruikt om stationseigenschappen te benaderen:

Sub ShowFreeSpace(drvPath)

    Dim fs, d, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(fs.GetDriveName(drvPath))

    s = "Drive " & UCase(drvPath) & " - "

    s = s & d.VolumeName  & vbCrLf

    s = s & "Vrije ruimte: " & FormatNumber(d.FreeSpace/1024, 0)

    s = s & " Kbytes"

    MsgBox s

End Sub


Drives, collectie

Beschrijving

Alleen-lezen collectie van alle beschikbare stations.

Notities

De media van verwijderbare media stations hoeven niet in het station te zijn geplaatst om in de collectie Drives te worden weergegeven.

De volgende code illustreert hoe u de collectie Drives ophaalt en de collectie doorloopt met de instructie For Each...Next:

Sub ShowDriveList

    Dim fs, d, dc, s, n

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set dc = fs.Drives

    For Each d in dc

        s = s & d.DriveLetter & " - "

        If d.DriveType = Remote Then

      n = d.ShareName

        Else

      n = d.VolumeName

        End If

        s = s & n & vbCrLf

    Next

    MsgBox s

End Sub


File, object

Beschrijving

Biedt toegang tot alle eigenschappen van een bestand.

Notities

De volgende code illustreert hoe u een File-object verkrijgt en hoe u een van de eigenschappen daarvan bekijkt.

Sub ShowFileInfo(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(filespec)

    s = f.DateCreated

    MsgBox s

End Sub


Files, collectie

Beschrijving

Collectie van alle File-objecten in een map.

Notities

De volgende code illustreert hoe u een collectie Files ophaalt en de collectie doorloopt met de instructie For Each...Next:

Sub ShowFolderList(folderspec)

    Dim fs, f, f1, fc, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFolder(folderspec)

    Set fc = f.Files

    For Each f1 in fc

        s = s & f1.name

        s = s & vbCrLf

    Next

    MsgBox s

End Sub


FileSystemObject, object

Beschrijving

Verschaft toegang tot het bestandssysteem van een computer.

Syntaxis

Scripting.FileSystemObject

Notities

De volgende code illustreert hoe u met FileSystemObject een TextStream-object teruggeeft dat kan worden gelezen of beschreven:

Set fs = CreateObject("Scripting.FileSystemObject")

Set a = fs.CreateTextFile("c:\testfile.txt", True)

a.WriteLine("Dit is een test.")

a.Close

In de bovenstaande code resulteert CreateObject in het FileSystemObject (fs). De methode CreateTextFile maakt vervolgens het bestand als een TextStream-object (a) en de methode WriteLine schrijft een regel tekst naar het zojuist gemaakte tekstbestand. De methode Close maakt de buffer leeg en sluit het bestand.


Folder, object

Beschrijving

Biedt toegang tot alle eigenschappen van een map.

Notities

De volgende code illustreert hoe u een Folder-object verkrijgt en hoe u een van de eigenschappen daarvan teruggeeft:

Sub ShowFolderInfo(folderspec)

    Dim fs, f, s,

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFolder(folderspec)

    s = f.DateCreated

    MsgBox s

End Sub


Folders, collectie

Beschrijving

Collectie van alle Folder-objecten die in een Folder-object zijn opgeslagen.

Notities

De volgende code illustreert hoe u een collectie Folders ophaalt en de collectie doorloopt met de instructie For Each...Next:

Sub ShowFolderList(folderspec)

    Dim fs, f, f1, fc, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFolder(folderspec)

    Set fc = f.SubFolders

    For Each f1 in fc

        s = s & f1.name

        s = s & vbCrLf

    Next

    MsgBox s

End Sub


TextStream, object

Beschrijving

Vergemakkelijkt de sequentiële toegang tot een bestand.

Syntaxis

TextStream.{eigenschap | methode}

De argumenten eigenschap en methode kunnen elke eigenschap of methode zijn die aan het TextStream-object is gekoppeld. In de werkelijke toepassing wordt TextStream vervangen door een plaatsvervangende variabele die het TextStream-object voorstelt dat door FileSystemObject is teruggegeven.

Notities

In de volgende code is a het TextStream-object dat is teruggegeven door de methode CreateTextFile op het FileSystemObject:

Set fs = CreateObject("Scripting.FileSystemObject")

Set a = fs.CreateTextFile("c:\testfile.txt", True)

a.WriteLine("Dit is een test.")

a.Close

WriteLine en Close zijn twee methoden van het TextStream-object.


=, operator

Beschrijving

Wordt gebruikt om een waarde toe te wijzen aan een variabele of eigenschap.

Syntaxis

variabele = waarde

De syntaxis van de operator = bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
variabele	Een willekeurige variabele of opschrijfbare eigenschap.
waarde	Een willekeurig numeriek, letterlijk gegeven of een tekenreeks, een constante of expressie.
Notities

De naam aan de linkerzijde van het gelijkteken kan een eenvoudige scalaire variabele zijn of een element van een matrix. Eigenschappen aan de linkerzijde van het gelijkteken mogen alleen eigenschappen zijn die tijdens runtime opschrijfbaar zijn.


AtEndOfLine, eigenschap

Beschrijving

Alleen-lezen eigenschap die het resultaat True oplevert als de bestandspointer direct voor de regeleindemarkering in een TextStream-bestand staat. Het resultaat is False als dat niet het geval is.

Syntaxis

object.AtEndOfLine

Het object is altijd de naam van een TextStream-object.

Notities

De eigenschap AtEndOfLine heeft alleen betrekking op TextStream-bestanden die zijn geopend voor lezen. Anders treedt een fout op.

De volgende code illustreert het gebruik van de eigenschap AtEndOfLine:

Dim fs, a, retstring

Set fs = CreateObject("Scripting.FileSystemObject")

Set a = fs.OpenTextFile("c:\testbestand.txt", ForReading, False)

Do While a.AtEndOfLine <> True

    retstring = a.Read(1)

    ...

Loop

a.Close


AtEndOfStream, eigenschap

Beschrijving

Alleen-lezen eigenschap die het resultaat True oplevert als de bestandspointer zich aan het einde van een TextStream-bestand bevindt. Het resultaat is False als dat niet het geval is.

Syntaxis

object.AtEndOfStream

Het object is altijd de naam van een TextStream-object.

Notities

De eigenschap AtEndOfStream heeft alleen betrekking op TextStream-bestanden die zijn geopend voor lezen. Anders treedt een fout op.

De volgende code illustreert het gebruik van de eigenschap AtEndOfStream:

Dim fs, a, retstring

Set fs = CreateObject("Scripting.FileSystemObject")

Set a = fs.OpenTextFile("c:\testbestand.txt", ForReading, False)

Do While a.AtEndOfStream <> True

    retstring = a.ReadLine

    ...

Loop

a.Close


Attributes, eigenschap

Beschrijving

Stelt de kenmerken van bestanden of mappen in of geeft deze als resultaat. Lezen/schrijven of alleen-lezen, afhankelijk van het kenmerk.

Syntaxis

object.Attributes [= nieuwekenmerken]

De syntaxis van de eigenschap Attributes bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een File- of Folder-object.
nieuwekenmerken	Optioneel. Als dit argument is opgegeven, is nieuwekenmerken de nieuwe waarde voor de kenmerken van het opgegeven object.
Instellingen

Het argument nieuwekenmerken kan een van de volgende waarden hebben of een logische combinatie van de volgende waarden:

Constante	Waarde	Beschrijving
Normal	0	Normaal bestand. Er zijn geen kenmerken ingesteld.
ReadOnly	1	Alleen-lezen bestand. Het kenmerk is lezen/schrijven.
Hidden	2	Verborgen bestand. Het kenmerk is lezen/schrijven.
System	4	Systeembestand. Het kenmerk is lezen/schrijven.
Volume	8	Volumelabel van schijfstation. Kenmerk is alleen-lezen.
Directory	16	Map of directory. Kenmerk is alleen-lezen.
Archive	32	Het bestand is gewijzigd na de laatste reservekopie. Het kenmerk is lezen/schrijven.
Alias	64	Koppeling of snelkoppeling. Kenmerk is alleen-lezen.
Compressed	128	Gecomprimeerd bestand. Kenmerk is alleen-lezen.
Notities

De volgende code illustreert het gebruik van de eigenschap Attributes met een bestand:

Sub SetClearArchiveBit(filespec)

    Dim fs, f, r

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(fs.GetFileName(filespec))

    If f.attributes and 32 Then

        r = MsgBox("De bit Archive is ingesteld. Wilt u deze wissen?", vbYesNo, "Set/Clear Archive Bit")

        If r = vbYes Then

      f.attributes = f.attributes - 32

      MsgBox "Archive-bit is gewist."

        Else

      MsgBox "Archive-bit blijft ingesteld."

        End If

    Else

        r = MsgBox("De Archive-bit is niet ingesteld. Wilt u deze instellen?", vbYesNo, "Set/Clear Archive Bit")

        If r = vbYes Then

      f.attributes = f.attributes +32

      MsgBox "Archive-bit is ingesteld."

        Else

      MsgBox "Archive-bit blijft gewist."

        End If

    End If

End Sub


AvailableSpace, eigenschap

Beschrijving

Geeft de hoeveelheid schijfruimte waarover een gebruiker kan beschikken op het opgegeven station of de netwerk-share.

Syntaxis

object.AvailableSpace

Het object is altijd een Drive-object.

Notities

De waarde die de eigenschap AvailableSpace teruggeeft is doorgaans dezelfde als die de eigenschap FreeSpace teruggeeft. Verschillen tussen de twee waarden kunnen zich voordoen voor computersystemen die quota's ondersteunen.

De volgende code illustreert het gebruik van de eigenschap AvailableSpace:

Sub ShowAvailableSpace(drvPath)

    Dim fs, d, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(fs.GetDriveName(drvPath))

    s = "Drive " & UCase(drvPath) & " - "

    s = s & d.VolumeName  & vbCrLf

    s = s & "Beschikbare ruimte: " & FormatNumber(d.AvailableSpace/1024, 0)

    s = s & " Kbytes"

    MsgBox s

End Sub


Column, eigenschap

Beschrijving

Alleen-lezen eigenschap die het kolomnummer teruggeeft van de huidige tekenpositie in een TextStream-bestand.

Syntaxis

object.Column

Het object is altijd de naam van een TextStream-object.

Notities

Nadat een nieuwe-regelteken is geschreven, maar voordat een ander teken is geschreven, is Column gelijk aan 1.


CompareMode, eigenschap

Beschrijving

Stelt de vergelijkingsmodus in voor het vergelijken van tekenreekssleutels in een Dictionary-object en geeft deze modus als resultaat.

Syntaxis

object.CompareMode[ = vergelijk]

De eigenschap CompareMode heeft de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een Dictionary-object.
vergelijk	Optioneel. Als dit argument is opgegeven, is vergelijk een waarde die de vergelijkingsmodus weergeeft die wordt gebruikt door functies als StrComp.
Instellingen

Het argument vergelijk kan de volgende waarden bevatten:

Constante	Waarde	Beschrijving
vbUseCompareOption	–1	Voert een vergelijking uit, gebruik makend van de instelling van de instructie Option Compare.
vbBinaryCompare	0	Voert een binaire vergelijking uit.
vbTextCompare	1	Voert een tekstvergelijking uit.
vbDatabaseCompare	2	Alleen Microsoft Access. Voert een vergelijking uit op basis van de informatie in uw database.
Notities

Als u probeert de vergelijkingsmodus te wijzigen van een Dictionary-object dat al gegevens bevat, treedt een fout op.

De eigenschap CompareMode gebruikt dezelfde waarden als het argument vergelijk van de functie StrComp. Met waarden, groter dan 2, kunt u verwijzen naar vergelijkingen met specifieke lokale id's (LCID).


Count, eigenschap

Beschrijving

Resulteert in het aantal items in een collectie of Dictionary-object. Alleen-lezen.

Syntaxis

object.Count

Het object is altijd de naam van een van de items in de lijst Van toepassing op.

Notities

De volgende code illustreert het gebruik van de eigenschap Count:

Dim a, d, i       'Maakt enkele variabelen

Set d = CreateObject("Scripting.Dictionary")

d.Add "a", "Athene"     'Voegt enkele sleutels en items toe

d.Add "b", "Belgrado"

d.Add "c", "Caïro"

a = d.Keys        'Leest de sleutels

For i = 0 To d.Count -1 'Doorloopt de matrix

    Print a(i)    Toont sleutel

Next

...


DateCreated, eigenschap

Beschrijving

Geeft de datum en het tijdstip waarop het opgegeven bestand of de map is gemaakt. Alleen-lezen.

Syntaxis

object.DateCreated

Het object is altijd een File- of Folder-object.

Notities

De volgende code illustreert het gebruik van de eigenschap DateCreated met een bestand:

Sub ShowFileInfo(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(filespec)

    s = "Gemaakt op: " & f.DateCreated

    MsgBox s

End Sub


DateLastAccessed, eigenschap

Beschrijving

Geeft de datum en het tijdstip waarop het opgegeven bestand of de map het laatst is benaderd. Alleen-lezen.

Syntaxis

object.DateLastAccessed

Het object is altijd een File- of Folder-object.

Notities

De volgende code illustreert het gebruik van de eigenschap DateLastAccessed met een bestand:

Sub ShowFileAccessInfo(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(filespec)

    s = UCase(filespec) & vbCrLf

    s = s & "Gemaakt op: " & f.DateCreated & vbCrLf

    s = s & "Laatst benaderd op: " & f.DateLastAccessed & vbCrLf

    s = s & "Laatst gewijzigd op: " & f.DateLastModified

    MsgBox s, 0, "Informatie over bestandstoegang"

End Sub

Belangrijk   Het gedrag van deze methode is afhankelijk van het onderliggende besturingssysteem. Als het besturingssysteem geen informatie over de tijd verstrekt, wordt geen resultaat teruggegeven.


DateLastModified, eigenschap

Beschrijving

Geeft de datum en het tijdstip waarop het opgegeven bestand of de map het laatst is gewijzigd. Alleen-lezen.

Syntaxis

object.DateLastModified

Het object is altijd een File- of Folder-object.

Notities

De volgende code illustreert het gebruik van de eigenschap DateLastModified met een bestand:

Sub ShowFileAccessInfo(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(filespec)

    s = UCase(filespec) & vbCrLf

    s = s & "Gemaakt op: " & f.DateCreated & vbCrLf

    s = s & "Laatst benaderd op: " & f.DateLastAccessed & vbCrLf

    s = s & "Laatst gewijzigd op: " & f.DateLastModified

    MsgBox s, 0, "Informatie over bestandstoegang"

End Sub


Drive, eigenschap

Beschrijving

Geeft de stationsaanduiding van het station waarop het opgegeven bestand of de map zich bevindt. Alleen-lezen.

Syntaxis

object.Drive

Het object is altijd een File- of Folder-object.

Notities

De volgende code illustreert het gebruik van de eigenschap Drive:

Sub ShowFileAccessInfo(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(filespec)

    s = f.Name & " on Drive " & UCase(f.Drive) & vbCrLf

    s = s & "Gemaakt op: " & f.DateCreated & vbCrLf

    s = s & "Laatst benaderd op: " & f.DateLastAccessed & vbCrLf

    s = s & "Laatst gewijzigd op: " & f.DateLastModified

    MsgBox s, 0, "Informatie over bestandstoegang"

End Sub


DriveLetter, eigenschap

Beschrijving

Geeft de stationsaanduiding van een fysiek lokaal station of een netwerk-share. Alleen-lezen.

Syntaxis

object.DriveLetter

Het object is altijd een object Drive.

Notities

De eigenschap DriveLetter geeft een lege tekenreeks ("") terug als het opgegeven station niet aan een stationsaanduiding is gekoppeld, wat bijvoorbeeld het geval is bij een netwerk-share die niet aan een stationsaanduiding is toegewezen.

De volgende code illustreert het gebruik van de eigenschap DriveLetter:

Sub ShowDriveLetter(drvPath)

    Dim fs, d, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(fs.GetDriveName(drvPath))

    s = "Drive " & d.DriveLetter & ": - "

    s = s & d.VolumeName  & vbCrLf

    s = s & "Vrije ruimte: " & FormatNumber(d.FreeSpace/1024, 0)

    s = s & " Kbytes"

    MsgBox s

End Sub


Drives, eigenschap

Beschrijving

Geeft een collectie Drives, bestaande uit alle Drive-objecten die beschikbaar zijn op de lokale computer.

Syntaxis

object.Drives

Het object is altijd een FileSystemObject.

Notities

De media van verwijderbare media stations hoeven niet in het station te zijn geplaatst om in de collectie Drives te worden weergegeven.

Met een For Each...Next-constructie kunt u de leden van de collectie Drives een voor een verwerken. Dit wordt in de volgende code geïllustreerd.

Sub ShowDriveList

    Dim fs, d, dc, s, n

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set dc = fs.Drives

    For Each d in dc

        s = s & d.DriveLetter & " - "

        If d.DriveType = 3 Then

      n = d.ShareName

        Else

      n = d.VolumeName

        End If

        s = s & n & vbCrLf

    Next

    MsgBox s

End Sub


DriveType, eigenschap

Beschrijving

Geeft een waarde terug die het type aanduidt van een opgegeven station.

Syntaxis

object.DriveType

Het object is altijd een object Drive.

Notities

De volgende code illustreert het gebruik van de eigenschap DriveType:

Sub ShowDriveType(drvpath)

    Dim fs, d, s, t

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(drvpath)

    Select Case d.DriveType

        Case 0: t = "Onbekend"

        Case 1: t = "Verwijderbaar"

        Case 2: t = "Vast"

        Case 3: t = "Netwerk"

        Case 4: t = "cd-rom"

        Case 5: t = "RAM-schijf"

    End Select

    s = "Drive " & d.DriveLetter & ": - " & t

    MsgBox s

End Sub


Files, eigenschap

Beschrijving

Geeft een collectie Files terug, bestaande uit alle File-objecten in de opgegeven map, inclusief de verborgen bestanden en systeembestanden.

Syntaxis

object.Files

Het object is altijd een Folder-object.

Notities

De volgende code illustreert het gebruik van de eigenschap Files:

Sub ShowFileList(folderspec)

    Dim fs, f, f1, fc, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFolder(folderspec)

    Set fc = f.Files

    For Each f1 in fc

        s = s & f1.name

        s = s & vbCrLf

    Next

    MsgBox s

End Sub


FileSystem, eigenschap

Beschrijving

Geeft het type bestandssysteem terug dat voor het opgegeven station wordt gebruikt.

Syntaxis

object.FileSystem

Het object is altijd een object Drive.

Notities

Tot de beschikbare resultaattypen behoren FAT, NTFS en CDFS.

De volgende code illustreert het gebruik van de eigenschap FileSystem:

Sub ShowFileSystemType

    Dim fs,d, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive("e:")

    s = d.FileSystem

    MsgBox s

End Sub


FreeSpace, eigenschap

Beschrijving

Geeft de hoeveelheid vrije schijfruimte waarover een gebruiker kan beschikken op het opgegeven station of de netwerk-share. Alleen-lezen.

Syntaxis

object.FreeSpace

Het object is altijd een object Drive.

Notities

De waarde die de eigenschap FreeSpace teruggeeft is doorgaans dezelfde als die de eigenschap AvailableSpace teruggeeft. Verschillen tussen de twee waarden kunnen zich voordoen voor computersystemen die quota's ondersteunen.

De volgende code illustreert het gebruik van de eigenschap FreeSpace:

Sub ShowFreeSpace(drvPath)

    Dim fs, d, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(fs.GetDriveName(drvPath))

    s = "Drive " & UCase(drvPath) & " - "

    s = s & d.VolumeName  & vbCrLf

    s = s & "Vrije ruimte: " & FormatNumber(d.FreeSpace/1024, 0)

    s = s & " Kbytes"

    MsgBox s

End Sub


IsReady, eigenschap

Beschrijving

Geeft True als het opgegeven station gereed is en False als het niet gereed is.

Syntaxis

object.IsReady

Het object is altijd een object Drive.

Notities

Voor stations met verwijderbare media en cd-rom-stations geeft IsReady het resultaat True alleen als het juiste medium in het station is geplaatst en gereed is om te worden benaderd.

De volgende code illustreert het gebruik van de eigenschap IsReady:

Sub ShowDriveInfo(drvpath)

    Dim fs, d, s, t

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(drvpath)

    Select Case d.DriveType

        Case 0: t = "Onbekend"

        Case 1: t = "Verwijderbaar"

        Case 2: t = "Vast"

        Case 3: t = "Netwerk"

        Case 4: t = "cd-rom"

        Case 5: t = "RAM-schijf"

    End Select

    s = "Drive " & d.DriveLetter & ": - " & t

    If d.IsReady Then

        s = s & vbCrLf & "Station is gereed."

    Else

        s = s & vbCrLf & "Station is niet gereed."

    End If

    MsgBox s

End Sub


IsRootFolder, eigenschap

Beschrijving

Geeft True als het opgegeven station de hoofdmap is en False als dat niet het geval is.

Syntaxis

object.IsRootFolder

Het object is altijd een Folder-object.

Notities

De volgende code illustreert het gebruik van de eigenschap IsRootFolder:

Dim fs

Set fs = CreateObject("Scripting.FileSystemObject")

Sub DisplayLevelDepth(pathspec)

    Dim f, n

    Set f = fs.GetFolder(pathspec)

    If f.IsRootFolder Then

        MsgBox "De opgegeven map is de hoofdmap."

    Else

        Do Until f.IsRootFolder

      Set f = f.ParentFolder

      n = n + 1

        Loop

        MsgBox "De opgegeven map is " & n & " niveaus diep genest."

    End If

End Sub


Item, eigenschap

Beschrijving

Stelt een item in voor een opgegeven sleutel in een Dictionary-object, of geeft dit item als resultaat. Voor collecties bestaat het resultaat uit een item, gebaseerd op de opgegeven sleutel. Lezen/schrijven.

Syntaxis

object.Item(sleutel) [= nieuwitem]

De eigenschap Item heeft de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een collectie of Dictionary-object.
sleutel	Vereist. De sleutel die behoort bij het item dat wordt opgehaald of toegevoegd.
nieuwitem	Optioneel. Wordt alleen voor een Dictionary-object gebruikt. Niet van toepassing op collecties. Als het argument nieuwitem is opgegeven, is dit de nieuwe waarde die aan de opgegeven sleutel wordt toegekend.
Notities

Als sleutel bij het wijzigen van een item niet wordt gevonden, wordt een nieuwe sleutel met het opgegeven nieuwitem gemaakt. Als sleutel niet wordt gevonden wanneer wordt geprobeerd een bestaand item terug te geven, wordt een nieuwe sleutel gemaakt en blijft het corresponderende item leeg.


Key, eigenschap

Beschrijving

Stelt een sleutel in in een Dictionary-object.

Syntaxis

object.Key(sleutel) = nieuwesleutel

De eigenschap Key heeft de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een Dictionary-object.
sleutel	Vereist. De sleutelwaarde die moet worden gewijzigd.
nieuwesleutel	Vereist. Nieuwe waarde die de opgegeven sleutel vervangt.
Notities

Als de sleutel die moet worden gewijzigd, niet is gevonden, treedt een runtimefout op.


Line, eigenschap

Beschrijving

Alleen-lezen eigenschap die het huidige regelnummer in een TextStream-bestand teruggeeft.

Syntaxis

object.Line

Het object is altijd de naam van een TextStream-object.

Notities

Nadat een bestand voor het eerst is geopend en voordat er iets naartoe is geschreven, is Line gelijk aan 1.


Name, eigenschap

Beschrijving

Stelt de naam in van een opgegeven bestand of map of geeft deze terug. Lezen/schrijven.

Syntaxis

object.Name [= nieuwenaam]

De syntaxis van de eigenschap Name bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een File- of Folder-object.
nieuwenaam	Optioneel. Als nieuwenaam is opgegeven, is dit de nieuwe naam voor het opgegeven object.
Notities

De volgende code illustreert het gebruik van de eigenschap Name:

Sub ShowFileAccessInfo(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(filespec)

    s = f.Name & " on Drive " & UCase(f.Drive) & vbCrLf

    s = s & "Gemaakt op: " & f.DateCreated & vbCrLf

    s = s & "Laatst benaderd op: " & f.DateLastAccessed & vbCrLf

    s = s & "Laatst gewijzigd op: " & f.DateLastModified

    MsgBox s, 0, "Informatie over bestandstoegang"

End Sub


ParentFolder, eigenschap

Beschrijving

Geeft het mapobject terug voor de bovenliggende map van het opgegeven bestand of de map. Alleen-lezen.

Syntaxis

object.ParentFolder

Het object is altijd een File- of Folder-object.

Notities

De volgende code illustreert het gebruik van de eigenschap ParentFolder met een bestand:

Sub ShowFileAccessInfo(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(filespec)

    s = UCase(f.Name) & " in " & UCase(f.ParentFolder) & vbCrLf

    s = s & "Gemaakt op: " & f.DateCreated & vbCrLf

    s = s & "Laatst benaderd op: " & f.DateLastAccessed & vbCrLf

    s = s & "Laatst gewijzigd op: " & f.DateLastModified

    MsgBox s, 0, "Informatie over bestandstoegang"

End Sub


Path, eigenschap

Beschrijving

Geeft het pad naar een opgegeven bestand, een map of een station.

Syntaxis

object.Path

Het object is altijd een File- of Folder- of Drive-object.

Notities

De stationsaanduiding bevat geen aanduiding voor het hoofdstation. Het pad naar station C, bijvoorbeeld, is C: en niet C:\.

De volgende code illustreert het gebruik van de eigenschap Path met een File-object:

Sub ShowFileAccessInfo(filespec)

    Dim fs, d, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(filespec)

    s = UCase(f.Path) & vbCrLf

    s = s & "Gemaakt op: " & f.DateCreated & vbCrLf

    s = s & "Laatst benaderd op: " & f.DateLastAccessed & vbCrLf

    s = s & "Laatst gewijzigd op: " & f.DateLastModified

    MsgBox s, 0, "Informatie over bestandstoegang"

End Sub


RootFolder, eigenschap

Beschrijving

Geeft een Folder-object terug die de hoofdmap van een opgegeven station aanduidt. Alleen-lezen.

Syntaxis

object.RootFolder

Het object is altijd een Drive-object.

Notities

Alle bestanden en mappen in het station kunnen worden benaderd via het resulterende Folder-object.


SerialNumber, eigenschap

Beschrijving

Geeft het decimale serienummer dat wordt gebruikt om een schijfvolume op unieke wijze te identificeren.

Syntaxis

object.SerialNumber

Het object is altijd een Drive-object.

Notities

Met de eigenschap SerialNumber kunt u controleren of de juiste schijf is geplaatst in een station met verwijderbare media.

De volgende code illustreert het gebruik van de eigenschap SerialNumber:

Sub ShowDriveInfo(drvpath)

    Dim fs, d, s, t

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(drvpath)))

    Select Case d.DriveType

        Case 0: t = "Onbekend"

        Case 1: t = "Verwijderbaar"

        Case 2: t = "Vast"

        Case 3: t = "Netwerk"

        Case 4: t = "cd-rom"

        Case 5: t = "RAM-schijf"

    End Select

    s = "Drive " & d.DriveLetter & ": - " & t

    s = s & vbCrLf & "SN: " & d.SerialNumber

    MsgBox s

End Sub


ShareName, eigenschap

Beschrijving

Geeft de netwerksharenaam voor een opgegeven station terug.

Syntaxis

object.ShareName

Het object is altijd een Drive-object.

Notities

Als object geen netwerkstation is, geeft de eigenschap ShareName een lege tekenreeks ("") terug.

De volgende code illustreert het gebruik van de eigenschap ShareName:

Sub ShowDriveInfo(drvpath)

    Dim fs, d, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(drvpath)))

    s = "Drive " & d.DriveLetter & ": - " & d.ShareName

    MsgBox s

End Sub


ShortName, eigenschap

Beschrijving

Geeft de korte naam die wordt gebruikt door programma's die de oudere 8.3-naamgevingsconventie vereisen.

Syntaxis

object.ShortName

Het object is altijd een File- of Folder-object.

Notities

De volgende code illustreert het gebruik van de eigenschap ShortName met een File-object:

Sub ShowShortName(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(filespec)

    s = "De korte naam voor " & "" & UCase(f.Name)

    s = s & "" & vbCrLf

    s = s & "is: " & "" & f.ShortName & ""

    MsgBox s, 0, "Informatie over korte naam"

End Sub


ShortPath, eigenschap

Beschrijving

Geeft het korte pad dat wordt gebruikt door programma's die de oudere 8.3-naamgevingsconventie vereisen.

Syntaxis

object.ShortPath

Het object is altijd een File- of Folder-object.

Notities

De volgende code illustreert het gebruik van de eigenschap ShortName met een File-object:

Sub ShowShortPath(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(filespec)

    s = "Het korte pad voor " & "" & UCase(f.Name)

    s = s & "" & vbCrLf

    s = s & "is: " & "" & f.ShortPath & ""

    MsgBox s, 0, "Informatie over korte pad"

End Sub


Size, eigenschap

Beschrijving

Voor bestanden bestaat het resultaat uit de omvang in bytes van het opgegeven bestand. Voor mappen bestaat het resultaat uit de omvang in bytes van alle bestanden en submappen in de map.

Syntaxis

object.Size

Het object is altijd een File- of Folder-object.

Notities

De volgende code illustreert het gebruik van de eigenschap Size met een Folder-object:

Sub ShowFolderSize(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFolder(filespec)

    s = UCase(f.Name) & " uses " & f.size & " bytes."

    MsgBox s, 0, "Informatie over mapomvang"

End Sub


SubFolders, eigenschap

Beschrijving

Geeft een collectie Folders terug, bestaande uit alle mappen in de opgegeven map, inclusief de verborgen bestanden en systeembestanden.

Syntaxis

object.SubFolders

Het object is altijd een Folder-object.

Notities

De volgende code illustreert het gebruik van de eigenschap SubFolders:

Sub ShowFolderList(folderspec)

    Dim fs, f, f1, s, sf

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFolder(folderspec)

    Set sf = f.SubFolders

    For Each f1 in sf

        s = s & f1.name

        s = s & vbCrLf

    Next

    MsgBox s

End Sub


TotalSize, eigenschap

Beschrijving

Geeft de totale ruimte in bytes op een station of netwerk-share.

Syntaxis

object.TotalSize

Het object is altijd een Drive-object.

Notities

De volgende code illustreert het gebruik van de eigenschap TotalSize:

Sub ShowSpaceInfo(drvpath)

    Dim fs, d, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(drvpath)))

    s = "Drive " & d.DriveLetter & ":"

    s = s & vbCrLf

    s = s & "Totale omvang: " & FormatNumber(d.TotalSize/1024, 0) & " Kbytes"

    s = s & vbCrLf

    s = s & "Beschikbaar: " & FormatNumber(d.AvailableSpace/1024, 0) & " Kbytes"

    MsgBox s

End Sub


Type, eigenschap

Beschrijving

Geeft informatie over het type van een bestand of map. Voor bijvoorbeeld bestanden met de extensie .TXT, is het resultaat "Text Document".

Syntaxis

object.Type

Het object is altijd een File- of Folder-object.

Notities

De volgende code illustreert hoe u met de eigenschap Type een maptype teruggeeft. Probeer in dit voorbeeld het pad naar de Prullenbak of een andere unieke map aan de procedure door te geven.

Sub ShowFileSize(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFolder(filespec)

    s = UCase(f.Name) & " is een " & f.Type

    MsgBox s, 0, "Informatie over bestandsomvang"

End Sub


VolumeName, eigenschap

Beschrijving

Stel de volumenaam van het opgegeven station in of geeft deze terug. Lezen/schrijven.

Syntaxis

object.VolumeName [= nieuwenaam]

De syntaxis van de eigenschap VolumeName bestaat uit de volgende onderdelen:

Onderdeel	Beschrijving
Object	Vereist. Is altijd de naam van een Drive-object.
nieuwenaam	Optioneel. Als nieuwenaam is opgegeven, is dit de nieuwe naam voor het opgegeven object.
Notities

De volgende code illustreert het gebruik van de eigenschap VolumeName:

Sub ShowVolumeInfo(drvpath)

    Dim fs, d, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(drvpath)))

    s = "Drive " & d.DriveLetter & ": - " & d.VolumeName

    MsgBox s

End Sub


Niet-eenduidige selectie

U hebt òf geen sleutelwoord geselecteerd, òf Help opgevraagd over een onderdeel van de geïntegreerde ontwikkelomgeving (Integrated Development Environment - IDE). Als u hebt geprobeerd een sleutelwoord te selecteren, probeer dan nogmaals één sleutelwoord te selecteren. Voor informatie over de IDE klikt u op een van de volgende mogelijkheden:

Programmacode of Module, vensters

Direct, venster of deelvenster

Lokale variabelen, venster of deelvenster

Objectenoverzicht

Controle, venster of deelvenster