#Const-Anweisung (Beispiel)

In diesem Beispiel wird die #Const-Anweisung verwendet, um Konstanten für die bedingte Kompilierung zur Verwendung in #If...#Else...#End If-Konstruktionen zu deklarieren.

#Const DebugVersion = 1	' Wird in einem #If-Block als True ausgewertet.


#If...Then...#Else-Anweisung (Beispiel)

In diesem Beispiel wird die Konstanten für die bedingte Kompilierung in einer #If...Then...#Else-Konstruktion verwendet, um zu bestimmen, ob bestimmte Programmanweisungen kompiliert werden sollen.

' Wenn Mac als True ausgewertet wird, werden die Anweisungen im

' Anschluß an #If kompiliert.

#If Mac Then

'. Ausschließlich Anweisungen für Mac hier.

'.

'.

' Wenn es sich um ein 32-Bit-Windows-Programm handelt, folgende

' Anweisungen kompilieren:

#ElseIf Win32 Then

'. Anweisungen, die nur für 32-Bit-Windows kompiliert werden

'. sollen.

'.

' Andernfalls folgende Anweisungen kompilieren:

#Else

'. Anweisungen für andere Plattformen hier.

'.

'.

#End If


#Const-Anweisung

Wird zum Definieren von Visual Basic-Konstanten für die bedingte Kompilierung verwendet.

Syntax

#Const KonstName = Ausdruck

Die Syntax der Compiler-Anweisung #Const besteht aus folgenden Teilen:

Teil	Beschreibung
KonstName	Erforderlich. Ein Wert vom Typ Variant (String). Name der Konstanten gemäß den Standardkonventionen zur Benennung von Variablen.
Ausdruck	Erforderlich. Literalzeichen, andere Konstanten für die bedingte Kompilierung oder eine Kombination daraus, die alle arithmetischen oder logischen Operatoren außer Is enthalten kann.
Bemerkungen

Konstanten für bedingte Kompilierung sind immer Privatein dem Modul, in dem sie sich befinden. Mit der #Const-Anweisung können keine Public-Konstanten für die Kompilierung erstellt werden. Public-Konstanten für die bedingte Kompilierung können nur mit Hilfe der Benutzeroberfläche erstellt werden.

Nur Konstanten für bedingte Kompilierung (und Literalzeichen) können in Ausdruck verwendet werden. Die Verwendung einer Standardkonstanten (die mit Const definiert wurde) oder einer nicht definierten Konstanten löst einen Fehler aus. Umgekehrt können Konstanten, die mit dem Schlüsselwort #Const definiert wurden, ausschließlich für die bedingte Kompilierung verwendet werden.

Konstanten für bedingte Kompilierung werden immer auf Modulebene ausgewertet, unabhängig von ihrer Plazierung im Code.


#If...Then...#Else-Anweisung

Kompiliert ausgewählte Blöcke von Visual Basic-Code, wenn bestimmte Bedingungen erfüllt sind.

Syntax

#If Ausdruck Then

Anweisungen

[#ElseIf Ausdruck-n Then

[elseifAnweisungen]]

[#Else

[elseAnweisungen]]

#End If

Die Syntax der #If...Then...#Else-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Ausdruck	Erforderlich. Ein beliebiger Ausdruck, der ausschließlich eine oder mehrere Konstanten für die bedingte Kompilierung, Literalzeichen und Operatoren enthält und True oder False ergibt.
Anweisungen	Erforderlich. Visual Basic-Programmzeilen oder Compiler-Anweisungen, die ausgewertet werden, wenn der zugehörige Ausdruck True ergibt.
Ausdruck-n	Optional. Ein beliebiger Ausdruck, der ausschließlich aus einer oder mehreren Konstanten für die bedingte Kompilierung, Literalzeichen oder Operatoren besteht und der True oder False ergibt.
elseifAnweisungen	Optional. Eine oder mehrere Programmzeilen oder Compiler-Anweisungen, die ausgewertet werden, wenn Ausdruck-n True ergibt.
elseAnweisungen	Optional. Eine oder mehrere Programmzeilen oder Compiler-Anweisungen, die ausgewertet werden, wenn keiner der vorher aufgetretenen Ausdruck- oder Ausdruck-n-Abschnitte True ergibt.
Bemerkungen

Das Verhalten der #If...Then...#Else-Anweisung entspricht dem der If...Then...Else-Anweisung, allerdings gibt es keine einzeilige Variante der Anweisungen #If, #Else, #ElseIf und #End If, d.h. außer den Anweisungen kann kein anderer Code in derselben Zeile erscheinen. Bedingte Kompilierung wird normalerweise zum Kompilieren desselben Programms für verschiedene Plattformen verwendet. Sie kann auch dazu dienen, zu verhindern, daß Code zu Testzwecken in einer ausführbaren Datei erscheint. Während der bedingten Kompilierung ausgeschlossener Code wird beim Erstellen der ausführbaren Datei nicht in die Datei aufgenommen und hat daher keinerlei Auswirkung auf die Größe oder das Leistungsverhalten.

Unabhängig vom Ergebnis der einzelnen Auswertungen werden alle Ausdrücke ausgewertet. Daher müssen alle Konstanten, die in Ausdrücken verwendet werden, definiert sein: alle nichtdefinierten Konstanten werden als Empty ausgewertet.

Anmerkung Die Option Compare-Anweisung hat keine Auswirkungen auf Ausdrücke in #If- und #ElseIf-Anweisungen. Ausdrücke in Anweisungen für die bedingte Kompilierung werden immer mit der Einstellung Option Compare Text ausgewertet.


Visual Basic für Applikationen-Konstanten

Die folgenden Konstanten sind in Visual Basic für Applikationen definiert, um die Programmierung zu vereinfachen. Sie können daher überall im Code anstelle der tatsächlichen Werte verwendet werden:

CallType-Konstanten

Compiler-Konstanten

Dateiattribut-Konstanten

Dateieingabe/-ausgabe-Konstanten

Datumsformat-Konstanten

Datumskonstanten

Dir-, GetAttr- und SetAttr-Konstanten

DriveType-Konstanten

Farbkonstanten

Formularkonstanten

IMEStatus-Konstanten

Kalender-Konstanten

MsgBox-Konstanten

QueryClose-Konstanten

Shell-Konstanten

SpecialFolder-Konstanten

StrConv-Konstanten

Systemfarben-Konstanten

Tasten-Code-Konstanten

Tristate-Konstanten

VarType-Konstanten

VergleichskonstantenVerschiedene Konstanten

Visual Basic-Konstanten


QueryClose-Konstanten

Die folgenden Konstanten können überall im Code anstelle der tatsächlichen Werte verwendet werden:

Konstante	Wert	Beschreibung
vbFormControlMenu	0	Der Benutzer hat im Systemmenü des Formulars den Befehl Schließen gewählt.
VbFormCode	1	Die Unload-Anweisung wurde aus dem Code aufgerufen.
VbAppWindows	2	Die aktuelle Sitzung unter dem Betriebssystem Microsoft Windows wird beendet.
VbAppTaskManager	3	Der Task-Manager von Microsoft Windows beendet die Anwendung.


Kalender-Konstanten

Die folgenden Konstanten können an beliebiger Stelle im Code anstelle der tatsächlichen Werte verwendet werden:

Konstante	Wert	Beschreibung
vbCalGreg	0	Zeigt an, daß der Gregorianische Kalender verwendet wird.
vbCalHijri	1	Zeigt an, daß der Hijri-Kalender verwendet wird.


Compiler-Konstanten

Visual Basic für Applikationen definiert Konstanten zur exklusiven Verwendung mit der #If...Then...#Else-Anweisung. Die Funktion dieser Konstanten entspricht der von Konstanten, die mit der #If...Then...#Else-Anweisung definiert wurden, mit dem Unterschied, daß sie einen globalen Gültigkeitsbereich haben, d.h., sie sind überall in einem Projekt anwendbar.

Auf 16-Bit-Entwicklungsplattformen werden die Compiler-Konstanten folgendermaßen definiert:

Konstante	Wert	Beschreibung
Win16	True	Zeigt an, daß es sich um eine 16-Bit-Entwicklungsumgebung handelt.
Win32	False	Zeigt an, daß es sich nicht um eine 32-Bit-Entwicklungsumgebung handelt.
Auf 32-Bit-Entwicklungsplattformen werden die Compiler-Konstanten folgendermaßen definiert:

Konstante	Wert	Beschreibung
Vba6	True	Zeigt an, daß die Entwicklungsumgebung Visual Basic für Applikationen, Version 6.0, ist.
Vba6	False	Zeigt an, daß die Entwicklungsumgebung nicht Visual Basic für Applikationen, Version 6.0, ist.
Win16	False	Zeigt an, daß es sich nicht um eine 16-Bit-Entwicklungsumgebung handelt.
Win32	True	Zeigt an, daß es sich um eine 32-Bit-Entwicklungsumgebung handelt.
Mac	False	Zeigt an, daß die Entwicklungsumgebung nicht Macintosh ist.
Win16	False	Zeigt an, daß es sich nicht um eine 16-Bit-Entwicklungsumgebung handelt.
Win32	False	Zeigt an, daß es sich nicht um eine 32-Bit-Windows-Entwicklungsumgebung handelt.
Mac	True	Zeigt an, daß die Entwicklungsumgebung Macintosh ist.
Anmerkung Da die hier definierten Konstanten von Visual Basic bereitgestellt werden, können Sie Ihre eigenen Konstanten auf keiner Ebene mit diesen Namen definieren.


Datumskonstanten

Die folgenden Konstanten können überall im Code anstelle der tatsächlichen Werte verwendet werden:

Argumentwerte

Das Argument firstdayofweek hat die folgenden Werte:

Konstante	Wert	Beschreibung
vbUseSystem	0	NLS API-Einstellung verwenden.
vbSunday	1	Sonntag (Voreinstellung)
vbMonday	2	Montag
vbTuesday	3	Dienstag
vbWednesday	4	Mittwoch
vbThursday	5	Donnerstag
vbFriday	6	Freitag
vbSaturday	7	Samstag
Das Argument firstdayofyear hat die folgenden Werte:

Konstante	Wert	Beschreibung
vbUseSystem	0	NLS API-Einstellung verwenden.
VbUseSystem DayOfWeek	0	Beginnt die Woche mit dem in den Systemeinstellungen festgelegten ersten Tag der Woche.
VbFirstJan1	1	Beginnt mit der Woche, in der sich der 1. Januar befindet. (Voreinstellung).
vbFirstFourDays	2	Beginnt mit der ersten Woche, bei der mindestens vier Tage im neuen Jahr sind.
vbFirstFullWeek	3	Beginnt mit der ersten vollen Woche des Jahres.
Rückgabewerte

Konstante	Wert	Beschreibung
vbSunday	1	Sonntag
vbMonday	2	Montag
vbTuesday	3	Dienstag
vbWednesday	4	Mittwoch
vbThursday	5	Donnerstag
vbFriday	6	Freitag
vbSaturday	7	Samstag


Dir-, GetAttr- und SetAttr-Konstanten

Die folgenden Konstanten können überall im Code anstelle der tatsächlichen Werte verwendet werden:

Konstante	Wert	Beschreibung
vbNormal	0	Normal (Voreinstellung für Dir und SetAttr)
vbReadOnly	1	Schreibgeschützt
vbHidden	2	Versteckt
vbSystem	4	Systemdatei
vbVolume	8	Datenträgerbezeichnung
vbDirectory	16	Verzeichnis oder Ordner
vbArchive	32	Datei seit letzter Sicherung verändert
vbAlias	64	Auf einem Macintosh ist der Bezeichner ein Alias.
Es sind nur VbNormal, vbReadOnly, vbHidden und vbAlias für den Macintosh verfügbar.


IMEStatus-Konstanten

Die folgenden Konstanten können überall im Code anstelle der tatsächlichen Werte verwendet werden.

Die Konstanten für das Gebietsschema Japanisch sehen wie folgt aus:

Konstante	Wert	Beschreibung
vbIMEModeNoControl	0	Keine IME-Kontrolle (Standard)
vbIMEModeOn	1	IME an
vbIMEModeOff	2	IME aus
vbIMEModeDisable	3	IME deaktiviert
vbIMEModeHiragana	4	Volle Breite Hiragana-Modus
vbIMEModeKatakana	5	Volle Breite Katakana-Modus
vbIMEModeKatakanaHalf	6	Halbe Breite Katakana-Modus
vbIMEModeAlphaFull	7	Volle Breite alphanumerischer Modus
vbIMEModeAlpha	8	Halbe Breite alphanumerischer Modus
Die Konstantenwerte für das Gebietsschema Koreanisch sehen wie folgt aus:

Konstante	Wert	Beschreibung
vbIMEModeNoControl	0	Keine IME-Kontrolle (Standard)
vbIMEModeAlphaFull	7	Volle Breite alphanumerischer Modus
vbIMEModeAlpha	8	Halbe Breite alphanumerischer Modus
vbIMEModeHangulFull	9	Volle Breite Hangul-Modus
vbIMEModeHangul	10	Halbe Breite Hangul-Modus
Die Konstantenwerte für das Gebietsschema Chinesisch sehen wie folgt aus:

Konstante	Wert	Beschreibung
vbIMEModeNoControl	0	Keine IME-Kontrolle (Standard)
vbIMEModeOn	1	IME an
vbIMEModeOff	2	IME aus


Vergleichskonstanten

Die folgenden Konstanten sind in der Klassenbibliothek von Visual Basic für Applikationen definiert und können überall im Code anstelle der tatsächlichen Werte verwendet werden:

Konstante	Wert	Beschreibung
vbUseCompareOption	-1	Führt einen Vergleich aus, basierend auf den Einstellungen der Option Compare-Anweisung.
vbBinaryCompare	0	Führt einen binären Vergleich durch.
vbTextCompare	1	Führt einen textlichen Vergleich durch.
vbDatabaseCompare	2	Für Microsoft Access; führt einen Vergleich durch, der auf Informationen aus Ihrer Datenbank basiert (nur Windows).


Verschiedene Konstanten

Die folgenden Konstanten sind in der Klassenbibliothek von Visual Basic für Applikationen definiert und können überall im Code anstelle der tatsächlichen Werte verwendet werden:

Konstante	Äquivalent	Beschreibung
vbCrLf	Chr(13) + Chr(10)	Kombination aus Wagenrücklauf und Zeilenvorschub
vbCr	Chr(13)	Wagenrücklaufzeichen
vbLf	Chr(10)	Zeilenvorschubzeichen
vbNewLine	Chr(13) + Chr(10) oder, auf dem Macintosh, Chr(13)	Plattformspezifisches Zeilenumbruchzeichen; je nachdem, welches für die aktuelle Plattform geeignet ist
vbNullChar	Chr(0)	Zeichen mit dem Wert 0
vbNullString	Zeichenfolge mit dem Wert 0	Nicht identisch mit der Null-Zeichenfolge (""); wird verwendet, um externe Prozeduren aufzurufen.
vbObjectError	-2147221504	Benutzerdefinierte Fehlernummern sollten größer als dieser Wert sein. Zum Beispiel: Err.Raise Number = vbObjectError + 1000
vbTab	Chr(9)	Tabulatorzeichen
vbBack	Chr(8)	Rückschrittzeichen
vbFormFeed	Chr(12)	Nicht sinnvoll unter Microsoft Windows oder auf dem Macintosh
vbVerticalTab	Chr(11)	Nicht sinnvoll unter Microsoft Windows oder auf dem Macintosh


MsgBox-Konstanten

Die folgenden Konstanten können überall im Code anstelle der tatsächlichen Werte verwendet werden:

MsgBox-Argumente

Konstante	Wert	Beschreibung
vbOKOnly	0	Nur Schaltfläche OK (Voreinstellung)
vbOKCancel	1	Schaltflächen OK und Abbrechen
vbAbortRetryIgnore	2	Schaltflächen Abbruch, Wiederholen und Ignorieren
vbYesNoCancel	3	Schaltflächen Ja, Nein und Abbrechen
vbYesNo	4	Schaltflächen Ja und Nein
vbRetryCancel	5	Schaltflächen Wiederholen und Abbrechen
vbCritical	16	Meldung für kritischen Fehler
vbQuestion	32	Warnung mit Abfrage
vbExclamation	48	Warnmeldung
vbInformation	64	Informationsmeldung
vbDefaultButton1	0	Erste Schaltfläche ist Voreinstellung (Voreinstellung)
vbDefaultButton2	256	Zweite Schaltfläche ist Voreinstellung
vbDefaultButton3	512	Dritte Schaltfläche ist Voreinstellung
vbDefaultButton4	768	Vierte Schaltfläche ist Voreinstellung
vbApplicationModal	0	An die Anwendung gebundenes Meldungsfeld (Voreinstellung)
vbSystemModal	4096	An das System gebundenes Meldungsfeld
vbMsgBoxHelpButton	16384	Fügt eine Hilfeschaltfläche zum Meldungsfeld hinzu.
VbMsgBoxSetForeground	65536	Legt das Meldungsfeld als Vordergrundfenster fest.
vbMsgBoxRight	524288	Der Text ist rechtsbündig
vbMsgBoxRtlReading	1048576	Legt fest, daß der Text von rechts nach links dargestellt wird, für hebräische und arabische Systeme.
MsgBox-Rückgabewerte

Konstante	Wert	Beschreibung
vbOK	1	Schaltfläche OK gedrückt
vbCancel	2	Schaltfläche Abbrechen gedrückt
vbAbort	3	Schaltfläche Abbruch gedrückt
vbRetry	4	Schaltfläche Wiederholen gedrückt
vbIgnore	5	Schaltfläche Ignorieren gedrückt
vbYes	6	Schaltfläche Ja gedrückt
vbNo	7	Schaltfläche Nein gedrückt


Shell-Konstanten

Die folgenden Konstanten können überall im Code anstelle der tatsächlichen Werte verwendet werden:

Konstante	Wert	Beschreibung
vbHide	0	Fenster ist ausgeblendet, und das ausgeblendete Fenster erhält den Fokus.
vbNormalFocus	1	Fenster hat den Fokus und wird mit der ursprünglichen Größe und Position wiederhergestellt.
vbMinimizedFocus	2	Fenster wird als Symbol angezeigt und hat den Fokus.
vbMaximizedFocus	3	Fenster ist maximiert und hat den Fokus.
vbNormalNoFocus	4	Fenster wird mit der letzten Größe und Position wiederhergestellt. Das momentan aktive Fenster bleibt aktiv.
vbMinimizedNoFocus	6	Fenster wird als Symbol angezeigt. Das momentan aktive Fenster bleibt aktiv.
Auf einem Macintosh stellen vbNormalFocus, vbMinimizedFocus und vbMaximizedFocus die Anwendung in den Vordergrund, vbHide, vbNoFocus und vbMinimizedNoFocus stellen die Anwendung in den Hintergrund.


StrConv-Konstanten

Die folgenden Konstanten können überall im Code anstelle der tatsächlichen Werte verwendet werden:

Konstante	Wert	Beschreibung
vbUpperCase	1	Wandelt die Zeichenfolge in Großbuchstaben um.
vbLowerCase	2	Wandelt die Zeichenfolge in Kleinbuchstaben um.
vbProperCase	3	Wandelt den Anfangsbuchstaben in jedem Wort der Zeichenfolge in einen Großbuchstaben um.
vbWide	4	Wandelt schmale Zeichen (Einzelbyte) in der Zeichenfolge in breite Zeichen (Doppelbyte) um. Betrifft Gebietsschemata Fernost.
vbNarrow	8	Wandelt breite Zeichen (Doppelbyte) in der Zeichenfolge in schmale Zeichen (Einzelbyte) um. Betrifft Fernost-Gebietsschemata.
vbKatakana	16	Wandelt Hiragana-Zeichen in der Zeichenfolge in Katakana-Zeichen um. Betrifft nur Japan.
vbHiragana	32	Wandelt Katakana-Zeichen in der Zeichenfolge in Hiragana-Zeichen um. Betrifft nur Japan.
vbUnicode	64	Wandelt die Zeichenfolge unter Verwendung der Standard-Zeichenumsetzungstabelle des Systems in Unicode um. (Nicht verfügbar auf dem Macintosh.)
vbFromUnicode	128	Wandelt die Zeichenfolge unter Verwendung der Standard-Zeichenumsetzungstabelle des Systems aus Unicode um. (Nicht verfügbar auf dem Macintosh.)


VarType-Konstanten

Die folgenden Konstanten können überall im Code anstelle der tatsächlichen Werte verwendet werden:

Konstante	Wert	Beschreibung
vbEmpty	0	Nicht initialisiert (Voreinstellung)
vbNull	1	Enthält keine gültigen Daten
vbInteger	2	Wert vom Typ Integer
vbLong	3	Ganzzahl vom Typ Long
vbSingle	4	Fließkommawert einfacher Genauigkeit
vbDouble	5	Fließkommawert doppelter Genauigkeit
vbCurrency	6	Wert vom Typ Currency
vbDate	7	Wert vom Typ Date
vbString	8	Wert vom Typ String
vbObject	9	Objekt
vbError	10	Fehler
vbBoolean	11	Wert vom Typ Boolean
vbVariant	12	Wert vom Typ Variant (angewendet nur bei Datenfeldern mit Variant-Werten)
vbDataObject	13	Datenzugriffsobjekt
vbDecimal	14	Wert vom Typ Decimal
vbByte	17	Wert vom Typ Byte
vbUserDefinedType	36	Werte vom Typ Variant, die benutzerdefinierte Typen enthalten
vbArray	8192	Datenfeld


Farbkonstanten

Die folgenden Konstanten können überall im Code anstelle der tatsächlichen Werte verwendet werden:

Konstante	Wert	Beschreibung
vbBlack	0x0	Schwarz
vbRed	0xFF	Rot
vbGreen	0xFF00	Grün
vbYellow	0xFFFF	Gelb
vbBlue	0xFF0000	Blau
vbMagenta	0xFF00FF	Magenta
vbCyan	0xFFFF00	Zyan
vbWhite	0xFFFFFF	Weiß


Tasten-Code-Konstanten

Die folgenden Konstanten können überall im Code anstelle der tatsächlichen Werte verwendet werden:

Konstante	Wert	Beschreibung
vbKeyLButton	0x1	Linke Maustaste
vbKeyRButton	0x2	Rechte Maustaste
vbKeyCancel	0x3	ABBRECHEN-TASTE
vbKeyMButton	0x4	Mittlere Maustaste
vbKeyBack	0x8	RÜCKTASTE
vbKeyTab	0x9	TAB-TASTE
vbKeyClear	0xC	ENTF-TASTE
vbKeyReturn	0xD	EINGABETASTE
vbKeyShift	0x10	UMSCHALTTASTE
vbKeyControl	0x11	STRG-TASTE
vbKeyMenu	0x12	MENÜTASTE
vbKeyPause	0x13	PAUSE-TASTE
vbKeyCapital	0x14	FESTSTELLTASTE
vbKeyEscape	0x1B	ESC-TASTE
vbKeySpace	0x20	LEERTASTE
vbKeyPageUp	0x21	BILD-AUF-TASTE
vbKeyPageDown	0x22	BILD-AB-TASTE
vbKeyEnd	0x23	ENDE-TASTE
vbKeyHome	0x24	POS1-TASTE
vbKeyLeft	0x25	NACH-LINKS-TASTE
vbKeyUp	0x26	NACH-OBEN-TASTE
vbKeyRight	0x27	NACH-RECHTS-TASTE
vbKeyDown	0x28	NACH-UNTEN-TASTE
vbKeySelect	0x29	AUSWAHLTASTE
vbKeyPrint	0x2A	DRUCK
vbKeyExecute	0x2B	AUSFÜHREN-TASTE
vbKeySnapshot	0x2C	SNAPSHOT-TASTE
vbKeyInsert	0x2D	EINFG-TASTE
vbKeyDelete	0x2E	LÖSCHEN-TASTE
vbKeyHelp	0x2F	HILFETASTE
vbKeyNumlock	0x90	NUM-TASTE
Die Tasten A bis Z entsprechen den ASCII-Zeichen A - Z:

Konstante	Wert	Beschreibung
vbKeyA	65	A-TASTE
vbKeyB	66	B-TASTE
vbKeyC	67	C-TASTE
vbKeyD	68	D-TASTE
vbKeyE	69	E-TASTE
vbKeyF	70	F-TASTE
vbKeyG	71	G-TASTE
vbKeyH	72	H-TASTE
vbKeyI	73	I-TASTE
vbKeyJ	74	J-TASTE
vbKeyK	75	K-TASTE
vbKeyL	76	L-TASTE
vbKeyM	77	M-TASTE
vbKeyN	78	N-TASTE
vbKeyO	79	O-TASTE
vbKeyP	80	P-TASTE
vbKeyQ	81	Q-TASTE
vbKeyR	82	R-TASTE
vbKeyS	83	S-TASTE
vbKeyT	84	T-TASTE
vbKeyU	85	U-TASTE
vbKeyV	86	V-TASTE
vbKeyW	87	W-TASTE
vbKeyX	88	X-TASTE
vbKeyY	89	Y-TASTE
vbKeyZ	90	Z-TASTE
Die Tasten 0 bis 9 entsprechen den ASCII-Zeichen 0 - 9:

Konstante	Wert	Beschreibung
vbKey0	48	0-TASTE
vbKey1	49	1-TASTE
vbKey2	50	2-TASTE
vbKey3	51	3-TASTE
vbKey4	52	4-TASTE
vbKey5	53	5-TASTE
vbKey6	54	6-TASTE
vbKey7	55	7-TASTE
vbKey8	56	8-TASTE
vbKey9	57	9-TASTE
Die folgenden Kontanten repräsentieren die Zahlen auf der Zehnertastatur:

Konstante	Wert	Beschreibung
vbKeyNumpad0	0x60	0-TASTE
vbKeyNumpad1	0x61	1-TASTE
vbKeyNumpad2	0x62	2-TASTE
vbKeyNumpad3	0x63	3-TASTE
vbKeyNumpad4	0x64	4-TASTE
vbKeyNumpad5	0x65	5-TASTE
vbKeyNumpad6	0x66	6-TASTE
vbKeyNumpad7	0x67	7-TASTE
vbKeyNumpad8	0x68	8-TASTE
vbKeyNumpad9	0x69	9-TASTE
vbKeyMultiply	0x6A	MULTIPLIKATIONSZEICHEN-TASTE (*)
vbKeyAdd	0x6B	PLUSZEICHEN-TASTE (+)
vbKeySeparator	0x6C	EINGABETASTE
vbKeySubtract	0x6D	MINUSZEICHEN-TASTE (–)
vbKeyDecimal	0x6E	DEZIMALPUNKT-TASTE (.)
vbKeyDivide	0x6F	DIVISIONSZEICHEN-TASTE (/)
Die folgenden Konstanten repräsentieren die Funktionstasten:

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


Systemfarben-Konstanten

Die folgenden Konstanten können überall im Code anstelle der tatsächlichen Werte verwendet werden:

Konstante	Wert	Beschreibung
vbScrollBars	0x80000000	Farbe der Bildlaufleiste
vbDesktop	0x80000001	Desktop-Farbe
vbActiveTitleBar	0x80000002	Farbe der Titelleiste des aktiven Fensters
vbInactiveTitleBar	0x80000003	Farbe der Titelleiste des inaktiven Fensters
vbMenuBar	0x80000004	Menühintergrundfarbe
vbWindowBackground	0x80000005	Fensterhintergrundfarbe
vbWindowFrame	0x80000006	Fensterrahmenfarbe
vbMenuText	0x80000007	Farbe des Menütextes
vbWindowText	0x80000008	Farbe des Textes in Fenstern
vbTitleBarText	0x80000009	Farbe des Titeltextes, des Größeneinstellungsfeldes und des Bildlaufpfeils
vbActiveBorder	0x8000000A	Rahmenfarbe des aktiven Fensters
vbInactiveBorder	0x8000000B	Rahmenfarbe des inaktiven Fensters
vbApplicationWorkspace	0x8000000C	Hintergrundfarbe von MDI-Anwendungen (MDI = multiple-document interface)
vbHighlight	0x8000000D	Hintergrundfarbe von Elementen, die in einem Steuerelement ausgewählt wurden
vbHighlightText	0x8000000E	Textfarbe von Elementen, die in einem Steuerelement ausgewählt wurden
vbButtonFace	0x8000000F	Farbe der Schattierung der Oberfläche einer Befehlsschaltfläche
vbButtonShadow	0x80000010	Farbe der Schattierung am Rand einer Befehlsschaltfläche
vbGrayText	0x80000011	Abgeblendeter (deaktivierter) Text
vbButtonText	0x80000012	Farbe des Schaltflächentextes
vbInactiveCaptionText	0x80000013	Textfarbe eines inaktiven Titels
vb3DHighlight	0x80000014	Markierungsfarbe für dreidimensional angezeigte Elemente
vb3DDKShadow	0x80000015	Farbe des dunkelsten Schattens für 3D-Elemente
vb3DLight	0x80000016	Zweithellste Farbe für dreidimensional angezeigte Elemente nach vb3Dhighlight
vbInfoText	0x80000017	Farbe des QuickInfo-Textes
vbInfoBackground	0x80000018	Hintergrundfarbe des QuickInfo-Textes


CallType-Konstanten

Die folgenden Konstanten können überall im Code anstelle der tatsächlichen Werte verwendet werden:

Konstante	Wert	Beschreibung
vbMethod	1	Gibt an, daß eine Methode aufgerufen wurde.
vbGet	2	Gibt eine Property Get-Prozedur an.
vbLet	4	Gibt eine Property Let-Prozedur an.
vbSet	8	Gibt eine Property Set-Prozedur an.


Form-Konstanten
Formularkonstanten

Die folgenden Konstanten können überall im Code anstelle der tatsächlichen Werte verwendet werden:

Konstante	Wert	Beschreibung
vbModeless	0	UserForm ist ungebunden.
vbModal	1	UserForm ist gebunden (Voreinstellung).


Call-Anweisung (Beispiel)

In dem folgenden Beispiel wird veranschaulicht, wie Sie mit der Call-Anweisung die Steuerung an eine Sub-Prozedur, eine integrierte Funktion und eine Prozedur in einer Dynamic Link Library (DLL) übergeben können.DLLs werden auf dem Macintosh nicht verwendet.

' Sub-Prozedur aufrufen.

Call AusgabeImTestfenster("Hallo Welt")

' Übergibt Steuerung an folgende Sub-Prozedur.

Sub AusgabeImTestfenster(Text)

Debug.Print Text	' Ausgabe direkt im Fenster.

End Sub

' Integrierte Funktion aufrufen. Der Rückgabewert der Funktion wird

' nicht verarbeitet.

Call Shell(AnwendungsName, 1)	' AnwendungsName enthält den Pfad

' der ausführbaren Datei.

' Prozedur in einer Microsoft Windows-DLL aufrufen. Die Declare-

' Anweisung muß in einem Klassenmodul das Attribut Private haben, in

' einem Standardmodul aber nicht.

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

Sub DllAufrufen()

Call MessageBeep(0)	' Windows DLL-Prozedur aufrufen.

MessageBeep 0	' Nochmal ohne Schlüsselwort Call.

End Sub

' Macintosh Code-Ressource aufrufen.

Declare Sub Warnmeldung Lib "Hd1:Warnung1" Alias "Warnung1" (ByVal N _

As Integer)

Sub CodeRessourceAufrufen()

Call Warnmeldung(0)	' Macintosh Code-Ressource aufrufen.

Warnmeldung 0	' Nochmal ohne Schlüsselwort Call.

End Sub


Choose-Funktion (Beispiel)

In diesem Beispiel wird die Choose-Funktion verwendet, um als Reaktion auf die Weitergabe eines Indexes an eine Prozedur im Ind-Parameter einen Namen anzuzeigen.

Function GetChoice(Ind As Integer)

GetChoice = Choose(Ind, "Hopfen", "Malz", "Hefe")

End Function


DoEvents-Funktion (Beispiel)

In diesem Beispiel wird die DoEvents-Funktion verwendet, um nach jeweils 1000 Schleifendurchläufen die Steuerung an das Betriebssystem zu übergeben. DoEvents gibt die Anzahl der geöffneten Visual Basic-Formulare zurück, tut dies allerdings nur, wenn Visual Basic die Host-Anwendung ist.

' Variable erstellen, in der die Anzahl der geladenen und sichtbaren

' Visual Basic-Formulare gespeichert wird.

Dim I, GeöffneteFormulare

For I = 1 To 150000	' Schleifenanfang.

If I Mod 1000 = 0 Then 	' Nach 1000 Durchläufen Steuerung

GeöffneteFormulare = DoEvents	' an das Betriebssystem abgeben.

End If

Next I	' Schleifenzähler hochzählen.


Do...Loop-Anweisungen (Beispiel)

In diesem Beispiel wird eine Einsatzmöglichkeit für die Do...Loop-Anweisungen gezeigt. Die innere Do...Loop-Anweisung führt 10 Durchläufe durch, legt den Wert des Attributs auf False fest und beendet die Schleife vorzeitig mit der Exit Do-Anweisung. Die äußere Schleife wird sofort nach dem Überprüfen des Attributs beendet.

Dim Check, Counter

Test = True: Zähler = 0	' Variablen initialisieren.

Do	' Äußere Schleife.

Do While Zähler < 20	' Innere Schleife.

Zähler = Zähler + 1	' Zähler hochzählen.

If Zähler = 10 Then	' Wenn Bedingung = True,

Test = False	' Attributwert auf False setzen.

Exit Do	' Innere Schleife verlassen.

End If

Loop

Loop Until Test = False	' Äußere Schleife sofort verlassen.


End-Anweisung (Beispiel)

In diesem Beispiel wird die End-Anweisung verwendet, um die Ausführung des Codes zu beenden, wenn der Benutzer ein falsches Kennwort eingibt.

Sub Form_Load

Dim Kennwort, KWort

Kennwort = "Schwertfisch"

KWort = InputBox("Geben Sie Ihr Kennwort ein")

If KWort <> Kennwort Then

MsgBox "Sie haben ein falsches Kennwort eingegeben"

End

End If

End Sub


Exit-Anweisung (Beispiel)

In diesem Beispiel wird die Exit-Anweisung verwendet, um eine For...Next-Schleife, eine Do...Loop-Anweisung und eine Sub-Prozedur zu verlassen.

Sub ExitAnweisungDemo()

Dim I, Zahl1

Do	' Endlosschleife.

For I = 1 To 1000	' 1000 Durchläufe.

Zahl1 = Int(Rnd * 1000)	' Zufallszahl generieren.

Select Case Zahl1	' Zufallszahl auswerten.

Case 7: Exit For	' Wenn 7, For...Next beenden.

Case 29: Exit Do	' Wenn 29, Do...Loop beenden.

Case 54: Exit Sub	' Wenn 54, Sub-Prozedur beenden.

End Select

Next I

Loop

End Sub


For Each...Next-Anweisung (Beispiel)

In diesem Beispiel wird die For Each...Next-Anweisung verwendet, um die Text-Eigenschaft aller Elemente in einer Auflistung auf das Vorhandensein der Zeichenfolge "Hallo" zu untersuchen. Im Beispiel ist Objekt1 ein Objekt, das Text enthalten kann und ein Element der Auflistung Auflistung1 darstellt. Die beiden Bezeichnungen dienen lediglich Demonstrationszwecken.

Dim Gefunden, Objekt1, Auflistung1

Gefunden = False	' Variable initialisieren.

For Each Objekt1 In Auflistung1	' Alle Elemente durchlaufen.

If Objekt1.Text = "Hallo" Then	' Wenn Text gleich "Hallo",

Gefunden = True	' Gefunden auf True setzen.

Exit For	' Schleife verlassen.

End If

Next


For...Next-Anweisung (Beispiel)

In diesem Beispiel wird die For...Next-Anweisung verwendet, um eine Zeichenfolge mit zehn Vorkommen der Ziffern von 0 bis 9 zu erstellen. Die Zahlenfolgen sind durch jeweils ein Leerzeichen voneinander getrennt. Die äußere Schleife verwendet eine Variable als Schleifenzähler, deren Wert bei jedem Schleifendurchlauf um eins verringert wird.

Dim Wörter, Zeichen, Text1

For Wörter = 10 To 1 Step -1 	' 10 Wiederholungen.

For Zeichen = 0 To 9	' 10 Wiederholungen.

Text1 = Text1 & Zeichen	' Zahl an Zeichenfolge anfügen.

Next Zeichen	' Zähler hochzählen

Text1 = Text1 & " "	' Leerzeichen anfügen.

Next Wörter


GoSub...Return-Anweisung (Beispiel)

In diesem Beispiel wird GoSub verwendet, um eine Unterroutine innerhalb einer Sub-Prozedur aufzurufen. Die Ausführung wird nach Ausführung der Return-Anweisung mit der Anweisung fortgesetzt, die auf die GoSub-Anweisung folgt. Die Exit Sub-Anweisung verhindert, daß der Code der Unterroutine versehentlich ausgeführt werden kann.

Sub GoSubDemo()

Dim Zahl

' Zahleneingabe vom Benutzer.

Zahl = InputBox("Positive Zahl, die durch 2 teilbar ist.")

' Routine nur aufrufen, wenn Benutzer eine positive Zahl eingibt.

If Zahl > 0 Then GoSub Routine1

Debug.Print Zahl

Exit Sub	' Exit, um Fehler zu vermeiden.

Routine1:

Zahl = Zahl/2	' Division durchführen.

Return	' Steuerung an Anweisung zurück, die

End Sub	' auf GoSub-Anweisung folgt.


GoTo-Anweisung (Beispiel)

In diesem Beispiel wird die GoTo-Anweisung verwendet, um zu Zeilenmarken innerhalb einer Prozedur zu verzweigen.

Sub GotoAnweisungDemo()

Dim Zahl, Text1

Zahl = 1 	' Variable initialisieren.

' Zahl auswerten und zur entsprechenden Marke verzweigen.

If Zahl = 1 Then GoTo Zeile1 Else GoTo Zeile2

Zeile1:

Text1 = "Zahl ist gleich 1"

GoTo LetzteZeile	' Zu LetzteZeile verzweigen.

Zeile2:

' Die nächste Anweisung wird niemals ausgeführt.

Text1 = "Zahl ist gleich 2"

LetzteZeile:

Debug.Print Text1	' "Zahl ist gleich 1" ' Direkt im Fenster ausgeben.

End Sub


If...Then...Else-Anweisung (Beispiel)

In diesem Beispiel wird die Blockform und die einzeilige Form der If...Then...Else-Anweisung gezeigt und zudem die Verwendung von If TypeOf...Then...Else demonstriert.

Dim Zahl, Stellen, Text1

Zahl = 53	' Variable initialisieren.

If Zahl < 10 Then

Stellen = 1

ElseIf Zahl < 100 Then

' Bedingung ist erfüllt, also wird die nächste Anweisung ausgeführt.

Stellen = 2

Else

Stellen = 3

End If

' Zuweisen eines Wertes mit der einzeiligen Syntaxvariante.

If Stellen = 1 Then Text1 = "Eine" Else Text1 = "Mehrere"

Mit der If TypeOf-Konstruktion wird festgelegt, welcher Steuerelementtyp an eine Prozedur übergeben wird.

Sub Steuerelementverarbeitung(StElement1 As Control)

If TypeOf StElement1 Is CommandButton Then

Debug.Print "Sie haben folgenden Steuerelementtyp übergeben: " _

& TypeName(StElement1)

ElseIf TypeOf StElement1 Is CheckBox Then

Debug.Print "Sie haben folgenden Steuerelementtyp übergeben: " _

& TypeName(StElement1)

ElseIf TypeOf StElement1 Is TextBox Then

Debug.Print "Sie haben folgenden Steuerelementtyp übergeben: " _

& TypeName(StElement1)

End If

End Sub


IIf-Funktion (Beispiel)

In diesem Beispiel wird die IIf-Funktion verwendet, um den Parameter Test1 der Prüfen-Prozedur auszuwerten. Wenn die Anzahl größer als 1000 ist, wird das Wort "Groß" zurückgegeben, andernfalls wird das Wort "Klein" zurückgegeben.

Function Prüfen (Test1 As Integer)

Prüfen = IIf(Test1 > 1000, "Groß", "Klein")

End Function


On...GoSub-, On...GoTo-Anweisung (Beispiel)

In diesem Beispiel werden die Anweisungen On...GoSub und On...GoTo verwendet, um zu Unterroutinen bzw. Zeilenmarken zu verzweigen.

Sub OnGosubGotoDemo()

Dim Zahl, Text1

Zahl = 2	' Variable initialisieren.

' Nach Sub2 verzweigen.

On Zahl GoSub Sub1, Sub2	' Ausführung nach On...GoSub

' hier fortsetzen.

On Zahl GoTo Zeile1, Zeile2	' Nach Zeile2 verzweigen.

' Ausführung wird nach On...GoTo nicht hier fortgesetzt.

Exit Sub

Sub1:

Text1 = "In Sub1" : Return

Sub2:

Text1 = "In Sub2" : Return

Zeile1:

Text1 = "In Zeile1"

Zeile2:

Text1 = "In Zeile2"

End Sub


Partition-Funktion (Beispiel)

In diesem Beispiel wird davon ausgegangen, daß eine Tabelle "Bestellungen" ein Feld "Frachtkosten" enthält. Das Beispiel erstellt eine Auswahlprozedur, die die Anzahl der Bestellungen zählt, deren Frachtkosten in einem von mehreren Bereichen liegen. Mit der Partition-Funktion werden zuerst diese Bereiche eingerichtet, und anschließend zählt die SQL Funktion Count die Anzahl der Bestellungen in jedem Bereich. In diesem Beispiel hat die Partition-Funktion die Argumente Start = 0, Stop = 500, Intervall = 50. Der erste Bereich wäre also 0:49, der zweite 50:99 und so weiter bis 500.

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

Count(Bestellungen.Frachtkosten) AS Count

FROM Bestellungen

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


Select Case-Anweisung (Beispiel)

In diesem Beispiel wird die Select Case-Anweisung verwendet, um den Wert einer Variablen auszuwerten. Der zweite Case-Abschnitt enthält den Wert der ausgewerteten Variablen, und nur die zugehörige Anweisung wird ausgeführt.

Dim Zahl

Zahl = 8	' Variable initialisieren.

Select Case Zahl	' Zahl auswerten.

Case 1 To 5	' Zahl von 1 bis 5.

Debug.Print "Zahl von 1 bis 5"

' Das ist der einzige Case-Abschnitt, der True ergibt.

Case 6, 7, 8	' Zahl von 6 bis 8.

Debug.Print "Zahl von 6 bis 8"

Case Is 9 To 10	' Zahl ist 9 oder 10.

Debug.Print "Größer als 8"

Case Else	' Andere Werte.

Debug.Print "Außerhalb von 1 bis 10"

End Select


Shell Funktion (Beispiel)

In diesem Beispiel wird die Shell-Funktion verwendet, um eine vom Benutzer angegebene Anwendung zu starten. Auf dem MacIntosh ist der Standardlaufwerkname „HD“, und Bestandteile des Pfadnamens werden durch Doppelpunkte anstelle von umgekehrten Schrägstrichen getrennt. Auch würden Sie Macintosh-Ordner anstelle von \Windows angeben.

' 1 als zweites Argument startet die Anwendung in Normalgröße mit Fokus.

Dim Ergebnis

Ergebnis = Shell("C:\WINDOWS\CALC.EXE", 1)	' Rechner starten.


Stop-Statement (Beispiel)

In diesem Beispiel wird die Stop-Anweisung verwendet, um die Ausführung bei jedem Durchlauf der For...Next-Schleife anzuhalten.

Dim I

For I = 1 To 10	' For...Next-Schleife starten.

Debug.Print I	' I direkt im Fenster ausgeben.

Stop	' Bei jedem Durchlauf anhalten.

Next I


Switch-Funktion (Beispiel)

In diesem Beispiel wird die Switch-Funktion verwendet, um den Namen einer Sprache zurückzugeben, die dem Namen einer Stadt zugeordnet ist.

Function Zuordnen (Stadt As String)

Zuordnen = Switch(Stadt = "London", "Englisch", _

Stadt = "Rom", "Italienisch", Stadt = "Paris", "Französisch")

End Function


While...Wend-Anweisung (Beispiel)

In diesem Beispiel wird die While...Wend-Anweisung verwendet, um eine Zählervariable hochzuzählen. Die Anweisungen in der Schleife werden so lange ausgeführt, bis die Bedingung erfüllt ist (also den Wert True annimmt).

Dim Zähler

Zähler = 0	' Variable initialisieren.

While Zähler < 20	' Zähler überprüfen.

Zähler = Zähler + 1	' Zähler hochzählen.

Wend	' While-Schleife beenden, wenn

' Zähler > 19.

Debug.Print Zähler	' 20 direkt im Fenster ausgeben.


With-Anweisung (Beispiel)

In diesem Beispiel wird die With-Anweisung verwendet, um eine Reihe von Anweisungen auf einem einzelnen Objekt auszuführen. Der Name Objekt1 und die Namen der zugehörigen Eigenschaften sind allgemein und dienen lediglich Demonstrationszwecken.

With Objekt1

.Höhe = 100	' Entspricht Objekt1.Höhe = 100.

.Titel = "Hallo Welt"	' Entspricht Objekt1.Titel = "Hallo Welt".

With .Schrift

.Farbe = Rot	' Entspricht Objekt1.Schrift.Farbe = Rot.

.Fett = True	' Entspricht Objekt1.Schrift.Fett = True.

End With

End With


Call-Anweisung

Übergibt die Steuerung an eine Sub-Prozedur, eine Function-Prozedur oder eine Prozedur in einer Dynamic-Link Library (DLL).

Syntax

[Call] Name [ArgListe]

Die Syntax für die Call-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Call	Optionales Schlüsselwort. Falls es angegeben wird, muß ArgListe in Klammern stehen. Beispiel:
	Call Proz1(0)
Name	Erforderlich. Name der aufzurufenden Prozedur.
ArgListe	Optional. Durch Kommas getrennte Liste der Variablen, Datenfelder oder Ausdrücke, die an die Prozedur übergeben werden sollen. Die Elemente von ArgListe können in Verbindung mit den Schlüsselwörtern ByVal oder ByRef angegeben werden, um zu beschreiben, wie die aufgerufene Prozedur die Argumente behandelt. Allerdings können ByVal und ByRef nur dann mit Call verwendet werden, wenn eine DLL-Prozedur aufgerufen wird.Auf dem Macintosh können ByVal und ByRef mit Call verwendet werden, wenn ein Aufruf auf eine MacintoshCoderessource erfolgt.
Bemerkungen

Das Schlüsselwort Call muß nicht unbedingt beim Aufrufen einer Prozedur verwendet werden. Wenn Sie jedoch Call verwenden, um eine Prozedur aufzurufen, die Argumente erfordert, müssen Sie die Werte für ArgListe in Klammern einschließen. Wenn Sie das Schlüsselwort Call nicht angeben, sind auch keine Klammern um ArgListe zulässig. Wenn Sie mit Call in einer der beiden Syntaxvarianten eine integrierte oder benutzerdefinierte Funktion aufrufen, wird der Rückgabewert der Funktion verworfen.

Sie können auch ein ganzes Datenfeld an eine Prozedur übergeben, indem Sie den Datenfeldnamen gefolgt von einem leeren Klammernpaar angeben.


Choose-Funktion

Wählt einen Wert aus einer Liste von Argumenten aus und gibt ihn zurück.

Syntax

Choose(Index, Auswahl-1[, Auswahl-2, ... [, Auswahl-n]])

Die Syntax für die Choose-Funktion besteht aus folgenden Teilen:

Teil	Beschreibung
Index	Erforderlich. Numerischer Ausdruck oder Feld, der oder das einen Wert von 1 bis zur Anzahl der möglichen Auswahlwerte ergibt.
Auswahl	Erforderlich. Ein Variant-Ausdruck, der einen der möglichen Auswahlwerte enthält.
Bemerkungen

Choose gibt einen Wert aus der Auswahlliste zurück, der von dem Wert für Index abhängt. Hat Index den Wert 1, so gibt Choose den ersten Auswahlwert der Liste zurück, hat Index den Wert 2, so gibt Choose den zweiten Auswahlwert zurück usw.

Sie können mit Choose einen Wert aus einer Liste von möglichen Werten auswählen. Wenn Index z.B. den Wert 3 ergibt und Auswahl-1 = "Eins", Auswahl-2 = "Zwei" und Auswahl-3 = "Drei" ist, dann gibt Choose den Eintrag "Drei" zurück. Diese Auswahlmöglichkeit ist insbesondere dann hilfreich, wenn Index den Wert in einer Optionsgruppe darstellt.

Choose wertet jede mögliche Auswahl der Liste aus, gibt aber nur eine Auswahl zurück. Aus diesem Grund kann es zu unerwünschten Nebeneffekten kommen. Wenn Sie z.B. die MsgBox-Funktion als Teil eines Ausdrucks in allen möglichen Auswahlwerten verwenden, wird bei jeder Berechnung einer Auswahl ein Meldungsfeld angezeigt, obwohl Choose lediglich den Wert einer Auswahl zurückgibt.

Die Choose-Funktion gibt Null zurück, wenn Index kleiner als 1 oder größer als die Anzahl der aufgeführten Auswahlmöglichkeiten ist.

Wenn Index keine ganze Zahl ist, wird der Wert vor der Auswertung auf die nächste ganze Zahl gerundet.


DoEvents-Funktion

Übergibt die Steuerung an das Betriebssystem, damit es andere Ereignisse verarbeiten kann.

Syntax

DoEvents( )

Bemerkungen

Die DoEvents-Funktion gibt einen Wert vom Typ Integer zurück, der die Anzahl der geöffneten Formulare in eigenständigen Versionen von Visual Basic (z.B. Visual Basic, Professional Edition) repräsentiert. In allen anderen Anwendungen gibt DoEvents Null zurück.

DoEvents übergibt die Ablaufsteuerung an das Betriebssystem. Das Programm erhält erst dann die Steuerung wieder zurück, wenn das Betriebssystem alle wartenden Ereignisse verarbeitet hat und alle wartenden Tastenanschläge in der SendKeys-Warteschlange abgearbeitet sind.

DoEvents ist für einfache Operationen besonders hilfreich, wenn z.B. einem Benutzer die Möglichkeit gegeben werden soll, einen Prozeß abzubrechen, nachdem er begonnen wurde, beispielweise die Suche nach einer Datei. Bei länger andauernden Vorgängen sollte die Steuerung besser mit Hilfe eines Zeitgebers an den Prozessor abgegeben werden, oder die Aufgabe sollte einer ActiveX-EXE-Komponente übertragen werden. Im zweiten Fall kann die Aufgabe vollkommen unabhängig von Ihrer Anwendung durchgeführt werden, und das Betriebssystem übernimmt das Multitasking und die Zuteilung der Prozessorzeit.

Vorsicht°°°Jedesmal wenn Sie die Steuerung zeitweise innerhalb einer Ereignisprozedur an den Prozessor abgeben, sollten Sie sicherstellen, daß die Prozedur nicht von einem anderen Teil des Codes aufgerufen wird, bevor der erste Aufruf beendet ist. Die Folgen eines solchen Aufrufs sind nicht vorhersehbar. Führen Sie DoEvents auch dann nicht aus, wenn Sie nicht ausschließen können, daß andere Anwendungen in irgendeiner Weise eine Verbindung mit der Prozedur herstellen, während das Betriebssystem die Ausführung steuert.


Do...Loop-Anweisung

Wiederholt einen Block mit Anweisungen, solange eine Bedingung den Wert True hat oder bis eine Bedingung den Wert True erhält.

Syntax

Do [{While | Until} Bedingung]
[Anweisungen]
[Exit Do]
[Anweisungen]

Loop

Sie können auch die folgende, ebenfalls zulässige Syntax verwenden:

Do
[Anweisungen]
[Exit Do]
[Anweisungen]

Loop [{While | Until} Bedingung]

Die Syntax für die Do Loop-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Bedingung	Optional. Numerischer Ausdruck oder Zeichenfolgenausdruck, der entweder True oder False ergibt. Hat Bedingung den Wert Null, so wird Bedingung als False interpretiert.
Anweisungen	Eine oder mehrere Anweisungen, die wiederholt werden, solange oder bis Bedingung True wird.
Bemerkungen

Innerhalb einer Do…Loop-Anweisung kann eine beliebige Anzahl von Exit Do-Anweisungen an beliebiger Stelle als Alternative zum Verlassen einer Do…Loop-Anweisung verwendet werden. Exit Do wird oft in Zusammenhang mit der Auswertung einer Bedingung (zum Beispiel If...Then) eingesetzt und hat zur Folge, daß die Ausführung mit der ersten Anweisung im Anschluß an Loop fortgesetzt wird.

In verschachtelten Do...Loop-Anweisungen übergibt Exit Do die Steuerung an die Schleife der nächsthöheren Verschachtelungsebene.


End-Anweisung

Beendet eine Prozedur oder einen Block.

Syntax

End

End Function

End If

End Property

End Select

End Sub

End Type

End With

Für die Syntax der End-Anweisung gibt es folgende Varianten:

Anweisung	Beschreibung
End	Beendet die Ausführung sofort. Ist in dieser Form niemals erforderlich, kann aber an einer beliebigen Stelle innerhalb einer Prozedur angegeben werden, um die Ausführung von Code zu beenden, mit einer Open-Anweisung geöffnete Dateien zu schließen und Variablen zu löschen.
End Function	Erforderlich zum Beenden einer Function-Anweisung.
End If	Erforderlich zum Beenden einer If…Then…Else-Blockanweisung.
End Property	Erforderlich zum Beenden einer Prozedur vom Typ Property Let, Property Get oder Property Set.
End Select	Erforderlich zum Beenden einer Select Case-Anweisung.
End Sub	Erforderlich zum Beenden einer Sub-Anweisung.
End Type	Erforderlich zum Abschließen der Definition eines benutzerdefinierten Typs (Type-Anweisung).
End With	Erforderlich zum Beenden einer With-Anweisung.
Bemerkungen

Die End-Anweisung setzt bei ihrer Ausführung alle Variablen auf Modulebene sowie die statischen lokalen Variablen in allen Modulen zurück. Wenn Sie die Werte dieser Variablen noch benötigen, verwenden Sie statt dessen die Stop-Anweisung. Die Variablenwerte bleiben dann erhalten, und Sie können die Ausführung fortsetzen.

Anmerkung°°°Die End-Anweisung beendet die Ausführung von Code sofort, ohne die Ereignisse Unload, QueryUnload oder Terminate oder anderen Visual Basic-Code aufzurufen. Code, den Sie in den Ereignissen Unload, QueryUnload und Terminate von Formularen und Klassenmodulen plaziert haben, wird nicht ausgeführt. Objekte, die aus Klassenmodulen erstellt wurden, werden zerstört, Dateien, die mit der Open-Anweisung geöffnet wurden, werden geschlossen und Speicher, der von Ihrem Programm verwendet wurde, wird wieder freigegeben. Objektverweise, die von anderen Programmen verwendet werden, werden ungültig.

Die End-Anweisung stellt eine Möglichkeit dar, das Anhalten des Programms zu erzwingen. Für die normale Beendigung eines Visual Basic-Programms sollte Sie alle Formulare entladen. Ihr Programm wird geschlossen, wenn keine weiteren Programme mehr auf Objekte verweisen, die von Ihren öffentlichen Klassenmodulen bereitgestellt wurden, und kein Code mehr ausgeführt wird.


Exit-Anweisung

Verläßt einen durch Do…Loop, For...Next, Function, Sub oder Property definierten Code-Block.

Syntax

Exit Do

Exit For

Exit Function

Exit Property

Exit Sub

Für die Syntax der Exit-Anweisung gibt es folgende Varianten:

Anweisung	Beschreibung
Exit Do	Bietet eine Möglichkeit zum Verlassen einer Do...Loop-Anweisung und kann nur innerhalb einer Do...Loop-Anweisung verwendet werden. Exit Do hat zur Folge, daß die Ausführung mit der ersten Anweisung in Anschluß an die Loop-Anweisung fortgesetzt wird. In verschachtelten Do...Loop-Anweisungen übergibt Exit Do die Steuerung an die Schleife der nächsthöheren (= aufrufenden) Verschachtelungsebene.
Exit For	Bietet eine Möglichkeit zum Verlassen einer For-Schleife und kann nur in einer For...Next- oder For Each...Next-Schleife verwendet werden. Exit For hat zur Folge, daß die Ausführung mit der ersten Anweisung im Anschluß an die Next-Anweisung fortgesetzt wird. In verschachtelten For-Schleifen übergibt Exit For die Steuerung an die Schleife der nächsthöheren (= aufrufenden) Verschachtelungsebene.
Exit Function	Verläßt die umgebende Function-Prozedur umgehend. Das Programm setzt die Ausführung mit der Anweisung fort, die auf die Anweisung folgt, mit der die Function-Prozedur aufgerufen wurde.
Exit Property	Verläßt die umgebende Property-Prozedur umgehend. Das Programm setzt die Ausführung mit der Anweisung fort, die auf die Anweisung folgt, mit der die Property-Prozedur aufgerufen wurde.
Exit Sub	Verläßt die umgebende Sub-Prozedur umgehend. Das Programm setzt die Ausführung mit der Anweisung fort, die auf die Anweisung folgt, mit der die Sub-Prozedur aufgerufen wurde.
Bemerkungen

Verwechseln Sie die Exit-Anweisungen nicht mit den End-Anweisungen. Exit definiert nicht das Ende einer Struktur.


For Each...Next-Anweisung

Wiederholt eine Gruppe von Anweisungen für jedes Element in einem Datenfeld oder einer Auflistung.

Syntax

For Each Element In Gruppe
[Anweisungen]
[Exit For]
[Anweisungen]

Next [Element]

Die Syntax für die For...Each...Next-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Element	Erforderlich. Variable zum Durchlauf durch die Elemente der Auflistung oder des Datenfeldes. Bei Auflistungen ist für Element nur eine Variable vom Typ Variant, eine allgemeine Objektvariable oder eine beliebige spezielle Objektvariable zulässig. Bei Datenfeldern ist für Element nur eine Variable vom Typ Variant zulässig.
Gruppe	Erforderlich. Name einer Objektauflistung oder eines Datenfeldes (außer Datenfeldern mit benutzerdefinierten Typen).
Anweisungen	Optional. Eine oder mehrere Anweisungen, die für jedes Element in Gruppe ausgeführt werden.
Bemerkungen

Das Innere des For…Each-Blocks wird ausgeführt, wenn sich mindestens ein Element in Gruppe befindet. Nachdem mit der Ausführung der Schleife begonnen wurde, werden alle Anweisungen in der Schleife für das erste Element in Gruppe ausgeführt. Enthält Gruppe mehrere Elemente, so werden die Anweisungen in der Schleife für jedes Element wiederholt. Wenn alle Elemente in Gruppe abgearbeitet, verläßt das Programm die Schleife und setzt die Ausführung mit der Anweisung fort, die auf die Next-Anweisung folgt.

Innerhalb einer Schleife kann eine beliebige Anzahl von Exit For-Anweisungen an beliebiger Stelle als alternative Möglichkeit zum Verlassen der Schleife verwendet werden. Exit For wird oft in Zusammenhang mit der Auswertung einer Bedingung (zum Beispiel If...Then) eingesetzt und überträgt die Steuerung an die unmittelbar auf Next folgende Anweisung.

Sie können For…Each...Next-Schleifen verschachteln, indem Sie eine For…Each...Next-Schleife innerhalb einer anderen verwenden. Element muß jedoch für jede Schleife eindeutig sein.

Anmerkung°°°Wenn Sie Element in einer Next-Anweisung nicht angeben, wird die Ausführung trotzdem so fortgesetzt, als ob Element enthalten wäre. Eine Next-Anweisung vor der zugehörigen For-Anweisung führt zu einem Fehler.

Sie können die For...Each...Next-Anweisung nicht mit einem Datenfeld eines benutzerdefinierten Typs verwenden, da eine Variable vom Typ Variant keinen benutzerdefinierten Typ beinhalten darf.


For...Next-Anweisung

Wiederholt eine Gruppe von Anweisungen so oft wie angegeben.

Syntax

For Zähler = Anfang To Ende [Step Schritt]
[Anweisungen]
[Exit For]
[Anweisungen]

Next [Zähler]

Die Syntax für die For…Next-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Zähler	Erforderlich. Numerische Variable, die als Schleifenzähler dient. Eine boolesche Variable oder ein Element eines Datenfeldes ist nicht zulässig.
Anfang	Erforderlich. Startwert von Zähler.
Ende	Erforderlich. Endwert von Zähler.
Schritt	Optional. Betrag, um den Zähler bei jedem Schleifendurchlauf verändert wird. Falls kein Wert angegeben wird, ist die Voreinstellung für Schritt eins.
Anweisungen	Optional. Eine oder mehrere Anweisungen zwischen For und Next, die so oft wie angegeben ausgeführt werden.
Bemerkungen

Das Argument Schritt ist entweder positiv oder negativ. Der Wert des Arguments Schritt legt die Schleifenausführung folgendermaßen fest:

Wert	Schleifenausführung, wenn
Positiv oder 0	Zähler <= Ende
Negativ	Zähler >= Ende
Nachdem alle Anweisungen in der Schleife ausgeführt wurden, addiert das Programm Schritt zum Wert von Zähler hinzu. Die Anweisungen in der Schleife werden dann entweder erneut ausgeführt (aufgrund desselben Tests, der auch zu Beginn des ersten Durchlaufs durchgeführt wurde), oder das Programm beendet die Schleife und setzt die Ausführung mit der auf die Next-Anweisung folgenden Anweisung fort.

Tip°°°Das Ändern des Wertes von Zähler innerhalb einer Schleife kann zur Folge haben, daß der Code komplizierter und schwerer zu testen wird.

Innerhalb einer Schleife kann eine beliebige Anzahl von Exit For-Anweisungen an beliebiger Stelle als alternative Möglichkeit zum Verlassen der Schleife verwendet werden. Exit For wird oft in Zusammenhang mit der Auswertung einer Bedingung (zum Beispiel If...Then) eingesetzt und überträgt die Steuerung an die unmittelbar auf Next folgende Anweisung.

Sie können For...Next-Schleifen verschachteln, indem Sie eine For...Next-Schleife innerhalb einer anderen verwenden. Das Argument Zähler muß für jede Schleife einen eindeutigen Variablennamen erhalten. Die folgende Konstruktion ist korrekt:

For I = 1 To 10

For J = 1 To 10

For K = 1 To 10

...

Next K

Next J

Next I

Anmerkung°°°Wenn Sie Zähler in einer Next-Anweisung nicht angeben, wird die Ausführung trotzdem so fortgesetzt, als ob Zähler enthalten wäre. Eine Next-Anweisung vor der zugehörigen For-Anweisung führt zu einem Fehler.


GoSub...Return-Anweisung

Verzweigt zu einer Unterroutine innerhalb einer Prozedur und kehrt zum Ausgangspunkt zurück.

Syntax

GoSub Zeile
...
Zeile
...

Return

Beim Argument Zeile kann es sich um eine beliebige Zeilenmarke oder Zeilennummer handeln.

Bemerkungen

GoSub und Return sind an allen Stellen in einer Prozedur zulässig, aber das zusammengehörende Anweisungspaar muß sich in ein- und derselben Prozedur befinden. Eine Unterroutine kann mehrere Return-Anweisungen enthalten, aber beim Auftreten der ersten Return-Anweisung kehrt das Programm zu der Anweisung zurück, die unmittelbar auf die zuletzt ausgeführte GoSub-Anweisung folgt.

Anmerkung°°°Mit GoSub...Return können Sie keine Sub-Prozeduren aufrufen oder verlassen.

Tip°°°Das Erstellen separater Prozeduren, die aufgerufen werden können, ist strukturierter als eine GoSub...Return-Konstruktion.


GoTo-Anweisung

Verzweigt ohne Bedingung zu einer bestimmten Zeile innerhalb einer Prozedur.

Syntax

GoTo Zeile

Beim erforderlichen Argument Zeile kann es sich um eine beliebige Zeilenmarke oder Zeilennummer handeln.

Bemerkungen

GoTo kann nur zu Zeilen innerhalb der umgebenden Prozedur verzweigen.

Anmerkung   Durch zu viele GoTo-Anweisungen wird der Code schwer verständlich, und das Testen des Codes wird schwieriger. Verwenden Sie daher möglichst nur die Anweisungen zu strukturierten Ablaufsteuerung (Do...Loop, For...Next, If...Then...Else, Select Case).


If...Then...Else-Anweisung

Führt eine Gruppe von Anweisungen aus, wenn bestimmte Bedingungen erfüllt sind, die vom Wert eines Ausdrucks abhängen.

Syntax

If Bedingung Then [Anweisungen] [Else elseAnweisungen]

Alternativ können Sie die Block-Syntax verwenden:

If Bedingung Then
[Anweisungen]

[ElseIf Bedingung-n Then
[elseifAnweisungen] ...

[Else
[elseAnweisungen]]

End If

Die Syntax für die If...Then...Else-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Bedingung	Erforderlich. Ein oder mehrere Ausdrücke der beiden folgenden Arten:
	Ein numerischer Ausdruck oder ein Zeichenfolgenausdruck, der True oder False ergibt. Wenn Bedingung den Wert Null hat, wird Bedingung als False interpretiert.
	Ein Ausdruck der Form TypeOf Objektname Is Objekttyp. Objektname ist ein beliebiger Objektverweis, und Objekttyp ist ein beliebiger gültiger Objekttyp. Der Ausdruck ergibt True, wenn Objektname dem Objekttyp entspricht, der durch Objekttyp angegeben wird. Andernfalls ist das Ergebnis False.
Anweisungen	Optional in Form eines Blocks, erforderlich in der einzeiligen Variante, die keinen Else-Abschnitt beinhaltet. Eine oder mehrere durch Doppelpunkte getrennte Anweisungen, die ausgeführt werden, wenn Bedingung den Wert True hat.
Anweisung-n	Optional. Dieselbe Bedeutung wie Bedingung.
elseifAnweisungen	Optional. Eine oder mehrere Anweisungen, die ausgeführt werden, wenn die zugehörige Bedingung (Bedingung-n) True ergibt.
elseAnweisungen	Optional. Eine oder mehrere Anweisungen, die ausgeführt werden, wenn keine der Bedingungen (Bedingung-Ausdruck oder Bedingung-n-Ausdruck) True ergibt.
Bemerkungen

Die einzeilige Variante (erste Syntax) bietet sich bei einfachen, kurzen Tests an. Die Blockvariante (zweite Syntax) ist dagegen strukturierter und flexibler als die einzeilige Variante und kann in der Regel leichter gelesen, gepflegt und getestet werden.

Anmerkung°°°Die einzeilige Syntax erlaubt die Ausführung mehrerer Anweisungen als Ergebnis einer If...Then-Entscheidung. Dazu müssen sich aber alle Anweisungen in einer Zeile befinden und durch Doppelpunkte voneinander getrennt sein, wie in der folgenden Zeile:

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

Eine Anweisung für einen If-Block muß die erste Anweisung in einer Zeile sein. Vor den Schlüsselwörtern Else, ElseIf und End If der Anweisung ist nur eine Zeilennummer oder Zeilenmarke zulässig. Der If-Block muß mit einer End If-Anweisung beendet werden.

Sie können feststellen, ob es sich bei der Anweisung um einen If-Block handelt, indem Sie den Code untersuchen, der dem Schlüsselwort Then folgt. Befindet sich hinter dem Then in derselben Zeile weiterer Code (außer einem Kommentar), so handelt es sich um einen einzeilige If-Anweisung.

Die Abschnitte Else und ElseIf sind beide optional. In einem If-Block können Sie beliebig viele ElseIf-Abschnitte verwenden, nach einem Else-Abschnitt sind jedoch keine ElseIf-Abschnitte zulässig. If-Blöcke dürfen verschachtelt sein (also selbst wieder If-Blöcke enthalten).

Bei der Ausführung eines If-Blocks (zweite Syntax) wird zunächst Bedingung überprüft. Ergibt Bedingung den Wert True, so werden die Anweisungen im Anschluß an Then ausgeführt. Ergibt Bedingung den Wert False, so werden die ElseIf-Bedingungen (sofern vorhanden) der Reihe nach ausgewertet. Sobald eine dieser Bedingungen True ergibt, werden die Anweisungen im Anschluß an das zugehörige Then ausgeführt. Ergibt keine der ElseIf-Bedingungen True (oder sind überhaupt keine ElseIf-Abschnitte vorhanden), so werden die Anweisungen im Anschluß an Else ausgeführt. Sobald die Anweisungen nach einem Then- oder Else-Abschnitt ausgeführt wurden, setzt das Programm die Ausführung mit der Anweisung im Anschluß an End If fort.

Tip°°°Select Case kann in Situationen sinnvoll sein, in denen bei der Auswertung eines einzelnen Ausdrucks mehrere Entscheidungen getroffen werden müssen. Der Abschnitt TypeOf Objektname Is Objekttyp kann nicht zusammen mit der Select Case-Anweisung verwendet werden.

Anmerkung   TypeOf kann, außer mit Objekttypen, nicht mit harten Datentypen wie z.B. Long, Integer usw., verwendet werden.


IIf-Funktion

Gibt einen von zwei Teilen zurück, abhängig von der Auswertung eines Ausdrucks.

Syntax

IIf(expr, truepart, falsepart)

Die Syntax der IIf-Funktion verwendet die folgenden benannten Argumente:

Teil	Beschreibung
expr	Erforderlich. Der auszuwertende Ausdruck.
Truepart	Erforderlich. Der zurückgegebene Wert oder Ausdruck, wenn expr den Wert True ergibt.
Falsepart	Erforderlich. Der zurückgegebene Wert oder Ausdruck, wenn expr den Wert False ergibt.
Bemerkungen

IIf wertet immer sowohl den Teil truepart als auch den Teil falsepart aus, auch dann, wenn nur einer von beiden Teilen zurückgegeben wird. Aus diesem Grund kann es zu unerwünschten Nebeneffekten kommen. Wenn z.B. die Auswertung von falsepart zu einem Fehler aufgrund einer Division durch Null führt, tritt ein Fehler auch dann auf, wenn expr den Wert True hat.


On...GoSub-, On...GoTo-Anweisungen

Verzweigt zu einer von mehreren angegebenen Zeilen, abhängig vom Wert eines Ausdrucks.

Syntax

On Ausdruck GoSub Zielliste

On Ausdruck GoTo Zielliste

Die Syntax der Anweisungen On...GoSub und On...GoTo besteht aus folgenden Teilen:

Teil	Beschreibung
Ausdruck	Erforderlich. Ein beliebiger numerischer Ausdruck, der eine ganze Zahl im Bereich von 0 bis 255 (einschließlich) ergibt. Wenn Ausdruck keine ganze Zahl ergibt, wird das Ergebnis vor der Auswertung gerundet.
Zielliste	Erforderlich. Liste mit Zeilennummern oder Zeilenmarken, die durch Kommas getrennt sind.
Bemerkungen

Der Wert von Ausdruck legt die Zeile in der Zielliste fest, zu der das Programm verzweigt und die Ausführung fortgesetzt wird. Wenn der Wert von Ausdruck kleiner als 1 oder größer als die Anzahl der Elemente in der Liste ist, geschieht folgendes:

Wert von Ausdruck	Ergebnis
Gleich 0	Das Programm setzt die Ausführung mit der Anweisung im Anschluß an On...GoSub oder On...GoTo fort.
Größer als Anzahl der Listenelemente	Das Programm setzt die Ausführung mit der Anweisung im Anschluß an On...GoSub oder On...GoTo fort.
Negativ	Ein Fehler tritt auf.
Größer als 255	Ein Fehler tritt auf.
In einer Liste können Zeilennummern und Zeilenmarken kombiniert werden. Die Anzahl der möglichen Zeilennummern oder -marken in On...GoSub- und On...GoTo-Anweisungen ist praktisch unbegrenzt. Sie müssen allerdings das Zeilenfortsetzungszeichen verwenden, wenn nicht alle Zeilennummern oder -marken in eine Zeile passen, um die logische Zeile in der nächsten Bildschirmzeile fortzusetzen.

Tip°°°Select Case stellt eine strukturiertere und flexiblere Möglichkeit zur Implementierung mehrfacher Verzweigungen dar.


Partition-Funktion

Gibt einen Wert vom Typ Variant (String) zurück, der anzeigt, an welcher Stelle innerhalb einer berechneten Folge von Bereichen eine Zahl auftritt.

Syntax

Partition(number, start, stop, interval)

Die Syntax der Partition-Funktion verwendet die folgenden benannten Argumente:

Teil	Beschreibung
number	Erforderlich. Eine ganze Zahl, für die Sie den zugehörigen Bereich ermitteln möchten.
start	Erforderlich. Eine ganze Zahl, die den Anfang aller Zahlenbereiche angibt. Sie kann nicht kleiner als 0 sein.
stop	Erforderlich. Eine ganze Zahl, die das Ende aller Zahlenbereiche angibt. Sie muß größer als start sein.
Bemerkungen

Die Partition-Funktion kennzeichnet denjenigen Bereich, in den number fällt, und gibt einen Variant-Wert (String) zurück, der diesen Bereich beschreibt. Die Partition-Funktion eignet sich besonders gut für Abfragen. Sie können eine Auswahlabfrage erstellen, die anzeigt, wie viele Bestellungen in verschiedenen Bereichen liegen (z.B. Bestellmengen von 1 bis 1000, 1001 bis 2000 usw.).

Die folgende Tabelle zeigt, wie die Bereiche mit Hilfe von drei Gruppen der Teile start, stop und interval bestimmt werden. Die Spalten "Erster Bereich" und "Letzter Bereich" zeigen den Rückgabewert von Partition an. Die Bereiche werden durch UntererWert:ObererWert dargestellt, wobei der untere Wert (UntererWert) des Bereichs vom oberen Wert (ObererWert) durch einen Doppelpunkt (:) getrennt ist.

start	stop	interval	Vor Erstem	Erster   Bereich	Letzter  Bereich	Nach  Letztem
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 der oben gezeigten Tabelle zeigt die dritte Zeile das Ergebnis an, wenn start und stop Zahlenwerte definieren, die nicht mit einem ganzzahligen Ergebnis durch interval dividiert werden können. Der letzte Bereich reicht bis stop (11 Ziffern), obwohl interval den Wert 20 hat.

Gegebenenfalls gibt Partition einen Bereich mit genügend führenden Leerzeichen zurück, so daß auf beiden Seiten des Doppelpunkts gleich viele Zeichen vorhanden sind (jeweils die Anzahl der Zeichen in stop zuzüglich eines Zeichens). Bei der Verwendung von Partition mit anderen Zahlen kann dann der Ergebnistext bei nachfolgenden Sortiervorgängen richtig verarbeitet werden.

Hat interval den Wert 1, so entspricht der Bereich number:number, unabhängig von den Werten der Argumente start und stop. Hat interval z.B. den Wert 1, number den Wert 100 und stop den Wert 1000, so gibt Partition "  100:  100" zurück.

Hat einer der Teile den Wert Null, so gibt Partition den Wert Null zurück.


Select Case-Anweisung

Führt eine von mehreren Gruppen von Anweisungen aus, abhängig vom Wert eines Ausdrucks.

Syntax

Select Case Testausdruck
[Case Ausdrucksliste-n
[Anweisungen-n]] ...
[Case Else
[elseAnw]]

End Select

Die Syntax der Select Case-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Testausdruck	Erforderlich. Ein beliebiger numerischer Ausdruck oder Zeichenfolgenausdruck.
Ausdrucksliste-n	Erforderlich, wenn der Case-Abschnitt verwendet wird. Eine durch Kommas getrennte Liste in einer oder mehreren der folgenden Formen: Ausdruck, Ausdruck To Ausdruck, Is Vergleichsoperator Ausdruck. Das Schlüsselwort To gibt einen Bereich von Werten an. Bei diesem Schlüsselwort muß der kleinere Wert immer links von To stehen. Verwenden Sie das Schlüsselwort Is in Kombination mit Vergleichsoperatoren (außer Is und Like), um einen Bereich von Werten anzugeben. Wenn Sie das Schlüsselwort Is nicht angeben, wird es automatisch eingefügt.
Anweisungen-n	Optional. Eine oder mehrere Anweisungen, die ausgeführt werden, wenn Testausdruck mit irgendeinem Teil in Ausdrucksliste-n übereinstimmt.
elseAnw	Optional. Eine oder mehrere Anweisungen, die ausgeführt werden, wenn Testausdruck mit keinem der Ausdrücke im Case-Abschnitt übereinstimmt.
Bemerkungen

Wenn Testausdruck mit irgendeinem der Case-Ausdrücke in der Ausdrucksliste übereinstimmt, werden die Anweisungen dieses Case-Abschnitts bis zum nächsten Case-Abschnitt (oder beim letzten Case-Abschnitt bis zu End Select) ausgeführt. Anschließend setzt das Programm die Ausführung mit der Anweisung im Anschluß an End Select fort. Wenn Testausdruck mit einer Ausdrucksliste-Anweisung in mehreren Case-Abschnitt übereinstimmt, werden nur die Anweisungen nach der ersten Übereinstimmung ausgeführt.

Die elseAnw-Anweisungen im Case Else-Abschnitt werden ausgeführt, wenn keine Übereinstimmung zwischen Testausdruck und einer Ausdrucksliste in einer der anderen Case-Abschnitte gefunden wird. Die Case Else-Anweisung ist optional, sollte aber in keinem Select Case-Block fehlen, damit unvorhergesehene Werte von Testausdruck verarbeitet werden können. Wenn keine Case Else-Anweisung angeben ist und keine Case-Ausdrucksliste mit Testausdruck übereinstimmt, setzt das Programm die Ausführung mit der Anweisung im Anschluß an End Select fort.

Sie können in jedem Case-Abschnitt mehrere Ausdrücke oder Bereiche verwenden, wie zum Beispiel in der folgenden Zeile:

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

Anmerkung°°°Verwechseln Sie den Vergleichsoperator Is nicht mit dem Schlüsselwort Is, das in der Select Case-Anweisung Verwendung findet.

Sie können auch mehrere Ausdrücke für Zeichenfolgen angeben. Im folgenden Beispiel werden die Anweisungen des Case-Abschnitts ausgeführt, wenn eine Zeichenfolge genau mit Alles übereinstimmt, alphabetisch zwischen Nüsse und Suppe liegt oder dem akuellen Wert von TestElement entspricht:

Case "Alles", "Nüsse" To "Suppe", TestElement

Select Case-Anweisungen können in sich verschachtelt sein. Jede verschachtelte Select Case-Anweisung muß eine zugehörige End Select-Anweisung besitzen.


Shell-Funktion

Führt ein ausführbares Programm aus. Falls erfolgreich, gibt sie einen Wert vom Typ Variant (Double) zurück, der die Task-ID des Programms darstellt. Andernfalls wird Null zurückgegeben.

Syntax

Shell(pathname[,windowstyle])

Die Syntax der Shell-Funktion verwendet die folgenden benannten Argumente:

Teil	Beschreibung
pathname	Erforderlich; Wert vom Typ Variant (String). Name des auszuführenden Programms sowie alle erforderlichen Argumente oder Befehlszeilen-Optionen. Auch Verzeichnis-, Ordner- oder Laufwerksangaben können enthalten sein. Auf dem Macintosh können Sie mit der MacID-Funktion die Signatur einer Anwendung anstelle ihres Namens angeben. Im folgenden Beispiel wird die Signatur für Microsoft Word verwendet:  Shell MacID("MSWD")
windowstyle	Optional. Wert vom Typ Variant (Integer), der dem Stil des Fensters entspricht, in dem das Programm ausgeführt werden soll. Wenn windowstyle nicht angegeben wird, erhält das Programm den Fokus und wird im minimierten Zustand gestartet. Auf dem Macintosh (System 7.0 oder höher) bestimmt windowstyle lediglich, ob die Anwendung bei der Ausführung den Fokus erhält.
Die Werte des benannten Arguments windowstyle sind:

Konstante	Wert	Beschreibung
vbHide	0	Das Fenster ist ausgeblendet, und das ausgeblendete Fenster erhält den Fokus.Die Konstante vbHide gilt nicht für Macintosh-Plattformen.
vbNormalFocus	1	Das Fenster hat den Fokus, und die ursprüngliche Größe und Position wird wiederhergestellt.
VbMinimizedFocus	2	Das Fenster wird als Symbol mit Fokus angezeigt.
vbMaximizedFocus	3	Das Fenster wird maximiert mit Fokus angezeigt.
vbNormalNoFocus	4	Die zuletzt verwendete Größe und Position des Fensters wird wiederhergestellt. Das momentan aktive Fenster bleibt aktiv.
vbMinimizedNoFocus	6	Das Fenster wird als Symbol angezeigt. Das momentan aktive Fenster bleibt aktiv.
Bemerkungen

Wenn die Shell-Funktion die angegebene Datei erfolgreich ausführt, liefert sie die Task-ID des gestarteten Programms zurück. Die Task-ID ist eine Zahl, die das ausgeführte Programm eindeutig kennzeichnet. Wenn die Shell-Funktion das angegebene Programm nicht starten kann, tritt ein Fehler auf. Wenn Sie die MacID-Funktion mit Shell unter Microsoft Windows verwenden, tritt ein Fehler auf.

Auf dem Macintosh plazieren vbNormalFocus, vbMinimizedFocus und vbMaximizedFocus die Anwendung im Vordergrund. vbHide, vbNoFocus und vbMinimizeFocus plazieren die Anwendung im Hintergrund.

Anmerkung°°°Die Shell-Funktion führt standardmäßig andere Programme asynchron aus. Daher muß ein mit Shell ausgeführtes Programm noch nicht abgeschlossen sein, wenn die nächsten Anweisungen, die auf die Shell-Funktion folgen, ausgeführt werden.


Stop-Anweisung

Unterbricht die Ausführung.

Syntax

Stop

Bemerkungen

Sie können die Stop-Anweisungen an einer beliebigen Stelle in Prozeduren verwenden, um die Ausführung zu unterbrechen. Die Stop-Anweisung entspricht dem Festlegen eines Haltepunktes im Code.

Die Stop-Anweisung unterbricht die Ausführung, schließt aber im Gegensatz zu End keine Dateien und setzt auch keine Variablen zurück, es sei denn, die Anweisung befindet sich in einer kompilierten ausführbaren Datei (.EXE-Datei).


Switch-Funktion

Wertet eine Liste von Ausdrücken aus und gibt einen  Wert vom Typ Variant oder einen Ausdruck zurück, der dem ersten Ausdruck in der Liste zugeordnet ist, der True ergibt.

Syntax

Switch(Ausdr-1, Wert-1[, Ausdr-2, Wert-2 … [, Ausdr-n,Wert-n]])

Die Syntax der Switch-Funktion besteht aus folgenden Teilen:

Teil	Beschreibung
Ausdr	Erforderlich. Variant-Ausdruck, der ausgewertet werden soll.
Wert	Erforderlich. Wert oder Ausdruck, der zurückgegeben werden soll, wenn der entsprechende Ausdruck True ergibt.
Bemerkungen

Die Argument-Liste der Switch-Funktion enthält Paare von Ausdrücken und Werten. Die Ausdrücke werden in der Folge ihres Auftretens in der Liste von links nach rechts ausgewertet, und es wird der Wert zurückgegeben, der dem ersten Ausdruck zugeordnet ist, der True ergibt. Wenn die Teile nicht richtig paarweise angegeben werden, tritt ein Laufzeitfehler auf. Wenn beispielsweise Ausdr-1 den Wert True ergibt, gibt Switch Wert-1 zurück. Wenn Ausdr-1 den Wert False, Ausdr-2 jedoch den Wert True ergibt, gibt Switch Wert-2 zurück usw.

Switch gibt in den folgenden Situationen einen Null-Wert zurück:

•	Keiner der Ausdrücke ergibt True.

•	Der zugeordnete Wert für den ersten Ausdruck mit dem Wert True ist Null.

Switch wertet alle Ausdrücke aus, auch wenn nur ein Wert zurückgegeben wird. Aus diesem Grund kann es zu unerwünschten Nebeneffekten kommen. Wenn z.B. die Berechnung eines beliebigen Ausdrucks aufgrund einer Division durch Null zu einem Fehler führt, tritt ein Fehler auf.


While...Wend-Anweisung

Führt eine Reihe von Anweisungen aus, solange eine gegebene Bedingung den Wert True hat.

Syntax

While Bedingung
[Anweisungen]

Wend

Die Syntax der While...Wend-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Bedingung	Erforderlich. Numerischer Ausdruck oder Zeichenfolgenausdruck, der True oder False ergibt. Wenn Bedingung den Wert Null hat, wird Bedingung als False interpretiert.
Anweisungen	Optional. Eine oder mehrere Anweisungen, die ausgeführt werden, solange Bedingung True ergibt.
Bemerkungen

Wenn Bedingung den Wert True ergibt, werden alle Anweisungen bis zur Wend-Anweisung ausgeführt. Das Programm kehrt dann zur While-Anweisung zurück und überprüft, ob Bedingung immer noch True ergibt. In diesem Fall wird der Vorgang wiederholt. Wenn Bedingung nicht True ergibt, setzt das Programm die Ausführung mit der Anweisung im Anschluß an die Wend-Anweisung fort.

While...Wend-Schleifen können beliebig ineinander verschachtelt werden. Eine Wend-Anweisung bezieht sich immer auf die zuletzt ausgeführte While-Anweisung.

Tip°°°Die Do...Loop-Anweisung stellt eine strukturiertere und flexiblere Möglichkeit zur Ausführung von Schleifen dar.


With-Anweisung

Führt eine Reihe von Anweisungen für ein einzelnes Objekt oder einen benutzerdefinierten Typ aus.

Syntax

With Objekt
[Anweisungen]

End With

Die Syntax der With-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Name eines Objekts oder eines benutzerdefinierten Typs.
Anweisungen	Optional. Eine oder mehrere Anweisungen, die für Objekt ausgeführt werden sollen.
Bemerkungen

Mit der With-Anweisung können Sie eine Reihe von Anweisungen für ein bestimmtes Objekt ausführen, ohne den Namen des Objekts mehrmals angeben zu müssen. Wenn Sie zum Beispiel mehrere Eigenschaften eines bestimmten Objekts verändern möchten, sollten Sie die Zuweisungsanweisungen für die Eigenschaft in einer With-Kontrollstruktur unterbringen. Sie brauchen dann den Namen des Objekts nicht bei jeder einzelnen Zuweisung, sondern nur einmal zu Beginn der Kontrollstruktur anzugeben. Das folgende Beispiel veranschaulicht die Verwendung der With-Anweisung, um mehreren Eigenschaften desselben Objekts Werte zuzuweisen.

With Bezeichnungsfeld1

.Height = 2000

.Width = 2000

.Caption = "Schönen Tag noch"

End With

Anmerkung°°°Nachdem mit der Ausführung eines With-Blocks begonnen wurde, kann Objekt nicht mehr geändert werden. Sie können daher in einer einzelnen With-Anweisung nicht mehrere unterschiedliche Objekte bearbeiten.

Sie können With-Anweisungen verschachteln, indem Sie einen With-Block in einen anderen einfügen. Da die Elemente der äußeren With-Blöcke jedoch in den inneren With-Blöcken "ausgeblendet" werden, müssen Sie für alle Elemente eines Objekts in einem äußeren With-Block innerhalb eines inneren With-Blocks einen vollständigen Objektverweis angeben.

Wichtig°°°Allgemein gilt, daß Sie nicht in With-Blöcke hinein- oder aus ihnen herausspringen sollten. Eine temporäre Variable, die einen Verweis auf ein Objekt enthält, bleibt im Speicher bis Sie die Prozedur beenden, wenn Anweisungen in einem With-Block ausgeführt werden, ohne daß entweder die With- oder die End With-Anweisung ausgeführt werden.


Asc-Funktion (Beispiel)

In diesem Beispiel wird die Asc-Funktion verwendet, um den Zeichen-Code für das erste Zeichen einer Zeichenfolge zurückzugeben.

Dim Testzahl

TestZahl = Asc("A")	' Gibt 65 zurück.

TestZahl = Asc("a")	' Gibt 97 zurück.

TestZahl = Asc("Banane")	' Gibt 66 zurück.


CBool-Funktion (Beispiel)

In diesem Beispiel wird die CBool-Funktion verwendet, um einen Ausdruck in einen Wert vom Typ Boolean umzuwandeln. Liefert der Ausdruck einen Wert ungleich Null, so gibt CBool den Wert True zurück, andernfalls gibt CBool den Wert False zurück.

Dim A, B, TestWert

A = 5: B = 5	' Variablen initialisieren.

TestWert = CBool(A = B)	' TestWert enthält True.

A = 0	' Variable definieren.

TestWert = CBool(A)	' TestWert enthält False.


CByte-Funktion (Beispiel)

In diesem Beispiel wird die CByte-Funktion verwendet, um einen Ausdruck in einen Wert vom Typ Byte umzuwandeln.

Dim Double1, Byte1

Double1 = 125.5678	' Double1 ist ein Double.

Byte1 = CByte(Double1)	' Byte1 enthält 126.


CDate-Funktion (Beispiel)

In diesem Beispiel wird die CDate-Funktion verwendet, um eine Zeichenfolge in einen Wert vom Typ Date umzuwandeln. In der Regel sollten Sie Datums- und Zeitangaben nicht als Zeichenfolgen direkt in den Code eingeben, wie in diesem Beispiel. Verwenden Sie statt dessen Datums- und Zeitliterale, wie #2/12/1969#, #4:45:23 PM#).

Dim TestDatum, TestKurzesDatum, TestZeit, TestKurzeZeit

TestDatum = "12. Februar 1969"	' Datum definieren.

TestKurzesDatum = CDate(TestDatum)	' In Datentyp Date

' umwandeln.

TestZeit = "16:35:47"	' Zeit definieren.

TestKurzeZeit = CDate(TestZeit)	' In Datentyp Date

' umwandeln.


CCur-Funktion (Beispiel)

In diesem Beispiel wird die CCur-Funktion verwendet, um einen Ausdruck in einen Wert vom Typ Currency umzuwandeln.

Dim TestDouble, TestCur

TestDouble = 543.214588	' TestDouble hat den Typ Double.

TestCur = CCur(TestDouble * 2) ' Ergebnis von TestDouble * 2

' (1086.429176) in Typ

' Currency umwandeln (1086.4292).


CDbl-Funktion (Beispiel)

In diesem Beispiel wird die CDbl-Funktion zum Umwandeln eines Ausdrucks in den Typ Double verwendet.

Dim TestCur, TestDouble

TestCur = CCur(234.456784)	' TestCur hat Typ Currency.

TestDouble = CDbl(TestCur * 8.2 * 0.01)	' Ergebnis in Double umwandeln.


CInt-Funktion (Beispiel)

In diesem Beispiel wird die CInt-Funktion zum Umwandeln eines Wertes in den Typ Integer verwendet.

Dim TestDouble, TestInt

TestDouble = 2345.5678	' TestDouble hat den Typ Double.

TestInt = CInt(TestDouble)	' TestInt enthält 2346.


CLng-Funktion (Beispiel)

Dieses Beispiel verwendet die CLng-Funktion zum Umwandeln eines Wertes in den Typ Long.

Dim TestVal1, TestVal2, TestLong1, TestLong2

TestWert1 = 25427.45: TestWert2 = 25427.55	' TestWert1, TestWert2 haben Typ Double.

TestLong1 = CLng(TestWert1)	' TestLong1 enthält 25427.

TestLong2 = CLng(TestWert2)	' TestLong2 enthält 25428.


CSng-Funktion (Beispiel)

In diesem Beispiel wird die CSng-Funktion zum Umwandeln eines Wertes in den Typ Single verwendet.

Dim TestDouble1, TestDouble2, TestSingle1, TestSingle2

' TestDouble1, TestDouble2 haben den Typ Double.

TestDouble1 = 75.3421115: TestDouble2 = 75.3421555

TestSingle1 = CSng(TestDouble1)	' TestSingle1 enthält 75,34211.

TestSingle2 = CSng(TestDouble2)	' TestSingle2 enthält 75,34216.


CStr-Funktion (Beispiel)

In diesem Beispiel wird die CStr-Funktion verwendet, um einen numerischen Wert in den Typ String umzuwandeln.

Dim TestDouble, TestString

TestDouble = 437.324	' TestDouble hat den Typ Double.

TestString = CStr(TestDouble)	' TestString enthält "437,324".


CVar-Funktion (Beispiel)

Dieses Beispiel verwendet die CVar-Funktion zum Umwandeln eines Ausdrucks in den Typ Variant.

Dim TestInt, TestVar

TestInt = 4534	' TestInt hat den Typ Integer.

TestVar = CVar(TestInt & "000")	' TestVar enthält die Zeichenfolge

' 4534000.


CVErr-Funktion (Beispiel)

In diesem Beispiel wird die CVErr-Funktion verwendet, um einen Variant-Wert mit dem VarType-Wert vbError (10) zurückzugeben. Die benutzerdefinierte Funktion Verdoppeln gibt einen Fehler zurück, wenn das übergebene Argument keine Zahl ist. CVErr kann eingesetzt werden, um benutzerdefinierte Fehler von benutzerdefinierten Prozeduren zurückzugeben oder um die Fehlerbehandlung eines Laufzeitfehlers zurückzustellen. Mit der IsError-Funktion können Sie abfragen, ob es sich bei einem Wert um einen Fehlerwert handelt.

' Verdoppeln mit Argument aufrufen, das einen Fehler auslöst.

Sub Test()

Debug.Print Verdoppeln("345.45robert")

End Sub

' Function-Prozedur Verdoppeln definieren.

Function Verdoppeln(TestZahl)

If IsNumeric(TestZahl) Then

Verdoppeln = TestZahl* 2	' Ergebnis zurückgeben.

Else

Verdoppeln = CVErr(2001)	' benutzerdefinierte Fehler-

End If	' nummer zurückgeben.

End Function


Val-Funktion (Beispiel)

In diesem Beispiel wird die Val-Funktion verwendet, um die Zahlen in einer Zeichenfolge zurückzugeben.

Dim TestWert

TestWert = Val("2457")	' Liefert 2457.

TestWert = Val(" 2 45 7")	' Liefert 2457.

TestWert = Val("24 und 57")	' Liefert 24.


Cdec-Funktion (Beispiel)

In diesem Beispiel wird die CDec-Funktion zum Umwandeln eines Ausdrucks in den Typ Decimal verwendet.

Dim MyDecimal, MyCurr

MyCurr = 10000000.0587	' MyCurr hat den Typ Currency.

MyDecimal = CDec(MyCurr) 	' MyDecimal hat den Typ Decimal.


Umwandlungsfunktionen

Asc-Funktion

CBool-Funktion

CByte-Funktion

CCur-Funktion

CDate-Funktion

CDec-Funktion

CDbl-Funktion

Chr-Funktion

Clnt-Funktion

CLng-Funktion

CSng-Funktion

CStr-Funktion

CVar-Funktion

CVErr-Funktion

Format-Funktion

Hex-Funktion

Oct-Funktion

Str-Funktion

Val-Funktion


Asc-Funktion

Gibt einen Wert vom Typ Integer zurück, der den Zeichencode entsprechend dem ersten Buchstaben in einer Zeichenfolge darstellt.

Syntax

Asc(Zeichenfolge)

Das erforderliche Zeichenfolge-Argument ist ein beliebiger gültiger Zeichenfolgenausdruck. Wenn Zeichenfolge keine Zeichen enthält, tritt ein Laufzeitfehler auf.

Bemerkungen

Der Rückgabebereich umfaßt -32768 bis 32767 bei DBCS-Systemen, jedoch 0 bis 255 bei anderen Systemen.

Anmerkung   Die AscB-Funktion wird mit Daten vom Typ Byte verwendet, die in einer Zeichenfolge enthalten sind. Anstelle des Zeichen-Codes für das erste Zeichen gibt AscB das erste Byte zurück. Die AscW-Funktion gibt den Unicode-Zeichen-Code zurück. Dies gilt jedoch nicht für Plattformen, auf denen Unicode nicht unterstützt wird; in diesem Fällen verhält sich AscB wie die Asc-Funktion.

Anmerkung   Visual Basic für den Macintosh unterstützt keine Unicode-Zeichenfolgen. Daher kann AscW(n) nicht alle Unicode-Zeichen für n Werte im Bereich von 128 – 65.535 zurückgeben, wie das in der Windows-Umgebung passiert. Statt dessen versucht AscW(n), die Unicpde-Werte zu "raten", für die n größer als 127 ist. Sie sollten daher AscW nicht in der Macintosh-Umgebung verwenden.


CVErr-Funktion

Gibt einen Wert vom Typ Variant mit dem Untertyp Error zurück, der eine vom Benutzer festgelegte Fehlernummer enthält.

Syntax

CVErr(Fehlernummer)

Das erforderliche Argument Fehlernummer ist eine beliebige gültige Fehlernummer.

Bemerkungen

Mit der CVErr-Funktion können Sie benutzerdefinierte Fehler in von Benutzern erstellten Prozeduren auslösen. Wenn Sie zum Beispiel eine Funktion erstellen, die mehrere Argumente akzeptiert und normalerweise eine Zeichenfolge zurückgibt, kann die Funktion überprüfen, ob die übergebenen Argumente in einem gültigen Bereich liegen. Ist dies nicht der Fall, so liefert die Funktion in der Regel nicht das erwartete Ergebnis. Mit Hilfe von CVErr können Sie in einer solchen Situation eine Fehlernummer zurückgeben, die Informationen über die nun durchzuführenden Aktionen bereitstellt.

Beachten Sie, daß eine implizite Umwandlung eines Wertes vom Typ Error nicht erlaubt ist. So kann zum Beispiel der Rückgabewert von CVErr nicht direkt einer Variablen zugewiesen werden, die nicht den Typ Variant hat. Allerdings können Sie den von CVErr zurückgegebenen Wert explizit (mit CInt, CDbl usw.) umwandeln und das Ergebnis einer Variablen eines geeigneten Datentyps zuweisen.


Val-Funktion

Gibt die in einer Zeichenfolge enthaltenen Zahlen als einen numerischen Wert eines geeigneten Typs zurück.

Syntax

Val(Zeichenfolge)

Das erforderliche Argument Zeichenfolge ist ein beliebiger gültiger Zeichenfolgenausdruck.

Bemerkungen

Die Val-Funktion liest die Zeichen einer Zeichenfolge bis zum ersten Zeichen, das nicht als Teil einer Zahl interpretiert werden kann. Symbole und Zeichen, die oft als Teil eines numerischen Wertes erkannt werden (z.B. Währungssymbole und Kommas), werden nicht erkannt. Die Funktion erkennt allerdings die Präfixe &O (für oktal) und &H (für hexadezimal) zur Angabe der Zahlenbasis. Leerzeichen, Tabulatoren und Zeilenvorschubzeichen werden aus dem Argument entfernt.

Das folgende Beispiel gibt den Wert 44137 zurück:

Val("  44137 Dortmund, Westenhellweg 112")

In dem folgenden Code gibt Val den Dezimalwert -1 für den Hexadezimalwert zurück:

Val("&HFFFF")

Anmerkung Die Val-Funktion erkennt nur den Punkt (.) als gültiges Dezimalzeichen. Wenn Sie ein anderes Dezimalzeichen verwenden möchten (zum Beispiel bei internationalen Anwendungen), sollten Sie statt dessen die Funktion CDbl verwenden, um eine Zeichenfolge in eine Zahl umzuwandeln.


Typ-Umwandlungsfunktionen

Jede Funktion legt für einen bestimmten Datentyp zwingend einen Ausdruck fest.

Syntax

CBool(Ausdruck)

CByte(Ausdruck)

CCur(Ausdruck)

CDate(Ausdruck)

CDbl(Ausdruck)

CDec(Ausdruck)

CInt(Ausdruck)

CLng(Ausdruck)

CSng(Ausdruck)

CVar(Ausdruck)

CStr(Ausdruck)

Das erforderliche Argument Ausdruck ist ein Zeichenfolgenausdruck oder ein numerischer Ausdruck.

Rückgabetypen

Der Funktionsname legt den Rückgabetyp wie folgt fest:

Funktion	Rückgabetyp	Bereich des Arguments Ausdruck
CBool	Boolean	Eine gültige Zeichenfolge oder ein gültiger numerischer Ausdruck.
CByte	Byte	0 bis 255.
CCur	Currency	-922.337.203.685.477,5808 bis 922.337.203.685.477,5807.
CDate	Date	Ein beliebiger gültiger Datumsausdruck.
CDbl	Double	-1,79769313486231E308 bis  -4,94065645841247E-324 für negative Werte; 4,94065645841247E-324 bis 1,79769313486232E308 für positive Werte.
CDec	Decimal	+/-79.228.162.514.264.337.593.543.950.335 für skalierte Ganzzahlen, d.h. Zahlen ohne Dezimalstellen. Für Zahlen mit 28 Dezimalstellen gilt der Bereich +/-7,9228162514264337593543950335. Die kleinste mögliche Zahl ungleich Null ist 0,0000000000000000000000000001.
CInt	Integer	-32.768 bis 32.767; Nachkommastellen werden gerundet.
CLng	Long	-2.147.483.648 bis 2.147.483.647; Nachkommastellen werden gerundet.
CSng	Single	-3,402823E38 bis -1,401298E-45 für negative Werte; 1,401298E-45 bis 3,402823E38 für positive Werte.
Cvar	Variant	Numerische Werte im Bereich des Typs Double. Nichtnumerische Werte im Bereich des Typs String.
CStr	String	Rückgabe für CStr hängt vom Argument Ausdruck ab.
Bemerkungen

Wenn das an die Funktion weitergegebene Argument Ausdruck außerhalb des Bereichs des Datentyps liegt, in den es umgewandelt werden soll, tritt eine Fehler auf.

Sie können Ihren Code mit Hilfe der Funktionen zum Umwandeln von Datentypen dokumentieren, um anzuzeigen, daß das Ergebnis einer Operation einen bestimmten, vom Standarddatentyp abweichenden Datentyp haben soll. Mit CCur können Sie zum Beispiel Berechnungen explizit im Währungsformat durchführen, die normalerweise ganzzahlige Werte oder Werte einfacher bzw. doppelter Genauigkeit verwenden würden. Die CCur-Funktion stellt eine Alternative zu Val dar, die international gültige Umwandlungen eines beliebigen Datentyps in einen anderen ermöglicht. So werden zum Beispiel durch die Verwendung von Ccur verschiedene, vom Gebietsschema des Computers abhängige Dezimalzeichen ebenso erkannt wie unterschiedliche Tausendertrennzeichen und Währungseinstellungen.

Wenn die Nachkommastelle genau 0,5 beträgt, wird der Wert mit CInt und CLng immer bis zur nächsten geraden Ganzzahl gerundet. So wird beispielsweise 0,5 zu 0 abgerundet und 1,5 zu 2 aufgerundet. CInt und CLng unterscheiden sich von der Fix- und auch der Int-Funktion, die die Nachkommastellen einer Zahl nicht runden, sondern sie verkürzen. Außerdem entspricht der Rückgabetyp von Fix und Int immer dem Typ des an sie übergebenen Wertes.

Mit der IsDate-Funktion können Sie bestimmen, ob Datum in ein Datum oder eine Uhrzeit umgewandelt werden kann. CDate erkennt sowohl Datumsliterale und Zeitliterale als auch bestimmte Zahlen, die im zulässigen Bereich für ein Datum liegen. Beim Umwandeln einer Zahl in ein Datumsformat wird der ganzzahlige Teil für das Datum verwendet. Nachkommastellen der Zahl werden in eine Zeitangabe (beginnend bei 0:00) umgewandelt.

CDate erkennt alle Datumsformate, die im Gebietsschema des Systems ausgewählt werden können. Die richtige Reihenfolge von Tag, Monat und Jahr kann nicht immer bestimmt werden, wenn sich das Datumsformat von den im Gebietsschema verfügbaren Formaten unterscheidet. Außerdem wird ein langes Datumsformat nicht erkannt, wenn es auch eine Zeichenfolge für den Wochentag enthält.

Die CVDate-Funktion ist ebenfalls aus Gründen der Kompatibilität zu früheren Visual Basic-Versionen verfügbar. Die Syntax der CVDate-Funktion entspricht genau der Syntax der CDate-Funktion. Der einzige Unterschied besteht darin, daß CVDate nicht den Datentyp Date liefert, sondern den Datentyp Variant mit dem Untertyp Date. Aufgrund des integrierten Datentyps Date wird CVDate nicht mehr benötigt. Dasselbe Ergebnis können Sie auch erreichen, indem Sie einen Ausdruck in den Datentyp Date umwandeln und ihn dann einer Variablen vom Typ Variant zuweisen. Mit demselben Verfahren können auch alle anderen integrierten Datentypen in die entsprechenden Untertypen des Datentyps Variant umgewandelt werden.

Anmerkung Die CDec-Funktion gibt keinen diskreten Datentyp zurück; statt dessen wird immer ein Variant zurückgegeben, dessen Wert in einen Dezimal-Untertyp umgewandelt wird.


Rückgabewerte für CStr

Datentyp von Ausdruck	Rückgabe von CStr
Boolean	Eine Zeichenfolge, die den Wert True oder False enthält.
Date	Eine Zeichenfolge, die ein Datum im kurzen Datumsformat des Systems enthält.
Null	Laufzeitfehler
Empty	Eine Null-Zeichenfolge ("")
Error	Eine Zeichenfolge, die das Wort Fehler gefolgt von einer Fehlernummerenthält.
Anderer numerischer Wert	Eine Zeichenfolge, die die Zahl enthält.


Boolean-Datentyp

Variablen vom Datentyp Boolean werden als 16-Bit-Zahlen (2 Bytes) gespeichert, die nur die Werte True oder False annehmen können. Variablen vom Datentyp Boolean werden als Wahr oder Falsch ausgegeben, wenn Print verwendet wird, bzw. als #TRUE# oder #FALSE#, wenn Write # verwendet wird. Mit den Schlüsselwörtern True und False weisen Sie einer Variablen vom Typ Boolean einen von zwei Zuständen zu.

Beim Umwandeln anderer numerischer Datentypen in Werte des Typs Boolean wird 0 zu False, und alle anderen Werte werden zu True. Beim Umwandeln von Werten des Datentyps Boolean in andere Datentypen wird False zu 0 und True zu -1.


Byte-Datentyp

Variablen vom Datentyp Byte werden als einzelne 8-Bit-Zahlen (1 Byte) ohne Vorzeichen gespeichert und haben einen Wert im Bereich von 0 bis 255.

Der Datentyp Byte ist zur Speicherung binärer Daten nützlich.


Currency-Datentyp

Variablen vom Datentyp Currency werden als 64-Bit-Zahlen (8 Bytes) in einem ganzzahligen Format gespeichert und durch 10.000 dividiert, was eine Festkommazahl mit 15 Vorkomma- und 4 Nachkommastellen ergibt. Diese Darstellung ergibt einen Wertebereich von -922.337.203.685.477,5808 bis 922.337.203.685.477,5807. Das Typkennzeichen für Currency ist das Zeichen (@).

Der Datentyp Currency eignet sich besonders für Berechnungen mit Geldbeträgen und für Festkommaberechnungen, die eine hohe Genauigkeit erfordern.


Datentypen (Zusammenfassung)

Die folgende Tabelle enthält die von Visual Basic unterstützten Datentypen sowie deren Speicherbedarf und Wertebereiche.

Datentyp	Speicherbedarf	Wertebereich
Byte	1 Byte	0 bis 255
Boolean	2 Bytes	True oder False
Integer	2 Bytes	-32.768 bis 32.767
Long (lange Ganzzahl)	4 Bytes	-2.147.483.648 bis 2.147.483.647
Single  (Gleitkommazahl mit einfacher Genauigkeit)	4 Bytes	-3,402823E38 bis -1,401298E-45 für negative Werte; 1,401298E-45 bis 3,402823E38 für positive Werte.
Double  (Gleitkommazahl mit doppelter Genauigkeit)	8 Bytes	-1,79769313486231E308 bis  -4,94065645841247E-324 für negative Werte; 4,94065645841247E-324 bis 1,79769313486232E308 für positive Werte.
Currency  (skalierte Ganzzahl)	8 Bytes	-922.337.203.685.477,5808 bis 922.337.203.685.477,5807
Decimal	14 Bytes	+/-79.228.162.514.264.337.593.543.950.335 ohne Dezimalzeichen;  +/-7,9228162514264337593543950335 mit 28 Nachkommastellen; die kleinste Zahl ungleich Null ist  +/-0,0000000000000000000000000001.
Date	8 Bytes	1. Januar 100 bis 31. Dezember 9999.
Object	4 Bytes	Beliebiger Verweis auf ein Objekt vom Typ Object.
String  (variable Länge)	10 Bytes plus Zeichenfolgenlänge	0 bis ca. 2 Milliarden.
String (feste Länge)	Zeichenfolgenlänge	1 bis ca. 65.400
Variant (mit Zahlen)	16 Bytes	Numerische Werte im Bereich des Datentyps Double.
Variant (mit Zeichen)	22 Bytes plus Zeichenfolgenlänge	Wie bei String mit variabler Länge.
Benutzerdefiniert (mit Type)	Zahl ist von Elementen abhängig	Der Bereich für jedes Element entspricht dem Bereich des zugehörigen Datentyps.
Anmerkung   Datenfelder eines beliebigen Datentyps benötigen 20 Bytes im Speicher, vier Bytes für jede Datenfelddimension und die Anzahl an Bytes, die für die eigentlichen Daten benötigt werden. Der für die Daten benötigte Speicher kann durch Multiplikation der Anzahl an Datenelementen mit der Größe eines einzelnen Elements ermittelt werden. Die Daten in einem eindimensionalen Datenfeld, das vier Elemente vom Typ Integer mit jeweils zwei Bytes enthält, belegen zum Beispiel acht Bytes. Insgesamt benötigt das Datenfeld die acht Bytes für die Daten zuzüglich 24 Bytes für Verwaltung, also 32 Bytes.

Ein Wert vom Typ Variant, der ein Datenfeld enthält, benötigt 12 Bytes zusätzlich zu dem Speicher, der für das Datenfeld alleine benötigt wird.

Anmerkung   Verwenden Sie die StrConv-Funktion, um einen Zeichenfolgendatentyp in einen anderen Typ umzuwandeln.


Date-Datentyp

Variablen vom Datentyp Date werden als 64-Bit-Gleitkommazahlen (8 Bytes) nach IEEE gespeichert und können ein Datum im Bereich vom 01. Januar 100 bis zum 31. Dezember 9999 und eine Uhrzeit im Bereich von 0:00:00 bis 23:59:59 speichern. Jeder gültige Wert eines Datums- oder Zeitliterals kann einer Variablen vom Datentyp Date zugewiesen werden. Ein Datumsliteral muß durch das Zeichen (#) eingeschlossen sein, zum Beispiel: #January 1, 1993# oder #1 Jan 93#.

Variablen vom Datentyp Date verwenden zur Darstellung des Datums das auf dem Computer eingestellte kurze Datumsformat. Zeitangaben werden mit dem auf dem Computer eingestellten Zeitformat (entweder 12- oder 24-Stunden) dargestellt.

Beim Umwandeln anderer numerischer Datentypen in Werte des Datentyps Date repräsentieren die Vorkommastellen das Datum und die Nachkommastellen die Uhrzeit. Mitternacht entspricht dem Wert 0, und Mittag entspricht den Nachkommawert 0,5. Negative ganze Zahlen repräsentieren ein Datum vor dem 30. Dezember 1899.


Decimal-Datentyp

Variablen des Datentyps Decimal werden als 96-Bit-Ganzzahlen (12 Bytes) mit Vorzeichen mit einer variablen Potenz zur Basis 10 gespeichert. Die Potenz zur Basis 10 wird als Skalierungsfaktor verwendet und bestimmt die Anzahl der Nachkommastellen, die in einem Bereich von 0 bis 28 liegen kann. Beim Skalierungsfaktor von 0 (keine Nachkommastellen) liegt der größtmögliche Wert bei +/-79.228.162.514.264.337.593.543.950.335. Bei 28 Nachkommastellen liegt der größte Wert bei +/-7,9228162514264337593543950335 und der kleinste Wert, der ungleich Null ist, bei +/-0,0000000000000000000000000001.

Anmerkung   Der Datentyp Decimal kann nur mit einem Wert vom Typ Variant benutzt werden, d.h., Sie können keine Variable als Decimal deklarieren. Mit der CDec-Funktion können Sie jedoch einen Wert vom Typ Variant erstellen, dessen Untertyp Decimal ist.


Double-Datentyp

Variablen vom Datentyp Double (Gleitkommazahl mit doppelter Genauigkeit) werden als 64-Bit-Gleitkommazahlen (8 Bytes) nach IEEE im Bereich von -1,79769313486231E308 bis -4,94065645841247E-324 für negative Werte und von 4,94065645841247E-324 bis 1,79769313486232E308 für positive Werte gespeichert. Das Typkennzeichen für Double ist das Zeichen (#).


Integer-Datentyp

Variablen vom Datentyp Integer werden als 16-Bit-Zahlen (2 Bytes) in einem Bereich von -32.768 bis 32.767 gespeichert. Das Typkennzeichen für Integer ist das Zeichen (%).

Mit Variablen vom Datentyp Integer können Sie auch Aufzählungswerte darstellen. Ein Aufzählungswert besteht aus einer endlichen Menge eindeutiger ganzer Zahlen, von denen jede im verwendeten Kontext eine spezielle Bedeutung hat. Aufzählungswerte erlauben eine einfache Auswahl aus einer bestimmten Anzahl von Möglichkeiten, z.B. 0 = schwarz, 1 = weiß usw. Sie sollten die Const-Anweisung verwenden, um Konstanten für jeden Aufzählungswert zu definieren.


Long-Datentyp

Variablen vom Datentyp Long (lange Ganzzahl) werden als 32-Bit-Zahlen (4 Bytes) mit Vorzeichen im Bereich von -2.147.483.648 bis 2.147.483.647 gespeichert. Das Typkennzeichen für Long ist das Zeichen (&).


Object-Datentyp

Variablen vom Datentyp Object werden als 32-Bit-Adressen (4 Bytes) gespeichert, die auf Objekte in einer Anwendung verweisen. Einer Variablen, die als Object deklariert wurde, kann anschließend mit der Set-Anweisung ein Verweis auf jedes von der Anwendung erzeugte Objekt zugewiesen werden.

Anmerkung   Obwohl eine Variable, die mit dem Datentyp Object deklariert wurde, einen Verweis auf jedes beliebige Objekt enthalten kann, erfolgt die Verbindung mit dem Objekt, auf das verwiesen wurde, immer zur Laufzeit (Binden zur Laufzeit). Sie können eine frühere Bindung (Binden zur Kompilierungszeit) erzwingen, indem Sie den Objektverweis einer Variable zuweisen, die durch den Namen einer Klasse deklariert wurde.


Single-Datentyp

Variablen vom Datentyp Single (Gleitkommazahl mit einfacher Genauigkeit) werden als 32-Bit-Gleitkommazahlen (4 Bytes) nach IEEE im Bereich von -3,402823E38 bis -1,401298E-45 für negative Werte und von 1,401298E-45 bis 3,402823E38 für positive Werte gespeichert. Das Typkennzeichen für Single ist das Ausrufezeichen (!).


String-Datentyp

Es gibt zwei Arten von Zeichenfolgen: Zeichenfolgen variabler Länge und Zeichenfolgen fester Länge.

•	Zeichenfolgen variabler Länge können bis zu 2 Milliarden (oder 2^31) Zeichen enthalten.

•	Zeichenfolgen fester Länge können 1 bis etwa 64 KB (2^16) Zeichen enthalten.

Anmerkung   Zeichenfolgen fester Länge mit dem Attribut Public können in Klassenmodulen nicht verwendet werden.

Die Codes für Zeichen vom Datentyp String liegen im Bereich von 0 bis 255 (einschließlich). Die ersten 128 Zeichen (0 bis 127) entsprechen den Buchstaben und Symbolen auf einer US-amerikanischen Standardtastatur. Diese ersten 128 Zeichen stimmen mit den im ASCII-Zeichensatz definierten Zeichen überein. Die zweiten 128 Zeichen (128 bis 255) sind Sonderzeichen, z.B. Buchstaben aus internationalen Alphabeten, Akzentzeichen, Währungssymbole und Symbole für mathematische Brüche. Das Typkennzeichen für String ist das Dollarzeichen ($).


Benutzerdefinierter Datentyp

Jeder Datentyp, den Sie mit der Type-Anweisung definieren. Benutzerdefinierte Datentypen können ein oder mehrere Elemente eines beliebigen Datentyps, eines Datenfeldes oder eines bereits bestehenden benutzerdefinierten Datentyps enthalten. Beispiel:

Type Typ1

Name1 As String	  ' String-Variable für Namen.

Geburtstag As Date	  ' Date-Variable für

  ' Geburtstag.

Geschlecht As Integer  ' Integer-Variable für

  ' Geschlecht

End Type	' (0 für weiblich, 1 für männlich).


Variant-Datentyp

Der Datentyp Variant ist der Datentyp für alle Variablen, die nicht explizit (durch eine Anweisung wie Dim, Private, Public oder Static) als anderer Datentyp deklariert werden. Für den Datentyp Variant gibt es kein Typkennzeichen.

Variant ist ein besonderer Datentyp, der beliebige Daten mit Ausnahme von String-Daten fester Länge und benutzerdefinierten Typen enthalten kann. Ein Variant kann auch die speziellen Werte Empty, Error, Nothing und Null enthalten. Mit der Funktion VarType oder TypeName können Sie festlegen, wie die Daten in einer Variablen vom Datentyp Variant interpretiert werden.

Als numerische Daten sind beliebige Ganzzahlen oder reelle Zahlen im Bereich von -1,797693134862315E308 bis -4,94066E-324 für negative Werte und von 4,94066E-324 bis 1,797693134862315E308 für positive Werte zulässig. Im allgemeinen behalten numerische Daten vom Datentyp Variant den ursprünglich festgelegten Datentyp als Untertyp innerhalb des Variants bei. Wenn Sie zum Beispiel einem Variant einen Wert vom Datentyp Integer zuweisen, interpretieren alle nachfolgenden Operationen den Variant als Datentyp Integer. Wenn Sie jedoch mit einem Variant mit dem Typ Byte, Integer, Long oder Single eine arithmetische Operation ausführen und das Ergebnis den zulässigen Bereich für den ursprünglichen Datentyp überschreitet, wird das Ergebnis innerhalb des Variant automatisch zu dem nächstgrößeren Datentyp erweitert. Byte wird zu Integer, Integer wird zu Long, und Long bzw. Single werden zu Double umgewandelt. Werden die zulässigen Bereiche für den Datentyp Currency, Decimal oder Double in einem Variant überschritten, so tritt ein Fehler auf.

Der Datentyp Variant kann anstelle jedes anderen Datentyps verwendet werden, um im Umgang mit Daten flexibler zu sein. Enthält eine Variant-Variable Ziffern, so können diese (je nach Kontext) entweder als Zeichenfolgendarstellung der Ziffern oder als deren tatsächlicher Wert interpretiert werden. Beispiel:

Dim TestVar As Variant

TestVar = 44137

In diesem Beispiel enthält TestVar eine numerische Darstellung, nämlich den eigentlichen Wert 44137. Die arithmetischen Operatoren können auf alle Variablen vom Datentyp Variant angewendet werden, sofern sie numerische Daten enthalten oder Zeichenfolgendaten, die als numerische Daten interpretiert werden können. Mit dem Operator + kann TestVar zu einer Variant-Variablen, die eine Zahl enthält, bzw. zu einer Variablen eines numerischen Typs addiert werden; das Ergebnis ist eine arithmetische Summe.

Der Wert Empty bezeichnet eine nicht initialisierte Variant-Variable (d.h., ihr wurde noch kein Wert zugewiesen). Eine Variant-Variable mit dem Wert Empty entspricht dem Wert 0 in einem numerischen Kontext und einer Null-Zeichenfolge ("") im Zusammenhang mit Zeichenfolgenoperationen.

Verwechseln Sie Empty nicht mit Null. Der Wert Null zeigt an, daß die Variable vom Datentyp Variant absichtlich keine gültigen Daten enthält.

Der Sonderwert Error in einer Variablen vom Datentyp Variant wird verwendet, um das Eintreten von Fehlerbedingungen in einer Prozedur zu kennzeichnen. Im Gegensatz zu anderen Fehlern findet jedoch keine normale Fehlerbehandlung durch die Anwendung statt. Daher kann der Programmierer oder die Anwendung selbst den Fehler auswerten und nötige Maßnahmen ergreifen. Mit der CVErr-Funktion können Sie eine reelle Zahl umwandeln und einen Wert vom Typ Error erzeugen.


Date-Funktion (Beispiel)

In diesem Beispiel wird die Date-Funktion verwendet, um das aktuelle Systemdatum zurückzugeben.

Dim Datum1

Datum1 = Date	' Datum1 enthält das aktuelle Systemdatum.


Date-Anweisung (Beispiel)

In diesem Beispiel wird die Date-Anweisung verwendet, um das Systemdatum auf dem Computer einzustellen. In der Entwicklungsumgebung wird das Datumsliteral im kurzen Datumsformat unter Verwendung der Gebietsschemaeinstellungen für Ihren Code angezeigt.

Dim Datum1

Datum1 = #12. Februar 1985#	' Datum zuweisen.

Date = Datum1	' Systemdatum ändern.


DateAdd-Funktion (Beispiel)

In diesem Beispiel wird ein gegebenes Datum verwendet und mit Hilfe der DateAdd-Funktion ein Datum angezeigt, das eine bestimmte Anzahl von Monaten in der Zukunft liegt.

Dim Datum1 As Date	' Variablen deklarieren.

Dim IntervallTyp As String

Dim Zahl As Integer

Dim Msg

IntervallTyp = "m"	' "m" gibt Monate als Intervall an.

Datum1 = InputBox("Geben Sie ein Datum ein")

Zahl = InputBox("Geben Sie ein, wieviele Monate hinzugefügt werden sollen")

Msg = "Neues Datum: " & DateAdd(IntervallTyp, Zahl, Datum1)

MsgBox Msg


DateDiff-Funktion (Beispiel)

In diesem Beispiel wird die DateDiff-Funktion verwendet, um die Anzahl von Tagen, die zwischen einem vorgegebenen Datum und dem heutigen Tag liegen, anzuzeigen.

Dim Datum1 As Date	' Variablen deklarieren.

Dim Msg

Datum1 = InputBox("Geben Sie ein Datum ein")

Msg = "Tage von heute an: " & DateDiff("d", Now, Datum1)

MsgBox Msg


DatePart-Funktion (Beispiel)

In diesem Beispiel wird ein gegebenes Datum verwendet und mit Hilfe der DatePart-Funktion das Quartal des Jahres angezeigt, in dem es liegt.

Dim Datum1 As Date	' Variablen deklarieren.

Dim Msg

Datum1 = InputBox("Geben Sie ein Datum ein:")

Msg = "Quartal: " & DatePart("q", Datum1)

MsgBox Msg


DateSerial-Funktion (Beispiel)

In diesem Beispiel wird die DateSerial-Funktion verwendet, um das Datum für die angegebene Jahres-, Monats- und Tageszahl zurückzugeben.

Dim Datum1

' Datum1 enthält das Datum für den 12. Februar 1969.

Datum1 = DateSerial(1969, 2, 12)	' Datum zurückgeben.


DateValue-Funktion (Beispiel)

In diesem Beispiel wird die DateValue-Funktion verwendet, um eine Zeichenfolge in ein Datum umzuwandeln. Sie können auch Datumsliterale verwenden, um einer Variablen vom Typ Variant oder Date direkt ein Datum zuzuweisen, zum Beispiel Datum1 = #2/12/69#.

Dim Datum1

Datum1 = DateValue("12. Februar 1969")	' Datum zurückgeben.


Day-Funktion (Beispiel)

In diesem Beispiel wird die Day-Funktion verwendet, um den Tag des Monat aus dem angegebenen Datum zu ermitteln. In der Entwicklungsumgebung wird das Datumsliteral im kurzen Datumsformat unter Verwendung der Gebietsschemaeinstellungen für Ihren Code angezeigt.

Dim Datum1, Tag1

Datum1 = #12. Februar 1969#	' Datum zuweisen.

Tag1 = Day(Datum1)	' Tag1 enthält 12.


Hour-Funktion (Beispiel)

In diesem Beispiel wird die Hour-Funktion verwendet, um die Stunde aus einer Zeitangabe zu ermitteln. In der Entwicklungsumgebung wird das Zeitliteral im kurzen Zeitformat unter Verwendung der Gebietsschemaeinstellungen für Ihren Code angezeigt.

Dim Zeit1, Stunde1

Zeit1 = #4:35:17 PM#	' Zeitangabe zuweisen.

Stunde1 = Hour(Zeit1)	' Stunde1 enthält 16.


Minute-Funktion (Beispiel)

In diesem Beispiel wird die Minute-Funktion verwendet, um die Minutenanzahl aus einer Zeitangabe zu ermitteln. In der Entwicklungsumgebung wird das Zeitliteral im kurzen Zeitformat unter Verwendung der Gebietsschemaeinstellungen für Ihren Code angezeigt.

Dim Zeit1, Minute1

Zeit1 = #4:35:17 PM#	' Zeitangabe zuweisen.

Minute1 = Minute(Zeit1)	' Minute1 enthält 35.


Month-Funktion (Beispiel)

In diesem Beispiel wird die Month-Funktion verwendet, um den Monat aus einem angegebenen Datum zu ermitteln. In der Entwicklungsumgebung wird das Datumsliteral im kurzen Datumsformat unter Verwendung der Gebietsschemaeinstellungen für Ihren Code angezeigt.

Dim Datum1, Monat1

Datum1 = #February 12, 1969#	' Datum zuweisen.

Monat1 = Month(Datum1)	' Monat1 enthält 2.


Now-Funktion (Beispiel)

In diesem Beispiel wird die Now-Funktion verwendet, um das aktuelle Systemdatum und die aktuelle Systemzeit zu ermitteln.

Dim Heute

Heute = Now	' Systemdatum und -zeit zuweisen.


Second-Funktion (Beispiel)

In diesem Beispiel wird die Second-Funktion verwendet, um die Sekunden der aktuellen Minute aus einer Zeitangabe zu ermitteln. In der Entwicklungsumgebung wird das Zeitliteral im kurzen Zeitformat unter Verwendung der Gebietsschemaeinstellungen für Ihren Code angezeigt.

Dim Zeit1, Sekunde1

Zeit1 = #4:35:17 PM#	' Zeitangabe zuweisen.

Sekunde1 = Second(Zeit1)	' Sekunde1 enthält 17.


Time-Funktion (Beispiel)

In diesem Beispiel wird die Time-Funktion verwendet, um die aktuelle Systemzeit zurückzugeben.

Dim Zeit1

Zeit1 = Time	' Aktuelle Systemzeit zurückgeben.


Time-Anweisung (Beispiel)

In diesem Beispiel wird die Time-Anweisung verwendet, um die Systemzeit auf dem Computer einzustellen.

Dim Zeit1

Zeit1 = #4:35:17 PM#	' Zeitangabe zuweisen.

Time = Zeit1	' Systemzeit auf Zeit1 setzen.


Timer-Funktion (Beispiel)

In diesem Beispiel wird die Timer-Funktion verwendet, um die Anwendung kurzzeitig zu unterbrechen. In dem Beispiel wird außerdem DoEvents verwendet, um die Steuerung während der Pause an andere Prozesse abzugeben.

Dim Pausenlänge, Start, Ende, Gesamtdauer

If (MsgBox("5 Sekunden Pause?", 4)) = vbYes Then

Pausenlänge = 5	' Dauer festlegen.

Start = Timer	' Anfangszeit setzen.

Do While Timer < Start + Pausenlänge

DoEvents	' Steuerung an andere Prozesse

' abgeben.

Loop

Ende = Timer	' Ende festlegen.

Gesamtdauer = Ende - Start	' Gesamtdauer berechnen.

MsgBox "Die Pause dauerte " & Gesamtdauer & " Sekunden"

Else

End

End If


TimeSerial-Funktion (Beispiel)

In diesem Beispiel wird die TimeSerial-Funktion verwendet, um einen Zeitwert für eine Stunden-, Minuten- und Sekundenangabe zurückzugeben.

Dim Zeit1

Zeit1 = TimeSerial(16, 35, 17)	' Zeit1 enthält die Darstellung von

' 16:35:17 als fortlaufende Nummer.


TimeValue-Funktion (Beispiel)

In diesem Beispiel wird die TimeValue-Funktion verwendet, um eine Zeichenfolge in eine Uhrzeit umzuwandeln. Sie können auch Datumsliterale verwenden, um einer Variablen vom Typ Variant oder Date direkt eine Uhrzeit zuzuweisen, zum Beispiel Zeit1 = #4:35:17 PM#.

Dim Zeit1

Zeit1 = TimeValue("4:35:17 PM")	' Uhrzeit zurückgeben.


Weekday-Funktion (Beispiel)

In diesem Beispiel wird die Weekday-Funktion verwendet, um den Wochentag aus einem angegebenen Datum zu ermitteln.

Dim Datum1, Wochentag1

Datum1 = #12. Februar 1969#	' Datum zuweisen.

Wochentag1 = Weekday(Datum1)	' Wochentag1 enthält 4, da

' Datum1 einen Mittwoch darstellt.


Year-Funktion (Beispiel)

In diesem Beispiel wird die Year-Funktion verwendet, um das Jahr aus einem angegebenen Datum zu ermitteln. In der Entwicklungsumgebung wird das Datumsliteral im kurzen Datumsformat unter Verwendung der Gebietsschemaeinstellungen für Ihren Code angezeigt.

Dim Datum1, Jahr1

Datum1 = #12. Februar 1969#	' Datum zuweisen.

Jahr1 = Year(Datum1)	' Jahr1 enthält 1969.


Date-Funktion

Gibt einen Wert vom Typ Variant (Date) zurück, der das aktuelle Systemdatum enthält.

Syntax

Date

Bemerkungen

Verwenden Sie die Date-Anweisung, um das Systemdatum einzustellen.

Das Verhalten der Date-Anweisung und, wenn es sich um einen Gregorianischen Kalender handelt, der Date$-Anweisung, werden durch die Einstellung der Calendar-Eigenschaft nicht verändert. Handelt es sich um einen Hijri-Kalender, gibt Date$ eine 10-Zeichen lange Zeichenfolge der Form mm-tt-jjjj zurück, wobei mm (01-12) der Hijri-Monat, tt (01-30) der Hijri-Tag und jjjj (1400-1523) das Hijri-Jahr ist. Dies entspricht dem Datumsbereich vom 1. Januar 1980 bis zum 31. Dezember 2099 des Gregorianischen Kalenders.


Date-Anweisung

Stellt das aktuelle Systemdatum ein.

Syntax

Date = Datum

Auf Systemen unter Microsoft Windows 95 muß das mit dem Argument Datum angegebene Datum zwischen dem 1. Januar 1980 und dem 31. Dezember 2099 (einschließlich) liegen. Auf Systemen unter Microsoft Windows NT muß das mit dem Argument Datum angegebene Datum zwischen dem 1. Januar 1980 und dem 31. Dezember 2079 (einschließlich) liegen. Beim Macintosh muss Datum ein Tag zwischen dem 1. Januar 1904 und dem 5. Februar 2040 sein.


DateAdd-Funktion

Gibt einen Wert vom Typ Variant (Date) zurück, der ein Datum enthält, zu dem ein bestimmtes Zeitintervall addiert wurde.

Syntax

DateAdd(interval, number, date)

Die Syntax für die DateAdd-Funktion besteht aus den folgenden benannten Argumenten:

Teil	Beschreibung
interval	Erforderlich. Zeichenfolgenausdruck, der das zu addierende Zeitintervall ergibt.
number	Erforderlich. Numerischer Ausdruck, der die Anzahl der zu addierenden Intervalle ergibt. Er kann positiv (für ein zukünftiges Datum) oder negativ (für ein vergangenes Datum) sein.
date	Erforderlich. Ein Wert vom Typ Variant (Date) oder ein als Literal dargestelltes Datum, zu dem das Intervall hinzuaddiert wird.
Einstellungen

Das Argument interval hat die folgenden Einstellungen:

Einstellung	Beschreibung
yyyy	Jahr
q	Quartal
m	Monat
y	Tag des Jahres
d	Tag
w	Wochentag
ww	Woche
h	Stunde
n	Minute
s	Sekunde
Bemerkungen

Mit der DateAdd-Funktion können Sie ein bestimmtes Zeitintervall zu einem Datum hinzufügen oder ein Zeitintervall von einem Datum abziehen. Sie können mit DateAdd z.B. ein Datum berechnen, das 30 Tage in der Zukunft liegt, oder eine Uhrzeit, die 45 Minuten in der Zukunft liegt.

Wenn Sie zu date Tage hinzuaddieren möchten, können Sie den Tag des Jahres ("y"), den Tag ("d") oder den Wochentag ("w") verwenden.

Die DateAdd-Funktion gibt kein ungültiges Datum zurück. Das folgende Beispiel addiert zum 31. Januar einen Monat hinzu:

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

In diesem Fall gibt DateAdd nicht das Datum 31-Feb-95 zurück, sondern 28-Feb-95. Wenn date dem Datum 31-Jan-96 entspricht, gibt die Funktion das Datum 29-Feb-96 zurück, da 1996 ein Schaltjahr ist.

Liegt das berechnete Datum vor dem Jahr 100 (d.h. Sie subtrahieren mehr Jahre, als in date vorhanden sind), so tritt ein Fehler auf.

Wenn number kein Wert vom Typ Long ist, wird er vor der Auswertung auf die nächste ganze Zahl gerundet.

Anmerkung   Das Format des Rückgabewertes für DateAdd wird durch die Einstellungen in der Systemsteuerung bestimmt und nicht durch das vom Argument date übergebene Format.

Anmerkung   Wenn die Einstellung der Calendar-Eigenschaft auf Gregorianisch steht, muß das mit dem Argument Datum angegebene Datum auch dem Gregorianischen Kalender entsprechen. Wenn die Eigenschaft auf Hijri steht, muß das angegebene Datum dem Hijri-Kalender entsprechen. Wenn die Monatswerte in Namen angegeben werden, müssen die Namen mit der aktuellen Einstellung der Calendar-Eigenschaft übereinstimmen. Um zu verhindern, daß die Namen der Monate und die aktuelle Einstellung der Calendar-Eigenschaft kollidieren, geben Sie numerische Monatswerte ein (kurzes Datumsformat).


DateDiff-Funktion

Gibt einen Wert vom Typ Variant (Long) zurück, der die Anzahl der Zeitintervalle zwischen zwei bestimmten Terminen angibt.

Syntax

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

Die Syntax für die DateDiff-Funktion besteht aus folgenden benannten Argumenten:

Teil	Beschreibung
interval	Erforderlich. Zeichenfolgenausdruck, der das Zeitintervall ergibt, das Sie zur Berechnung der Differenz zwischen date1 und date2 verwenden.
Date1, date2	Erforderlich. Wert vom Typ Variant (Date). Zwei Termine, die Sie in Ihrer Berechnung verwenden möchten.
Firstdayofweek	Optional. Eine Konstante, die den ersten Tag der Woche angibt. Ist dieser Wert nicht angegeben, so wird Sonntag angenommen.
firstweekofyear	Optional. Eine Konstante, die die erste Woche des Jahres angibt. Ist dieser Wert nicht angegeben, wird die Woche mit dem 1. Januar als die erste Woche angenommen.
Einstellungen

Das Argument interval hat die folgenden Einstellungen:

Einstellung	Beschreibung
yyyy	Jahr
q	Quartal
m	Monat
y	Tag des Jahres
d	Tag
w	Wochentag
ww	Woche
h	Stunde
n	Minute
s	Sekunde
Das Argument firstdayofweek hat folgende Einstellungen:

Konstante	Wert	Beschreibung
vbUseSystem	0	Die NLS API-Einstellung wird verwendet.
vbSunday	1	Sonntag (Voreinstellung)
vbMonday	2	Montag
vbTuesday	3	Dienstag
vbWednesday	4	Mittwoch
vbThursday	5	Donnerstag
vbFriday	6	Freitag
vbSaturday	7	Samstag
Das Argument firstweekofyear hat folgende Einstellungen:

Konstante	Wert	Beschreibung
vbUseSystem	0	Die NLS API-Einstellung wird verwendet.
vbFirstJan1	1	Anfang in der Woche mit dem 1. Januar (Voreinstellung).
vbFirstFourDays	2	Anfang in der ersten Woche, die mindestens vier Tage im neuen Jahr enthält.
vbFirstFullWeek	3	Anfang in der ersten vollständigen Woche des Jahres.
Bemerkungen

Mit der DateDiff-Funktion können Sie bestimmen, wie viele angegebene Zeitintervalle zwischen zwei Terminen liegen. Sie können mit DateDiff zum Beispiel die Anzahl der Tage zwischen zwei Terminen oder die Anzahl der Wochen zwischen dem heutigen Tag und dem Jahresende berechnen.

Wenn Sie die Anzahl der Tage zwischen date1 und date2 bestimmen möchten, können Sie entweder den Tag des Jahres ("y") oder den Tag ("d") verwenden. Wenn interval ein Wochentag ("w") ist, gibt DateDiff die Anzahl der Wochen zwischen zwei Terminen zurück. Fällt date1 auf einen Montag, dann zählt DateDiff die Montage bis zum Datum date2, wobei date2 mitgezählt wird, date1 dagegen nicht. Ist interval dagegen eine Woche ("ww"), dann gibt die DateDiff-Funktion die Anzahl der Kalenderwochen zwischen den beiden Terminen zurück. Die Funktion zählt die Sonntage zwischen date1 und date2. DateDiff zählt date2 mit, sofern dieses Datum auf einen Sonntag fällt, date1 wird hingegen nicht mitgezählt, auch dann nicht, wenn das Datum auf einen Sonntag fällt.

Wenn date1 einen weiter in der Zukunft liegenden Zeitpunkt angibt als date2, gibt die DateDiff-Funktion eine negative Zahl zurück.

Das Argument firstdayofweek betrifft Berechnungen, die die Intervallsymbole "w" und "ww" verwenden.

Entspricht Datum1 oder Datum2 einem Datumsliteral, so wird das angegebene Jahr zu einem dauerhaften Bestandteil dieses Datums. Wird Datum1 oder Datum2 jedoch in Anführungszeichen ("") eingeschlossen und das Jahr nicht angegeben, so wird bei jeder Auswertung des Ausdrucks Datum1 oder Datum2 das aktuelle Jahr in Ihren Code eingefügt. Sie können daher Code schreiben, der in mehreren Jahren verwendet werden kann.

Wird der 31. Dezember mit dem 1. Januar des unmittelbar folgenden Jahres verglichen, gibt DateDiff für Jahr ("yyyy") den Wert 1 zurück, obwohl nur ein Tag vergangen ist.

Anmerkung   Wenn die Calendar-Eigenschaft auf Gregorianisch steht, muß das mit date1 und date2 angegebene Datum auch dem Gregorianischen Kalender entsprechen. Wenn die Eigenschaft auf Hijri steht, muß das angegebene Datum dem Hijri-Kalender entsprechen.


DatePart-Funktion

Gibt einen Wert vom Typ Variant (Integer) zurück, der einen bestimmten Teil eines angegebenen Datums enthält.

Syntax

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

Die Syntax für die DatePart-Funktion besteht aus folgenden benannten Argumenten:

Teil	Beschreibung
interval	Erforderlich. Zeichenfolgenausdruck, der das zurückzugebende Zeitintervall ergibt.
date	Erforderlich. Wert vom Typ Variant (Date), den Sie berechnen möchten.
firstdayofweek	Optional. Eine Konstante, die den ersten Tag der Woche angibt. Ist dieser Wert nicht angegeben, so wird Sonntag angenommen.
firstweekofyear	Optional. Eine Konstante, die die erste Woche des Jahres angibt. Ist dieser Wert nicht angegeben, wird die Woche mit dem 1. Januar als die erste Woche angenommen.
Einstellungen

Das Argument interval hat folgende Einstellungen:

Einstellung	Beschreibung
yyyy	Jahr
q	Quartal
m	Monat
y	Tag des Jahres
d	Tag
w	Wochentag
ww	Woche
h	Stunde
n	Minute
s	Sekunde
Das Argument firstdayofweek hat folgende Einstellungen:

Konstante	Wert	Beschreibung
vbUseSystem	0	Die NLS API-Einstellung wird verwendet.
vbSunday	1	Sonntag (Voreinstellung)
vbMonday	2	Montag
vbTuesday	3	Dienstag
vbWednesday	4	Mittwoch
vbThursday	5	Donnerstag
vbFriday	6	Freitag
vbSaturday	7	Samstag
Das Argument firstweekofyear hat folgende Einstellungen:

Konstante	Wert	Beschreibung
vbUseSystem	0	Die NLS API-Einstellung wird verwendet.
vbFirstJan1	1	Anfang in der Woche mit dem 1. Januar (Voreinstellung)
vbFirstFourDays	2	Anfang in der ersten Woche, die mindestens vier Tage im neuen Jahr enthält.
VbFirstFullWeek	3	Anfang in der ersten vollen Woche des Jahres.
Bemerkungen

Mit der DatePart-Funktion können Sie ein Datum auswerten und ein bestimmtes Zeitintervall zurückgeben. Sie können mit DatePart zum Beispiel den Tag der Woche oder die aktuelle Stunde berechnen.

Das Argument firstdayofweek betrifft Berechnungen, die die Intervallsymbole "w" und "ww" verwenden.

Entspricht Datum einem Datumsliteral, so wird das angegebene Jahr zu einem dauerhaften Bestandteil dieses Datums. Wird Datum jedoch in Anführungszeichen ("") eingeschlossen und das Jahr nicht angegeben, so wird bei jeder Auswertung des Ausdrucks Datum das aktuelle Jahr in Ihren Code eingefügt. Sie können daher Code schreiben, der in mehreren Jahren verwendet werden kann.

Anmerkung   Wenn die Einstellung der Calendar-Eigenschaft auf Gregorianisch steht, muß das durch das Argument Datum angegebene Datum dem Gregorianischen Kalender entsprechen. Wenn die Eigenschaft auf Hijri steht, muß das angegebene Datum dem Hijri-Kalender entsprechen.

Der zurückgegebene Bestandteil des Datums befindet sich innerhalb der Zeitraumeinheiten des aktuellen Arabischen Kalenders. Wenn der aktuelle Kalender beispielsweise ein Hijri-Kalender ist und der Bestandteil des Datums, der zurückgegeben werden soll, das Jahr, dann ist der Wert für Jahr ein Hijri-Jahr.


DateSerial-Funktion

Gibt einen Wert vom Typ Variant (Date) zurück, der die angegebene Jahres-, Monats- und Tageszahl enthält.

Syntax

DateSerial(year, month, day)

Die Syntax für die DateSerial-Funktion besteht aus folgenden benannten Argumenten:

Teil	Beschreibung
year	Erforderlich. Wert vom Typ Integer. Zahl im Bereich von 100 bis 9999 (einschließlich) oder ein numerischer Ausdruck.
month	Erforderlich. Wert vom Typ Integer. Beliebiger numerischer Ausdruck.
day	Erforderlich. Wert vom Typ Integer. Beliebiger numerischer Ausdruck.
Bemerkungen

Wenn Sie ein Datum (zum Beispiel den 31. Dezember 1991) angeben, dann sollten sich die Werte für jedes DateSerial-Argument im jeweils gültigen Bereich befinden, also im Bereich 1 bis 31 für Tage und 1 bis 12 für Monate. Alternativ können Sie den Wert für die einzelnen Argumente auch relativ über einen beliebigen numerischen Ausdruck angeben, der eine bestimmte Anzahl an Tagen, Monaten oder Jahren vor oder nach einem Datum darstellt.

Das folgende Beispiel verwendet numerische Ausdrücke anstelle von absoluten Datumszahlen. Die DateSerial-Funktion gibt in diesem Fall das Datum für den Tag vor dem ersten Tag (1 - 1) des Monats zurück, der zwei Monate vor August (8 - 2) liegt, und zwar 10 Jahre vor dem Jahr 1990 (1990 - 10). Das Ergebnis ist der 31. Mai 1980.

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

Unter Windows 98 oder Windows 2000 werden zweiziffrige Jahreswerte für das Argument year basierend auf den den benutzerdefinierten Einstellungen des Computers interpretiert. Die Standardwerte sind so, daß Werte zwischen 0 und 29 (einschließlich) als die Jahre 2000–2029 interpretiert werden. Die Standardwerte zwischen 30 und 99 werden als die Jahre von 1930 bis 1999 interpretiert. Verwenden Sie bei allen anderen year-Argumenten die vollständige Angabe mit 4 Stellen (zum Beispiel 1800).

Frühere Versionen von Windows interpretieren zweiziffrige Jahreswerte basierend auf den oben beschriebenen Standardwerten. Verwenden Sie eine vierziffrige Jahresangabe, damit die Funktion auf jeden Fall den korrekten Wert zurückgibt.

Wenn ein Argument den zulässigen Bereich für dieses Argument überschreitet, erfolgt ein Übertrag auf die nächst größere Einheit. Wenn Sie zum Beispiel 35 Tage angeben, wird dies als ein Monat und eine bestimmte Anzahl von Tagen interpretiert, je nachdem, für welchen Monat des Jahres das Argument verwendet wird. Wenn aber eins der Argumente außerhalb des Bereichs -32.768 bis 32.767 liegt oder wenn das durch die drei Argumente angegebene Datum außerhalb des zulässigen Bereichs liegt, tritt ein Fehler auf.

Anmerkung   Wenn die Einstellung der Calendar-Eigenschaft auf Gregorianisch steht, entspricht der in den Argumenten year, month und day angegebene Wert dem Gregorianischen Kalender. Steht die Einstellung der Calendar-Eigenschaft auf Hijri, entspricht der Wert dem Hijri-Kalender.

Der zurückgegebene Bestandteil des Datums befindet sich innerhalb der Zeitraumeinheiten des aktuellen Visual Basic-Kalenders. Wenn der aktuelle Kalender beispielsweise ein Hijri-Kalender ist und der Bestandteil des Datums, der zurückgegeben werden soll, das Jahr, dann ist der Wert für Jahr ein Hijri-Jahr. Bei dem mit dem Argument year angegebenen Datum werden die Werte zwischen 0 und 99 (einschließlich) als die Jahre 1400-1499 interpretiert. Verwenden Sie für alle anderen Werte des Arguments year die vollständige vierstellige Jahreszahl (z.B. 1520).


DateValue-Funktion

Gibt einen Wert vom Typ Variant (Date) zurück.

Syntax

DateValue(Datum)

Das erforderliche Argument Datum ist normalerweise ein Zeichenfolgenausdruck, der ein Datum aus dem Bereich vom 1. Januar 100 bis zum 31. Dezember 9999 repräsentiert. Alternativ können Sie für Datum aber auch einen beliebigen Ausdruck angeben, der ein Datum, eine Zeit oder beides aus diesem Bereich darstellen kann.

Bemerkungen

Wenn Datum eine Zeichenfolge ist, die ausschließlich durch gültige Datumstrennzeichen getrennte Zeichen enthält, erkennt DateValue die Reihenfolge für Monat, Tag und Jahr anhand des kurzen Datumsformats, das Sie für Ihr System eingestellt haben. DateValue erkennt auch eindeutige Datumsangaben, die (abgekürzte oder ausgeschriebene) Monatsnamen enthalten. DateValue erkennt zum Beispiel neben 30.12.1991 und 30.12.91 auch 30. Dezember 1991 und 30. Dez 1991.

Wenn Sie das Jahr in Datum nicht angeben, verwendet DateValue das aktuelle Jahr aus dem Systemdatum des Computers.

Wenn das Argument Datum Zeitangaben enthält, gibt DateValue diese nicht zurück. Enthält Datum jedoch ungültige Zeitangaben (wie z.B. "89:98"), so tritt ein Fehler auf.

Anmerkung   Wenn die Calendar-Eigenschaft auf Gregorianisch steht, muß das mit dem Argument Datum angegebene Datum dem Gregorianischen Kalender entsprechen. Wenn die Eigenschaft auf Hijri steht, muß das angegebene Datum dem Hijri-Kalender entsprechen. Ist das angegebene Datum Hijri, ist das Argument Datum ein Wert vom Typ String, der ein Datum vom 1/1/100 (Gregorianischer Kalender 2. Aug 718) bis zum 4/3/9666 (Gregorianischer Kalender 31.Dez 9999) darstellt.


Day-Funktion

Gibt einen Wert vom Typ Variant (Integer) zurück, der den Tag des Monats als ganze Zahl im Bereich von 1 bis 31 angibt.

Syntax

Day(Datum)

Das erforderliche Argument Datum ist ein beliebiger Wert vom Typ Variant, ein numerischer Ausdruck, ein Zeichenfolgenausdruck oder eine beliebige Kombination, die ein Datum darstellen kann. Wenn Datum den Wert Null enthält, wird Null zurückgegeben.

Anmerkung   Wenn die Calendar-Eigenschaft auf Gregorianisch steht, stellt die zurückgegebene Ganzzahl den gregorianischen Tag eines Monats für das Datumargument dar. Wenn die Einstellung auf Hijri steht, dann stellt die zurückgegebene Ganzzahl den Tag eines Monat des Hijri-Kalenders für das Datumargument dar.


Hour-Funktion

Gibt einen Wert vom Typ Variant (Integer) zurück, der die Stunde des Tages als ganze Zahl im Bereich von 0 bis 23 angibt.

Syntax

Hour(Uhrzeit)

Das erforderliche Argument Uhrzeit ist ein beliebiger Wert vom Typ Variant, ein numerischer Ausdruck, ein Zeichenfolgenausdruck oder eine beliebige Kombination, die eine Uhrzeit darstellen kann. Wenn Uhrzeit den Wert Null enthält, wird Null zurückgegeben.


Minute-Funktion

Gibt einen Wert vom Typ Variant (Integer) zurück, der die Minute in der Stunde als ganze Zahl im Bereich von 0 bis 59 angibt.

Syntax

Minute(Uhrzeit)

Das erforderliche Argument Uhrzeit ist ein beliebiger Wert vom Typ Variant, ein numerischer Ausdruck, ein Zeichenfolgenausdruck oder eine beliebige Kombination, die eine Uhrzeit darstellen kann. Wenn Uhrzeit den Wert Null enthält, wird Null zurückgegeben.


Month-Funktion

Gibt einen Wert vom Typ Variant (Integer) zurück, der den Monat im Jahr als ganze Zahl im Bereich von 1 bis 12 angibt.

Syntax

Month(Datum)

Das erforderliche Argument Datum ist ein beliebiger Wert vom Typ Variant, ein numerischer Ausdruck, ein Zeichenfolgenausdruck oder eine beliebige Kombination, die ein Datum darstellen kann. Wenn Datum den Wert Null enthält, wird Null zurückgegeben.

Anmerkung   Wenn die Einstellung der Calendar-Eigenschaft auf Gregorianisch steht, stellt die zurückgegebene Ganzzahl den gregorianischen Wochentag für das Datumargument dar. Wenn die Einstellung auf Hijri steht, stellt die zurückgegebene Ganzzahl den Wochentag des Hijri-Kalenders für das Datumargument dar. Bei Datumsangaben nach dem Hijri-Kalender entspricht die Nummer des Arguments jedem numerischen Ausdruck, der ein Datum und/oder einen Zeitraum vom 1/1/100 (Gregorianischer Kalender 2. Aug 718) bis zum 4/3/9666 (Gregorianischer Kalender 31. Dez 9999) darstellen kann.


Now-Funktion

Gibt einen Wert vom Typ Variant (Date) zurück, der das aktuelle Datum und die aktuelle Zeit aus den Einstellungen für das Systemdatum und die Systemzeit auf Ihrem Computer angibt.

Syntax

Now


Second-Funktion

Gibt einen Wert vom Typ Variant (Integer) zurück, der die Sekunden in der Minute als ganze Zahl im Bereich von 0 bis 59 angibt.

Syntax

Second(Uhrzeit)

Das erforderliche Argument Uhrzeit ist ein beliebiger Wert vom Typ Variant, ein numerischer Ausdruck, ein Zeichenfolgenausdruckoder eine beliebige Kombination, die eine Uhrzeit darstellen kann. Wenn Uhrzeit den Wert Null enthält, wird Null zurückgegeben.


Time-Funktion

Gibt einen Wert vom Typ Variant (Date) zurück, der die aktuelle Systemzeit angibt.

Syntax

Time

Bemerkungen

Sie können die Systemzeit mit der Time-Anweisung einstellen.


Time-Anweisung

Stellt die Systemzeit ein.

Syntax

Time = Uhrzeit

Das erforderliche Argument Uhrzeit ist ein beliebiger numerischer Ausdruck, ein Zeichenfolgenausdruck oder eine beliebige Kombination, die eine Uhrzeit darstellen kann.

Bemerkungen

Wenn Uhrzeit eine Zeichenfolge ist, wandelt die Time-Funktion sie unter Verwendung der Zeittrennzeichen, die Sie für Ihr System eingestellt haben, in einen Zeitwert um. Ist die Umwandlung in eine gültige Zeit nicht möglich, so tritt ein Fehler auf.


Timer-Funktion

Gibt einen Wert vom Typ Single zurück, der die Anzahl der seit Mitternacht vergangenen Sekunden angibt.

Syntax

Timer

Bemerkungen

Unter Microsoft Windows gibt die Timer-Funktion Bruchteile einer Sekunde zurück. Auf dem Macintosh ist die Einheit eine Sekunde.


TimeSerial-Funktion

Gibt einen Wert vom Typ Variant (Date) zurück, der die Uhrzeit für eine bestimmte Stunde, Minute und Sekunde enthält.

Syntax

TimeSerial(hour, minute, second)

Die Syntax für die TimeSerial-Funktion besteht aus folgenden benannten Argumenten:

Teil	Beschreibung
hour	Erforderlich. Variant (Integer). Zahl im Bereich von 0 (00:00) bis 23 (23:00) oder ein numerischer Ausdruck.
minute	Erforderlich. Variant (Integer). Beliebiger numerischer Ausdruck.
second	Erforderlich. Variant (Integer). Beliebiger numerischer Ausdruck.
Bemerkungen

Wenn Sie eine Zeit (zum Beispiel 11:59:59) angeben, dann sollten sich die Zahlen für die Argumente von TimeSerial im jeweils gültigen Bereich befinden, also im Bereich 0 bis 23 für Stunden und 0 bis 59 für Minuten und Sekunden. Alternativ können Sie einen relativen Wert für die einzelnen Argumente mit einem beliebigen numerischen Ausdruck angeben, der eine bestimmte Anzahl an Stunden, Minuten oder Sekunden vor oder nach einem bestimmten Zeitpunkt angibt. Das folgende Beispiel verwendet Ausdrücke anstelle von absoluten Zeitwerten. Die TimeSerial-Funktion gibt die Uhrzeit für den Zeitpunkt 15 Minuten vor (-15) der Stunde zurück, die sechs Stunden vor 12 Uhr (12 - 6) liegt, Das Ergebnis ist 5:45:00.

TimeSerial(12 - 6, -15, 0)

Wenn ein Argument den normalen zulässigen Bereich für das Argument überschreitet, erfolgt ein Übertrag auf die nächst größere Einheit. Wenn Sie zum Beispiel 75 Minuten angeben, wird dies als eine Stunde und 15 Minuten interpretiert. Wenn aber eins der Argumente außerhalb des Bereichs -32.768 bis 32.767 liegt oder wenn die durch die drei Argumente angegebene Uhrzeit dazu führt, daß das Datum außerhalb des zulässigen Bereichs liegt, tritt ein Fehler auf.


TimeValue-Funktion

Gibt einen Wert vom Typ Variant (Date) zurück, der die Uhrzeit enthält.

Syntax

TimeValue(Uhrzeit)

Das erforderliche Argument Uhrzeit ist normalerweise ein Zeichenfolgenausdruck, der eine Zeit im Bereich von 0:00:00 bis 23:59:59 darstellt. Uhrzeit kann aber auch ein beliebiger Ausdruck sein, der eine Zeit aus diesem Bereich angibt. Wenn Uhrzeit den Wert Null enthält, wird Null zurückgegeben.

Bemerkungen

Gültige Zeitangaben sind in der 24-Stunden-Schreibweise oder der 12-Stunden-Schreibweise möglich Die Angaben "2:24PM" und "14:24" stellen daher beide gültige Werte für Uhrzeit dar.

Wenn das Argument Uhrzeit eine Datumsangabe enthält, gibt TimeValue diese nicht zurück. Wenn Uhrzeit jedoch ein ungültiges Datum enthält, tritt ein Fehler auf.


Weekday-Funktion

Gibt einen Wert vom Typ Variant (Integer) zurück, der den Wochentag als ganze Zahl angibt.

Syntax

Weekday(date, [firstdayofweek])

Die Syntax für die Weekday-Funktion besteht aus folgenden benannten Argumenten:

Teil	Beschreibung
date	Erforderlich. Wert vom Typ Variant, numerischer Ausdruck, Zeichenfolgenausdruck oder eine beliebige Kombination, die ein Datum darstellen kann. Wenn Date den Wert Null enthält, wird Null zurückgegeben.
Firstdayofweek	Optional. Eine Konstante, die den ersten Wochentag angibt. Wird die Konstante nicht angegeben, so wird vbSunday angenommen.
Einstellungen

Das Argument firstdayofweek hat folgende Einstellungen:

Konstante	Wert	Beschreibung
vbUseSystem	0	NLS API-Einstellung wird verwendet.
VbSunday	1	Sonntag (Voreinstellung)
vbMonday	2	Montag
vbTuesday	3	Dienstag
vbWednesday	4	Mittwoch
vbThursday	5	Donnerstag
vbFriday	6	Freitag
vbSaturday	7	Samstag
Rückgabewerte

Die Weekday-Funktion kann einen der folgenden Werte zurückgeben:

Konstante	Wert	Beschreibung
vbSunday	1	Sonntag
vbMonday	2	Montag
vbTuesday	3	Dienstag
vbWednesday	4	Mittwoch
vbThursday	5	Donnerstag
vbFriday	6	Freitag
vbSaturday	7	Samstag
Bemerkungen

Wenn die Einstellung der Calendar-Eigenschaft auf Gregorianisch steht, stellt die zurückgegebene Ganzzahl den gregorianischen Wochentag für das Datumargument dar. Wenn die Einstellung auf Hijri steht, stellt die zurückgegebene Ganzzahl den Wochentag des Hijri-Kalenders für das Datumargument dar. Bei Datumsangaben nach dem Hijri-Kalender entspricht die Nummer des Arguments jedem numerischen Ausdruck, der ein Datum und/oder einen Zeitraum vom 1/1/100 (Gregorianischer Kalender 2. Aug 718) bis zum 4/3/9666 (Gregorianischer Kalender 31. Dez 9999) darstellen kann.


Year-Funktion

Gibt einen Wert vom Typ Variant (Integer) zurück, der das Jahr als ganze Zahl angibt.

Syntax

Year(Datum)

Das erforderliche Argument Datum ist ein beliebiger Wert vom Typ Variant, ein numerischer Ausdruck, ein Zeichenfolgenausdruck oder eine beliebige Kombination, die ein Datum darstellen kann. Wenn Datum den Wert Null enthält, wird Null zurückgegeben.

Anmerkung Wenn die Einstellung der Calendar-Eigenschaft auf Gregorianisch steht, stellt die zurückgegebene Ganzzahl das gregorianische Jahr für das Datumargument dar. Wenn die Einstellung auf Hijri steht, stellt die zurückgegebene Ganzzahl das Jahr des Hijri-Kalenders für das Datumargument dar. Bei Datumsangaben nach dem Hijri-Kalender entspricht die Nummer des Arguments jedem numerischen Ausdruck, der ein Datum und/oder einen Zeitraum vom 1/1/100 (Gregorianischer Kalender 2. Aug 718) bis zum 4/3/9666 (Gregorianischer Kalender 31. Dez 9999) darstellen kann.


Array-Funktion

Gibt einen Wert vom Typ Variant zurück, der ein Datenfeld enthält.

Syntax

Array(ArgListe)

Das erforderliche Argument ArgListe enthält eine durch Kommata getrennte Liste von Werten, die den im Variant enthaltenen Elementen des Datenfeldes zugewiesen werden. Werden keine Argumente angegeben, so erstellt die Funktion ein Null-Datenfeld.

Bemerkungen

Der Zugriff auf ein beliebiges Element eines Datenfeldes erfolgt durch Angabe des Variablennamens mit einem nachfolgenden Klammernpaar, das die Indexnummer des gewünschten Elements enthält. Im folgenden Beispiel erstellt die erste Anweisung die Variable A als Variant. Die zweite Anweisung weist der Variablen A ein Datenfeld zu. Die letzte Anweisung weist den Wert, der im zweiten Datenfeldelement enthalten ist, einer anderen Variablen zu.

Dim A As Variant

A = Array(10,20,30)

B = A(2)

Die untere Grenze für ein mit der Array-Funktion erstelltes Datenfeld wird bestimmt durch die in der Option Base-Anweisung festgelegte untere Grenze, es sei denn, Array wird mit dem Namen der Typenbibliothek qualifiziert (z.B. VBA.Array). In diesem Fall wird Array nicht durch Option Base beeinflusst.

Anmerkung   Ein Variant, der nicht als Datenfeld deklariert ist, kann trotzdem ein Datenfeld enthalten. Eine Variable vom Typ Variant kann ein Datenfeld eines beliebigen Typs enthalten, außer Zeichenfolgen konstanter Länge und benutzerdefinierte Typen. Obwohl ein Variant, der ein Datenfeld enthält, sich konzeptionell von einem Datenfeld unterscheidet, dessen Elemente vom Typ Variant sind, erfolgt der Zugriff auf die Datenfeldelemente in gleicher Weise.


CallByName-Funktion

Führt eine Methode eines Objekts aus oder stellt eine Eigenschaft eines Objekts ein bzw. gibt eine Eigenschaft eines Objekts

Syntax

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

Die Syntax der CallByName-Funktion besteht aus folgenden benannten Argumenten:

Teil	Beschreibung
object	Erforderlich; Variant (Object). Der Name des Objekts auf das die Funktion angewandt werden soll.
procname	Erforderlich; Variant (String). Ein Zeichenfolgenausdruck, der den Namen einer Eigenschaft oder Methode des Objekts enthält.
calltype	Erforderlich; Constant. Eine Konstante vom Typ vbCallType, welche die Art der aufzurufenden Prozedur angibt.
args()	Optional: Variant (Array).
Anmerkungen

Die CallByName-Funktion wird verwendet, um zur Laufzeit mit Hilfe einer Namenszeichenfolge eine Eigenschaft einzustellen bzw. zu erhalten oder eine Methode aufzurufen.

Beim folgenden Beispiel wird in der ersten Zeile CallByName verwendet, um die MousePointer-Eigenschaft auf ein Textfeld einzustellen, die zweite Zeile ruft den Wert der MousePointer-Eigenschaft ab und in der dritten Zeile wird die Move-Methode aufgerufen, um das Textfeld zu verschieben:

CallByName Text1, "MousePointer", vbLet, vbCrosshair

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

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


Const-Anweisung

Deklariert Konstanten, die anstelle von Literalwerten verwendet werden können.

Syntax

[Public | Private] Const KonstName [As Typ] = Ausdruck

Die Syntax der Const-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Public	Optional. Schlüsselwort, das auf Modulebene Konstanten deklariert, die allen Prozeduren in allen Modulen zur Verfügung stehen. Innerhalb von Prozeduren nicht zulässig.
Private	Optional. Schlüsselwort, das auf Modulebene Konstanten deklariert, die nur innerhalb des Moduls verfügbar sind, in dem sie deklariert wurden. Innerhalb von Prozeduren nicht zulässig.
KonstName	Erforderlich. Name der Konstanten gemäß den Standardkonventionen für Namen von Variablen.
Typ	Optional. Datentyp der Konstanten. Zulässige Typen sind Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (zur Zeit nicht unterstützt), Date, String oder Variant. Verwenden Sie für jede deklarierte Variable einen separaten As Typ-Abschnitt.
Ausdruck	Erforderlich. Ein Literalwert, eine andere Konstante oder eine beliebige Kombination, die beliebige arithmetische oder logische Operatoren (mit Ausnahme von Is) enthält.
Bemerkungen

Konstanten werden in der Voreinstellung als privat deklariert. Innerhalb von Prozeduren sind Konstanten immer privat, der Bereich, in dem auf sie zugegriffen werden kann, kann nicht verändert werden. In Standardmodulen kann der Standardbereich, in dem auf Konstanten auf Modulebene zugegriffen werden kann, mit dem Schlüsselwort Public verändert werden. In Klassenmodulen können Konstanten jedoch nur privat sein, und der Bereich, in dem darauf zugegriffen werden kann, kann nicht mit dem Schlüsselwort Public verändert werden.

Mehrere Konstantendeklarationen können in einer Zeile kombiniert werden, indem die Konstantenzuweisungen jeweils durch Kommas getrennt werden. Bei Deklarationen dieser Art bezieht sich das Schlüsselwort Public oder Private immer auf alle Konstanten in der Zeile.

Sie können keine Variablen, benutzerdefinierte Funktionen oder integrierte Visual Basic-Funktionen (wie Chr) in Ausdrücken verwenden, die Konstanten zugewiesen worden sind.

Anmerkung   Die Verwendung von Konstanten erleichtert das Dokumentieren und Modifizieren Ihrer Programme. Konstanten können im Gegensatz zu Variablen nicht versehentlich geändert werden, während das Programm ausgeführt wird.

Wenn Sie den Konstantentyp nicht explizit (mit As Typ) deklarieren, wird ein Datentyp für die Konstante festgelegt, der am besten für den angegebenen Ausdruck geeignet ist.

In Sub-, Function- oder Property-Prozeduren deklarierte Konstanten gelten als lokal innerhalb dieser Prozedur. Eine Konstante, die außerhalb einer Prozedur deklariert wurde, ist für das gesamte umgebende Modul definiert. Konstanten können an allen Stellen verwendet werden, an denen auch ein Ausdruck zulässig ist.


CreateObject-Funktion

Erstellt und gibt einen Verweis auf ein ActiveX-Objekt zurück.

Syntax

CreateObject(Klasse,[Servername])

Die Syntax der CreateObject-Funktion besteht aus folgenden Teilen:

Teil	Beschreibung
Klasse	Erforderlich; Variant (String). Der Anwendungsname und Klasse des zu erstellenden Objekts.
Servername	Optional; Variant (String). Der Name des Netzwerkservers, auf dem das Objekt erstellt wird. Falls Servername eine leere Zeichenfolge ("") ist, wird der lokale Computer verwendet.
Das Argument Klasse verwendet die Syntax AnwName.Objekttyp und besteht aus folgenden Teilen:

Teil	Beschreibung
AnwName	Erforderlich. Ein Wert vom Typ Variant (String). Der Name der Anwendung, die das Objekt bereitstellt.
Objekttyp	Erforderlich. Ein Wert vom Typ Variant (String). Der Typ oder die Klasse des zu erstellenden Objekts.
Bemerkungen

Jede Anwendung, die Automatisierung unterstützt, stellt mindestens einen Objekttyp bereit. Eine Anwendung zur Textverarbeitung kann beispielsweise Application-, Document- und Toolbar-Objekte bereitstellen.

Sie erstellen ein ActiveX-Objekt, indem Sie das von CreateObject zurückgegebene Objekt einer Objektvariablen zuweisen:

' Deklariert eine Objektvariable, die den Verweis auf  ' das Objekt enthält.

' Dim as Object führt zu Auflösung zur Laufzeit.

Dim ExcelSheet As Object

Set ExcelSheet = CreateObject("Excel.Sheet")

Dieser Code veranlaßt die Anwendung, das Objekt (in diesem Fall ein Microsoft Excel-Tabellenblatt) zu erstellen. Wurde ein Objekt einmal erstellt, so verweisen Sie im Code über die definierte Objektvariable darauf. Im folgenden Beispiel greifen Sie auf Eigenschaften und Methoden des neuen Objekts mit der Objektvariablen, ExcelSheet, und anderen Microsoft Excel-Objekten zu, einschließlich des Application-Objekts und der Cells-Auflistung.

' Excel mit Hilfe des Application-Objekts

' bereitstellen.

ExcelSheet.Application.Visible = True

' Text in die erste Tabellenzelle einfügen.

ExcelSheet.Application.Cells(1, 1).Value = "Dies ist Spalte A, Zeile 1"

' Speichern der Tabelle unter C:\test.xls

ExcelSheet.SaveAs "C:\ TEST.XLS"

' Schließen von Excel mit der Quit-Methode des

' Application-Objekts.

ExcelSheet.Application.Quit

' Freigeben der Objektvariable.

Set ExcelSheet = Nothing

Das Deklarieren einer Objektvariable mit dem As Object-Abschnitt erstellt eine Variable, die einen Verweis auf jeden Objekttyp enthalten kann. Das Binden der Variable an das Objekt, damit über die Variable auf das Objekt zugegriffen werden kann, erfolgt jedoch erst zur Laufzeit, d.h., der Verweis wird erst beim Ausführen des Programms aufgelöst. Sie können eine Objektvariable erstellen, für die der Verweis zur Kompilierungszeit aufgelöst wird, indem Sie die Objektvariable mit einer bestimmten Klassen-ID deklarieren. Sie können beispielsweise die folgenden Microsoft Excel-Verweise deklarieren und erstellen:

Dim xlAnw As Excel.Application

Dim xlBuch As Excel.Workbook

Dim xlArbBlatt As Excel.WorkSheet

Set xlAnw = CreateObject("Excel.Application")

Set xlBuch = xlApp.Workbooks.Add

Set xlArbBlatt = xlBook.Worksheets(1)

Der Verweis mit Hilfe einer Variablen, der zur Kompilierungszeit aufgelöst wird, kann zwar das Leistungsverhalten verbessern, die Variable kann jedoch nur einen Verweis auf die in der Deklaration angegebene Klasse enthalten.

Sie können ein von der CreateObject-Funktion zurückgegebenes Objekt einer Funktion übergeben, die ein Objekt als ein Argument erwartet. Der folgende Code  erstellt und übergibt z.B. einen Verweis auf ein Excel.Application-Objekt:

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

Sie können ein Objekt auf einem anderen Computer im Netzwerk erstellen, indem Sie den Namen des Computers im Argument Servername von CreateObject übergeben. Dieser Name ist derselbe wie der, der als Bestandteil des Freigabenamens den Computernamen angibt: bei einer Freigabe namens "\\MeinServer\Public" ist Servername "MeinServer".

Anmerkung   In der COM-Dokumentation (siehe Microsoft Developer Network) finden Sie weitere Informationen zum Bereitstellen einer Anwendung auf einem Remote-Comouter im Netzwerk. Möglicherweise müssen Sie einen Registrierungsschlüssel für Ihre Anwendung hinzufügen.

Der folgende Code gibt die Versionsnummer einer Instanz von Excel zurück, die auf einem Remote Computer MeinServer läuft:

Dim xlApp As Object

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

Debug.Print xlApp.Version

Falls der Remote Server nicht existiert oder nicht verfügbar ist, tritt ein Laufzeitfehler ein.

Anmerkung   Verwenden Sie CreateObject, wenn keine aktuelle Instanz des Objekts existiert. Wird eine Instanz des Objekts bereits ausgeführt, so wird eine neue Instanz gestartet und ein Objekt des angegebenen Typs erstellt. Damit Sie die aktuelle Instanz verwenden oder die Anwendung starten und eine Datei laden können, verwenden Sie die GetObject-Funktion.

Hat sich ein Objekt selbst als ein Objekt mit einer einzigen Instanz registriert, so wird nur eine Instanz des Objekts erstellt, ungeachtet dessen, wie oft CreateObject ausgeführt wird.


Declare-Anweisung

Deklariert auf Modulebene Verweise auf externe Prozeduren in einer Dynamic Link Library (DLL) or code resource (Macintosh).

Syntax 1

[Public | Private] Declare Sub Name Lib "BibName" [Alias "Aliasname"] [([ArgListe])]

Syntax 2

[Public | Private] Declare Function Name Lib "BibName" [Alias "Aliasname"] [([ArgListe])] [As Typ]

Syntax 3 (Power Macintosh)

[Public | Private ] Declare Function Name [CDecl] Lib "BibName" [Alias "Aliasname" ] [([ArgListe])] [As Typ]

Die Syntax der Declare-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Public	Optional. Deklariert Prozeduren, die allen anderen Prozeduren in allen Modulen zur Verfügung stehen.
Private	Optional. Deklariert Prozeduren, die nur innerhalb des Moduls verfügbar sind, in dem sie deklariert wurden.
Sub	Optional (entweder Sub oder Function muß auftreten). Die Prozedur gibt keinen Wert zurück.
Function	Optional (entweder Sub oder Function muß auftreten). Die Prozedur gibt einen Wert zurück, der in einem Ausdruck verwendet werden kann.
Name	Erforderlich. Ein beliebiger gültiger Name für eine Prozedur. Beachten Sie, daß bei den Namen der DLL- Einsprungpunkte zwischen Groß-/Kleinschreibung unterschieden wird.
Lib	Erforderlich. Die deklarierte Prozedur ist in einer DLL oder Code-Ressource enthalten. Der Lib-Abschnitt ist bei allen Deklarationen erforderlich.
BibName	Erforderlich. Name der DLL oder Code-Ressource, die die deklarierte Prozedur enthält.
Alias	Optional. Gibt an, daß die aufgerufene Prozedur in der DLL einen anderen Namen hat. Dies ist sinnvoll, wenn der Name einer externen Prozedur einem Schlüsselwort entspricht. Alias kann auch verwendet werden, wenn eine DLL-Prozedur denselben Namen hat wie eine öffentliche Variable, Konstante oder eine andere Prozedur mit demselben Gültigkeitsbereich. Alias bietet sich darüber hinaus an, wenn bestimmte Zeichen im Namen der DLL-Prozedur aufgrund der Namenskonvention für DLLs nicht zulässig sind. Auf dem Power Macintosh kann das Schlüsselwort Alias auch verwendet werden, um anzuzeigen, daß die aufgerufene Prozedur sich in einer Macintosh Code-Ressource befindet.
Aliasname	Optional. Name der Prozedur in der DLL oder Code-Ressource. Wenn das erste Zeichen nicht das Zeichen # ist, gibt Aliasname den Namen des Einsprungpunktes in der DLL an. Ist das Zeichen # das erste Zeichen, so müssen alle nachfolgenden Zeichen die Ordnungszahl (laufende Nummer) für den Einsprungpunkt in die Prozedur angeben. Auf dem Power Macintosh kann Aliasname folgendermaßen verwendet werden, um den Typ der Code-Ressource anzugeben: "[Ressourcentyp]$[Ressourcenname]" Der Ressourcentyp ist eine beliebige zulässige Konstante. Wird sie nicht angegeben, so ist der Standard-Ressourcentyp CODE. Der Ressourcenname ist der Name der Prozedur in der Code-Ressource. Wird Ressourcenname weggelassen, so wird Name als Ressourcenname angenommen.
ArgListe	Optional. Variablenliste mit den Argumenten, die beim Aufruf an die Prozedur übergeben werden.
Typ	Optional. Datentyp des Rückgabewerts einer Function-Prozedur. Zulässige Typen sind: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (zur Zeit nicht unterstützt), Date, String (nur Zeichenfolgen variabler Länge) oder Variant, ein benutzerdefinierter Typ oder ein Objekttyp.
CDecl	Auf dem Power Macintosh kann das Schlüsselwort CDecl verwendet werden, um anzuzeigen, daß die Prozedur die Argument-Reihenfolge, Namens- und Aufrufkonventionen der Sprache C verwendet.
Das Argument ArgListe hat die folgende Syntax und die folgenden Teile:

[Optional] [ByVal | ByRef] [ParamArray] VarName[( )] [As Typ]

Teil	Beschreibung
Optional	Optional. Ein Argument ist nicht erforderlich. Alle im Anschluß an Optional in ArgListe angegebenen Argumente müssen ebenfalls optional sein und mit dem Schlüsselwort Optional deklariert werden. Optional kann nicht verwendet werden, wenn ParamArray verwendet wird.
ByVal	Optional. Das Argument wird als Wert übergeben.
ByRef	Das Argument wird als Referenz übergeben. ByRef ist die Voreinstellung in Visual Basic.
ParamArray	Optional. Wird nur als letztes Argument in ArgListe verwendet und gibt an, daß das letzte Argument ein Datenfeld vom Typ Optional aus Elementen vom Typ Variant ist. Das Schlüsselwort ParamArray erlaubt die Angabe einer variablen Anzahl von Argumenten und darf nicht in Kombination mit den Schlüsselwörtern ByVal, ByRef oder Optional verwendet werden.
VarName	Erforderlich. Name der Variablen, die das an die Prozedur zu übergebende Argument darstellt. Der Name muß den Standardkonventionen für Namen von Variablen entsprechen.
( )	Erforderlich für Datenfeldvariablen. Zeigt an, daß VarName ein Datenfeld ist.
Typ	Optional. Datentyp des an die Prozedur übergebenen Arguments. Zulässige Typen sind: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (zur Zeit nicht unterstützt), Date, String (nur Zeichenfolgen variabler Länge), Object, Variant, ein benutzerdefinierter Typ oder ein Objekttyp.
Bemerkungen

In Function-Prozeduren legt der Datentyp für die Prozedur den Datentyp des Rückgabewerts fest. Mit einem As-Abschnitt im Anschluß an ArgListe können Sie den Rückgabetyp der Funktion festlegen. Innerhalb von ArgListe legen Sie mit einem As-Abschnitt den Datentyp der einzelnen an die Prozedur übergebenen Argumente fest. Neben den Standard-Datentypen können Sie an dieser Stelle auch As Any in ArgListe angeben, um die Typprüfung zu unterdrücken und einen beliebigen Datentyp an die Prozedur zu übergeben.

Ein leeres Klammernpaar steht für eine Sub- oder Function-Prozedur ohne Argumente und weist darauf hin, daß Visual Basic keine Argumente übergeben soll. Im folgenden Beispiel wird Erster ohne Argumente deklariert. Wenn Sie beim Aufruf von Erster ein Argument verwenden, tritt ein Fehler auf:

Declare Sub Erster Lib "MeineLib" ()

Wenn Sie eine Argumentliste angeben, werden die Anzahl und der Typ der Argumente bei jedem Prozeduraufruf überprüft. Im folgenden Beispiel erwartet Erster ein Argument vom Typ Long:

Declare Sub Erster Lib "MeineLib" (X As Long)

Anmerkung   Zeichenfolgen fester Länge sind in der Argumentliste einer Declare-Anweisung nicht zulässig, da nur Zeichenfolgen variabler Länge an eine Prozedur übergeben werden können. Zeichenfolgen fester Länge sind als Prozedurargumente zwar zulässig, werden aber vor der Übergabe in Zeichenfolgen variabler Länge umgewandelt.

Anmerkung   Die Konstante vbNullString wird von Visual Basic für den Aufruf externer Prozeduren verwendet, wenn die externe Prozedur eine Zeichenfolge mit dem Wert Null erfordert. Eine solche Zeichenfolge ist nicht mit einer Null-Zeichenfolge ("") identisch.

Auf dem Power Macintosh unterstützt die Declare-Anweisung Aufrufe von native Code nur in Codefragmenten. Der Aufruf von Code in Code-Ressourcen wird ebenfalls unterstützt, aber nur im 68000-Emulationsmodus.

Bei Verwendung auf dem Power Macintosh ist die Syntax der Declare-Anweisung folgende:

Declare Function MeineFunktion Lib "hd:Systemordner:Systemerweiterungen:MeinCodeFragment" Alias "MeineFunktion" () As Long

Sowohl bei Codefragmenten als auch bei Code-Ressourcen kann ein vollständiger oder teilweiser Pfadname in der Lib-Klausel angegeben werden. Falls die angegebene Lib-Klausel mehrdeutig ist, wird sie folgendermaßen aufgelöst:

•	Wenn die Datei eine 'cfrg'-Ressource enthält, wird sie als Codefragment behandelt.

•	Wenn sie keine 'cfrg'-Ressource enthält, wird sie wie eine Datei behandelt, die Code-Ressourcen enthält.

Damit ist die Erstellung von "Fat"-Codefragmenten möglich, d.h. von Dateien, die sowohl Code-Fragmente als auch 68000-Code-Ressourcen enthalten. Bei Ausführung von Visual Basic for Applications auf einem 68000-Macintosh wird die Code-Ressource verwendet. Bei Ausführung auf einem Power Macintosh wird das native Codefragment verwendet.

Die Macintosh-Toolbox ist auf dem Power Macintosh mit Hilfe einer Deklaration in das Codefragment des Systems zugänglich.


Deftype-Anweisungen

Legt auf Modulebene den Standard-Datentyp für Variablen und an Prozeduren übergebene Argumente sowie den Rückgabetyp für Function- und Property Get-Prozeduren fest, deren Namen mit den angegebenen Zeichen beginnen.

Syntax

DefBool Buchstabenbereich[,Buchstabenbereich] . . .

DefByte Buchstabenbereich[,Buchstabenbereich] . . .

DefInt Buchstabenbereich[,Buchstabenbereich] . . .

DefLng Buchstabenbereich[,Buchstabenbereich] . . .

DefCur Buchstabenbereich[,Buchstabenbereich] . . .

DefSng Buchstabenbereich[,Buchstabenbereich] . . .

DefDbl Buchstabenbereich[,Buchstabenbereich] . . .

DefDec Buchstabenbereich[,Buchstabenbereich] . . .

DefDate Buchstabenbereich[,Buchstabenbereich] . . .

DefStr Buchstabenbereich[,Buchstabenbereich] . . .

DefObj Buchstabenbereich[,Buchstabenbereich] . . .

DefVar Buchstabenbereich[,Buchstabenbereich] . . .

Das erforderliche Argument Buchstabenbereich hat die folgende Syntax:

Buchstabe1[-Buchstabe2]

Die Argumente Buchstabe1 und Buchstabe2 legen den Namensbereich fest, für den ein Standard-Datentyp festgelegt werden kann. Jedes Argument gibt den ersten Buchstaben des Namens einer Variablen, eines Arguments, einer Function- oder einer Property Get-Prozedur an, wobei alle Buchstaben des Alphabets zulässig sind. In Buchstabenbereich wird nicht zwischen Groß- und Kleinbuchstaben unterschieden.

Bemerkungen

Der Name der Anweisung legt den Datentyp fest:

Anweisung	Datentyp
DefBool	Boolean
DefByte	Byte
DefInt	Integer
DefLng	Long
DefCur	Currency
DefSng	Single
DefDbl	Double
DefDec	Decimal (zur Zeit nicht unterstützt)
DefDate	Date
DefStr	String
DefObj	Object
DefVar	Variant
Im folgenden Code-Beispiel ist Meldung zum Beispiel eine Zeichenfolgenvariable:

DefStr A-Q

. . .

Meldung = "Stapelspeicher erschöpft."

Eine DefTyp-Anweisung wirkt nur innerhalb des umgebenden Moduls. Eine DefInt-Anweisung in einem Modul hat beispielsweise nur Auswirkungen auf den Standard-Datentyp von Variablen, auf Argumente, die an Prozeduren übergeben werden, sowie auf den Rückgabetyp der Function- und Property Get-Prozeduren, die in diesem Modul deklariert wurden. Der Standard-Datentyp von Variablen, Argumenten und Rückgabetypen in anderen Modulen ändert sich nicht. Alle Variablen, Argumente, Function- und Property Get-Prozeduren, die nicht explizit mit einer DefTyp-Anweisung deklariert werden, erhalten als Voreinstellung den Datentyp Variant.

Wenn Sie einen Buchstabenbereich angeben, legen Sie damit normalerweise den Datentyp für alle Variablennamen fest, die mit einem Buchstaben aus den ersten 128 Zeichen des Zeichensatzes beginnen. Wenn Sie allerdings den Buchstabenbereich A-Z angeben, legen Sie dadurch den Standard-Datentyp für alle Variablen fest, auch für Variablen, die mit einem internationalen Zeichen aus dem erweiterten Teil des Zeichensatzes (128-255) beginnen.

Nachdem Sie den Bereich A-Z angegeben haben, können Sie bestimmte Unterbereiche von Variablen nicht mehr mit DefTyp-Anweisungen umdefinieren. Wenn ein Bereich einmal definiert worden ist und Sie einen bereits festgelegten Buchstaben in einer anderen DefTyp-Anweisung verwenden, tritt ein Fehler auf. Sie können aber nach wie vor den Datentyp einer bestimmten Variablen, ob mit DefTyp definiert oder nicht, explizit über eine Dim-Anweisung in Kombination mit einem As type-Abschnitt festlegen. Sie können zum Beispiel den folgenden Code auf Modulebene verwenden, um eine Variable mit dem Standard-Datentyp Integer als Double zu definieren:

DefInt A-Z

Dim SteuerQuote As Double

DefTyp-Anweisungen wirken sich nicht auf Elemente benutzerdefinierter Datentypen aus, da diese explizit deklariert werden müssen.


Dim-Anweisung

Deklariert Variablen und reserviert Speicherplatz dafür.

Syntax

Dim [WithEvents] VarName[([Indizes])] [As [New] Typ] [, [WithEvents] VarName[([Indizes])] [As [New] Typ]] . . .

Die Syntax der Dim-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
WithEvents	Optional. Schlüsselwort, das angibt, daß VarName eine Objektvariable zur Reaktion auf Ereignisse ist, die von einem ActiveX-Objekt ausgelöst wurden. Nur in Klassenmodulen gültig. Sie können mit WithEvents beliebig viele Variablen deklarieren, jedoch keine Datenfelder erstellen. Sie können New nicht zusammen mit WithEvents verwenden.
VarName	Erforderlich. Name der Variablen entsprechend den Standardkonventionen für Namen von Variablen.
Indizes	Optional. Dimensionen einer Datenfeldvariablen. Bis zu 60 Dimensionen sind zulässig. Das Argument Indizes hat die folgende Syntax:
	[Untergrenze To] Obergrenze [, [Untergrenze To] Obergrenze] . . .
	Wenn nicht explizit in Untergrenze angegeben, wird die untere Grenze eines Datenfeldes durch die Option Base-Anweisung festgelegt. Die untere Grenze ist Null, wenn keine Option Base-Anweisung vorhanden ist.
New	Optional. Dieses Schlüsselwort ermöglicht das implizite Erstellen eines Objekts. Wenn Sie New bei der Deklaration der Objektvariablen verwenden, wird eine neue Instanz des Objekts aufgrund des ersten Verweis darauf erstellt, so daß Sie die Set-Anweisung für die Zuweisung des Objektverweises nicht verwenden müssen. Das Schlüsselwort New kann nicht zur Deklaration von Variablen eines integrierten Datentyps oder zur Deklaration von Instanzen abhängiger Objekte verwendet werden. Es kann außerdem nicht mit WithEvents verwendet werden.
Typ	Optional. Datentyp der Variablen. Zulässige Typen sind: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (zur Zeit nicht unterstützt), Date, String (für Zeichenfolgen variabler Länge), String * Länge (für Zeichenfolgen fester Länge), Object, Variant, ein benutzerdefinierter Typ oder ein Objekttyp. Verwenden Sie für jede deklarierte Variable einen separaten As Typ-Abschnitt.
Bemerkungen

Variablen, die mit Dim auf Modulebene deklariert wurden, stehen allen Prozeduren innerhalb des Moduls zur Verfügung. Auf Prozedurebene deklarierte Variablen stehen nur innerhalb der umgebenden Prozedur zur Verfügung.

Verwenden Sie die Dim-Anweisung auf Modul- oder Prozedurebene, um den Datentyp einer Variablen zu deklarieren. Die folgende Anweisung deklariert beispielsweise eine Variable als Integer.

Dim AnzahlAngestellten As Integer

Verwenden Sie die Dim-Anweisung auch, um den Objekttyp einer Variablen zu deklarieren. Die folgende Anweisung deklariert eine Variable für eine neue Instanz einer Tabelle.

Dim X As New Worksheet

Wenn das Schlüsselwort New beim Deklarieren einer Objektvariable nicht verwendet wird, muß die Variable, die auf ein Objekt verweist, mit der Set-Anweisung einem existierenden Objekt zugewiesen werden, bevor sie verwendet werden kann. Solange ein Objekt zugewiesen ist, hat die deklarierte Objektvariable den Spezialwert Nothing, d.h., sie verweist auf keine bestimmte Instanz eines Objekts.

Sie können die Dim-Anweisung auch in Kombination mit einem leeren Klammernpaar zur Deklaration eines dynamischen Datenfelds verwenden. Nach einer solchen Deklaration können Sie mit der ReDim-Anweisung innerhalb einer Prozedur die Anzahl der Dimensionen und Elemente in dem Datenfeld definieren. Wenn Sie eine Dimension für eine Datenfeldvariable mit einer weiteren Deklaration ändern möchten, die Größe des Datenfeldes aber bereits explizit mit einer Private-, Public- oder Dim-Anweisung festgelegt wurde, tritt ein Fehler auf.

Wenn Sie keinen Daten- oder Objekttyp angeben und auch keine DefTyp-Anweisung im jeweiligen Modul verwendet wird, erhält die Variable durch die Voreinstellung den Datentyp Variant.

Bei der Initialisierung wird numerischen Variablen der Wert 0 und Zeichenfolgen variabler Länge eine Null-Zeichenfolge ("") zugewiesen; Zeichenfolgen fester Länge werden mit Nullen aufgefüllt und Variablen vom Typ Variant werden als Empty initialisiert. Alle Elemente einer Variablen eines benutzerdefinierten Typs werden genauso initialisiert wie eigenständige Variablen des entsprechenden Datentyps.

Anmerkung   Wenn Sie die Dim-Anweisung in einer Prozedur verwenden, wird in der Regel die Dim-Anweisung an den Anfang der Prozedur gesetzt.


Enum-Anweisung

Deklariert einen Typ für eine Aufzählung.

Syntax

[Public | Private] Enum Name

Elementname [= Konstantenausdruck]

Elementname [= Konstantenausdruck]

. . .

End Enum

Die Syntax der Enum-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Public	Optional. Legt fest, daß der Enum-Typ im gesamten Projekt sichtbar sein soll. Enum-Typen sind standardmäßig Public.
Private	Optional. Legt fest, daß der Enum-Typ nur innerhalb des Moduls sichtbar sein soll, in dem er angezeigt wird.
Name	Erforderlich. Der Name des Enum-Typs. Name muß ein zulässiger Visual Basic-Kennzeichner sein und wird beim Deklarieren von Variablen oder Parametern vom Enum-Typ als Typ angegeben.
Elementname	Erforderlich. Ein zulässiger Visual Basic-Kennzeichner, der den Namen angibt, der für ein konstituierendes Element des Enum-Typs verwendet werden soll.
Konstantenausdruck	Optional. Wert des Elements (ergibt eine Long). Wird Konstantenausdruck nicht angegeben, so wird entweder der Wert Null (falls es der erste Elementname ist) oder der Wert des unmittelbar vorangehenden Arguments Elementname plus 1 zugewiesen.
Anmerkungen

Aufzählvariablen sind Variablen, die mit einem Enum-Typ deklariert werden. Sowohl Variable als auch Parameter können mit einem Enum-Typ deklariert werden. Die Elemente des Enum-Typs werden in der Enum-Anweisung auf konstante Werte initialisiert. Die zugewiesenen Werte können zur Laufzeit nicht geändert werden. Sie können sowohl positive als auch negative Werte annehmen. Beispiel:

Enum SicherheitsLevel

IllegalerEintrag = -1

SicherheitsLevel1 = 0

SicherheitsLevel2 = 1

End Enum

Eine Enum-Anweisung kann nur auf Modulebene angegeben werden. Sobald der Enum-Typ definiert ist, kann er zur Deklaration von Variablen, Parametern oder Prozeduren, die diesen Typ zurückgeben, verwendet werden. Sie können den Namen eines Enum-Typs nicht mit einem Modulnamen qualifizieren. Public Enum-Typen in einem Klassenmodul sind keine Elemente der Klasse, können aber in die Klassenbibliothek geschrieben werden. Enum-Typen, die in Standardmodulendefiniert werden, werden nicht in Typenbibliotheken geschrieben. Public Enum-Typen desselben Namens können nicht sowohl in Standardmodulen als auch in Klassenmodulen verwendet werden, da diese denselben Namensraum gemeinsam haben. Wenn zwei Enum-Typen in unterschiedlichen Bibliotheken denselben Namen, aber unterschiedliche Elemente haben, hängt die Referenz auf eine Variable des Typs davon ab, welche Typenbibliothek in Verweise die höhere Priorität hat.

Sie können einen Enum-Typ nicht als Ziel in einem With-Block verwenden.


Erase-Anweisung

Initialisiert die Elemente eines Datenfelds fester Größe neu und gibt den Speicherbereich eines dynamischen Datenfelds frei.

Syntax

Erase Datenfeldliste

Das erforderliche Argument Datenfeldliste gibt eine oder mehrere durch Kommata getrennte Datenfeldvariable(n) an, die gelöscht werden sollen.

Anmerkungen

Erase verhält sich unterschiedlich, je nachdem, ob ein Datenfeld von fester Größe (Normalfall) oder dynamisch ist. Erase gibt bei Datenfeldern fester Größe keinen Speicher frei. Erase stellt die Elemente eines Datenfelds fester Größe folgendermaßen ein:

Typ des Datenfelds	Auswirkung von Erase auf Elemente von Datenfeldern fester Größe
Festes numerisches Datenfeld	Setzt jedes Element auf Null.
Festes Zeichenfolgendatenfeld (variabler Länge)	Setzt jedes Element auf eine Zeichenfolge der Länge Null ("").
Festes Zeichenfolgendatenfeld (fester Länge)	Setzt jedes Element auf Null.
Festes Variant	Datenfeld Setzt jedes Element auf Empty.
Datenfeld von benutzerdefinierten Typen	Stellt jedes Element so ein, als ob es eine separate Variable wäre.
Datenfeld von Objekten	Setzt jedes Element auf den Spezialwert Nothing.
Erase gibt den von dynamischen Datenfeldern belegten Speicher frei. Bevor Ihr Programm das Datenfeld erneut ansprechen kann, muß es die Dimensionen der Datenfeldvariablen in einer ReDim-Anweisung erneut deklarieren.


Event-Anweisung

Deklariert ein benutzerdefiniertes Ereignis.

Syntax

[Public] Event Prozedurname [(ArgListe)]

Die Syntax der Event-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Public	Optional. Legt fest, daß das Event im gesamten Projekt sichtbar sein soll. Event-Typen sind standardmäßig Public. Beachten Sie, daß Ereignisse nur in dem Modul hervorgerufen werden können, in dem sie deklariert wurden.
Prozedurname	Erforderlich. Name des Ereignisses; folgt den Standardkonventionen für Variablennamen.
Das Argument ArgListe verwendet die folgende Syntax und die folgenden Teile:

[ByVal | ByRef] VarName[( )] [As Typ]

Teil	Beschreibung
ByVal	Optional. Das Argument wird als Wert übergeben.
ByRef	Optional. Das Argument wird als Referenz übergeben. ByRef ist die Voreinstellung in Visual Basic.
VarName	Erforderlich. Name der Variablen, die das der Prozedur zu übergebende Argument darstellt; folgt den Standardkonventionen für Variablennamen.
Typ	Optional. Datentyp des Arguments, das der Prozedur übergeben wird. Zulässige Typen sind: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (not currently supported), Date, String (variable length only), Object, Variant, ein benutzerdefinierter Typ oder ein Objekttyp.
Anmerkungen

Sobald das Ereignis deklariert ist, können Sie es mit der RaiseEvent-Anweisung auslösen. Wenn eine Event-Deklaration in einem Standardmodul angezeigt wird, tritt ein Syntaxfehler auf. Ein Ereignis kann nicht mit einem Rückgabewert deklariert werden. Ein typisches Ereignis könnte deklariert und ausgelöst werden, wie in den folgenden Codefragmenten gezeigt wird:

' Deklarieren eines Ereignisses auf Modulebene in einem Klassenmodul

Event LogonFertig (UserName as String)

Sub

RaiseEvent LogonFertig("AntonJan")

End Sub

Hinweis   Sie können Argumente für Ereignisse genau so deklarieren wie Argumente von Prozeduren, mit folgenden Ausnahmen: Ereignisse können keine benannten Argumente und keine Argumente vom Typ Optional oder ParamArray haben. Ereignisse haben keine Rückgabewerte.


Function-Anweisung

Deklariert Name, Argumente und Code, die den Rumpf einer Function-Prozedur bilden.

Syntax

[Public | Private | Friend] [Static] Function Name [(ArgListe)] [As Typ]
[Anweisungen]
[Name = Ausdruck]
[Exit Function]
[Anweisungen]
[Name = Ausdruck]

End Function

Die Syntax der Function-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Public	Optional. Legt fest, daß die Function-Prozedur für alle anderen Prozeduren in allen Modulen zugänglich ist. Wird dieses Argument in einem Modul verwendet, das ein Option Private enthält, so ist die Prozedur außerhalb des Projekts nicht verfügbar.
Private	Optional. Legt fest, daß die Function-Prozedur nur für andere Prozeduren in dem Modul verfügbar ist, in dem sie deklariert wurde.
Friend	Optional. Wird nur in einem Klassenmodul verwendet. Legt fest, daß die Function-Prozedur im gesamten Projekt sichtbar ist, aber nicht für den Controller einer Instanz eines Objekts.
Static	Optional. Legt fest, daß die lokalen Variablen der Function-Prozedur zwischen den Aufrufen erhalten bleiben. Das Attribut Static hat keinen Einfluß auf Variablen, die außerhalb der Function deklariert wurden, auch wenn sie in der Prozedur verwendet werden.
Name	Erforderlich. Name der Function; folgt den Standardkonventionen für Variablennamen.
ArgListe	Optional. Liste der Variablen, die Argumente darstellen, die beim Aufruf an die Function-Prozedur übergeben werden. Mehrere Variablen werden durch Kommata getrennt.
Typ	Optional. Datentyp des von der Function-Prozedur zurückgegebenen Wertes. Zulässige Typen sind Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (derzeit nicht unterstützt), Date, String (ausgenommen feste Länge), Object, Variant und benutzerdefinierte Typen.
Anweisungen	Optional. Eine Gruppe von Anweisungen, die in der Function-Prozedur ausgeführt werden sollen.
Ausdruck	Optional. Rückgabewert der Function.
Das Argument ArgListe hat folgende Syntax und Bestandteile:

[Optional] [ByVal | ByRef] [ParamArray] VarName[( )] [As Typ] [= StandardWert]

Teil	Beschreibung
Optional	Optional. Legt fest, daß ein Argument nicht erforderlich ist. Wird dieses Argument verwendet, so müssen alle in ArgListe nachfolgenden Argumente ebenfalls optional sein und mit dem Schlüsselwort Optional deklariert werden. Optional kann nicht bei Argumenten verwendet werden, die mit ParamArray deklariert werden.
ByVal	Optional. Legt fest, daß das Argument als Wert übergeben wird.
ByRef	Optional. Legt fest, daß das Argument als Verweis übergeben wird. ByRef ist der Standardwert in Visual Basic.
ParamArray	Optional. Wird nur als letztes Argument in ArgListe verwendet, um festzulegen, daß das letzte Argument ein Optional-Datenfeld von Variant-Elementen ist. Mit dem Schlüsselwort ParamArray können Sie eine beliebige Anzahl von Argumenten angeben. Es darf nicht zusammen mit ByVal, ByRef oder Optional verwendet werden.
VarName	Erforderlich. Name der Variablen, die das Argument darstellt; folgt den Standardkonventionen für Variablennamen.
Typ	Optional. Datentyp des Arguments, das an die Prozedur übergeben wird. Zulässige Typen sind Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (derzeit nicht unterstützt) Date, String (nur variable Länge), Object, Variant oder ein spezifischer Objekttyp. Falls der Parameter nicht Optional ist, kann auch ein benutzerdefinierter Typ angegeben werden.
StandardWert	Optional. Eine Konstante oder ein Konstantenausdruck. Nur bei Optional-Parametern zulässig. Falls der Typ Object ist, kann der explizite Standardwert nur Nothing sein.
Anmerkungen

Function-Prozeduren sind standardmäßig öffentlich, wenn sie nicht explizit mit Public, Private oder Friend deklariert werden. Wird Static nicht angegeben, so bleiben die Werte lokaler Variabler zwischen den Aufrufen nicht erhalten. Das Schlüsselwort Friend kann nur in Klassenmodulen verwendet werden. Allerdings können Friend-Prozeduren von Prozeduren in jedem Modul eines Projekts aufgerufen werden. Eine Friend-Prozedur wird nicht in der Typenbibliothek ihrer übergeordneten Klasse angezeigt und kann nicht spät gebunden werden.

Vorsicht   Manche Function-Prozeduren sind rekursiv (d.h., sie rufen sich selbst auf, um eine bestimmte Operation durchzuführen). Rekursionen können jedoch Stapelüberläufe verursachen. Vermeiden Sie daher das Schlüsselwort Static in rekursiven Function-Prozeduren.

Der gesamte ausführbare Code muß sich in Prozeduren befinden. Innerhalb einer Function-, Sub- oder Property-Prozedur kann keine weitere Function-Prozedur definiert werden.

Die Exit Function-Anweisung führt zum unmittelbaren Verlassen einer Function-Prozedur. Die Programmausführung wird mit der Anweisung fortgesetzt, die auf die Anweisung folgt, welche die Function-Prozedur aufgerufen hat. Exit Function-Anweisungen können an beliebigen Stellen innerhalb einer Function-Prozedur verwendet werden.

Wie Sub-Prozeduren sind Function-Prozeduren eigenständig und können Argumente erhalten, eine Folge von Anweisungen ausführen und die Werte der übergebenen Argumente ändern. Im Gegensatz zu einer Sub-Prozedur kann eine Function-Prozedur auf der rechten Seite eines Ausdrucks verwendet werden. Dadurch besteht die Möglichkeit, den Rückgabewert der Function-Prozedur (wie den Rückgabewert einer integrierten Funktionen, also zum Beispiel Sqr, Cos oder Chr) weiterzuverarbeiten.

Der Aufruf einer Function-Prozedur innerhalb eines Ausdrucks erfolgt durch Angabe des Funktionsnamens gefolgt von der Argumentliste in Klammern. In der Beschreibung der Call-Anweisung finden Sie genauere Informationen zum Aufruf von Function-Prozeduren.

Sie geben einen Wert von einer Funktion zurück, indem Sie ihn dem Funktionsnamen zuweisen. Solche Zuweisungen sind beliebig oft an beliebigen Stellen innerhalb der Prozedur möglich. Wenn Name kein Wert zugewiesen wurde, gibt die Prozedur einen Standardwert zurück: eine numerische Funktion gibt 0 zurück, eine Zeichenfolgenfunktion eine Null-Zeichenfolge ("") und eine Funktion mit dem Typ Variant den Wert Empty. Eine Funktion, die einen Objektverweis zurückgibt, gibt den Wert Nothing zurück, wenn Name (unter Verwendung von Set) innerhalb der Function-Prozedur kein Objektverweis zugewiesen wurde.

Im folgenden Beispiel wird einer Funktion mit dem Namen BinäreSuche ein Rückgabewert zugewiesen. Der zugewiesene Wert ist in diesem Fall False, da ein bestimmter Wert nicht gefunden wurde.

Function BinäreSuche(. . .) As Boolean

. . .

' Wert nicht gefunden. Rückgabewert ist False.

If untGrnze > obrGrnze Then

BinäreSuche = False

Exit Function

End If

. . .

End Function

Variablen in Function-Prozeduren können entweder explizit innerhalb der Prozedur deklariert sein oder ohne Deklaration verwendet werden. Explizit (über Dim oder eine entsprechende Anweisung) in einer Prozedur deklarierte Variablen sind innerhalb dieser Prozedur immer lokal. Variablen, die in einer Prozedur verwendet, aber nicht dort deklariert werden, sind auch lokal, sofern sie nicht bereits explizit auf einer höheren Ebene außerhalb der Prozedur deklariert wurden.

Vorsicht   Eine Prozedur kann eine nicht explizit in der Prozedur deklarierte Variable zwar verwenden, aber es können Namenskonflikte auftreten, falls ein anderes Element, das auf Modulebene definiert wurde, denselben Namen hat. Verwendet Ihre Prozedur eine nicht deklarierte Variable mit einem Namen, der dem Namen einer anderen Prozedur, Konstanten oder Variablen entspricht, so wird die Variable als Referenz auf den Namen interpretiert, der auf Modulebene definiert wurde. Deklarieren Sie Variablen explizit, um derartige Konflikte zu vermeiden. Mit der Option Explicit-Anweisung können Sie die explizite Deklaration von Variablen erzwingen.

Vorsicht   Visual Basic kann arithmetische Ausdrücke aus Optimierungsgründen intern umstellen. Vermeiden Sie daher Aufrufe von Function-Prozeduren innerhalb eines arithmetischen Ausdrucks, wenn die Funktion den Wert von Variablen in diesem Ausdruck ändert.


GetObject-Funktion

Gibt einen Verweis auf ein ActiveX-Objekt aus einer Datei zurück.

Syntax

GetObject([pathname] [, class])

Die Syntax der GetObject-Funktion besteht aus diesen benannten Argumenten:

Teil	Beschreibung
pathname	Optional. Ein Wert vom Typ Variant (String). Der vollständige Pfad und Name der Datei, die das abzurufende Objekt enthält. Wird pathname nicht angegeben, so ist class erforderlich.
class	Optional. Ein Wert vom Typ Variant (String). Eine Zeichenfolge, die die Klasse des Objekts darstellt.
Das Argument class verwendet die Syntax AnwName.Objekttyp und die folgenden Teile:

Teil	Beschreibung
AnwName	Erforderlich. Ein Wert vom Typ Variant (String). Der Name der  Anwendung, die das Objekt bereitstellt.
Objekttyp	Erforderlich. Ein Wert vom Typ Variant (String). Der Typ oder die Klasse des zu erstellenden Objekts.
Bemerkungen

Verwenden Sie die GetObject-Funktion für den Zugriff auf ein ActiveX-Objekt aus einer Datei, und weisen Sie das Objekt einer Objektvariablen zu. Verwenden Sie die Set-Anweisung, um das von GetObject zurückgegebene Objekt der Objektvariablen zuzuweisen. Beispielsweise:

Dim CADObjekt As Object

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

Hinweis   Bei Macintosh ist der Standardname des Laufwerks „HD“ und die Bestandteile des Pfadnamens werden durch Doppelpunkt statt durch umgekehrte Schrägstriche getrennt. An Stelle von \Windows würden Sie entsprechende Macintosh-Ordner angeben.

Wenn dieser Code ausgeführt wird, wird die mit dem angegebenen pathname verbundene Anwendung gestartet, und das Objekt in der angegebenen Datei wird aktiviert.

Ist pathname eine Null-Zeichenfolge (""), so gibt GetObject eine neue Instanz des Objekts vom angegebenen Typ zurück. Wird das Argument pathname nicht angegeben, so gibt GetObject ein momentan aktives Objekt vom angegebenen Typ zurück. Existiert kein Objekt vom angegebenen Typ, tritt ein Fehler auf.

Einige Anwendungen erlauben es, einen Teil einer Datei zu aktivieren. Fügen Sie am Ende des Dateinamens ein Ausrufezeichen (!) hinzu, gefolgt von der Zeichenfolge, die den zu aktivierenden Teil der Datei angibt. Weitere Informationen über die Erstellung dieser Zeichenfolge finden Sie in der Dokumentation zu der Anwendung, die das Objekt erstellt hat.

In einer Grafikanwendung beispielsweise verfügen Sie über mehrere Schichten einer Zeichnung, die in einer Datei gespeichert sind. Sie können den folgenden Code zur Aktivierung einer Schicht innerhalb einer Zeichnung namens SCHEMA.CAD verwenden:

Set SchichtObjekt = GetObject("C:\CAD\SCHEMA.CAD!Layer3")

Wenn Sie das class-Argument des Objekts nicht angeben, bestimmt die Automatisierung, welche Anwendung gestartet werden soll, sowie das zu aktivierende Objekt, basierend auf dem bereitgestellten Dateinamen. Einige Dateien können jedoch mehr als eine Klasse eines Objekts unterstützen. Eine Zeichnung kann z.B. drei unterschiedliche Objekttypen unterstützen: Ein Application-Objekt, ein Drawing-Objekt und ein Toolbar-Objekt, wobei alle drei Teil der gleichen Datei sind. Verwenden Sie das optionale Argument class, um festzulegen, welches Objekt in der Datei Sie aktivieren wollen. Beispiel:

Dim MeinObjekt As Object

Set MeinObjekt = GetObject("C:\DRAWINGS\BEISPIEL.DRW", "FIGMENT.DRAWING")

Im obigen Beispiel ist FIGMENT der Name einer Grafikanwendung und DRAWING einer der unterstützten Objekttypen.

Wurde ein Objekt aktiviert, so verweisen Sie im Code mit Hilfe der definierten Objektvariablen darauf. Im folgenden Beispiel greifen Sie auf Eigenschaften und Methoden des neuen Objekts über die Objektvariable MeinObjekt zu. Beispiel:

MeinObjekt.Line 9, 90

MeinObjekt.InsertText 9, 100, "Hallo !"

MeinObjekt.SaveAs "C:\ENTWURF\BEISPIEL.DRW"

Anmerkung   Verwenden Sie die GetObject-Funktion, wenn eine aktuelle Instanz des Objekts existiert oder wenn Sie das Objekt mit einer bereits geladenen Datei erstellen wollen. Wenn keine aktuelle Instanz existiert und Sie das Objekt nicht mit einer geladenen Datei starten wollen, verwenden Sie die CreateObject-Funktion.

Wenn ein Objekt sich selbst als ein Objekt mit nur einer Instanz registriert hat, wird nur eine Instanz des Objekts erstellt, ungeachtet dessen, wie oft CreateObject ausgeführt wird. Bei einem Objekt mit nur einer Instanz gibt GetObject bei einem Aufruf mit einer Null-Zeichenfolge ("") immer die gleiche Instanz zurück. Ein Fehler tritt auf, wenn das Argument pathname nicht angegeben wird. Sie können GetObject nicht verwenden, um einen Verweis auf eine mit Visual Basic erstellte Klasse zu erhalten.


Implements-Anweisung

Gibt eine Schnittstelle oder eine Klasse an, die in dem Klassenmodul implementiert wird, in dem diese Anweisung angezeigt wird.

Syntax

Implements [SchnistellenName | Klasse]

Das erforderliche Argument SchnittstellenName bzw. Klasse ist der Name einer Schnittstelle bzw. Klasse in einer Typenbibliothek, deren Methoden durch entsprechende Methoden in der Visual Basic-Klasse implementiert werden.

Anmerkungen

Eine Schnittstelle ist eine Auflistung von Prototypen, welche die Elemente (Methoden und Eigenschaften) darstellen, die in der Schnittstelle gekapselt werden. Das bedeutet, daß eine Schnittstelle nur die Deklarationen für die Elementprozeduren enthält. Eine Klasse stellt eine Implementierung aller Methoden und Eigenschaften einer oder mehrerer Schnittstellen bereit. Klassen stellen den Code zur Verfügung, der verwendet wird, wenn ein Controller der Klasse eine Funktion aufruft. Jede Klasse implementiert mindestens eine Schnittstelle, die als Standardschnittstelle der Klasse betrachtet wird. In Visual Basic ist jedes Element, das nicht explizit Mitglied einer implementierten Schnittstelle ist, implizit Mitglied der Standardschnittstelle.

Wenn eine Visual Basic-Klasse eine Schnittstelle implementiert, stellt diese alle in der Typenbibliothek der Schnittstelle angegebenen Public-Prozeduren in einer eigenen Version zur Verfügung. Neben der Bereitstellung einer Abbildung zwischen den Schnittstellenprototypen und Ihren Prozeduren sorgt die Implements-Anweisung dafür, daß die Klasse COM-QueryInterface-Aufrufe für die angegebene Schnittstellen-ID akzeptiert.

Hinweis   Visual Basic implementiert keine abgeleiteten Klassen oder Schnittstellen.

Wenn Sie eine Schnittstelle bzw. Klasse implementieren, müssen Sie alle beteiligten Public-Prozeduren aufnehmen. Ein fehlendes Element in der Implementierung einer Schnittstelle bzw. einer Klasse verursacht einen Fehler. Wenn Sie in einer Klasse, die Sie implementieren, für eine der Prozeduren keinen Code schreiben, können Sie den passenden Fehler (Const E_NOTIMPL = &H80004001) auslösen, damit der Benutzer der Implementierung versteht, daß ein Element nicht implementiert ist.

Die Implements-Anweisung kann in einem Standardmodul nicht verwendet werden.


LBound-Funktion

Gibt einen Wert vom Typ Long zurück, der den kleinsten verfügbaren Index für die angegebene Dimension eines Datenfeldes enthält.

Syntax

LBound(Datenfeldname[, Dimension])

Die Syntax der LBound-Funktion besteht aus folgenden Teilen:

Teil	Beschreibung
Datenfeldname	Erforderlich. Name der Datenfeldvariablen entsprechend den Standardkonventionen für Namen von Variablen.
Dimension	Optional. Ein Wert vom Typ Variant (Long). Ganze Zahl, die angibt, für welche Dimension die untere Grenze zurückgegeben werden soll. Verwenden Sie für die erste Dimension den Wert 1, für die zweite Dimension 2 usw. Wird Dimension nicht angegeben, so wird 1 angenommen.
Bemerkungen

Die LBound-Funktion kann in Kombination mit der UBound-Funktion verwendet werden, um die Größe eines Datenfeldes zu bestimmen. UBound liefert die Obergrenze einer Datenfeld-Dimension.

LBound gibt für ein Datenfeld mit den folgenden Dimensionen die in der anschließenden Tabelle aufgeführten Werte zurück:

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

Anweisung	Rückgabewert
Lbound(A, 1)	1
Lbound(A, 2)	0
Lbound(A, 3)	-3
Die vorgegebene untere Grenze für alle Dimensionen ist entweder 0 oder 1, je nach Einstellung der Option Base-Anweisung. Die Basis eines mit der Array-Funktion erstellten Datenfeldes ist Null, und sie wird durch die Option Base-Anweisung nicht beeinflußt.

Für Datenfelder, deren Dimensionen mit dem To-Abschnitt in einer der Anweisungen Dim, Private, Public, ReDim oder Static festgelegt werden, sind alle ganzzahligen Werte als untere Grenze zulässig.


LetAnweisung

Weist einer Variablen oder Eigenschaft den Wert eines Ausdrucks zu.

Syntax

[Let] VarName = Ausdruck

Die Syntax der Let-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Let	Optional. Die explizite Verwendung des Let-Schlüsselwortes ist eine Frage des Stils, wird jedoch gewöhnlich weggelassen.
VarName	Erforderlich. Name der Variablen oder Eigenschaft entsprechend den Standardkonventionen für Namen von Variablen.
Ausdruck	Erforderlich. Wert, der einer Variablen oder Eigenschaft zugewiesen wurde.
Bemerkungen

Ein Wertausdruck kann einer Variablen oder Eigenschaft nur zugewiesen werden, wenn der Datentyp des Ausdrucks mit dem Datentyp der Variablen oder Eigenschaft kompatibel ist. Numerischen Variablen können keine Zeichenfolgenausdrücke zugewiesen werden, und Zeichenfolgenvariablen können keine numerischen Ausdrücke zugewiesen werden. Zuweisungen dieser Art verursachen einen Fehler zur Kompilierungszeit.

Variablen vom Typ Variant können sowohl Zeichenfolgenausdrücke als auch numerische Ausdrücke zugewiesen werden. Die Umkehrung funktioniert jedoch nicht immer. Einer Zeichenfolgenvariablen kann jeder Variant-Wert (außer Null) zugewiesen werden, aber nur Variant-Werte, die als Zahl interpretiert werden können, können einer numerischen Variablen zugewiesen werden. Mit der IsNumeric-Funktion können Sie feststellen, ob der Variant-Wert in eine Zahl umgewandelt werden kann.

Vorsicht   Beim Zuweisen eines Ausdrucks eines numerischen Datentyps an eine Variable eines anderen numerischen Datentyps, wird der Wert des Ausdrucks in den Datentyp der Zielvariablen umgewandelt.

Mit Let-Anweisungen können Sie eine Datensatzvariable nur dann einer anderen Datensatzvariablen zuweisen, wenn beide Variablen denselben benutzerdefinierten Datentyp haben. Mit der LSet-Anweisung können Sie Datensatzvariablen verschiedener benutzerdefinierter Datentypen zuweisen. Mit der Set-Anweisung können Sie Variablen Objektverweise zuweisen.


Option Base-Anweisung

Wird auf Modulebene verwendet, um die voreingestellte Untergrenze für Indizes von Datenfeldern zu deklarieren.

Syntax

Option Base {0 | 1}

Bemerkungen

Da die Indizes standardmäßig mit 0 beginnen, wird die Option Base-Anweisung niemals wirklich benötigt. Wenn sie dennoch verwendet wird, muß die Anweisung in einem Modul vor allen Prozeduren auftreten. Option Base kann nur einmal pro Modul auftreten und muß vor allen Deklarationen von Datenfeldern stehen, die Dimensionen enthalten.

Anmerkung   Mit dem To-Abschnitt in den Anweisungen Dim, Private Public, ReDim oder Static können Sie den Bereich von Datenfeldindizes flexibler steuern. Wenn Sie jedoch die untere Grenze nicht explizit mit einem To-Abschnitt festlegen, können Sie die Standarduntergrenze mit Option Base auf 1 ändern. Die Basis eines mit der Array-Funktion oder dem Schlüsselwort ParamArray erstellten Datenfeldes ist Null; Option Base hat keinen Einfluß auf Array oder ParamArray.

Die Option Base-Anweisung wirkt sich nur auf die Untergrenze von Datenfeldern aus, die sich in dem Modul befinden, das die Anweisung umgibt.


Option Compare-Anweisung

Wird auf Modulebene verwendet, um das Standardverfahren für den Vergleich von Zeichenfolgen festzulegen.

Syntax

Option Compare {Binary | Text| Database}

Bemerkungen

Wird die Option Compare-Anweisung verwendet, muß sie im jeweiligen Modul vor jeder Prozedur stehen.

Die Option Compare-Anweisung legt das Verfahren für den Zeichenfolgenvergleich (Binary, Text oder Database) innerhalb eines Moduls fest. Enthält ein Modul keine Option Compare-Anweisung, so ist Binary das verwendete Standardverfahren.

Bei Option Compare Binary basieren die Ergebnisse eines Zeichenfolgenvergleichs auf der Sortierreihenfolge, die durch die interne binäre Darstellung der Zeichen festgelegt ist. Die Sortierreihenfolge wird unter Microsoft Windows durch die Code-Seite festgelegt. Das folgende Beispiel zeigt eine typische binäre Sortierreihenfolge:

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

Option Compare Text führt zu Zeichenfolgenvergleichen, bei denen die im Gebietsschema des Systems festgelegte Sortierreihenfolge für Zeichen verwendet wird (ohne Unterschiede in der Groß- oder Kleinschreibung zu berücksichtigen). Die oben dargestellten Zeichen würden beim Sortieren mit Option Compare Text folgende Reihenfolge erhalten:

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

Die Option Compare Database-Anweisung kann nur in Microsoft Access verwendet werden. Mit ihr können Zeichenfolgenvergleiche basierend auf der Sortierreihenfolge durchgeführt werden, die durch die Gebiets-ID der Datenbank bestimmt wird, in der die Zeichenfolgenvergleiche durchgeführt werden.

Auf dem Macintosh wird die Sortierreihenfolge durch den Zeichensatz bestimmt.


Option Explicit-Anweisung

Wird auf Modulebene verwendet, um die explizite Deklaration aller Variablen in diesem Modul zu erzwingen.

Syntax

Option Explicit

Bemerkungen

Wird die Option Explicit-Anweisung verwendet, so muß sie im jeweiligen Modul vor jeder Prozedur stehen.

Wenn Sie die Option Explicit-Anweisung in einem Modul verwenden, müssen alle Variablen explizit mit den Anweisungen Dim, Private, Public, ReDim oder Static deklariert werden. Wenn Sie einen nicht deklarierten Variablennamen verwenden, tritt zur Kompilierungszeit ein Fehler auf.

Wenn Sie die Option Explicit-Anweisung nicht verwenden, erhalten alle nichtdeklarierten Variablen den Typ Variant, solange mit einer DefTyp-Anweisung kein anderer Standardtyp festgelegt wird.

Anmerkung   Mit Option Explicit vermeiden Sie falsch geschriebene Namen bereits bestehender Variablen oder Verwechslungen im Code bei unklarem Gültigkeitsbereich von Variablen.


Option Private-Anweisung

In Host-Anwendungen, die Verweise über mehrere Projekte ermöglichen, läßt die Option Private Module-Anweisung Verweise auf die Inhalte eines Moduls nicht außerhalb seines Projekts zu. In Host-Anwendungen, die solche Verweise nicht zulassen, wie beispielsweise einer eigenständigen Version von Visual Basic, hat Option Private keine Auswirkung.

Syntax

Option Private Module

Bemerkungen

Wird die Option Private-Anweisung verwendet, so muß sie auf Modulebene vor jeder Prozedur stehen.

Die öffentlichen Elemente (z.B. Variablen, Objekte und auf Modulebene deklarierte benutzerdefinierte Typen) von Modulen, die mit der Option Private Module-Anweisung als privat deklariert wurden, stehen immer noch innerhalb des Projekts für das Modul zur Verfügung, aber nicht für andere Anwendungen oder Projekte.

Anmerkung   Option Private ist nur für Host-Anwendungen sinnvoll, die das gleichzeitige Laden mehrerer Projekte unterstützen und Verweise zwischen den geladenen Projekten zulassen. Microsoft Excel unterstützt beispielsweise das Laden mehrerer Projekte, und Option Private Module kann zur Beschränkung des Zugriffsbereiches zwischen den Projekten verwendet werden. Obwohl Visual Basic das Laden mehrerer Projekte zuläßt, können Verweise zwischen den Projekten nicht durchgeführt werden.


Private-Anweisung

Wird auf Modulebene verwendet, um private Variablen zu deklarieren und den dafür erforderlichen Speicher zu reservieren.

Syntax

Private [WithEvents] VarName[([Indizes])] [As [New] Typ] [,[WithEvents] VarName[([Indizes])] [As [New] Typ]] . . .

Die Syntax der Private-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
WithEvents	Optional. Schlüsselwort, das angibt, daß VarName eine Objektvariable ist, die verwendet wird, um auf Ereignisse zu reagieren, die von einem ActiveX-Objekt ausgelöst wurden. Nur gültig in Klassenmodulen. Sie können mit WithEvents beliebig viele Variablen deklarieren, jedoch keine Datenfelder erstellen. Sie können New nicht zusammen mit WithEvents verwenden.
VarName	Erforderlich. Name der Variablen gemäß den Standardkonventionen für Namen von Variablen.
Indizes	Optional. Dimensionen einer Datenfeldvariablen. Bis zu 60 Dimensionen sind zulässig. Das Argument Indizes hat die folgende Syntax:
	[Untergrenze To] Obergrenze [,[Untergrenze To] Obergrenze] . . .
	Wenn nicht explizit in Untergrenze angegeben, wird die Untergrenze eines Datenfeldes durch die Option Base-Anweisung gesteuert. Die Untergrenze ist Null, wenn keine Option Base-Anweisung vorhanden ist.
New	Optional. Dieses Schlüsselwort ermöglicht das implizite Erstellen eines Objekts. Wenn Sie New bei der Deklaration der Objektvariable verwenden, wird eine neue Instanz des Objekts aufgrund des ersten Verweises erstellt, so daß Sie die Set-Anweisung für die Zuweisung des Objektverweises nicht verwenden müssen. Das Schlüsselwort New kann nicht zur Deklaration von Variablen eines integrierten Datentyps oder zur Deklaration von Instanzen abhängiger Objekte verwendet werden. Es kann ebenfalls nicht mit WithEvents verwendet werden.
Typ	Optional. Datentyp der Variablen. Zulässige Typen sind: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (zur Zeit nicht unterstützt), Date, String (für Zeichenfolgen variabler Länge), String * Länge (für Zeichenfolgen fester Länge), Object, Variant, ein benutzerdefinierter Typ oder ein Objekttyp. Verwenden Sie für jede deklarierte Variable einen separaten As Typ-Abschnitt.
Bemerkungen

Variablen vom Typ Private stehen nur in dem Modul zur Verfügung, in dem sie deklariert wurden.

Mit der Private-Anweisung deklarieren Sie den Datentyp einer Variablen. Die folgende Anweisung deklariert beispielsweise eine Variable als Integer:

Private AnzahlAngestellte As Integer

Verwenden Sie eine Private-Anweisung auch, um den Objekttyp einer Variablen zu deklarieren. Die folgende Anweisung deklariert eine Variable für eine neue Instanz einer Tabelle.

Private X As New Worksheet

Wenn das Schlüsselwort New nicht bei der Deklaration einer Objektvariablen verwendet wird, muß der Variablen, die auf ein Objekt verweist, mit der Set-Anweisung ein existierendes Objekt zugewiesen werden, bevor sie verwendet werden kann. Eine deklarierte Objektvariable hat vor dem Zuweisen eines Objekts den Spezialwert Nothing, der anzeigt, daß die Variable auf keine bestimmte Instanz eines Objekts verweist.

Wenn Sie keinen Datentyp oder Objekttyp angeben und auch keine DefTyp-Anweisung im jeweiligen Modul verwendet wird, erhält die Variable standardmäßig den Typ Variant.

Die Private-Anweisung in Kombination mit einem leeren Klammernpaar dient zur Deklaration eines dynamischen Datenfeldes. Nach einer solchen Deklaration können Sie mit der ReDim-Anweisung innerhalb einer Prozedur die Anzahl der Dimensionen und Elemente in dem Datenfeld definieren. Wenn Sie eine Dimension für eine Datenfeldvariable mit einer weiteren Deklaration ändern möchten und die Größe des Datenfeldes bereits explizit mit einer Private-, Public- oder Dim-Anweisung festgelegt wurde, tritt ein Fehler auf.

Bei der Initialisierung wird numerischen Variablen der Wert 0 und Zeichenfolgen variabler Länge eine Null-Zeichenfolge ("") zugewiesen. Zeichenfolgen fester Länge werden mit Nullen und Variablen vom Typ Variant mit dem Wert Empty initialisiert. Alle Elemente einer Variablen eines benutzerdefinierten Typs werden genauso initialisiert wie eigenständige Variablen des entsprechenden Datentyps.

Anmerkung   Wenn Sie die Private-Anweisung in einer Prozedur verwenden, wird in der Regel die Private-Anweisung an den Anfang der Prozedur gestellt.


Property Get-Anweisung

Deklariert den Namen, die Argumente und den Code für den Rumpf einer Property-Prozedur, der der Wert einer Eigenschaft übergeben wird.

Syntax

[Public | Private] [Static] Property Get Name [(ArgListe)] [As Typ]
[Anweisungen]
[Name = Ausdruck]
[Exit Property]
[Anweisungen]
[Name = Ausdruck]

End Property

Die Syntax der Property Get-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Public	Optional. Auf die Property Get-Prozedur kann von allen anderen Prozeduren in allen Modulen zugegriffen werden. Bei Verwendung in einem Modul (mit einer Option Private-Anweisung) kann auf die Prozedur nur innerhalb des Projekts zugegriffen werden.
Private	Optional. Auf die Property Get-Prozedur kann nur durch andere Prozeduren aus dem Modul zugegriffen werden, in dem sie deklariert wurde.
Static	Optional. Die lokalen Variablen der Property Get-Prozedur bleiben zwischen Aufrufen erhalten. Das Attribut Static wirkt sich nicht auf Variablen aus, die außerhalb der Property Get-Prozedur deklariert wurden, auch wenn sie in der Prozedur verwendet werden.
Name	Erforderlich. Name der Property Get-Prozedur gemäß den Standardkonventionen für Namen von Variablen, mit der Ausnahme, daß der Name mit dem Namen der Property Let- oder Property Set-Prozedur in demselben Modul übereinstimmen kann.
ArgListe	Optional. Variablenliste mit den Argumenten, die an die Property Get-Prozedur beim Aufruf übergeben werden. Mehrere Argumente werden durch Kommas getrennt. Der Name und der Datentyp aller Argumente in einer Property Get-Prozedur müssen mit dem Namen und Datentyp des entsprechenden Arguments in einer Property Let-Prozedur übereinstimmen (sofern eine solche existiert).
Typ	Optional. Datentyp des Werts, der von der Property Get-Prozedur zurückgegeben wird. Zulässige Typen sind: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (zur Zeit nicht unterstützt), Date, String (außer Zeichenfolgen fester Länge), Object, Variant, ein benutzerdefinierter Typ und Datenfelder. Der Typ des Rückgabewerts einer Property Get-Prozedur muß mit dem Datentyp übereinstimmen, den das letzte (oder ggf. einzige) Argument der entsprechenden Property Let-Prozedur hat (sofern eine solche existiert), die den Wert definiert, der der Eigenschaft auf der rechten Seite eines Ausdrucks zugewiesen wird.
Anweisungen	Optional. Eine beliebige Gruppe auszuführender Anweisungen im Rumpf der Property Get-Prozedur.
Ausdruck	Optional. Wert der Eigenschaft, die von der Prozedur zurückgegeben wird, die durch die Property Get-Anweisung definierten wurde.
Das Argument ArgListe verwendet die folgende Syntax und die folgenden Teile:

[Optional] [ByVal | ByRef] VarName[( )] [As Typ] [= Standardwert]

Teil	Beschreibung
Optional	Optional. Ein Argument ist nicht erforderlich. Alle im Anschluß an Optional in ArgListe angegebenen Argumente müssen ebenfalls optional sein und mit dem Schlüsselwort Optional deklariert werden.
ByVal	Optional. Das Argument wird als Wert übergeben.
ByRef	Optional. Das Argument wird als Referenz übergeben. ByRef ist die Voreinstellung in Visual Basic.
ParamArray	Optional. Wird nur als letztes Argument in ArgListe verwendet, um anzuzeigen, daß das letzte Argument ein Optional-Datenfeld mit Variant-Elementen ist. Das Schlüsselwort ParamArray ermöglicht Ihnen, eine beliebige Anzahl von Argumenten bereitzustellen. ParamArray darf nicht zusammen mit ByVal, ByRef oder Optional verwendet werden.
VarName	Erforderlich. Name der Variablen, die das Argument darstellt, gemäß den Standardkonventionen für Namen von Variablen.
Typ	Optional. Datentyp des an die Prozedur zu übergebenden Arguments. Zulässige Typen sind: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (zur Zeit nicht unterstützt), Date, String (nur Zeichenfolgen variabler Länge), Object, Variant. Entspricht der Parameter nicht Optional, kann auch ein benutzerdefinierter Typ oder ein Objekttyp angegeben werden.
Standardwert	Optional. Eine beliebige Konstante oder ein Konstantenausdruck. Nur gültig, wenn der Parameter Optional entspricht. Ist der Typ Object, so kann der explizite Standardwert nur Nothing sein.
Bemerkungen

Property-Prozeduren sind standardmäßig öffentlich, wenn sie nicht explizit mit Public oder Private festgelegt werden. Wird Static nicht angegeben, so bleiben die Werte lokaler Variablen zwischen Aufrufen nicht erhalten.

Der gesamte ausführbare Code muß sich in Prozeduren befinden. Innerhalb einer Property, Sub- oder Function-Prozedur kann keine Property Get-Prozedur definiert werden.

Das Schlüsselwort Exit Property führt zum unmittelbaren Verlassen einer Property Get-Prozedur. Die Programmausführung wird mit der Anweisung fortgesetzt, die auf die Anweisung folgt, die die Property Get-Prozedur aufgerufen hat. Exit Property-Anweisungen können beliebig oft an beliebigen Stellen innerhalb einer Property Get-Prozedur verwendet werden.

Wie bei der Sub- und Property Let-Prozedur handelt es sich bei der Property Get-Prozedur um eine eigenständige Prozedur, die Argumente erhalten, eine Reihe von Anweisungen ausführen und die Werte der übergebenen Argumente ändern kann. Im Gegensatz zu einer Sub- oder Property Let-Prozedur kann eine Property Get-Prozedur auf der rechten Seite eines Ausdrucks verwendet werden (wie eine Function-Prozedur oder der Name einer Eigenschaft, wenn deren Wert zurückgegeben werden soll).


Property Let-Anweisung

Deklariert den Namen, die Argumente und den Code für den Rumpf einer Property Let-Prozedur, die einer Eigenschaft einen Wert zuweist.

Syntax

[Public | Private] [Static] Property Let Name ([ArgListe,] Wert)
[Anweisungen]
[Exit Property]
[Anweisungen]

End Property

Die Syntax der Property Let-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Public	Optional. Auf die Property Let-Prozedur kann von allen anderen Prozeduren in allen Modulen zugegriffen werden. Bei Verwendung in einem Modul (mit einer Option Private-Anweisung) kann auf die Prozedur nur innerhalb des Projekts zugegriffen werden.
Private	Optional. Auf die Property Let-Prozedur kann nur durch andere Prozeduren in dem Modul zugegriffen werden, in dem sie deklariert wurde.
Static	Optional. Die lokalen Variablen der Property Let-Prozedur bleiben zwischen Aufrufen erhalten. Das Attribut Static wirkt sich nicht auf Variablen aus, die außerhalb der Property Let-Prozedur deklariert wurden, auch wenn sie in der Prozedur verwendet werden.
Name	Erforderlich. Name der Property Let-Prozedur gemäß den Standardkonventionen für Namen von Variablen, mit der Ausnahme, daß der Name mit dem Namen einer Property Get- oder Property Set-Prozedur in demselben Modul übereinstimmen kann.
ArgListe	Erforderlich. Variablenliste mit den Argumenten, die an die Property Let-Prozedur beim Aufruf übergeben werden. Mehrere Argumente werden durch Kommas voneinander getrennt. Name und Datentyp aller Argumente einer Property Let-Prozedur (außer dem letzten Argument) müssen mit Name und Datentyp der entsprechenden Argumente in einer Property Get-Prozedur übereinstimmen.
Wert	Erforderlich. Variable, die den Wert enthält, der der Eigenschaft zugewiesen werden soll. Wenn die Prozedur aufgerufen wird, wird dieses Argument auf der rechten Seite des aufrufenden Ausdrucks angezeigt. Der Datentyp von Wert muß mit dem Rückgabetyp der entsprechenden Property Get-Prozedur übereinstimmen.
Anweisungen	Optional. Eine beliebige Gruppe auszuführender Anweisungen im Rumpf der Property Let-Prozedur.
Das Argument ArgListe verwendet die folgende Syntax und die folgenden Teile:

[Optional] [ByVal | ByRef] [ParamArray] VarName[( )] [As Typ] [= Standardwert]

Teil	Beschreibung
Optional	Optional. Ein Argument ist nicht erforderlich. Alle im Anschluß an Optional in ArgListe angegebenen Argumente müssen ebenfalls optional sein und mit dem Schlüsselwort Optional deklariert sein. Beachten Sie, daß der rechte Teil eines Property Let-Ausdrucks nicht Optional sein kann.
ByVal	Optional. Das Argument wird als Wert übergeben.
ByRef	Optional. Das Argument wird als Referenz übergeben. ByRef ist die Voreinstellung in Visual Basic.
ParamArray	Optional. Wird nur als letztes Argument in ArgListe verwendet, um anzuzeigen, daß das letzte Argument ein Optional-Datenfeld mit Variant-Elementen ist. Das Schlüsselwort ParamArray ermöglicht Ihnen, eine beliebige Anzahl von Argumenten bereitzustellen. ParamArray darf nicht zusammen mit ByVal, ByRef oder Optional verwendet werden.
VarName	Erforderlich. Name der Variablen, die das Argument darstellt, gemäß den Standardkonventionen für Namen von Variablen.
Typ	Optional. Datentyp des an die Prozedur zu übergebenden Arguments. Zulässige Typen sind: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (zur Zeit nicht unterstützt), Date, String (nur Zeichenfolgen variabler Länge), Object, Variant. Ist der Parameter nicht Optional, kann auch ein benutzerdefinierter Typ oder ein Objekttyp angegeben werden.
Standardwert	Optional. Eine beliebige Konstante oder ein Konstantenausdruck. Nur gültig, wenn der Parameter Optional entspricht. Ist der Typ Object, so kann der explizite Standardwert nur Nothing sein.
Anmerkung   Jede Property Let-Anweisung muß mindestens ein Argument für die definierte Prozedur angeben. Dieses Argument (bzw. das letzte Argument in einer Liste von Argumenten) enthält dann den Wert, der der Eigenschaft tatsächlich zugewiesen wird, wenn die durch Property Let definierte Prozedur aufgerufen wird. In der weiter oben beschriebenen Syntax wird dieses Argument mit Wert bezeichnet.

Bemerkungen

Property-Prozeduren sind standardmäßig öffentlich, wenn sie nicht explizit mit Public oder Private festgelegt werden. Wird Static nicht angegeben, so bleiben die Werte lokaler Variablen zwischen den Aufrufen nicht erhalten.

Der gesamte ausführbare Code muß sich in Prozeduren befinden. Innerhalb einer Property-, Sub- oder Function-Prozedur kann keine Property Let-Prozedur definiert werden.

Die Exit Property-Anweisung führt zum unmittelbaren Verlassen einer Property Let-Prozedur. Die Programmausführung wird mit der Anweisung fortgesetzt, die auf die Anweisung mit dem Aufruf der Property Let-Prozedur folgt. Exit Property-Anweisungen können beliebig oft an beliebigen Stellen innerhalb einer Property Let-Prozedur verwendet werden.

Wie bei der Function- und Property Get-Prozedur handelt es sich bei der Property Let-Prozedur um eine eigenständige Prozedur, die Argumente erhalten, eine Reihe von Anweisungen ausführen und die Werte der übergebenen Argumente ändern kann. Im Gegensatz zu Function- und Property Get-Prozedur, die beide einen Wert zurückgeben, kann eine Property Let-Prozedur nur auf der linken Seite einer Let-Anweisung oder eines Ausdrucks zum Zuweisen einer Eigenschaft stehen.


Property Set-Anweisung

Deklariert den Namen, die Argumente und den Code für den Rumpf einer Property-Prozedur, die einen Verweis auf ein Objekt festlegt.

Syntax

[Public | Private] [Static] Property Set Name ([ArgListe,] Verweis)
[Anweisungen]
[Exit Property]
[Anweisungen]

End Property

Die Syntax der Property Set-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Optional	Optional. Gibt an, ob das Argument von der aufrufenden Prozedur bereitgestellt wird oder nicht.
Public	Optional. Auf die Property Set-Prozedur kann von allen anderen Prozeduren in allen Modulen zugegriffen werden. Bei Verwendung in einem Modul (mit einer Option Private-Anweisung) kann auf die Prozedur nur innerhalb des Projekts zugegriffen werden.
Private	Optional. Auf die Property Set-Prozedur kann nur durch andere Prozeduren in dem Modul zugegriffen werden, in dem sie deklariert wurde.
Static	Optional. Die lokalen Variablen der Property Set-Prozedur bleiben zwischen Aufrufen erhalten. Das Attribut Static wirkt sich nicht auf Variablen aus, die außerhalb der Property Set-Prozedur deklariert wurden, auch wenn sie in der Prozedur verwendet werden.
Name	Erforderlich. Name der Property Set-Prozedur gemäß den Standardkonventionen für Namen von Variablen, mit der Ausnahme, daß der Name mit dem Namen einer Property Get- oder Property Let-Prozedur in demselben Modul übereinstimmen kann.
ArgListe	Erforderlich. Variablenliste mit den Argumenten, die an die Property Set-Prozedur beim Aufruf übergeben werden. Mehrere Argumente werden durch Kommas getrennt.
Verweis	Erforderlich. Variable, die den Objektverweis enthält, der auf der rechten Seite der Zuweisung eines Objektverweises verwendet wird.
Anweisungen	Optional. Eine beliebige Gruppe auszuführender Anweisungen im Rumpf der Property-Prozedur.
Das Argument ArgListe verwendet die folgende Syntax und die folgenden Teile:

[Optional] [ByVal | ByRef] [ParamArray] VarName[( )] [As Typ] [= Standardwert]

Teil	Beschreibung
Optional	Optional. Ein Argument ist nicht erforderlich. Alle im Anschluß an Optional in ArgListe angegebenen Argumente müssen ebenfalls optional und mit dem Schlüsselwort Optional deklariert sein. Beachten Sie, daß der rechte Teil eines Property Set-Ausdrucks nicht Optional sein kann.
ByVal	Optional. Das Argument wird als Wert übergeben.
ByRef	Optional. Das Argument wird als Referenz übergeben. ByRef ist die Voreinstellung in Visual Basic.
ParamArray	Optional. Wird nur als letztes Argument in ArgListe verwendet, um anzuzeigen, daß das letzte Argument ein Optional-Datenfeld mit Variant-Elementen ist. Das Schlüsselwort ParamArray ermöglicht Ihnen, eine beliebige Anzahl von Argumenten bereitzustellen. ParamArray darf nicht zusammen mit ByVal, ByRef oder Optional verwendet werden.
Varname	Erforderlich. Name der Variablen, die das Argument darstellt, gemäß den Standardkonventionen für Namen von Variablen.
Typ	Optional. Datentyp des an die Prozedur zu übergebenden Arguments. Zulässige Typen sind: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (zur Zeit nicht unterstützt), Date, String (nur Zeichenfolgen variabler Länge), Object, Variant. Ist der Parameter nicht Optional, kann auch ein benutzerdefinierter Typ oder ein Objekttyp angegeben werden.
Standardwert	Optional. Eine beliebige Konstante oder ein Konstantenausdruck. Nur gültig, wenn der Parameter Optional entspricht. Ist der Typ Object, so kann der explizite Standardwert nur Nothing sein.
Anmerkung Jede Property Set-Anweisung muß mindestens ein Argument für die definierte Prozedur angeben. Dieses Argument (bzw. das letzte Argument in einer Liste von Argumenten) enthält dann den tatsächlichen Objektverweis für die Eigenschaft, wenn die durch Property Set definierte Prozedur aufgerufen wird. In der weiter oben beschriebenen Syntax wird dieses Argument als Verweis bezeichnet. Es kann nicht Optional sein.

Bemerkungen

Property-Prozeduren sind standardmäßig öffentlich, wenn sie nicht explizit mit Public oder Private festgelegt werden. Wird Static nicht angegeben, so bleiben die Werte lokaler Variablen zwischen den Aufrufen nicht erhalten.

Der gesamte ausführbare Code muß sich in Prozeduren befinden. Innerhalb einer Property-, Sub- oder Function-Prozedur kann keine Property Set-Prozedur definiert werden.

Die Exit Property-Anweisung führt zum unmittelbaren Verlassen einer Property Set-Prozedur. Die Programmausführung wird mit der Anweisung fortgesetzt, die auf die Anweisung folgt, die die Property Set-Prozedur aufgerufen hat. Exit Property-Anweisungen können beliebig oft an beliebigen Stellen innerhalb einer Property Set-Prozedur verwendet werden.

Wie bei der Function- und Property Get-Prozedur handelt es sich bei der Property Set-Prozedur um eine eigenständige Prozedur, die Argumente erhalten, eine Reihe von Anweisungen ausführen und die Werte der übergebenen Argumente ändern kann. Im Gegensatz zu Function- und Property Get-Prozedur, die beide einen Wert zurückgeben, kann eine Property Set-Prozedur nur auf der linken Seite einer Zuweisung für einen Objektverweis (Set-Anweisung) verwendet werden.


Public-Anweisung

Wird auf Modulebene verwendet, um öffentliche Variablen zu deklarieren und den dafür erforderlichen Speicher zu reservieren.

Syntax

Public [WithEvents] VarName[([Indizes])] [As [New] Typ] [,[WithEvents] VarName[([Indizes])] [As [New] Typ]] . . .

Die Syntax der Public-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
WithEvents	Optional. Schlüsselwort, das angibt, daß VarName eine Objektvariable ist, die verwendet wird, um auf Ereignisse zu reagieren, die von einem ActiveX-Objekt ausgelöst wurden. Nur gültig in Klassenmodulen. Sie können über WithEvents beliebig viele Variablen deklarieren, jedoch keine Datenfelder erstellen. Sie können New nicht zusammen mit WithEvents verwenden.
VarName	Erforderlich. Name der Variablen gemäß den Standardkonventionen für Namen von Variablen.
Indizes	Optional. Dimensionen einer Datenfeldvariablen. Bis zu 60 Dimensionen sind zulässig. Die Syntax für das Argument Indizes ist:
	[Untergrenze To] Obergrenze [,[Untergrenze To] Obergrenze] . . .
	Wenn nicht explizit in Untergrenze angegeben, wird die Untergrenze eines Datenfeldes durch die Option Base-Anweisung gesteuert. Die Untergrenze ist Null, wenn keine Option Base-Anweisung vorhanden ist.
New	Optional. Dieses Schlüsselwort ermöglicht das implizite Erstellen eines Objekts. Wenn Sie New bei der Deklaration der Objektvariable verwenden, so wird eine neue Instanz des Objekts aufgrund des ersten Verweises erstellt, so daß Sie die Set-Anweisung für die Zuweisung des Objektverweises nicht verwenden müssen. Das Schlüsselwort New kann nicht zur Deklaration von Variablen eines integrierten Datentyps oder zur Deklaration von Instanzen abhängiger Objekte verwendet werden. Es kann ebenfalls nicht mit WithEvents verwendet werden.
Typ	Optional. Datentyp der Variablen. Zulässige Typen sind: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (zur Zeit nicht unterstützt), Date, String, (für Zeichenfolgen variabler Länge), String * Länge (für Zeichenfolgen fester Länge), Object, Variant, ein benutzerdefinierter Typ oder ein Objekttyp. Verwenden Sie für jede deklarierte Variable einen separaten As Typ-Abschnitt.
Bemerkungen

Auf Variablen, die mit der Public-Anweisung deklariert wurden, kann von allen Prozeduren in allen Modulen aus allen Anwendungen zugegriffen werden. Wenn allerdings Option Private Module aktiviert wurde, sind die Variablen nur innerhalb des zugehörigen Projekts öffentlich.

Vorsicht   Die Public-Anweisung kann nicht in Klassenmodulen zur Deklaration einer Zeichenfolgenvariable fester Länge verwendet werden.

Mit der Public-Anweisung deklarieren Sie den Datentyp einer Variablen. Die folgende Anweisung deklariert beispielsweise eine Variable als Integer:

Public AnzaHlAngestellte As Integer

Verwenden Sie eine Public-Anweisung auch, um den Objekttyp einer Variablen zu deklarieren. Die folgende Anweisung deklariert eine Variable für eine neue Instanz einer Tabelle.

Public X As New Worksheet

Wenn das Schlüsselwort New nicht bei der Deklaration einer Objektvariablen verwendet wird, existiert momentan keine Instanz des Objekts. Einer Variablen mit einem Verweis auf ein Objekt muß mit der Set-Anweisung ein existierendes Objekt zugewiesen werden, bevor sie verwendet werden kann. Eine deklarierte Objektvariable hat vor dem Zuweisen eines Objekts den Spezialwert Nothing, der anzeigt, daß die Variable auf keine bestimmte Instanz eines Objekts verweist.

Die Public-Anweisung in Kombination mit einem leeren Klammernpaar dient zur Deklaration eines dynamischen Datenfeldes. Nach einer solchen Deklaration können Sie mit der ReDim-Anweisung innerhalb einer Prozedur die Anzahl der Indizes und Elemente in dem Datenfeld definieren. Wenn Sie einen Index für eine Datenfeldvariable mit einer weiteren Deklaration ändern möchten und die Größe des Datenfeldes bereits explizit mit einer Private-, Public - oder Dim-Anweisung festgelegt wurde, tritt ein Fehler auf.

Wenn Sie keinen Datentyp oder Objekttyp angeben und auch keine DefTyp-Anweisung im jeweiligen Modul verwenden, erhält die Variable standardmäßig den Datentyp Variant.

Bei der Initialisierung wird numerischen Variablen der Wert 0 und Zeichenfolgen variabler Länge eine Null-Zeichenfolge ("") zugewiesen. Zeichenfolgen fester Länge werden mit Nullen aufgefüllt, und Variant-Variablen werden mit Empty initialisiert. Alle Elemente einer Variablen mit einem benutzerdefinierten Typ werden genauso initialisiert wie eigenständige Variablen des entsprechenden Datentyps.


ReDim-Anweisung

Wird auf Prozedurebene verwendet, um Speicherplatz für dynamische Datenfeldvariablen zu reservieren.

Syntax

ReDim [Preserve] VarName(Indizes) [As Typ] [, VarName(Indizes) [As Typ]] . . .

Die Syntax der ReDim-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Preserve	Optional. Schlüsselwort, das zum Erhalt der Daten in einem bestehenden Datenfeld verwendet wird, wenn die Größe der letzten Dimension geändert wird.
VarName	Erforderlich. Name der Variablen gemäß den Standardkonventionen für Namen von Variablen.
Indizes	Erforderlich. Dimensionen einer Datenfeldvariablen. Bis zu 60 Dimensionen sind zulässig. Die Syntax für das Argument Indizes ist:
	[Untergrenze To] Obergrenze [,[Untergrenze To] Obergrenze] . . .
	Wenn nicht explizit in Untergrenze angegeben, wird die Untergrenze eines Datenfeldes durch die Option Base-Anweisung gesteuert. Die Untergrenze ist Null, wenn keine Option Base-Anweisung vorhanden ist.
Typ	Optional. Datentyp der Variablen. Zulässige Typen sind: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (zur Zeit nicht unterstützt), Date, String (für Zeichenfolgen variabler Länge), String * Länge (für Zeichenfolgen fester Länge), Object, Variant, ein benutzerdefinierter Typ oder ein Objekttyp. Verwenden Sie für jede deklarierte Variable einen separaten As Typ-Abschnitt. Bei Variant-Werten, die ein Datenfeld enthalten, beschreibt Typ den Typ der Elemente im Datenfeld, ändert den Variant-Wert aber nicht in einen anderen Typ.
Bemerkungen

Die ReDim-Anweisung dient normalerweise zum Festlegen oder Ändern der Größe eines dynamischen Datenfeldes, das bereits formal mit einer Private-, Public- oder Dim-Anweisung und einem leeren Klammernpaar (ohne Indizes für die Dimensionen) deklariert wurde.

Sie können die ReDim-Anweisung mehrmals verwenden, um die Anzahl der Elemente und Dimensionen in einem Datenfeld zu ändern. Sie können allerdings nicht ein Datenfeld mit einem Datentyp deklarieren und später den Datentyp mit ReDim ändern. Dies ist nur möglich, wenn sich das Datenfeld in einem Variant-Wert befindet. In diesem Fall können Sie den Datentyp der Elemente mit einem As Typ-Abschnitt ändern, bis Sie das Preserve-Schlüsselwort verwenden, das keine Änderungen der Datentypen mehr zuläßt.

Die Anzahl der Dimensionen kann nicht verändert werden. Mit dem Schlüsselwort Preserve können Sie nur die Größe der letzten Datenfelddimension ändern. Wenn das Datenfeld zum Beispiel nur eine Dimension hat, können Sie die Größe dieser Dimension ändern, weil es die letzte und einzige Dimension ist. Hat das Datenfeld jedoch mindestens zwei Dimensionen, so können Sie lediglich die Größe der letzten Dimension ändern, wenn der Inhalt des Datenfeldes erhalten bleiben soll. Das folgende Beispiel verdeutlicht, wie Sie die letzte Dimension eines dynamischen Datenfeldes vergrößern können, ohne bereits bestehende Daten im Datenfeld zu löschen.

ReDim X(10, 10, 10)

. . .

ReDim Preserve X(10, 10, 15)

Ähnlich können Sie bei Verwendung des Preserve-Schlüsselwortes die Größe des Datenfelds nur durch Änderung der oberen Grenze verändern; die Änderung der unteren Grenze löst einen Fehler aus.

Wenn Sie ein Datenfeld verkleinern, gehen die Daten in den entfernten Elementen verloren. Übergeben Sie einer Prozedur ein Datenfeld als Referenz, so können Sie dem Datenfeld innerhalb der Prozedur keine neuen Dimensionen zuweisen.

Bei der Initialisierung wird numerischen Variablen der Wert 0 und Zeichenfolgen variabler Länge eine Null-Zeichenfolge ("") zugewiesen. Zeichenfolgen fester Länge werden mit Nullen aufgefüllt, und Variant-Variablen werden mit Empty initialisiert. Alle Elemente einer Variablen mit einem benutzerdefinierten Typ werden genauso initialisiert wie Variablen eines entsprechenden Datentyps. Einer Variablen mit einem Verweis auf ein Objekt muß mit der Set-Anweisung ein existierendes Objekt zugewiesen werden, bevor sie verwendet werden kann. Eine deklarierte Objektvariable hat vor dem Zuweisen eines Objekts den Spezialwert Nothing, der anzeigt, daß die Variable auf keine bestimmte Instanz eines Objekts verweist.

Vorsicht   Die ReDim-Anweisung verhält sich wie eine deklarierende Anweisung, wenn die deklarierte Variable nicht auf Modulebene oder Prozedurebene existiert. Wird eine andere Variable mit dem gleichen Namen später erstellt, sogar in einem größeren Gültigkeitsbereich, so verweist ReDim auf die später erstellte Variable und verursacht nicht unbedingt einen Kompilierungsfehler, auch wenn Option Explicit wirksam ist. Damit solche Konflikte nicht auftreten, sollte ReDim nicht als eine deklarierende Anweisung verwendet werden, sondern nur zur erneuten Dimensionierung von Datenfeldern.

Anmerkung   Damit Sie die Größe eines Datenfelds in einem Variant verändern können, müssen Sie die Variant-Variable explizit deklarieren, bevor Sie ihr Datenfeld verändern können.


Rem-Anweisung

Dient zum Einfügen erklärender Kommentare in ein Programm.

Syntax

Rem Kommentar

Sie können auch die folgende Syntax verwenden:

' Kommentar

Das optionale Argument Kommentar entspricht dem Text des einzufügenden Kommentars. Zwischen dem Schlüsselwort Rem und dem Argument Kommentar muß ein Leerzeichen stehen.

Bemerkungen

Wenn Sie Zeilennummern oder Zeilenmarken verwenden, können Sie mit einer GoTo- oder GoSub-Anweisung in eine Zeile mit einer Rem-Anweisung verzweigen. In diesem Fall wird die Ausführung mit der ersten ausführbaren Anweisung im Anschluß an die Rem-Anweisung fortgesetzt. Das Schlüsselwort Rem im Anschluß an andere Anweisungen in einer Zeile muß durch einen Doppelpunkt (:) von den anderen Anweisungen getrennt sein.

Sie können ein Apostroph (') anstelle des Schlüsselworts Rem verwenden. Bei einem Apostroph ist der Doppelpunkt hinter anderen Anweisungen nicht erforderlich.


Set-Anweisung

Weist einer Variablen oder Eigenschaft einen Objektverweis zu.

Syntax

Set ObjektVar = {[New] ObjektAusdr | Nothing}

Die Syntax der Set-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
ObjektVar	Erforderlich. Name der Variablen oder Eigenschaft gemäß den Standardkonventionen für Namen von Variablen.
New	Optional. Das Schlüsselwort New ermöglicht das implizite Erstellen eines Objekts. Wenn Sie New mit Set verwenden, wird eine neue Instanz der Klasse erstellt. Wenn ObjektVar einen Verweis auf ein Objekt enthält, so wird dieser Verweis freigegeben, wenn der neue Verweis zugewiesen wird. Das Schlüsselwort New kann nicht zur Erstellung neuer Instanzen von integrierten Datentypen oder zur Erstellung abhängiger Objekte verwendet werden.
ObjektAusdr	Erforderlich. Ausdruck mit dem Namen eines Objekts, einer anderen deklarierten Variablen desselben Objekttyps oder einer Funktion bzw. Methode, die ein Objekt desselben Typs zurückgibt.
Nothing	Optional. Hebt die Zuordnung von ObjektVar zu einem bestimmten Objekt auf. Durch Zuweisen von Nothing an ObjektVar werden alle Ressourcen des zuvor referenzierten Objekts freigegeben, sofern das Objekt von keiner anderen Variablen referenziert wird.
Bemerkungen

ObjektVar ist nur gültig, wenn der zugehörige Objekttyp mit dem Typ des zugewiesenen Objekts identisch ist.

Die Anweisungen Dim, Private, Public, ReDim und Static deklarieren lediglich eine Variable, die ein Objekt referenziert. Ein tatsächlicher Verweis auf ein Objekt kommt erst zustande, wenn Sie mit der Set-Anweisung ein bestimmtes Objekt zuweisen.

Das folgende Beispiel zeigt, wie Dim verwendet wird, um das Datenfeld mit dem Typ Form1 zu deklarieren. Momentan existiert keine Instanz von Form1. Set weist der Variablen TestUnterFormulare Verweise auf neue Instanzen von Form1 zu. Dieser Code kann zur Erstellung von untergeordneten Formularen in einer MDI-Anwendung verwendet werden.

Dim TestUnterFormulare(1 to 4) As Form1

Set TestUnterFormulare(1) = New Form1

Set TestUnterFormulare(2) = New Form1

Set TestUnterFormulare(3) = New Form1

Set TestUnterFormulare(4) = New Form1

Wenn Sie mit Set einer Variablen einen Objektverweis zuweisen, wird keine Kopie des Objekts erzeugt, sondern ein Verweis auf das Objekt. Mehrere Objektvariablen können gleichzeitig auf dasselbe Objekt verweisen. Da all diese Variablen auf ein Objekt verweisen (und keine Kopie davon enthalten), wirken sich Änderungen an dem Objekt immer auf alle Variablen mit einem Verweis auf das Objekt aus. Wenn Sie jedoch in der Set-Anweisung das Schlüsselwort New verwenden, erstellen Sie tatsächlich eine neue Instanz des Objekts.


Static-Anweisung

Wird auf Prozedurebene verwendet, um Variablen zu deklarieren und den nötigen Speicher zu reservieren. Mit der Static-Anweisung deklarierte Variablen behalten ihren Wert, solange der Code ausgeführt wird.

Syntax

Static VarName[([Indizes])] [As [New] Typ] [, VarName[([Indizes])] [As [New] Typ]] . . .

Die Syntax der Static-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
VarName	Erforderlich. Name der Variablen gemäß den Standardkonventionen für Namen von Variablen.
Indizes	Optional. Dimensionen einer Datenfeldvariablen. Bis zu 60 Dimensionen sind zulässig. Die Syntax für das Argument Indizes ist:
	[Untergrenze To] Obergrenze [,[Untergrenze To] Obergrenze] . . .
	Wenn nicht explizit in Untergrenze angegeben, wird die Untergrenze eines Datenfeldes durch die Option Base-Anweisung gesteuert. Die Untergrenze ist Null, wenn keine Option Base-Anweisung vorhanden ist.
New	Optional. Dieses Schlüsselwort ermöglicht das implizite Erstellen eines Objekts. Wenn Sie New bei der Deklaration der Objektvariablen verwenden, wird eine neue Instanz des Objekts aufgrund des ersten Verweises erstellt, so daß Sie die Set-Anweisung für die Zuweisung des Objektverweises nicht verwenden müssen. Das Schlüsselwort New kann nicht zur Deklaration von Variablen eines integrierten Datentyps oder zur Deklaration von Instanzen abhängiger Objekte verwendet werden.
Typ	Optional. Datentyp der Variablen. Zulässige Typen sind: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (zur Zeit nicht unterstützt), Date, String, (für Zeichenfolgen variabler Länge), String * Länge (für Zeichenfolgen fester Länge), Object, Variant, ein benutzerdefinierter Typ oder ein Objekttyp. Verwenden Sie für jede deklarierte Variable einen separaten As Typ-Abschnitt.
Bemerkungen

Wenn der Code eines Moduls ausgeführt wird, behalten mit der Static-Anweisung deklarierte Variablen ihren Wert, bis das Modul zurückgesetzt oder neu gestartet wird. In nichtstatischen Prozeduren können Sie die Static-Anweisung verwenden, um explizit Variablen zu deklarieren, die nur innerhalb der Prozedur verfügbar sind, deren Lebensdauer aber der des Moduls entspricht, in dem die Prozedur definiert wurde.

Mit einer Static-Anweisung innerhalb einer Prozedur können Sie den Datentyp einer Variablen deklarieren, die ihren Wert zwischen Prozeduraufrufen behält. Die folgende Anweisung deklariert zum Beispiel ein Datenfeld fester Größe für ganze Zahlen:

Static AngestellenAnzahl(200) As Integer

Die folgende Anweisung deklariert eine Variable für eine neue Instanz einer Tabelle:

Static X As New Worksheet

Wenn das Schlüsselwort New nicht bei der Deklaration einer Objektvariablen verwendet wird, existiert momentan keine Instanz des Objekts. Einer Variablen mit einem Verweis auf ein Objekt muß mit der Set-Anweisung ein existierendes Objekt zugewiesen werden, bevor sie verwendet werden kann. Eine deklarierte Objektvariable hat vor dem Zuweisen eines Objekts den Spezialwert Nothing, der anzeigt, daß die Variable auf keine bestimmte Instanz eines Objekts verweist. Wenn Sie das Schlüsselwort New bei der Deklaration verwenden, so wird eine Instanz des Objekts aufgrund der ersten auf das Objekt verweisenden Referenz erstellt.

Wenn Sie keinen Datentyp oder Objekttyp angeben und auch keine DefTyp-Anweisung in dem Modul verwenden, erhält die Variable standardmäßig den Datentyp Variant.

Anmerkung   Die Anweisung Static und das Schlüsselwort Static wirken sich unterschiedlich auf die Lebensdauer von Variablen aus. Wenn Sie eine Prozedur mit dem Schlüsselwort Static deklarieren (wie in Static Sub VerkaufsZahlen()), wird der Speicherplatz für alle lokalen Variablen in der Prozedur einmal reserviert, und die Werte der Variablen bleiben während der gesamten Laufzeit des Codes erhalten. In nichtstatischen Prozeduren wird der Speicherplatz für Variablen bei jedem Aufruf der Prozedur neu reserviert und am Ende der Prozedur wieder freigegeben. Die Anweisung Static deklariert Variablen in nichtstatischen Prozeduren als statisch mit dem Ergebnis, daß diese Variablen ihren Wert während der gesamten Laufzeit des Programms behalten.

Bei der Initialisierung wird numerischen Variablen der Wert 0 und Zeichenfolgen variabler Länge eine Null-Zeichenfolge ("") zugewiesen. Zeichenfolgen fester Länge werden mit Nullen aufgefüllt, und Variant-Variablen werden mit Empty initialisiert. Alle Elemente einer Variablen mit einem benutzerdefinierten Typ werden genauso initialisiert wie eigenständige Variablen des entsprechenden Datentyps.

Anmerkung   Wenn Sie die Static-Anweisung innerhalb einer Prozedur verwenden, sollten Sie sie zusammen mit allen anderen Deklarationen, wie beispielsweise der Dim-Anweisung (sofern vorhanden), an den Anfang der Prozedur stellen.


Sub-Anweisung

Deklariert den Namen, die Argumente und den Code für den Rumpf einer Sub-Prozedur.

Syntax

[Private | Public] [Static] Sub Name [(ArgListe)]
[Anweisungen]
[Exit Sub]
[Anweisungen]

End Sub

Die Syntax der Sub-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Public	Optional. Auf die Sub-Prozedur kann von allen anderen Prozeduren in allen Modulen zugegriffen werden. Bei Verwendung in einem Modul (mit einer Option Private-Anweisung) kann auf die Prozedur nur innerhalb des Projekts zugegriffen werden.
Private	Optional. Auf die Sub-Prozedur kann nur durch andere Prozeduren aus dem Modul zugegriffen werden, in dem sie deklariert wurde.
Static	Optional. Die lokalen Variablen der Sub-Prozedur bleiben zwischen Aufrufen erhalten. Das Attribut Static wirkt sich nicht auf Variablen aus, die außerhalb der Sub-Prozedur deklariert wurden, auch wenn sie in der Prozedur verwendet werden.
Name	Erforderlich. Name der Sub-Prozedur gemäß den Standardkonventionen für Namen von Variablen.
ArgListe	Optional. Variablenliste mit den Argumenten, die an die Sub-Prozedur beim Aufruf übergeben werden. Mehrere Variablen werden durch Kommas getrennt.
Anweisungen	Optional. Eine beliebige Gruppe auszuführender Anweisungen im Rumpf der Sub-Prozedur.
Das Argument ArgListe verwendet die folgende Syntax und die folgenden Teile:

[Optional] [ByVal | ByRef] [ParamArray] VarName[( )] [As Typ] [= Standardwert]

Teil	Beschreibung
Optional	Optional. Schlüsselwort, das angibt, daß ein Argument nicht erforderlich ist. Alle im Anschluß an Optional in ArgListe angegebenen Argumente müssen auch optional sein und mit dem Schlüsselwort Optional deklariert werden. Optional kann nicht verwendet werden, wenn ParamArray verwendet wird.
ByVal	Optional. Das Argument wird als Wert übergeben.
ByRef	Optional. Das Argument wird als Referenz übergeben. ByRef ist der Standard in Visual Basic.
ParamArray	Optional. Ist nur als letztes Argument in ArgListe zulässig und gibt an, daß das letzte Element ein als Optional deklariertes Datenfeld mit Variant-Elementen ist. Das Schlüsselwort ParamArray erlaubt die Angabe einer variablen Anzahl von Argumenten und darf nicht in Kombination mit den Schlüsselwörtern ByVal, ByRef oder Optional verwendet werden.
VarName	Erforderlich. Name der Variablen, die das Argument darstellt, gemäß den Standardkonventionen für Namen von Variablen.
Typ	Optional. Datentyp des an die Prozedur zu übergebenden Arguments. Zulässige Typen sind: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (zur Zeit nicht unterstützt), Date, String (nur Zeichenfolgen variabler Länge), Object, Variant. Ist der Parameter nicht Optional, kann ein benutzerdefinierter Typ oder ein Objekttyp angegeben werden.
Standardwert	Optional. Eine beliebige Konstante oder ein Konstantenausdruck. Nur gültig, wenn der Parameter Optional entspricht. Ist der Typ Object, so kann der explizite Standardwert nur Nothing sein.
Bemerkungen

Sub-Prozeduren sind standardmäßig öffentlich, wenn sie nicht explizit mit Public oder Private festgelegt werden. Wird Static nicht angegeben, so bleiben die Werte lokaler Variablen zwischen den Aufrufen nicht erhalten.

Vorsicht   Sub-Prozeduren können rekursiv sein (d.h., sie rufen sich selbst auf, um eine bestimmte Operation durchzuführen). Rekursionen können jedoch zu Stapelüberläufen führen. Vermeiden Sie daher das Schlüsselwort Static in rekursiven Sub-Prozeduren.

Der gesamte ausführbare Code muß sich in Prozeduren befinden. Innerhalb einer Sub-, Function- oder Property-Prozedur kann keine weitere Sub-Prozedur definiert werden.

Das Schlüsselwort Exit Sub führt zum unmittelbaren Verlassen einer Sub-Prozedur. Die Programmausführung wird mit der Anweisung fortgesetzt, die auf die Anweisung folgt, die die Sub-Prozedur aufgerufen hat. Exit Sub-Anweisungen können beliebig oft an beliebigen Stellen innerhalb einer Sub-Prozedur verwendet werden.

Wie bei einer Function-Prozedur handelt es sich bei der Sub-Prozedur um eine eigenständige Prozedur, die Argumente erhalten, eine Reihe von Anweisungen ausführen und die Werte der übergebenen Argumente ändern kann. Im Gegensatz zu einer Function-Prozedur, die einen Wert zurückgibt, kann eine Sub-Prozedur aber nicht in einem Ausdruck verwendet werden.

Der Aufruf einer Sub-Prozedur erfolgt durch Angabe des Prozedurnamens gefolgt von der Argumentliste. In der Beschreibung der Call-Anweisung finden Sie weitere Informationen zum Aufrufen von Sub-Prozeduren.

Variablen in Sub-Prozeduren können entweder explizit deklariert oder ohne Deklaration verwendet werden. Explizit (über Dim oder eine entsprechende Anweisung) in einer Prozedur deklarierte Variablen sind innerhalb dieser Prozedur immer lokal. Variablen, die in einer Prozedur verwendet, aber nicht dort deklariert werden, sind auch lokal, sofern sie nicht bereits explizit auf einer höheren Ebene außerhalb der Prozedur deklariert wurden.

Vorsicht   Eine Prozedur kann eine nicht explizit in der Prozedur deklarierte Variable zwar verwenden, aber es kann zu Namenskonflikten kommen, falls ein anderes auf Modulebene definiertes Element denselben Namen hat. Verwendet Ihre Prozedur eine nichtdeklarierte Variable mit einem Namen, der dem Namen einer anderen Prozedur, Konstanten oder Variablen entspricht, so wird die Variable als Verweis auf den Namen interpretiert, der auf Modulebene definiert wurde. Deklarieren Sie Variablen explizit, um derartige Konflikte zu vermeiden. Mit der Anweisung Option Explicit können Sie die explizite Deklaration von Variablen erzwingen.

Anmerkung   Eine Sub-Prozedur können Sie nicht mit GoSub, GoTo oder Return aufrufen oder verlassen.


Type-Anweisung

Wird auf Modulebene verwendet, um einen benutzerdefinierten Datentyp mit einem oder mehreren Elementen zu definieren.

Syntax

[Private | Public] Type VarName
 Elementname [([Indizes])] As Typ
[Elementname [([Indizes])] As Typ]
. . .

End Type

Die Syntax der Type-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Public	Optional. Deklariert benutzerdefinierte Typen, die allen Prozeduren in allen Modulen aller Projekte zur Verfügung stehen.
Private	Optional. Deklariert benutzerdefinierte Typen, die nur innerhalb des Moduls verfügbar sind, in dem sie deklariert wurden.
VarName	Erforderlich. Name des benutzerdefinierten Typs gemäß den Standardkonventionen für Namen von Variablen.
Elementname	Erforderlich. Name eines Elements des benutzerdefinierten Typs. Elementnamen folgen ebenfalls den Standardkonventionen für Namen von Variablen, allerdings sind an dieser Stelle Schlüsselwörter zulässig.
Indizes	Optional. Dimensionen eines Datenfeldelements. Verwenden Sie Klammern nur für Deklarationen von Datenfeldern, deren Größe sich ändern kann. Die Syntax für das Argument Indizes ist:
	[Untergrenze To] Obergrenze [,[Untergrenze To] Obergrenze] . . .
	Wenn nicht explizit in Untergrenze angegeben, wird die Untergrenze eines Datenfeldes durch die Option Base-Anweisung gesteuert. Die Untergrenze ist Null, wenn keine Option Base-Anweisung vorhanden ist.
Typ	Erforderlich. Datentyp des Elements. Zulässige Typen sind: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (zur Zeit nicht unterstützt), Date, String(für Zeichenfolgen variabler Länge), String * Länge (für Zeichenfolgen fester Länge), Object, Variant, ein anderer benutzerdefinierter Typ oder ein Objekttyp.
Bemerkungen

Die Type-Anweisung kann nur auf Modulebene verwendet werden. Nach der Deklaration eines benutzerdefinierten Typs mit der Type-Anweisung können Sie eine Variable dieses Typs innerhalb des Gültigkeitsbereichs der Deklaration deklarieren. Verwenden Sie die Anweisungen Dim, Private, Public, ReDim oder Static zur Deklaration eines benutzerdefinierten Typs.

In Standardmodulen sind benutzerdefinierte Typen standardmäßig öffentlich. Diese Zugriffsmöglichkeit kann mit dem Schlüsselwort Private verändert werden. In Klassenmodulen können benutzerdefinierte Typen jedoch nur privat sein, und der Zugriffs kann nicht mit dem Schlüsselwort Public verändert werden.

Zeilennummern und Zeilenmarken sind in Type...End Type-Blöcken nicht zulässig.

Benutzerdefinierte Typen werden häufig für Datensätze verwendet, die normalerweise mehrere miteinander verbundene Elemente verschiedener Datentypen enthalten.

Das folgende Beispiel zeigt die Verwendung eines Datenfeldes fester Größe in einem benutzerdefinierten Typ:

Type PLDaten

Postleitzahl (1 To 100) As Integer	' Deklariert ein Datenfeld fester Größe.

ZBezirk As String * 30

End Type

Dim Dortmund (1 To 100) As PLDaten

In diesem Beispiel enthält PLDaten das statische Datenfeld Postleitzahl, und der Datensatz Dortmund hat dieselbe Struktur wie PLDaten.

Wenn Sie ein Datenfeld fester Größe innerhalb eines benutzerdefinierten Typs deklarieren, müssen die Dimensionen mit numerischen Literalen oder Konstanten angegeben werden. Variablen sind an dieser Stelle nicht zulässig.


UBound-Funktion

Gibt einen Wert vom Typ Long zurück, der den größten verfügbaren Index für die angegebene Dimension eines Datenfeldes enthält.

Syntax

UBound(Datenfeldname[, Dimension])

Die Syntax der UBound-Funktion besteht aus folgenden Teilen:

Teil	Beschreibung
Datenfeldname	Erforderlich. Name der Datenfeldvariablen gemäß den Standardkonventionen für Namen von Variablen.
Dimension	Optional. Wert vom Typ Variant (Long). Ganze Zahl, die angibt, für welche Dimension die obere Grenze zurückgegeben werden soll. Verwenden Sie für die erste Dimension 1, für die zweite Dimension 2 usw. Wird Dimension nicht angegeben, so wird 1 angenommen.
Bemerkungen

Die UBound-Funktion kann zusammen mit der LBound-Funktion verwendet werden, um die Größe eines Datenfeldes zu bestimmen. LBound liefert die Untergrenze einer Datenfeld-Dimension.

UBound liefert für ein Datenfeld mit den folgenden Dimensionen die in der nachfolgenden Tabelle aufgeführten Werte:

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

Anweisung	Rückgabewert
UBound(A, 1)	100
UBound(A, 2)	3
UBound(A, 3)	4


Array-Funktion (Beispiel)

In diesem Beispiel wird die Array-Funktion verwendet, um einen Variant-Wert mit einem Datenfeld zurückzugeben.

Dim Woche1, Tag1

Woche1 = Array("Mo", "Di", "Mi", "Do", "Fr", "Sa", "So")

' Rückgabewerte unter der Annahme, daß die Datenfeld-Untergrenze

' 1 ist (über die Option Base-Anweisung eingestellt).

Tag1 = Woche1(2)	' Tag1 enthält "Di".

Tag1 = Woche1(4)	' Tag1 enthält "Do".


Const-Anweisung (Beispiel)

In diesem Beispiel wird die Const-Anweisung verwendet, um Konstanten zu deklarieren, die anstelle von Literalwerten verwendet werden können. Public-Konstanten werden nicht im Klassenmodul, sondern im Abschnitt "Allgemein" eines Standardmoduls deklariert. Private-Konstanten können im Abschnitt "Allgemein" eines beliebigen Modultyps deklariert werden.

' Konstanten sind standardmäßig Private.

Const Var1 = 459

' Konstante als Public deklarieren.

Public Const Text1 = "HILFE"

' Konstante als Private und mit dem Datentyp Integer deklarieren.

Private Const Ganz1 As Integer = 5

' Mehrere Konstanten in einer Zeile deklarieren.

Const Text1 = "Hallo", Double1 As Double = 3.4567


CreateObject-Funktion (Beispiel)

In diesem Beispiel wird die CreateObject-Funktion verwendet, um einen Verweis (xlApp) auf Microsoft Excel zu setzen. In dem Beispiel wird der Verweis verwendet, um auf die Visible-Eigenschaft von Microsoft Excel zuzugreifen, und anschließend wird Microsoft Excel mit seiner Quit-Methode beendet. Schließlich wird der Verweis selbst wieder freigegeben.

Dim xlAnw As Object	' Variable für Verweis deklarieren.

Set xlAnw = CreateObject("excel.application")

' Sie müssen die Visible-Eigenschaft auf True

' setzen, wenn die Anwendung angezeigt werden soll.

xlAnw.Visible = True

' Greifen sie auf die anderen Objekte von

' Microsoft Excel mit xlAnw zu.

xlAnw.Quit	' Wenn Sie fertig sind, beenden Sie die

' Anwendung mit der Quit-Methode, und geben Sie

Set xlAnw = Nothing	' dann den Verweis frei.


Declare-Anweisung (Beispiel)

In diesem Beispiel wird die Verwendung der Declare-Anweisung auf Modulebene eines Standardmoduls gezeigt, um einen Verweis auf eine externe Prozedur in einer Dynamic Link Library (DLL) oder Macintosh-Code-Ressource zu deklarieren. Sie können Declare-Anweisungen in Klassenmodulen angeben, wenn die Declare-Anweisungen das Attribut Private haben.

' Code für Microsoft Windows (16-Bit):

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

' Signal1 ist ein Alias für den Prozedurnamen.

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

' Laufende Nummer in Alias-Abschnitt zum Aufruf von GetWinFlags

' verwenden.

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

' Geben Sie in 32-Bit Microsoft Windows-Systemen nicht die Bibliothek

' USER.DLL an, sondern USER32.DLL. Mit bedingter Kompilierung können

' Sie Code schreiben, der sowohl unter Win32 als auch unter Win16

' ausgeführt werden kann.

#If Win32 Then

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

#Else

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

#End If

' Auf dem Macintosh:

Declare Sub MessageAlert Lib "Hd1:Warnung1" Alias "Warnung1" (ByVal N _

As Integer)

' Code-Ressource in Alias-Abschnitt verwenden.

Declare Sub MessageAlert Lib "Hd1:Warnung1" Alias "XTST$Warnung1" _

(ByVal N As Integer)

' Wenn der Typbezeichner der Code-Ressource nur 3 Zeichen hat, müssen

' Sie ein Leerzeichen an der Stelle stehen lassen, an der das letzte

' Zeichen normalerweise stehen würde.

Declare Sub MessageAlert Lib "Hd1:EineWarnung" Alias "COD _

$EineWarnung" (ByVal N As Integer)


Deftype-Anweisungen (Beispiele)

In diesem Beispiel werden verschiedene Einsatzmöglichkeiten für die DefTyp-Anweisung aufgezeigt, um den Standard-Datentyp von Variablen und Function-Prozeduren festzulegen, bei denen der Name mit bestimmten Buchstaben beginnt. Der Standarddatentyp läßt sich nur durch explizites Zuweisen eines Typs mit der Dim-Anweisung außer Kraft setzen. DefTyp-Anweisungen sind nur auf Modulebene (d.h. nicht innerhalb von Prozeduren) zulässig.

' Standarddatentyp für Variablennamen von A bis K auf Integer

' festlegen.

DefInt A-K

' Standarddatentyp für Variablennamen von L bis Z auf String

' festlegen.

DefStr L-Z

ZahlVar = 4	' Integer initialisieren.

StringVar = "Hallo, jemand da?"	' String initialisieren.

EineVar = "Hallo" 	' Fehler "Datentypen unverträglich".

Dim Zahl As Double	' Typ explizit auf Double festlegen.

Zahl = 2.3455	' Wert vom Typ Double zuweisen.

' DefTyp-Anweisungen gelten auch für Function-Prozeduren.

Ergebnis = TestFunktion(4)	' Benutzerdefinierte Funktion.

' Definition der Function-Prozedur TestFunktion.

Function TestFunktion(IntZahl)

TestFunktion = IntZahl * 2	' Rückgabewert hat den Typ Integer.

End Function


Dim-Anweisung (Beispiel)

Dieses Beispiel zeigt die Verwendung der Dim-Anweisung zum Deklarieren von Variablen. Die Dim-Anweisung läßt sich auch zur Deklaration von Datenfeldern verwenden. Die voreingestellte untere Grenze für Datenfeldindizes ist 0 und kann auf Modulebene mit der Option Base-Anweisung geändert werden.

' Wert1 und Wert2 werden standardmäßig als Variant mit

' dem Wert Empty initialisiert.

Dim Wert1, Wert2

' Explizite Deklaration einer Variablen vom Typ Integer.

Dim Zahl As Integer

' Mehrere Deklarationen in einer Zeile. AndereVar hat den Typ

' Variant, da kein Typ angegeben wird.

Dim AndereVar, Auswahl As Boolean, GebDatum As Date

' TagFeld ist ein Datenfeld mit Variant-Werten und 51 indizierten

' Elementen von 0 bis 50, sofern Option Base für das

' aktuelle Modul auf 0 (Voreinstellung) festgelegt wurde.

Dim TagFeld(50)

' Matrix ist ein zweidimensionales Datenfeld mit ganzen Zahlen.

Dim Matrix(3, 4) As Integer

' Matrix1 ist ein dreidimensionales Datenfeld mit Werten vom Typ

' Double und explizit angegebenen Grenzen.

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

' Geburtstag ist ein Datenfeld mit Datumsangaben und Indizes von

' 1 bis 10.

Dim Geburtstag(1 To 10) As Date

' Feld1 ist ein dynamisches Datenfeld vom Typ Variant.

Dim Feld1()


Enum-Anweisung (Beispiel)

Das folgende Beispiel zeigt die Anwendung der Enum-Anweisung zur Definition einer Aufzählung von benannten Konstanten. In diesem Fall definieren die Konstanten Farben, die Sie zur Gestaltung von Eingabeformularen für eine Datenbank auswählen könnten.

Public Enum InterfaceColors

icMistyRose = &HE1E4FF&

icSlateGray = &H908070&

icDodgerBlue = &HFF901E&

icDeepSkyBlue = &HFFBF00&

icSpringGreen = &H7FFF00&

icForestGreen = &H228B22&

icGoldenrod = &H20A5DA&

icFirebrick = &H2222B2&

End Enum


Erase-Anweisung (Beispiel)

In diesem Beispiel wird die Erase-Anweisung verwendet, um Elemente eines Datenfeldes fester Größe neu zu initialisieren und um dynamisch reservierten Speicher für ein Datenfeld freizugeben.

' Datenfeldvariablen deklarieren.

Dim ZahlFeld(10) As Integer	' Datenfeld vom Typ Integer.

Dim VarZFFeld(10) As String	' Datenfeld mit Zeichenfolge.

Dim FestZFFeld(10) As String * 10	' Datenfeld mit Zeichenfolge fester

' Länge.

Dim VariantFeld(10) As Variant	' Datenfeld vom Typ Variant.

Dim DynFeld() As Integer	' Dynamisches Datenfeld.

ReDim DynFeld(10)	' Speicher reservieren.

Erase ZahlFeld	' Alle Elemente auf 0 festlegen.

Erase VarZFFeld	' Alle Elemente auf "" festlegen.

Erase FestZFFeld	' Alle Elemente auf 0 festlegen.

Erase VariantFeld	' Alle Elemente auf Empty festlegen.

Erase DynFeld	' Speicher für Datenfeld freigeben.


Event-Anweisung (Beispiel)

In folgendem Beispiel werden Ereignisse verwendet, um während einer Demonstration des schnellsten 100m-Laufs die Sekunden mitzuzählen. Der Code führt sämtliche ereignisbezogenen Methoden, Eigenschaften und Anweisungen vor, einschließlich der Event-Anweisung.

Die Klasse, die ein Ereignis hervorruft, ist die Ereignisquelle; die Klassen, die das Ereignis implementieren, werden als Ereignisziele (Sinks) bezeichnet. Die von einer Ereignisquelle ausgehenden Ereignisse können mehrere Ziele haben. Wenn die Klasse das Ereignis hervorruft, wird es bei jeder Klasse ausgelöst, die sich dazu bereit erklärt hat, Ereignisse für diese Instanz des Objekts abzufangen.

In dem Beispiel werden auch ein Formular (Form1) mit einer Schaltfläche (Command1), ein Bezeichnungsfeld (Label1), sowie zwei Textfelder (Text1 und Text2) verwendet. Wenn Sie auf die Schaltfläche klicken, wird im ersten Textfeld "Ab jetzt" angezeigt, und im zweiten Textfeld werden die Sekunden gezählt. Nach Ablauf der Gesamtzeit (9,84 Sekunden) wird im ersten Textfeld "Bis jetzt" und im zweiten "9,84" angezeigt.

Der Code für Form1 legt den Anfangs- und den Endzustand des Formulars fest. Er enthält außerdem den Code, der ausgeführt wird, wenn Ereignisse ausgelöst werden.

Option Explicit

Private WithEvents mText As TimerState

Private Sub Command1_Click()

Text1.Text = "Ab jetzt"

    Text1.Refresh

    Text2.Text = "0"

    Text2.Refresh

Call mText.TimerTask(9.84)

End Sub

Private Sub Form_Load()

    Command1.Caption = "Klicken zum Start des Zeitgebers"

    Text1.Text = ""

    Text2.Text = ""

    Label1.Caption = "Der schnellste 100m-Lauf dauerte so lange:"

    Set mText = New TimerState

    End Sub

Private Sub mText_ChangeText()

    Text1.Text = "Bis jetzt"

    Text2.Text = "9,84"

End Sub

Private Sub mText_UpdateTime(ByVal dblJump As Double)

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

    DoEvents

End Sub

Der restliche Code befindet sich in einem Klassenmodul namens TimerState. Die Event-Anweisungen deklarieren die Prozeduren, die bei der Auslösung von Ereignissen gestartet werden.

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


Function-Anweisung (Beispiel)

In diesem Beispiel wird die Function-Anweisung verwendet, um Namen, Argumente und Prozedurrumpf einer Function-Prozedur zu deklarieren. Das letzte Beispiel verwendet initialisierte Optional-Argumente mit festgelegtem Typ.

' Die folgende benutzerdefinierte Funktion liefert die

' Quadratwurzel des übergebenen Arguments.

Function Quadratwurzel(Zahl As Double) As Double

If Zahl < 0 Then	' Argument auswerten.

Exit Function	' Zurück zur aufrufenden

' Prozedur.

Else

Quadratwurzel = Sqr(Zahl) ' Quadratwurzel zurückgeben.

End If

End Function

Durch das Schlüsselwort ParamArray kann einer Funktion eine variable Anzahl an Argumenten übergeben werden. In der folgenden Definition wird Arg1 als Wert übergeben.

Function Summe(ByVal Arg1 As Integer, ParamArray AndereArg())

Dim Ergebnis

' Beim Aufruf der Funktion mit:

Ergebnis = Summe(4, 3 ,2 ,1)

' erhalten die lokalen Variablen die folgenden Werte: Arg1 = 4,

' AndereArg(1) = 3, AndereArg(2) = 2 usw., sofern die

' Untergrenze für Datenfeldindizes 1 ist.

Optional-Argumente können Standardwerte haben und einen anderen Typ als den Datentyp Variant annehmen.

' Wenn die Argumente einer Funktion folgendermaßen definiert sind...

Function Funktion1(Text1 As String, Optional Arg1 As _ Integer = 5, Optional Arg2 = "Dolly")

Dim Ergebnis

' ...kann sie so aufgerufen werden:

Ergebnis = Funktion1("Hallo", 2, "Welt")	' Alle 3 Argumente

' angegeben.

Ergebnis = Funktion1("Test", , 5)	' Kein zweites Argument.

' Argumente 1 und 2 sind benannte Argumente.

RetVal = Funktion1(Text1:="Hello ", Arg1:=7)


GetObject-Funktion (Beispiel)

In diesem Beispiel wird die GetObject-Funktion verwendet, um einen Verweis auf ein bestimmtes Microsoft Excel-Tabellenblatt (MyXL) zu erhalten. Es verwendet die Application-Eigenschaft des Tabellenblatts, um Microsoft Excel anzuzeigen, es zu schließen usw. Mit Hilfe zweier API-Aufrufe sucht die Sub-Prozedur DetectExcel nach Microsoft Excel; wenn Excel ausgeführt wird, wird es in die Tabelle ausgeführter Objekte eingetragen. Der erste Aufruf der GetObject-Funktion verursacht einen Fehler, wenn Microsoft Excel nicht bereits ausgeführt wird. In dem Beispiel wird durch den Fehler das Attribut ExcelLiefNicht auf True gesetzt. Der zweite Aufruf der GetObject-Funktion legt eine Datei fest, die geöffnet werden soll. Wenn Microsoft Excel noch nicht ausgeführt wird, wird es durch den zweiten Aufruf gestartet und gibt einen Verweis in Form einer angegebenen Datei TEST1.XLS an das Tabellenblatt zurück. Die Datei muß im angegebenen Verzeichnis existieren; andernfalls wird der Visual Basic-Fehler "Automatisierungsfehler" ausgelöst. Anschließend blendet der Beispiel-Code sowohl Microsoft Excel als auch das Fenster mit der angegebenen Tabelle ein. Schließlich wird, sofern vorher noch keine Version von Microsoft Excel ausgeführt wurde, die Quit-Methode des Application-Objekts verwendet, um Microsoft Excel zu beenden. Wenn die Anwendung bereits zuvor ausgeführt wurde, wird sie auch nicht beendet. Der Verweis selbst wird durch Setzen auf Nothing freigegeben.

' Deklarieren der nötigen API-Routinen:

Declare Function FindWindow Lib "user32" Alias _

"FindWindowA" (ByVal lpClassName as String, _

ByVal lpWindowName As Long) As Long

Declare Function SendMessage Lib "user32" Alias _

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

ByVal wParam as Long _

ByVal lParam As Long) As Long

Sub GetExcel()

Dim XL1 As Object	' Variable für Verweis auf

' Microsoft Excel.

Dim ExcelLiefNicht As Boolean	' Attribut für Freigabe am Ende.

' Überprüfen, ob eine Kopie von Microsoft Excel bereits

' ausgeführt wird.

On Error Resume Next	' Fehlerbehandlung zurückstellen.

' GetObject-Funktionsaufruf ohne erstes Argument gibt einen Verweis auf

' eine Instanz der Anwendung zurück. Wenn die Anwendung nicht

' ausgeführt wird, tritt ein Fehler auf.

Set XL1 = Getobject(, "Excel.Application")

If Err.Number <> 0 Then ExcelLiefNicht = True

Err.Clear	' Err-Objekt im Fehlerfall löschen.

' Prüfen auf Microsoft Excel. Wenn Microsoft Excel ausgeführt wird, wird

' dies in die Tabelle ausgeführter Objekte eingetragen.

DetectExcel

' Objektvariable so festlegen, daß sie auf die gewünschte Datei verweist.

Set XL1 = Getobject("c:\vb4\TEST1.XLS")

' Microsoft Excel mit zugehöriger Application-Eigenschaft einblenden.

' Fenster mit der Datei unter Verwendung der Windows-Auflistung des

' XL1-Objektverweises anzeigen.

XL1.Application.Visible = True

XL1.Parent.Windows(1).Visible = True

' Dateiverarbeitung.

' ...

' Wenn diese Kopie von Microsoft Excel beim Starten des Beispiels

' nicht ausgeführt wurde, wird Excel mit der Quit-Methode des

' Application-Objekts beendet. Wenn Sie versuchen, Microsoft Excel zu

' beenden, blinkt die Titelleiste, und Sie werden

' in einer Meldung gefragt, ob Sie geladene Dateien speichern möchten.

If ExcelLiefNicht = True Then

XL1.Application.Quit

End If

Set XL1 = Nothing	' Verweis auf Anwendung und

' Tabelle freigeben.

End Sub

Sub DetectExcel()

' Diese Prozedur erkennt, ob Excel ausgeführt wird, und registriert dies.

Const WM_USER = 1024

Dim hWnd As Long

' Wenn Excel ausgeführt wird, wird durch Ausführen dieses

' API-Aufrufs die zugehörige Zugriffsnummer zurückgegeben.

hWnd = FindWindow("XLMAIN", 0)

If hWnd = 0 Then	' 0 bedeutet, daß Excel nicht ausgeführt wird.

Exit Sub

Else

' Excel wird ausgeführt. Verwenden der API-Funktion

' SendMessage, um Excel in der Tabelle ausgeführter

' Objekte einzutragen.

SendMessage hWnd, WM_USER + 18, 0, 0

End If

End Sub


Implements-Anweisung (Beispiel)

Das folgende Beispiel zeigt, wie die Implements-Anweisung verwendet wird, um eine Gruppe von Deklarationen mehreren Klassen zur Verfügung zu stellen. Wenn die Deklarationen über die Implements-Anweisung gemeinsam genutzt werden, muß keine der beteiligten Klassen selbst Deklarationen festlegen.

Angenommen, es gibt zwei Formulare. Das Formular Auswahl enthält zwei Schaltflächen, Kundendaten und Lieferantendaten. Um die Namens- und Adressinformationen für einen Kunden bzw. einen Lieferanten einzugeben, klickt der Benutzer im Formular Auswahl auf die Schaltfläche Kundendaten bzw. Lieferantendaten und gibt dann Namen und Adresse über das Formular Dateneingabe ein. Dieses Formular enthält zwei Textfelder, Name und Adresse.

Der folgende Code für gemeinsam genutzte Deklarationen befindet sich in einer Klasse namens PersonalData:

Public Name As String

Public Address As String

Der Code zur Unterstützung der Kundendaten befindet sich in einem Klassenmodul namens Customer:

Implements PersonalData

Private Property Get PersonalData_Address() As String

PersonalData_Address = "CustomerAddress"

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_Name = "CustomerName"

End Property

Der Code zur Unterstützung der Lieferantendaten befindet sich in einem Klassenmodul namens Supplier:

Implements PersonalData

Private Property Get PersonalData_Address() As String

PersonalData_Address = "SupplierAddress"

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_Name = "SupplierName"

End Property

Der folgende Code unterstützt das Formular Auswahl:

Private cust As New Customer

Private sup As New Supplier

Private Sub Command1_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

Der folgende Code unterstützt das Formular Dateneingabe:

Private m_pd As PersonalData

Private Sub Form_Load()

    With m_pd

        Text1 = .Name

        Text2 = .Address

    End With

End Sub

Public Property Set PD(Data As PersonalData)

    Set m_pd = Data

End Property


LBound-Funktion (Beispiel)

In diesem Beispiel wird die LBound-Funktion verwendet, um den kleinsten verfügbaren Index für die angegebene Dimension eines Datenfeldes zu bestimmen. Mit der Option Base-Anweisung können Sie die Standarduntergrenze für Datenfeldindizes von 0 ändern.

Dim Untergrenze

Dim Feld1(1 To 10, 5 To 15, 10 To 20) 	' Datenfeldvariablen

' deklarieren

Dim EinFeld(10)

Untergrenze = Lbound(Feld1, 1) 	' Liefert 1.

Untergrenze = Lbound(Feld1, 3)	' Liefert 10.

Untergrenze = Lbound(EinFeld)	' Liefert 0 oder 1, je nach

' Einstellung von Option Base.


Let-Anweisung (Beispiel)

In diesem Beispiel wird die Let-Anweisung explizit verwendet, um Variablen den Wert von Ausdrücken zuzuweisen.

Dim Text1, Ganz1

' Die folgenden Variablenzuweisungen verwenden die Let-Anweisung.

Let Text1 = "Hallo Welt"

Let Ganz1 = 5

Die folgenden Zuweisungen sind äquivalent, verwenden aber keine Let-Anweisung.

Dim Text1, Ganz1

Text1 = "Hallo Welt"

Ganz1 = 5


Option Base-Anweisung (Beispiel)

In diesem Beispiel wird die Option Base-Anweisung verwendet, um die Standarduntergrenze für Datenfeldindizes (0) zu ändern. Die LBound-Funktion liefert den kleinsten verfügbaren Index für die angegebene Datenfelddimension. Die Option Base-Anweisung wird nur auf Modulebene verwendet.

Option Base 1	' Standard-Untergrenze für

' Datenfeldindizes auf 1 festlegen.

Dim Untergrenze

Dim Feld1(20), ZweiDFeld(3, 4) ' Datenfeldvariablen deklarieren.

Dim NullFeld(0 To 5)	' Standard-Untergrenze für

' Datenfeldindex ändern.

' Überprüfen der Untergrenzen von Datenfeldern mit der LBound-Funktion.

Untergrenze = LBound(Feld1)	' Liefert 1.

Untergrenze = LBound(ZweiDFeld, 2)	' Liefert 1.

Untergrenze = LBound(NullFeld)	' Liefert 0.


Option Compare-Anweisung (Beispiel)

In diesem Beispiel wird die Option Compare-Anweisung verwendet, um das Standardverfahren für Zeichenfolgenvergleiche festzulegen. Die Option Compare-Anweisung wird nur auf Modulebene verwendet.

' Vergleichsverfahren für Zeichenfolgen auf Binary festlegen.

Option compare Binary 	' "AAA" ist kleiner als "aaa"

' Vergleichsverfahren für Zeichenfolgen auf Text festlegen.

Option compare Text	' "AAA" und "aaa" sind gleich.


Option Explicit-Anweisung (Beispiel)

In diesem Beispiel wird die Option Explicit-Anweisung verwendet, um die explizite Deklaration aller Variablen zu erzwingen. Jede Verwendung einer nicht deklarierten Variablen führt zu einem Fehler beim Kompilieren. Die Option Explicit-Anweisung wird nur auf Modulebene verwendet.

Option explicit	' Explizite Variablendeklaration erzwingen.

Dim Var1	' Variable deklarieren.

Ganz1 = 10	' Nicht deklarierte Variable löst Fehler aus.

Var1 = 10	' Deklariert, daher kein Fehler.


Option Private-Anweisung (Beispiel)

In diesem Beispiel wird die Option Private-Anweisung demonstriert, die auf Modulebene verwendet wird, um das gesamte Modul als privat zu kennzeichnen. Mit Option Private Module stehen Teile der Modulebenen, die nicht als Private deklariert wurden, anderen Modulen in dem Projekt zur Verfügung, anderen Projekten oder Anwendungen jedoch nicht.

Option private Module	' Das Modul ist privat.


Private-Anweisung (Beispiel)

In diesem Beispiel wird die Private-Anweisung demonstriert, die auf Modulebene verwendet wird, um Variablen als privat zu deklarieren. Dadurch wird der Zugriff auf diese Variablen auf das Modul beschränkt, in dem sie deklariert wurden.

Private Zahl As Integer	' Private Variable vom Typ

' Integer.

Private NamenFeld(1 To 5) As String ' Private Datenfeldvariable.

' Mehrere Deklarationen, zwei vom Typ Variant und eine vom Typ Integer,

' (alle privat).

Private Var1, Var2, Var3 As Integer


Property Get-Anweisung (Beispiel)

In diesem Beispiel wird die Property Get-Anweisung verwendet, um eine Eigenschaftsprozedur zu definieren, die den Wert einer Eigenschaft abruft. Die Eigenschaft bestimmt die aktuelle Farbe des Stiftes in Form einer Zeichenfolge.

Dim AktFarbe As Integer

Const SCHWARZ = 0, ROT = 1, GRÜN = 2, BLAU = 3

' Aktuelle Farbe des Stiftes als Zeichenfolge zurückgeben.

Property Get StiftFarbe() As String

Select Case AktFarbe

Case ROT

StiftFarbe = "Rot"

Case GRÜN

StiftFarbe = "Grün"

Case BLAU

StiftFarbe = "Blau"

End Select

End Property

' Die folgende Zeile gibt die Farbe des Stiftes durch Aufrufen der

' Property Get-Prozedur zurück.

Farbe = StiftFarbe()


Property Let-Anweisung (Beispiel)

In diesem Beispiel wird die Property Let-Anweisung verwendet, um eine Prozedur zu definieren, die einer Eigenschaft einen Wert zuweist. Die Eigenschaft bestimmt die Farbe des Stiftes in einer Grafikanwendung.

Dim AktFarbe As Integer

Const SCHWARZ = 0, ROT = 1, GRÜN = 2, BLAU = 3

' Die StiftFarbe-Eigenschaft für eine Grafikanwendung wird festgelegt.

' Die auf Modulebene deklarierte Variable AktFarbe wird mit einem

' numerischen Wert belegt, der die zum Zeichnen verwendete Farbe

' angibt.

Property Let StiftFarbe(Farbe As String)

Select Case Farbe	' Zeichenfolge für Farbe prüfen.

Case "Rot"

AktFarbe = ROT	' Wert für Rot zuweisen.

Case "Grün"

AktFarbe = GRÜN	' Wert für Grün zuweisen.

Case "Blau"

AktFarbe = BLAU	' Wert für Blau zuweisen.

Case Else

AktFarbe = SCHWARZ	' Standardwert zuweisen.

End Select

End Property

' Die folgende Zeile legt die StiftFarbe-Eigenschaft einer

' Grafikanwendung fest, indem die Property Let-Prozedur aufgerufen

' wird.

StiftFarbe = "Rot"


Property Set-Anweisung (Beispiel)

In diesem Beispiel wird die Property Set-Anweisung verwendet, um eine Eigenschaftsprozedur zu definieren, die einen Verweis auf ein Objekt festlegt.

' Die Pen-Eigenschaft kann auf verschiedene Implementierungen des

' Stiftes festgelegt werden.

Property Set Pen(S As Object)

Set AktStift = S	' Dem Objekt wird der Stift

' zugewiesen.

End Property


Public-Anweisung (Beispiel)

In diesem Beispiel wird die Public-Anweisung auf Modulebene (Abschnitt "Allgemein") eines Standardmoduls verwendet, um Variablen explizit öffentlich zu deklarieren, d.h. allen Prozeduren in allen Modulen aller Anwendungen zur Verfügung zu stellen, sofern nicht Option Private Module aktiviert wurde.

Public Zahl As Integer	' Öffentliche Variable vom

' Typ Integer.

Public NamenFeld(1 To 5) As String	' Öffentliche

' Datenfeldvariable.

' Mehrere Deklarationen, zwei vom Typ Variant und eine vom Typ Integer,

' (alle öffentlich).

Public Var1, Var2, Var3 As Integer


ReDim-Anweisung (Beispiel)

In diesem Beispiel wird die ReDim-Anweisung verwendet, um Variablen für dynamische Datenfelder zu deklarieren und dann Speicher zu reservieren bzw. freizugeben. Es wird angenommen, daß Option Base auf 1 festgelegt ist.

Dim Feld1() As Integer	' Dynamisches Datenfeld deklarieren.

Redim Feld1(5)	' 5 Elemente reservieren.

For I = 1 To 5	' 5 Schleifendurchläufe.

Feld1(I) = I	' Datenfeld initialisieren.

Next I

Die nächste Anweisung ändert die Größe des Datenfeldes und löscht die Elemente.

Redim Feld1(10)	' Größe auf 10 Elemente ändern.

For I = 1 To 10	' 10 Schleifendurchläufe.

Feld1(I) = I	' Datenfeld initialisieren.

Next I

Die nächste Anweisung ändert die Größe des Datenfeldes, löscht die Elemente jedoch nicht.

Redim Preserve Feld1(15)	' Größe auf 15 Elemente ändern.


Rem-Anweisung (Beispiel)

Dieses Beispiel veranschaulicht die unterschiedlichen Formate der Rem-Anweisung, die zum Einfügen erklärender Kommentare in ein Programm verwendet wird.

Dim Text1, Text2

Text1 = "Hallo": Rem Kommentar nach Anweisung und Doppelpunkt.

Text2 = "Tschüß" 	' Auch das ist ein Kommentar, es wird kein

' Doppelpunkt benötigt.


Set-Anweisung (Beispiel)

In diesem Beispiel wird die Set-Anweisung verwendet, um Variablen Verweise auf Objekte zuzuweisen. Objekt1 wird als gültiges Objekt angenommen, das eine Text-Eigenschaft hat.

Dim NeuObjekt , Objekt1, Text1

Set NeuObjekt = Objekt1	' Objektverweis zuweisen.

' NeuObjekt und Objekt1 verweisen auf dasselbe Objekt.

Objekt1.Text = "Hallo Welt"	' Eigenschaft initialisieren.

Text1 = NeuObjekt.Text	' Liefert "Hallo Welt".

' Zuordnung beenden. NeuObjekt verweist anschließend nicht mehr auf

' Objekt1.

Set NeuObjekt = Nothing	' Objekt freigeben.


Static-Anweisung (Beispiel)

In diesem Beispiel wird die Static-Anweisung verwendet, um den Wert einer Variablen während der gesamten Laufzeit des Moduls zu speichern.

' Funktionsdefinition.

Function SummeSpeichern(Zahl)

' Nur die Variable Aufsummieren behält ihren Wert zwischen

' Funktionsaufrufen bei.

Static Aufsummieren

Aufsummieren = Aufsummieren + Zahl

SummeSpeichern = Aufsummieren

End Function

' Statische Funktionsdefinition.

Static Function Funktion1(Arg1, Arg2, Arg3)

' Alle lokalen Variablen behalten ihre Werte zwischen

' Funktionsaufrufen bei.

Aufsummieren = Arg1 + Arg2 + Arg3

Hälfte = Aufsummieren / 2

Funktion1 = Hälfte

End Function


Sub-Anweisung (Beispiel)

In diesem Beispiel wird die Sub-Anweisung verwendet, um Namen, Argumente und Prozedurrumpf einer Sub-Prozedur zu definieren.

' Definition der Sub-Prozedur.

' Sub-Prozedur mit zwei Argumenten.

Sub FlächeBerechnen(Länge, Breite)

Dim Fläche As Double	' Lokale Variable deklarieren.

If Länge = 0 Or Breite = 0 Then

' Wenn ein Argument = 0,

Exit Sub	' dann Sub unmittelbar

' verlassen.

End If

Fläche = Länge * Breite	' Rechteckfläche berechnen.

Debug.Print Fläche	' Fläche im Testfenster

' ausgeben.

End Sub


Type-Anweisung (Beispiel)

In diesem Beispiel wird die Type-Anweisung verwendet, um einen benutzerdefinierten Datentyp zu definieren. Die Type-Anweisung wird nur auf Modulebene verwendet. Wenn eine Type-Anweisung in einem Klassenmodul angezeigt wird, muß ihr das Schlüsselwort Private vorangestellt werden.

Type Angestellter	' Benutzerdefinierten Typ erstellen.

PersNr As Integer	' Elemente des Typs definieren.

Name As String * 20

Adresse As String * 30

Telefon As Long

Einstellungsdatum As Date

End Type

Sub CreateRecord()

Dim Datensatz1 As Angestellter	' Variable deklarieren.

' Die Zuweisung zur Variablen Angestellter muß in einer Prozedur

' erfolgen.

Datensatz1.PersNr = 12003	' Einem Element wird ein Wert

' zugewiesen.

End Sub


UBound-Funktion (Beispiel)

In diesem Beispiel wird die UBound-Funktion verwendet, um den größten verfügbaren Index für die angegebene Dimension eines Datenfeldes zu bestimmen.

Dim Obergrenze

Dim Feld1(1 To 10, 5 To 15, 10 To 20)	' Datenfeldvariablen

' deklarieren.

Dim EinFeld(10)

Obergrenze = UBound(Feld1, 1)	' Liefert 10.

Obergrenze = UBound(Feld1, 3)	' Liefert 20.

Obergrenze = UBound(EinFeld)	' Liefert 10.


CallByName-Funktion (Beispiel)

In diesem Beispiel wird die CallByName-Funktion verwendet, um die Move-Methode einer Befehlschaltfläche aufzurufen.

Außerdem werden in diesem Beispiel ein Formular (Form1) mit einer Schaltfläche (Command1) und ein Bezeichnungsfeld (Label1) verwendet. Beim Laden des Formulars wird die Caption-Eigenschaft des Bezeichnungsfelds auf "Move" gesetzt, den Namen der aufzurufenden Methode. Wenn Sie auf die Schaltfläche klicken, ruft die CallByName-Funktion die Methode auf, um die Position der Schaltfläche zu ändern.

Option Explicit

Private Sub Form_Load()

Label1.Caption = "Move"	' Name der Move-Methode.

End Sub

Private Sub Command1_Click()

If Command1.Left <> 0 Then

CallByName Command1, Label1.Caption, vbMethod, 0, 0

Else

CallByName Command1, Label1.Caption, vbMethod, 500, 500

End If


As

Das Schlüsselwort As wird in folgenden Zusammenhängen verwendet:

Const-Anweisung

Declare-Anweisung

Dim-Anweisung

Function-Anweisung

Name-Anweisung

Open-Anweisung

Private-Anweisung

Property Get-Anweisung

Property Let-Anweisung

Property Set-Anweisung

Public-Anweisung

ReDim-Anweisung

Static-Anweisung

Sub-Anweisung

Type-Anweisung


Binary

Das Schlüsselwort Binary wird in folgenden Zusammenhängen verwendet:

Open-Anweisung

Option Compare-Anweisung


ByRef

Das Schlüsselwort ByRef wird in folgenden Zusammenhängen verwendet:

Call-Anweisung

Declare-Anweisung

Function-Anweisung

Property Get-Anweisung

Property Let-Anweisung

Property Set-Anweisung

Sub-Anweisung


ByVal

Das Schlüsselwort ByVal wird in folgenden Zusammenhängen verwendet:

Call-Anweisung

Declare-Anweisung

Function-Anweisung

Property Get-Anweisung

Property Let-Anweisung

Property Set-Anweisung

Sub-Anweisung


Date

Das Schlüsselwort Date wird in folgenden Zusammenhängen verwendet:

Date-Datentyp

Date-Funktion

Date-Anweisung


Else

Das Schlüsselwort Else wird in folgenden Zusammenhängen verwendet:

If...Then...Else-Anweisung

Select Case-Anweisung


Error

Das Schlüsselwort Error wird in folgenden Zusammenhängen verwendet:

Error-Funktion

Error-Anweisung

On Error-Anweisung


For

Das Schlüsselwort For wird in folgenden Zusammenhängen verwendet:

For...Next-Anweisung

For Each...Next-Anweisung

Open-Anweisung


Get

Das Schlüsselwort Get wird in folgenden Zusammenhängen verwendet:

Get-Anweisung

Property Get-Anweisung


Input

Das Schlüsselwort Input wird in folgenden Zusammenhängen verwendet:

Input-Funktion

Input #-Anweisung

Line Input #-Anweisung

Open-Anweisung


Is

Das Schlüsselwort Is wird in folgenden Zusammenhängen verwendet:

If...Then...Else-Anweisung

Is-Operator

Select Case-Anweisung


Len

Das Schlüsselwort Len wird in folgenden Zusammenhängen verwendet:

Len-Funktion

Open-Anweisung


Let

Das Schlüsselwort Let wird in folgenden Zusammenhängen verwendet:

Let-Anweisung

Property Let-Anweisung


Lock

Das Schlüsselwort Lock wird in folgenden Zusammenhängen verwendet:

Lock, Unlock-Anweisungs

Open-Anweisung


Mid

Das Schlüsselwort Mid wird in folgenden Zusammenhängen verwendet:

Mid-Funktion

Mid-Anweisung


New

Das Schlüsselwort New wird in folgenden Zusammenhängen verwendet:

Dim-Anweisung

Private-Anweisung

Public-Anweisung

Set-Anweisung

Static-Anweisung


Next

Das Schlüsselwort Next wird in folgenden Zusammenhängen verwendet:

For...Next-Anweisung

For Each...Next-Anweisung

On Error-Anweisung

Resume-Anweisung


On

Das Schlüsselwort On wird in folgenden Zusammenhängen verwendet:

On Error-Anweisung

On...GoSub-Anweisung

On...GoTo-Anweisung


Option

Das Schlüsselwort Option wird in folgenden Zusammenhängen verwendet:

Option Base-Anweisung

Option Compare-Anweisung

Option Explicit-Anweisung

Option Private-Anweisung


Optional

Das Schlüsselwort Optional wird in folgenden Zusammenhängen verwendet:

Declare-Anweisung

Function-Anweisung

Property Get-Anweisung

Property Let-Anweisung

Property Set-Anweisung

Sub-Anweisung


ParamArray

Das Schlüsselwort ParamArray wird in folgenden Zusammenhängen verwendet:

Declare-Anweisung

Function-Anweisung

Property Get-Anweisung

Property Let-Anweisung

Property Set-Anweisung

Sub-Anweisung


Print

Das Schlüsselwort Print wird in folgenden Zusammenhängen verwendet:

Print-Methode

Print #-Anweisung


Private

Das Schlüsselwort Private wird in folgenden Zusammenhängen verwendet:

Const-Anweisung

Declare-Anweisung

Enum-Anweisung

Function-Anweisung

Option Private-Anweisung

Private-Anweisung

Property Get-Anweisung

Property Let-Anweisung

Property Set-Anweisung

Sub-Anweisung

Type-Anweisung


Property

Das Schlüsselwort Property wird in folgenden Zusammenhängen verwendet:

Property Get-Anweisung

Property Let-Anweisung

Property Set-Anweisung


Public

Das Schlüsselwort Public wird in folgenden Zusammenhängen verwendet:

Const-Anweisung

Declare-Anweisung

Enum-Anweisung

Event-Anweisung

Function-Anweisung

Property Get-Anweisung

Property Let-Anweisung

Property Set-Anweisung

Public-Anweisung

Sub-Anweisung

Type-Anweisung


Resume

Das Schlüsselwort Resume wird in folgenden Zusammenhängen verwendet:

On Error-Anweisung

Resume-Anweisung


Seek

Das Schlüsselwort Seek wird in folgenden Zusammenhängen verwendet:

Seek-Funktion

Seek-Anweisung


Set

Das Schlüsselwort Set wird in folgenden Zusammenhängen verwendet:

Set-Anweisung

Property Set-Anweisung


Static

Das Schlüsselwort Static wird in folgenden Zusammenhängen verwendet:

Function-Anweisung

Property Get-Anweisung

Property Let-Anweisung

Property Set-Anweisung

Static-Anweisung

Sub-Anweisung


Step

Das Schlüsselwort Step wird in folgenden Zusammenhängen verwendet:

For...Next-Anweisung

For Each...Next-Anweisung


String

Das Schlüsselwort String wird in folgenden Zusammenhängen verwendet:

String-Datentyp

String-Funktion


Then

Das Schlüsselwort Then wird in folgenden Zusammenhängen verwendet:

#If...Then...#Else-Anweisung

If...Then...Else-Anweisung


Time

Das Schlüsselwort Time wird in folgenden Zusammenhängen verwendet:

Time-Funktion

Time-Anweisung


To

Das Schlüsselwort To wird in folgenden Zusammenhängen verwendet:

Dim-Anweisung

For...Next-Anweisung

Lock, Unlock-Anweisungs

Private-Anweisung

Public-Anweisung

ReDim-Anweisung

Select Case-Anweisung

Static-Anweisung

Type-Anweisung


WithEvents

Das Schlüsselwort WithEvents wird in folgenden Zusammenhängen verwendet:

Dim-Anweisung

Private-Anweisung

Public-Anweisung


Dokumentkonventionen

In der Visual Basic-Dokumentation werden folgende typographische Konventionen verwendet.

Konvention	Beschreibung
Sub, If, ChDir, Print, True, Debug	Fett formatierte Wörter mit groß geschriebenem Anfangsbuchstaben kennzeichnen sprachspezifische Schlüsselwörter.
setup	Wörter, die wie angezeigt eingegeben werden müssen, sind fett formatiert.
Objekt, Varname, ArgListe	Kursiv formatierte Wörter mit großem Anfangsbuchstaben kennzeichnen Platzhalter für Informationen, die Sie angeben.
pathname, filenumber	Fett, kursiv formatierte Wörter mit kleinem Anfangsbuchstaben kennzeichnen Platzhalter für Argumente, wobei Sie entweder die Positionssyntax oder die Syntax für benannte Argumente verwenden können.
[Ausdruckliste]	Elemente der Syntax, die von eckigen Klammern eingeschlossen sind, sind optional.
{While | Until}	In der Syntax kennzeichnen Klammern und ein senkrechter Strich eine verbindliche Wahl zwischen zwei oder mehr Elementen. Sie müssen eines der Elemente wählen, solange nicht alle Elemente auch in eckigen Klammern eingeschlossen sind. Beispiel:
[{Das | OderDieses}]
ESC, EINGABETASTE	Wörter in Großbuchstaben kennzeichnen Tastennamen und -folgen.
ALT+F1, STRG+R	Ein Pluszeichen (+) zwischen Tastennamen kennzeichnet eine Tastenkombination. So bedeutet z.B. ALT+F1, daß die ALT-TASTE gedrückt bleiben soll, wenn die F1-TASTE gedrückt wird.
Code-Konventionen

Es werden die folgenden Code-Konventionen verwendet:

Beispiel-Code	Beschreibung
Zeichenflg1 = "Hallo, Welt!"	Welt!" Diese Schriftart wird für Code, Variablen und Fehlermeldungen verwendet.
' Dies ist ein Kommentar.	' Dies ist ein Kommentar. Ein Apostroph (') leitet einen Kommentar im Code ein.
TestVar = "Dies ist ein " _ & "Beispiel wie Code" _ & " fortgesetzt wird."	Ein Leerzeichen und ein Unterstrich ( _) setzen eine Code-Zeile fort.


Error-Funktion (Beispiel)

In diesem Beispiel wird die Error-Funktion verwendet, um Fehlermeldungen auszugeben, die den angegebenen Fehlernummern entsprechen.

Dim FehlerNummer

For Fehlernummer = 61 To 64	' Werte 61 - 64 durchlaufen.

Debug.Print Error(Fehlernummer)	' Fehler im Testfenster ausgeben.

Next Fehlernummer


Error-Anweisung (Beispiel)

In diesem Beispiel wird die Error-Anweisung verwendet, um den Fehler mit der Nummer 11 zu simulieren.

On Error Resume Next	' Fehlerbehandlung zurückstellen.

Error 11	' Fehler "Division durch Null" simulieren.


On Error-Anweisung (Beispiel)

In diesem Beispiel wird zuerst die On Error GoTo-Anweisung verwendet, um die Position einer Fehlerbehandlungsroutine in einer Prozedur anzuzeigen. Im Beispiel wird bei dem Versuch, eine geöffnete Datei zu löschen, der Fehler mit der Nummer 55 ausgelöst. Der Fehler wird in der Fehlerbehandlungsroutine bearbeitet, und die Ausführung wird anschließend mit der Anweisung fortgesetzt, die den Fehler verursacht hat. Die On Error GoTo 0-Anweisung deaktiviert die Fehlerbehandlung. Dann wird die On Error Resume Next-Anweisung verwendet, um die Fehlerbehandlung zurückzustellen, damit der Kontext für den von der nächsten Anweisung ausgelösten Fehler mit Sicherheit bestimmt werden kann. Err.Clear wird verwendet, um die Eigenschaften des Err-Objekts zurückzusetzen, nachdem der Fehler bearbeitet wurde.

Sub OnErrorAnweisungDemo()

On Error GoTo ErrorHandler	' Fehlerbehandlung aktivieren.

Open "DATEI1" For Output As #1	' Datei für Ausgabe öffnen.

Kill "DATEI1"	' Versuch, geöffnete Datei zu

' löschen.

On Error Goto 0	' Fehlerbehandlung aus.

On Error Resume Next	' Fehlerbehandlung

' zurückstellen.

ObjectRef = GetObject("Word1.Basic")	' Nicht existierendes Objekt

' starten

'Auf mögliche Automatisierungsfehler überprüfen.

If Err.Number = 440 Or Err.Number = 432 Then prüfen.

' Erklärung für Benutzer ausgeben und anschließend Err-Objekt

' zurücksetzen.

Mldg = "Fehler beim Versuch, das Automatisierungsobjekt zu öffnen!"

MsgBox Mldg, , "Test für Zurückstellung von Fehlern"

Err.Clear	' Felder des Err-Objekts

' zurücksetzen

End If

Exit Sub	' Vor Fehlerbehandlung beenden.

ErrorHandler:	' Fehlerbehandlungsroutine.

Select Case Err.Number	' Fehlernummer auswerten.

Case 55	' Fehler "Datei bereits

' geöffnet".

Close #1	' Geöffnete Datei schließen.

Case Else

' Andere Fälle hier bearbeiten...

End Select

Resume	' Ausführung in der Zeile

' fortsetzen, die den Fehler

End Sub	' ausgelöst hat.


Resume-Anweisung (Beispiel)

In diesem Beispiel wird die Resume-Anweisung verwendet, um die Fehlerbehandlung in einer Prozedur zu beenden und dann die Ausführung mit der Anweisung fortzusetzen, die den Fehler ausgelöst hat. Fehlernummer 55 wird ausgelöst, um die Verwendung der Resume-Anweisung zu veranschaulichen.

Sub ResumeAnweisungDemo()

On Error GoTo ErrorHandler	' Fehlerbehandlungsroutine

' aktivieren.

Open "DATEI1" For Output As #1	' Datei für Ausgabe öffnen.

Kill "DATEI1"	' Versuch, geöffnete Datei zu

' löschen.

Exit Sub	' Sub vor Fehlerbehandlung beenden.

ErrorHandler:	' Fehlerbehandlungsroutine.

Select Case Err.Number	' Fehlernummer auswerten.

Case 55	' Fehler "Datei bereits

' geöffnet".

Close #1	' Geöffnete Datei schließen.

Case Else

' Andere Fälle hier bearbeiten....

End Select

Resume	' Ausführung in derselben Zeile

' fortsetzen, die den Fehler.

End Sub	' ausgelöst hat.


Error-Funktion

Gibt die Fehlermeldung zu einer bestimmten Fehlernummer zurück.

Syntax

Error[(Fehlernummer)]

Das optionale Argument Fehlernummer kann eine beliebige gültige Fehlernummer sein. Wenn Fehlernummer eine gültige Fehlernummer ist, die nicht definiert ist, gibt Error die Zeichenfolge "Anwendungs- oder objektdefinierter Fehler" zurück. Wenn Fehlernummer ungültig ist, tritt ein Fehler auf. Wenn Fehlernummer nicht angegeben wird, wird die Meldung zurückgegeben, die dem zuletzt aufgetretenen Laufzeitfehler entspricht. Wenn kein Laufzeitfehler aufgetreten ist oder Fehlernummer den Wert 0 hat, gibt Error eine Null-Zeichenfolge ("") zurück.

Bemerkungen

Untersuchen Sie die Einstellungen der Eigenschaften des Err-Objekts, um den zuletzt aufgetretenen Laufzeitfehler zu bestimmen. Der Rückgabewert der Error-Funktion entspricht der Description-Eigenschaft des Err-Objekts.


Error-Anweisung

Simuliert das Auftreten eines Fehlers.

Syntax

Error Fehlernummer

Das erforderliche Argument Fehlernummer kann eine beliebige gültige Fehlernummer sein.

Bemerkungen

Die Error-Anweisung wird aus Gründen der Kompatibilität zu früheren Versionen unterstützt. Verwenden Sie in neu geschriebenem Code (insbesondere beim Erstellen von Objekten) die Raise-Methode des Err-Objekts, um Laufzeitfehler auszulösen.

Wenn Fehlernummer definiert ist, ruft die Error-Anweisung die Fehlerbehandlungsroutine auf, nachdem den Eigenschaften des Err-Objekts die folgenden Standardwerte zugewiesen wurden:

Eigenschaft	Wert
Number	Wert, der als Argument für die Error-Anweisung angegeben wurde. Dies kann eine beliebige gültige Fehlernummer sein.
Source	Name des aktuellen Visual Basic-Projekts.
Description	Zeichenfolgenausdruck, der dem Rückgabewert der Error-Funktion für den angegebenen Wert von Number entspricht (sofern diese Zeichenfolge existiert). Wenn die Zeichenfolge nicht existiert, enthält Description eine Null-Zeichenfolge ("").
HelpFile	Der vollständige Dateiname mit Laufwerk und Pfad für die Visual Basic-Hilfedatei.
HelpContext	Die Kontextkennung in der Visual Basic-Hilfedatei für den Fehler, der der Number-Eigenschaft entspricht.
LastDLLError	Null.
Wenn keine Fehlerbehandlungsroutine existiert oder aktiviert ist, wird eine Fehlermeldung aus den Eigenschaften des Err-Objekts erzeugt und angezeigt.

Anmerkung Nicht alle Visual Basic Host-Anwendungen können Objekte erstellen. Lesen Sie in der Dokumentation Ihrer Host-Anwendung nach, ob sie Klassen und Objekte erstellen kann.


On Error-Anweisung

Aktiviert eine Fehlerbehandlungsroutine und gibt deren Position innerhalb einer Prozedur an. Die Anweisung kann auch zum Deaktivieren einer Fehlerbehandlungsroutine verwendet werden.

Syntax

On Error GoTo Zeile

On Error Resume Next

On Error GoTo 0

Sie können die On Error-Anweisung mit folgender Syntax verwenden:

Anweisung	Beschreibung
On Error GoTo Zeile	Aktiviert die Fehlerbehandlungsroutine, die in der Zeile beginnt, welche im erforderlichen Argument Zeile festgelegt wurde. Das Argument Zeile ist eine beliebige Zeilenmarke oder Zeilennummer. Tritt danach ein Laufzeitfehler auf, so verzweigt die Programmsteuerung zu Zeile und aktiviert so die Fehlerbehandlungsroutine. Die angegebene Zeile muß sich in derselben Prozedur wie die On Error-Anweisung befinden, andernfalls tritt ein Fehler zur Kompilierungszeit auf.
On Error Resume Next	Legt fest, daß das Programm die Ausführung beim Auftreten eines Laufzeitfehlers mit der Anweisung fortsetzt, die auf die fehlerverursachende Anweisung folgt. Sie sollten diese Form anstelle von On Error GoTo verwenden, wenn Sie auf Objekte zugreifen.
On Error GoTo 0	Deaktiviert alle aktivierten Fehlerbehandlungsroutinen in der aktuellen Prozedur.
Bemerkungen

Wenn Sie keine On Error-Anweisung verwenden, führt jeder Laufzeitfehler zur Anzeige einer Fehlermeldung und zum Beenden des Programms.

Eine "aktivierte" Fehlerbehandlungsroutine ist eine Routine, die durch eine On Error-Anweisung "eingeschaltet" wurde. Eine "aktive" Fehlerbehandlungsroutine ist eine aktivierte Behandlungsroutine, die momentan einen Fehler verarbeitet. Wenn ein Fehler auftritt, während eine Fehlerbehandlungsroutine aktiv ist (also zwischen dem Auftreten des Fehlers und der Ausführung einer Resume-, Exit Sub-, Exit Function- oder Exit Property-Anweisung), kann die Fehlerbehandlungsroutine den Fehler nicht bearbeiten. Das Programm wird in der aufrufenden Prozedur fortgesetzt. Falls für die aufrufende Prozedur eine Fehlerbehandlungsroutine verfügbar ist, wird diese aktiviert, um den Fehler zu verarbeiten. Ist auch diese Fehlerbehandlungsroutine bereits aktiv, so wird die Steuerung so lange an die früheren aufrufenden Prozeduren weitergegeben, bis eine aktivierte Fehlerbehandlungsroutine gefunden wird, die jedoch momentan nicht aktiv ist. Wenn keine aktivierte Fehlerbehandlungsroutine im nichtaktiven Zustand gefunden wird, wird das Programm durch den Fehler an der Stelle beendet, an der der Fehler tatsächlich aufgetreten ist. Sobald die Fehlerbehandlungsroutine die Steuerung an die aufrufende Prozedur zurückgibt, wird diese Prozedur zur aktuellen Prozedur. Nachdem ein Fehler von einer Fehlerbehandlungsroutine in einer beliebigen Prozedur verarbeitet wurde, setzt das Programm die Ausführung in der aktuellen Prozedur an der Stelle fort, die durch die Resume-Anweisung angegeben ist.

Anmerkung Eine Fehlerbehandlungsroutine ist keine Sub- oder Function-Prozedur, sondern ein durch eine Zeilenmarke oder Zeilennummer gekennzeichneter Code-Bereich.

Fehlerbehandlungsroutinen verwenden den Wert in der Number-Eigenschaft des Err-Objekts, um die Fehlerursache zu bestimmen. Die Fehlerbehandlungsroutine sollte die wichtigen Eigenschaftswerte des Err-Objekts überprüfen oder speichern, bevor ein anderer Fehler auftreten kann oder bevor eine Prozedur, die einen Fehler auslösen kann, aufgerufen wird. Die Werte in den Eigenschaften des Err-Objekts geben nur den zuletzt aufgetretenen Fehler wieder. Die Fehlermeldung für Err.Number ist in Err.Description enthalten.

Das Programm setzt nach einer On Error Resume Next-Anweisung die Ausführung mit der Anweisung fort, die unmittelbar auf die Anweisung folgt, die den Laufzeitfehler verursacht hat, oder mit der Anweisung, die unmittelbar auf den letzten Aufruf einer anderen Prozedur folgt, in der die On Error Resume Next-Anweisung enthalten ist. Dadurch kann das Programm die Ausführung trotz eines Laufzeitfehlers fortsetzen, und Sie können die Fehlerbehandlungsroutine direkt an der Stelle durchführen, an der die fehlerverursachende Anweisung auftritt, anstatt an eine andere Stelle innerhalb der Prozedur zu verzweigen. Eine On Error Resume Next-Anweisung wird inaktiv, wenn eine andere Prozedur aufgerufen wird. Sie sollten daher eine On Error Resume Next-Anweisung in jeder aufgerufenen Routine ausführen, wenn Sie die Fehlerbehandlung direkt in der jeweiligen Routine durchführen möchten.

Anmerkung Die Konstruktion On Error Resume Next ist möglicherweise besser geeignet als On Error GoTo, wenn Sie Fehler verarbeiten, die beim Zugriff auf andere Objekte ausgelöst wurden. Wenn Sie Err nach jeder Interaktion mit einem Objekt überprüfen, wird jederzeit eindeutig festgestellt, auf welches Objekt der Code zugegriffen hat. Sie wissen daher, welches Objekt den Fehler-Code in Err.Number gespeichert hat und welches (in Err.Source angegebene) Objekt den Fehler ursprünglich ausgelöst hat.

On Error GoTo 0 deaktiviert die Fehlerbehandlung in der aktuellen Prozedur. Dabei wird die Zeile 0 nicht als Startpunkt des Fehlerbehandlungs-Codes interpretiert (auch dann nicht, wenn die Prozedur eine Zeile 0 enthält). Eine Fehlerbehandlungsroutine ohne eine On Error GoTo 0-Anweisung wird beim Verlassen einer Prozedur automatisch deaktiviert.

Damit der Fehlerbehandlungs-Code nicht ausgeführt wird, wenn kein Fehler aufgetreten ist, können Sie eine geeignete Exit Sub-, Exit Function- oder Exit Property-Anweisung unmittelbar vor die Fehlerbehandlungsroutine schreiben, wie im folgenden Beispiel:

Sub InitialisiereMatrix(Var1, Var2, Var3, Var4)

On Error GoTo ErrorHandler

. . .

Exit Sub

ErrorHandler:

. . .

Resume Next

End Sub

In diesem Beispiel steht der Fehlerbehandlungs-Code hinter der Exit Sub-Anweisung und vor der End Sub-Anweisung, um ihn vom normalen Programmablauf in der Prozedur zu trennen. Sie können Fehlerbehandlungs-Code ansonsten beliebig innerhalb einer Prozedur positionieren.

Nichtaufgefangene Fehler in Objekten werden zur steuernden Anwendung zurückgegeben, wenn das Objekt als ausführbare Datei aktiviert ist. Innerhalb der Entwicklungsumgebung werden die nichtaufgefangenen Fehler nur zur steuernden Anwendung zurückgegeben, wenn die entsprechenden Optionen aktiviert sind. Um zu erfahren, welche Optionen während der Fehlerbehandlung aktiviert sein sollten, wie sie aktiviert werden und ob die Host-Anwendung Klassen erstellen kann, lesen Sie die Dokumentation Ihrer Host-Anwendung.

Wenn Sie ein Objekt erstellen, das auf andere Objekte zugreift, sollten Sie versuchen, die aus diesen Objekten unbehandelt zurückgegebenen Fehler zu verarbeiten. Wenn Sie derartige Fehler nicht verarbeiten können, sollten Sie den Fehler-Code in Err.Number zuerst auf einen Ihrer eigenen Fehler festlegen und dann diese Fehler an die Routine zurückgeben, die Ihr Objekt aufgerufen hat. Sie sollten Ihren Fehler angeben, indem Sie Ihren Fehler-Code zur Konstanten vbObjectError addieren. Wenn Ihr Fehler-Code zum Beispiel den Wert 1052 hat, weisen Sie ihn wie folgt zu:

Err.Number = vbObjectError + 1052

Anmerkung Systemfehler beim Aufrufen von Dynamic Link Libraries (DLLs) oder Macintosh-Code-Ressourcen lösen keine Ausnahmen (Exceptions) aus, d.h., sie können mit der Fehlerbehandlung von Visual Basic nicht aufgefangen werden. Beim Aufrufen von DLL-Funktionen sollten Sie jeden Rückgabewert daraufhin überprüfen, ob der Aufruf erfolgreich war (entsprechend den API-Spezifikationen). Überprüfen Sie anderenfalls den Wert der LastDLLError-Eigenschaft des Err-Objekts.LastDLLError gibt auf dem Macintosh immer Null zurück.


Resume-Anweisung

Setzt die Ausführung des Programms nach dem Ende einer Fehlerbehandlungsroutine fort.

Syntax

Resume [0]

Resume Next

Resume Zeile

Sie können die Resume-Anweisung in einer der folgenden Formen verwenden:

Anweisung	Beschreibung
Resume	Bei Fehlern innerhalb der Prozedur mit der Fehlerbehandlungsroutine setzt das Programm die Ausführung mit der Anweisung fort, die den Fehler verursacht hat. Bei Fehlern in einer aufgerufenen Prozedur setzt das Programm die Ausführung mit der Anweisung fort, die zuletzt aus der Prozedur mit der Fehlerbehandlungsroutine eine andere Prozedur aufgerufen hat.
Resume Next	Bei Fehlern innerhalb der Prozedur mit der Fehlerbehandlungsroutine setzt das Programm die Ausführung mit der Anweisung fort, die unmittelbar auf die fehlerverursachende Anweisung folgt. Bei Fehlern in einer aufgerufenen Prozedur setzt das Programm die Ausführung mit der Anweisung fort, die auf die Anweisung folgt, die zuletzt aus der Prozedur mit der Fehlerbehandlungsroutine (oder der On Error Resume Next-Anweisung) eine andere Prozedur aufgerufen hat.
Resume Zeile	Das Programm setzt die Ausführung bei der Zeile fort, die im erforderlichen Argument Zeile angegeben ist. Das Argument Zeile ist eine Zeilenmarke oder Zeilennummer und muß sich in derselben Prozedur befinden wie die Fehlerbehandlungsroutine.
Bemerkungen

Die Verwendung einer Resume-Anweisung außerhalb einer Fehlerbehandlungsroutine führt zu einem Fehler.


Ein #Else-Abschnitt muß auf einen #If-Abschnitt folgen

#Else ist eine Anweisung für die bedingte Kompilierung. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Es wurde ein #Else-Abschnitt gefunden, vor dem die entsprechende #If- oder #ElseIf-Anweisung fehlt.

Überprüfen Sie, ob die vorangestellte #If-Anweisung von dieser #Else-Anweisung durch #End If getrennt wurde. Beachten Sie, daß in jedem #If-Abschnitt nur ein #Else zulässig ist. Daher können zwei aufeinanderfolgende #Else-Abschnitte die Ursache für diesen Fehler sein.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


#ElseIf, #Else oder #EndIf muß auf einen #If-Abschnitt folgen

#Else If, #Else und #End If sind Anweisungen für die bedingte Kompilierung. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Es wurde ein #Else If, #Else oder #End If gefunden, vor dem der entsprechende #If-Abschnitt fehlt.

Überprüfen Sie, ob die betreffende #If-Anweisung von dem fraglichen Abschnitt durch einen Abschnitt dazwischen abgetrennt wurde, oder ob vor der betreffenden #If-Anweisung ein Nummernzeichen (#) steht. Sollten sonst keine Fehler vorliegen, fügen Sie an der entsprechenden Stelle einen #If-Abschnitt ein.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


#ElseIf muß auf #If oder #ElseIf folgen. Anschließend muß #ElseIf, #Else oder #End If folgen

#ElseIf ist eine Anweisung für die bedingte Kompilierung. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Es wurde ein #ElseIf gefunden, vor dem der #If- oder #ElseIf-Abschnitt fehlt.

Fügen Sie vor #ElseIf eine  #If-Anweisung ein, oder entfernen Sie ein falsch positioniertes vorangestelltes #End If.

•	Es wurde ein #ElseIf gefunden, vor dem ein #Else oder #End If steht.

Beenden Sie den vorausgehenden #If-Abschnitt entsprechend, oder ändern Sie #Else in #ElseIf.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Eine kompatible ActiveX-Komponente muß eine mit Visual Basic kompilierte ausführbare Datei sein

Eine kompatible ActiveX-Komponente ist eine Komponente, die als kompatible ActiveX-Komponente definiert wurde. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Visual Basic hat versucht, auf ein Objekt zuzugreifen, das Sie als kompatible ActiveX-Komponente definiert haben, bei der angegebenen Datei handelt es sich jedoch nicht um eine ausführbare Datei oder eine Dynamic Link Library (DLL), die von Visual Basic erstellt wurde.

Nur .EXE-Dateien und DLLs, die von Visual Basic erstellt wurden, dürfen im Feld Kompatibler OLE-Server des Dialogfelds Projekteigenschaften, auf das über das Menü Projekt zugegriffen wird, verwendet werden. Laden Sie das Projekt nach Möglichkeit in Visual Basic, und klicken Sie im Menü Datei auf Projekt.exe erstellen, um eine ausführbare Visual Basic-Datei zu erstellen. Sollte es sich bei der Datei bereits um eine ausführbare Datei handeln, die nicht von Visual Basic angelegt wurde, oder sollte es nicht möglich sein, die Datei in Visual Basic zu laden, lesen Sie die Dokumentation zu der Datei, um herauszufinden, ob sie in eine ausführbare Visual Basic-Datei konvertiert werden kann oder der Lieferant eine von Visual Basic erstellte ausführbare Datei bereitstellen kann.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Add-Ins können nicht auf ein Projekt verweisen

Projekte sind dynamisch, Add-Ins jedoch statisch. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, ein Add-In von einem Projekt zu erstellen, das auf ein anderes Projekt verweist.

Der Inhalt von Projekten kann sich auf eine Weise verändern, daß Verweise auf Projekte und Add-Ins beeinflußt werden. Aus diesem Grund kann von einem Projekt, das Verweise auf andere Projekte enthält, kein Add-In erstellt werden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ein Modul hat einen unzulässigen Typ

Ein Standardmodul stellt keine Klasse dar und kann nicht als Variable erstellt werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben den Namen eines Standardmoduls in einer Dim- oder Set-Deklaration verwendet.

Überprüfen Sie die Schreibweise des Modulnamens, und vergewissern Sie sich, daß er einem Formular, einem MDI-Formular oder einem Klassenmodul entspricht.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Argument in ParamArray kann kein benanntes Argument sein

Alle Argumente in einem Aufruf für eine Prozedur, die mit Hilfe von ParamArray definiert wurden, müssen an der richtigen Position stehen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Ein Prozeduraufruf enthält die Syntax mit benannten Argumenten.

Die Syntax mit benannten Argumenten kann nicht verwendet wreden, um eine Prozedur aufzurufen, die einen ParamArray-Parameter verwendet. Wenn Sie nur einige der Elemente von ParamArray übergeben möchten, verwenden Sie für die Elemente, die Sie nicht angeben möchten, Kommas als Platzhalter. Wenn z.B. im folgenden Aufruf die ParamArray-Argumente nach Arg2 beginnen, werden nur Werte für den ersten, dritten und sechsten Wert in ParamArray übergeben:

Sub1 Arg1, Arg2, 7,, 44,,,3

Anmerkung   ParamArray stellt immer die letzten Elemente in der Argumentliste dar.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Mehrdeutiger Name

Der Bezeichner steht in Konflikt mit einem anderen Bezeichner oder muß genau gekennzeichnet werden. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Mehrere Objekte in demselben Gültigkeitsbereich besitzen eventuell Elemente mit demselben Namen.

Kennzeichnen Sie den Elementnamen, indem Sie den Objektnamen und einen Punkt verwenden. Beispiel:

Objekt.Eigenschaft

Bezeichner auf Modul- und Projektebene (Modulnamen und Namen von referenzierten Projekten) können in einer Prozedur wiederverwendet werden (wodurch allerdings die Wartung von Programmen und die Fehlerbeseitigung erschwert wird). Wenn Sie jedoch auf beide Elemente in derselben Prozedur verweisen möchten, muß das Element mit dem größeren Gültigkeitsbereich genau gekennzeichnet werden. Wenn z.B. die Variable ID1 auf der Modulebene von Modul1 deklariert wird und anschließend eine andere Variable auf der Prozedurebene des Moduls mit demselben Namen deklariert wird, müssen Verweise auf die Modulebenen-Variable genau gekennzeichnet werden:

Dim ID1 As String

Sub Sub1

Modul1.ID1 = 	"Dies ist die Variable auf 	"Modulebene"

Dim ID1 As String

ID1 = "Dies ist die Variable auf Prozedurebene"

Debug.Print ID1

Debug.Print Modul1.ID1

End Sub

•	Ein Bezeichner, der auf Modulebene deklariert wurde, steht mit einem Prozedurnamen in Konflikt. Dieser Fehler tritt z.B. auf, wenn die Variable ID1 auf Modulebene deklariert und anschließend eine Prozedur mit demselben Namen definiert wird:

Public ID1

Sub ID1

. . .

End Sub

In diesem Fall müssen Sie einen der Namen ändern, da die Kennzeichnung mit einem allgemeinen Modulnamen die Mehrdeutigkeit nicht auflöst. Prozedurnamen sind standardmäßig Public, Variablennamen dagegen Private, außer sie werden als Public deklariert.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


AppleScript-Fehler

Beim Abarbeiten Ihres Skripts ist ein Fehler aufgetreten. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Der Fehler hängt möglicherweise mit der Zielanwendung zusammen.

Überprüfen Sie, ob Bezeichner im Skript mit den Bezeichnern in der Anwendung übereinstimmen.

•	Der Fehler hängt möglicherweise mit AppleScript zusammen.

Überprüfen Sie, ob die im Skript verwendete Syntax in AppleScript gültig ist.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Anwendungs- oder objektdefinierter Fehler

Diese Fehlermeldung wird angezeigt, wenn ein Fehler mit der Raise-Methode oder Error-Anweisung ausgelöst wird, für den es keinen entsprechenden von Visual Basic für Applikationen definierten Fehler gibt. Er wird auch von der Error-Funktion für Argumente zurückgegeben, für die es keine entsprechenden von Visual Basic für Applikationen definierten Fehler gibt. Es kann sich daher um einen von Ihnen definierten Fehler handeln oder um einen Fehler, der von einem Objekt definiert wurde (z.B. von Host-Anwendungen wie Microsoft Excel, Visual Basic usw.). Visual Basic-Formulare lösen beispielsweise viele formularbezogene Fehler aus, die nicht einfach aus dem Code erzeugt werden können, indem eine Zahl als Argument für die Raise-Methode oder Error-Anweisung angegeben wird. Für diese Meldung gibt es die folgenden Ursachen und Lösungen:

•	Ihre Anwendung hat die Anweisung Err.Raise n oder Error n ausgeführt, aber die Zahl n ist von Visual Basic für Applikationen nicht definiert.

Ist dies von Ihnen beabsichtigt, so müssen Sie Err.Raise verwenden und zusätzliche Argumente angeben, wenn ein Endanwender in der Lage sein soll, den Fehlerzusammenhang zu verstehen. Sie können z.B. einen beschreibenden Text, eine Quelle und Hilfeinformationen angeben. Wenn Sie einen aufgetretenen Fehler erneut auslösen möchten, ist dies möglich, wenn Sie Err.Clear erst ausführen, nachdem Sie den Fehler erneut auslösen. Wenn Sie zuerst Err.Clear ausführen, müssen Sie die zusätzlichen Argumente für die Raise-Methode angeben. Untersuchen Sie den Kontext, in dem der Fehler aufgetreten ist, und sorgen Sie dafür, daß derselbe Fehler erneut ausgelöst wird.

•	Möglicherweise haben Objekte anderer Anwendungen, auf die Ihre Anwendung zugegriffen hat, einen Fehler an Ihre Anwendung zurückgegeben, der keinem Visual Basic-Fehler zugeordnet werden konnte.

Schlagen Sie in der Dokumentation der Objekte nach, auf die Sie zugegriffen haben. Die Source-Eigenschaft des Err-Objekts sollte die Ressource-ID der Anwendung oder des Objekts enthalten, die/das den Fehler ausgelöst hat. Damit der Kontext eines von einem Objekt zurückgegebenen Fehlers verständlicher wird, sollten Sie eine On Error Resume Next-Konstruktion im Code verwenden, der auf Objekte zugreift, und eine On Error GoTo Zeile-Konstruktion vermeiden.

Anmerkung   Bisher haben Programmierer häufig eine Schleife verwendet, um eine Liste aller Meldungen für auffangbare Fehler auszugeben. In der Regel wurde dazu Code wie der folgende verwendet:

For index = 1 to 500

Debug.Print Error$(index)

Next index

Mit solchem Code können immer noch alle Fehlermeldungen von Visual Basic für Applikationen ausgegeben werden, aber es wird die Meldung "Anwendungs- oder objektdefinierter Fehler" für durch den Host definierte Fehler angezeigt (z.B. für Visual Basic-Fehler im Zusammenhang mit Formularen, Steuerelementen usw.). Viele dieser auffangbaren Fehler sind Laufzeitfehler. Sie können das Dialogfeld Suchen der Hilfe verwenden, um eine Liste der für Ihre Host-Anwendung spezifischen auffangbaren Fehler anzuzeigen. Klicken Sie auf die Schaltfläche Suchen, und geben Sie Auffangbar im ersten Textfeld ein. Wählen Sie im unteren Listenfeld Auffangbare Fehler aus, und klicken Sie anschließend auf die Schaltfläche Anzeigen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Argument für Property Let oder Property Set erforderlich

Die Property Let- und Property Set-Prozeduren dienen dazu, einer Eigenschaft einen neuen Wert zuzuweisen. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Beim Festlegen der Eigenschaft befindet sich der Wert an der falschen Stelle.

Geben Sie den Wert, der der Eigenschaft zugewiesen werden soll, auf der rechten Seite des Ausdrucks an, der den Eigenschaftswert festlegt.

•	In der Prozedurdefinition fehlt der Parameter, der definiert wurde, um den auf der rechten Seite des Ausdrucks angegebenen Wert anzunehmen, oder er steht an der falschen Stelle.

Geben Sie einen Parameter für den Wert in der Argumentliste der Prozedurdefinition an. Wenn der Prozedur mehrere Argumente übergeben werden, muß der Parameter für den Eigenschaftswert der letzte in der Liste sein.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Datenfeld bereits dimensioniert

Ein statisches Datenfeld kann nur einmal dimensioniert werden. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Sie haben versucht, die Dimensionen eines statischen Datenfeldes mit einer ReDim-Anweisung zu ändern. Nur dynamische Datenfelder können neu dimensioniert werden.

Entfernen Sie entweder die ReDim-Anweisung, oder verwenden Sie ein dynamisches Datenfeld. Sie definieren ein dynamisches Datenfeld mit einer Dim-, Public-, Private- oder Static-Anweisung und einem leeren Klammernpaar. Beispiel:

Dim Datenfeld()

In einer Prozedur können Sie ein dynamisches Datenfeld mit der ReDim- oder Static-Anweisung erstellen und für die Anzahl der Argumente eine Variable verwenden:

ReDim Datenfeld(n)

•	Eine Option Base-Anweisung wurde ausgeführt, nachdem bereits Datenfelddimensionen festgelegt wurden.

Option Base-Anweisungen müssen vor allen Datenfelddeklarationen stehen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Datenfeldargument muß vom Typ ByRef sein

Datenfelder, die mit Dim, ReDim oder Static deklariert wurden, können nicht mit ByVal übergeben werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, ein ganzes Datenfeld mit ByVal zu übergeben.

Ein einzelnes Element in einem Datenfeld kann mit ByVal (als Wert) übergeben werden, aber ein ganzes Datenfeld muß mit ByRef (als Referenz) übergeben werden. ByRef ist die Voreinstellung. Wenn Sie ein Datenfeld mit ByVal übergeben müssen, weil sie verhindern möchten, daß Änderungen an den Datenfeldelementen in der aufrufenden Prozedur nach dem Aufruf übernommen werden, können Sie das Datenfeldargument in einem eigenen Klammernpaar übergeben, oder Sie können es in einer Variablen vom Typ Variant ablegen und diese Variable dann als ByVal-Parameter übergeben, wie im folgenden Beispiel:

Dim Var1 As Variant

Var1 = FeldAlt()

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Anfang des Suchbereichs erreicht. Möchten Sie die Suche am Ende des Suchbereichs fortsetzen?

Der Suchvorgang war nicht erfolgreich. Für diesen Umstand gibt es die folgende Ursache und Lösung:

•	Bei der Suche nach oben wurde der Beginn des angegeben Suchbereichs erreicht.

Sie können die Suche am Ende des Suchbereichs fortsetzen oder den Vorgang abbrechen und den Suchbereich neu festlegen.


If-Block ohne End If

Ein Fehler trat aufgrund einer unvollständigen Anweisung auf. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Eine If-Anweisung wurde ohne zugehörige End If-Anweisung verwendet.

Eine mehrzeilige If-Anweisung muß mit einer zugehörigen End If-Anweisung beendet werden. Achten Sie in verschachtelten If...End If-Anweisungen darauf, daß sich eine vollständige If...End If-Struktur (mit den einander zugeordneten If- und End If-Anweisungen) innerhalb einer umschließenden If...End If-Struktur befindet.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Haltepunkt in dieser Zeile nicht zulässig

Haltepunkte können nur in bestimmten Teilen von Anweisungen gesetzt werden. Für diesen Fehler gibt es die folgenden Ursachen:

•	Sie haben versucht, einen Haltepunkt in eine Zeile zu setzen, in der kein Haltepunkt gesetzt werden kann; Beispiel:

•	Eine Zeile, die nur Kommentare enthält.

•	Eine Zeile, die nur Zeilenmarken enthält

•	Eine Zeile, die nur Deklarationen (Const, Dim, Static, Type usw.) enthält.

•	Eine Zeile in einem verborgenen Modul.

•	Eine Zeile im Direktfenster.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Argumenttyp ByRef unverträglich

Wenn eine Prozedur erwartet, daß ein Argument als Referenz (ByRef, die Voreinstellung) übergeben wird, muß das übergebene Argument genau dem erwarteten Datentyp entsprechen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben ein Argument eines Typs übergeben, der nicht in den erwarteten Typ umgewandelt werden konnte.

Übergeben Sie z.B. eine Variable vom Typ Integer, wenn ein Argument vom Typ Long erwartet wird, so tritt dieser Fehler auf. Wenn eine Umwandlung auf jeden Fall (auch bei Informationsverlust) stattfinden soll, können Sie das Argument in eigene Klammern einschließen. Sie können z.B. das Variant-Argument Var1 an eine Prozedur übergeben, die eine ganze Zahl als Argument erwartet, indem Sie den folgenden Code für den Aufruf verwenden:

Dim Var1

Var1 = 3.1415

Call EineSub((Var1))

Sub EineSub (Num1 As Integer)

Num1 = Num1 + Num1

End Sub

Durch das Einschließen des Arguments in eigene Klammern wird die Auswertung des Arguments als Ausdruck erzwungen. Während dieser Auswertung wird der Nachkommabereich der Zahl gerundet (und nicht abgeschnitten), um den erwarteten Argumenttyp zu bilden. Das Ergebnis der Auswertung wird in einem temporären Speicherbereich abgelegt, und der Prozedur wird ein Verweis auf diesen temporären Speicherbereich übergeben. Daher behält die Originalvariable Var1 ihren Wert bei.

Anmerkung   Wenn Sie für eine Variable keinen Typ angeben, wird ihr der Standardtyp Variant zugewiesen. Dies ist nicht immer offensichtlich. Der folgende Code deklariert beispielsweise zwei Variablen: die erste mit dem Namen Var1 ist vom Datentyp Variant, die zweite mit dem Namen Var2 ist vom Datentyp Integer.

Dim Var1, Var2 As Integer

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Aufrufkonvention von Visual Basic nicht unterstützt

Visual Basic unterstützt nicht alle Aufrufkonventionen für Prozeduren. Aufrufkonventionen legen fest, in welcher Reihenfolge die Argumente übergeben werden und wie Argumenttypen angegeben werden müssen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Der Prozeduraufruf erfolgte nach den Regeln einer von Visual Basic nicht unterstützen Aufrufkonvention. Beispielsweise unterstützt Visual Basic in der 16-Bit-Version der Microsoft Windows-Umgebung nicht die Pascal-Aufrufkonvention.

Sollte die Aufrufkonvention von Visual Basic nicht unterstützt werden, kann die Prozedur nicht von Visual Basic aufgerufen werden. Prüfen Sie anhand der Dokumentation des Objekts, ob es eine Alternative gibt.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Verweis auf angegebene Datei kann nicht hinzugefügt werden

Visual Basic kann nicht auf alle Objektbibliotheken oder Klassenbibliotheken zugreifen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, mit dem Dialogfeld Verweise hinzufügen einer Objekt- oder Klassenbibliothek, die von Visual Basic nicht verwendet werden kann, einen Verweis hinzuzufügen.

Überprüfen Sie anhand der Dokumentation des durch die Bibliothek repräsentierten Objekts, ob es in einem Formular verfügbar ist, das von Visual Basic verwendet werden kann.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Datenfeld mit Zeichenfolgen fester Länge oder einem benutzerdefinierten Typ kann nicht in den Typ Variant umgewandelt werden

Einer Variant-Variablen können nur Daten zugewiesen werden, die einen gültigen VarType-Wert besitzen. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Sie haben versucht, einer Variant-Variablen ein Datenfeld mit Zeichenfolgen fester Länge zuzuweisen. Wenn eine einzelne Zeichenfolge fester Länge einem Datentyp Variant zugewiesen wird, wird sie in eine Zeichenfolge variabler Länge umgewandelt, jedoch kann diese Operation nicht für ein Datenfeld mit Zeichenfolgen fester Länge durchgeführt werden.

Wenn das Datenfeld in einer Variant-Variablen gespeichert werden muß, verwenden Sie eine Schleife, um die einzelnen Elemente des Datenfelds den Elementen eines temporären Datenfelds zuzuweisen, in dem Zeichenfolgen variabler Länge enthalten sind. Anschließend können Sie der Variant-Variablen das Datenfeld zuweisen und mit Erase den Speicher für das temporäre Datenfeld freigeben. Allerdings können Sie den Speicher für ein Datenfeld fester Größe mit Erase nicht freigeben.

•	Sie haben versucht, der VarType- oder TypeName-Funktion eine Zeichenfolge fester Länge oder einen benutzerdefinierten Typ zuzuweisen.

Ein Argument für die VarType- oder TypeName-Funktion muß einen gültigen Variant-Typ besitzen.

•	Sie haben versucht, einer Variant-Variablen einen benutzerdefinierten Typ zuzuweisen.

Sie können einer Variant-Variablen zwar keine ganze Variable eines benutzerdefinierten Typs direkt zuweisen, Sie können jedoch die Array-Funktion verwenden, um einer Variant-Variablen die einzelnen Elemente einer Variablen mit einem benutzerdefinierten Typ zuzuweisen. Das Ergebnis ist eine Variant-Variable, die ein Datenfeld mit Variant-Werten enthält. Der Typ (VarType) der einzelnen Elemente in diesem Variant-Datenfeld entspricht dem ursprünglichen Typ der einzelnen Elemente des benutzerdefinierten Typs.

•	Sie haben versucht, ein Datenfeld mit Zeichenfolgen fester Länge oder mit Elementen eines benutzerdefinierten Typs als Argument in einem Prozeduraufruf zu verwenden, der ein Variant-Argument erfordert. Immer dann, wenn eine Prozedur spät gebunden wird, d.h., wenn der Aufruf also zur Laufzeit konstruiert werden muß, müssen alle Argumente als Variant-Typen übergeben werden. Der folgende Code verursacht beispielsweise diesen Fehler:

Dim Formular1 As Object	' Da Formular1 den Typ Object hat,

' erfolgt eine Bindung zur 	Laufzeit.

Set Formular1 = New Form1

Dim ZFFeld(10) As String * 12

' Die nächste Zeile verursacht den Fehler.

Formular1.Proz1 ZFFeld

Für das Datenfeld mit den Zeichenfolgen verwenden Sie eine Schleife, um jedes einzelne Element des Datenfelds einem temporären Datenfeld mit Zeichenfolgen variabler Länge zuzuweisen. Anschließend können Sie dieses Datenfeld einer Variant-Variablen zuweisen, die an die Prozedur übergeben wird. Bei einem Datenfeld mit Elementen eines benutzerdefinierten Typs können Sie die Array-Funktion verwenden, um die einzelnen Elemente einer Variablen eines benutzerdefinierten Typs einer Variant-Variablen zuzuweisen. Dadurch wird eine Variant-Variable erzeugt, die ein Datenfeld mit Variant-Werten enthält. Der Wert für VarType der einzelnen Elemente in diesem Datenfeld von Variant-Werten entspricht dem Originaltyp der einzelnen Elemente des benutzerdefinierten Typs.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Keine Zuweisung an Datenfeld möglich

Jedem Element eines Datenfelds muß separat ein Wert zugewiesen werden. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Sie haben versehentlich versucht, einer Datenfeldvariablen einen einzelnen Wert zuzuweisen, ohne anzugeben, welchem Element der Wert zugewiesen werden soll.

Zum Zuweisen eines Wertes an ein Datenfeldelement müssen Sie das Element mit einem Index angeben. Wenn Datenfeld1 z.B. ein Datenfeld mit Ganzzahlen ist, ist der Ausdruck Datenfeld1 = 5 nicht zulässig; der folgende Ausdruck ist dagegen gültig:

Datenfeld1(UBound(Datenfeld1)) = 5

•	Sie haben versucht, einem anderen Datenfeld ein ganzes Datenfeld zuzuweisen. Wenn Feld1 und Feld2 z.B. Datenfelder sind, sind die beiden folgenden Zuweisungen nicht zulässig:

Feld1 = Feld2	' Ungültige Zuweisung.

Feld1() = Feld2()	' Ungültige Zuweisung.

Wenn Sie ein Datenfeld einem anderen Datenfeld zuweisen möchten, muß das Datenfeld auf der linken Seite der Zuweisung in der Größe veränderbar sein, und die Datenfeldtypen müssen zueinander passen.

Anmerkung   Sie können ein ganzes Datenfeld in einer Variablen vom Typ Variant speichern und erhalten dann eine einzelne Variant-Variable, die das gesamte Datenfeld enthält:

Dim Feld3 As Variant

Var1 = Feld2()

Anschließend können Sie mit derselben Indexschreibweise auf die Elemente des Datenfelds verweisen wie bei einem normalen Datenfeld, z.B.:

Var1(3) = Var1(1) + Var1(5)

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Datentyp von Datenfeldelementen kann nicht geändert werden

ReDim kann nur verwendet werden, um die Anzahl der Elemente in einem Datenfeld zu ändern. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, den Datentyp eines Datenfelds mit ReDim neu zu deklarieren.

Deklarieren Sie ein neues Datenfeld mit dem gewünschten Typ, und konvertieren Sie dann jedes einzelne Element des alten Datenfelds mit den Umwandlungsfunktionen in das entsprechende Element im neuen Datenfeld.

Sie können das Datenfeld auch in einer Variant-Variablen ablegen, indem Sie eine einfache Zuweisung verwenden:

Dim Var1 As Variant

Var1 = IntegerFeld1()

Damit erstellen Sie eine Variant-Variable mit einem Datenfeld, das mit dem Typ des ursprünglichen Datenfelds gekennzeichnet ist. Sie können den Elementen des Datenfelds in der Variant-Variablen anschließend Variablen eines beliebigen VarType-Typs zuweisen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ein als Public deklarierter, benutzerdefinierter Typ kann in einem privaten Objektmodul nicht definiert werden

Ein benutzerdefinierter Typ, der in einem Objektmodul enthalten ist, kann nicht vom Typ Public sein. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, in einem Objektmodul einen benutzerdefinierten Typ als Public zu definieren.

Fügen Sie die Definition des benutzerdefinierten Typs in ein Standardmodul ein, und deklarieren Sie anschließend Variablen dieses Typs im Objektmodul oder in anderen Modulen. Soll der betreffende Typ nur innerhalb des umgebenden Moduls verfügbar sein, so können Sie die zugehörige Type...End Type-Definition in dem Objektmodul plazieren und vor die Definition das Schlüsselwort Private einfügen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Verborgene Prozedur kann nicht angezeigt werden

In einem verborgenen Modul sind sämtliche Elemente ausgeblendet. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, sich eine Prozedur in einem verborgenen Modul anzusehen.

Blenden Sie das Modul ein, um die Prozedur ansehen zu können. Wenn Sie eine Code-Zeile in einer verborgenen Prozedur anzeigen möchten, die einen Fehler verursacht hat, blenden Sie das Modul zunächst wieder ein, und führen Sie dann den Code erneut aus.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Bearbeitung des Moduls nicht möglich

Als geschützt markierte Module können angezeigt, aber nicht bearbeitet werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, ein geschütztes Modul zu bearbeiten.

Heben Sie den Schutz des Moduls auf, und bearbeiten Sie das Modul erneut. In den meisten Fällen tritt dieser Fehler auf, weil das Visual SourceSafe-Addin installiert ist und die Datei nicht ausgecheckt wurde.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Jetzt kann nicht in den Haltemodus gewechselt werden

Im Haltemodus wird ein Programm noch ausgeführt, aber jegliche Aktivität ist unterbrochen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, den Haltemodus aufzurufen, indem Sie beispielsweise STRG+PAUSE (Windows) oder BEFEHLSTASTE+PUNKT (Macintosh) gedrückt, auf die Schaltfläche Unterbrechen auf der Standard- bzw. auf der Testen-Symbolleiste geklickt oder einen Haltepunkt im laufenden Code ausgeführt haben.

Eine Programmänderung am Projekt wurde mit dem Erweiterungsobjektmodell (Add-In) vorgenommen. Dies verhindert, daß die Ausführung des Programms unterbrochen wird. Sie können die Ausführung des Programms fortsetzen oder beenden, jedoch nicht unterbrechen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Anweisungen im Direktfenster können im Entwurfsmodus nicht ausgeführt werden

Die Entwurfszeit ist der Zeitraum, in dem Ihr Code nicht ausgeführt wird oder die Ausführung temporär unterbrochen wurde. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, eine Anweisung im Direktfenster auszuführen, aber der Code befindet sich noch nicht im Ausführungsmodus.

•	Starten Sie die Ausführung des Codes, und unterbrechen Sie die Programmausführung. Sie können dann Code im Direktfenster ausführen.

Weitere Informationen erhalten Sie, wenn Sie den Dursor im Direktfenster positionieren und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Projekt oder Bibliothek nicht auffindbar

Sie können Ihren Code erst ausführen, nachdem alle Verweise aufgelöst sind. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Ein referenziertes Projekt wurde nicht gefunden, oder eine referenzierte Objektbibliothek für die Sprache des Projekts wurde nicht gefunden.

Nichtaufgelösten Verweisen wird die Zeichenfolge "FEHLT:" im Dialogfeld Verweise vorangestellt. Wenn Sie den fehlenden Verweis auswählen, erscheint der Pfadname und die Sprache des fehlenden Projekts oder der fehlenden Bibliothek. Sie können die Verweise folgendermaßen auflösen:

So lösen Sie die Verweise auf:

1.	Zeigen Sie das Dialogfeld Verweise an.

2.	Wählen Sie den fehlenden Verweis aus.

3.	Öffnen Sie den Objektkatalog.

4.	Suchen Sie den fehlenden Verweis mit Hilfe des Feldes Suchen.

5.	Klicken Sie auf OK.

6.	Wiederholen Sie diese Schritte, bis alle fehlenden Verweise aufgelöst sind.

Beim Auffinden eines fehlenden Verweises wird die vorangestellte Zeichenfolge "FEHLT:" entfernt und die Verknüpfung wiederhergestellt. Hat sich der Dateiname eines referenzierten Projekts geändert, so wird ein neuer Verweis hinzugefügt, und der alte Verweis muß entfernt werden.

Sie entfernen nicht mehr benötigte Verweise, indem Sie das Kontrollkästchen neben dem Verweis deaktivieren. Verweise auf die Objektbibliothek von Visual Basic (VBAXXX.OLB oder VBAXXXX.OLB) und die Objektbibliothek der Host-Anwendung können nicht entfernt werden.

Anwendungen können verschiedene Sprachversionen ihrer Objektbibliotheken unterstützen. Sie können die erforderliche Sprachversion bestimmen, indem Sie auf den Verweis klicken und die Sprache überprüfen, die unten im Dialogfeld angegeben ist.

Bei Objektbibliotheken kann es sich um eigenständige Dateien mit der Erweiterung .OLB oder um eine integrierte Dynamic Link Library (DLL) handeln. Sie existieren in verschiedenen Versionen für die einzelnen Plattformen. Wenn Projekte auf eine andere Plattform übertragen werden (z.B. von Macintosh nach Windows), muß sich daher die richtige Sprachversion der referenzierten Bibliothek (für die Zielplattform) an der Stelle befinden, die in der Dokumentation der Host-Anwendung angegeben ist.

Dateinamen von Objektbibliotheken bestehen in der Regel aus folgenden Komponenten:

•	Windows (Version 3.1 und früher): Anwendungs-Code + Sprach-Code + [Version].OLB. Beispiel:

VAFR2.OLB ist der Name der Datei für die französische Objektbibliothek von Visual Basic für Applikationen, Version 2.

XLFR50.OLB ist der Name der Datei für die französische Excel 5.0-Objektbibliothek.

•	Macintosh: Anwendungsname Sprach-Code [Version] OLB. Beispiel:

VA FR 2 OLB ist der Name der Datei für die französische Objektbibliothek von Visual Basic für Applikationen, Version 2.

MS Excel FR 50 OLB ist der Name der Datei für die französische Excel 5.0-Objektbibliothek.

Wenn Sie auf Ihrem System fehlende Projekte oder Bibliotheken nicht finden können, wenden Sie sich an den Autor des referenzierten Projekts. Sollte es sich bei der fehlenden Bibliothek um eine Anwendungsobjektbibliothek von Microsoft handeln, gehen Sie folgendermaßen vor, um sie zu beziehen:

•	Wenn Sie Zugriff auf den elektronischen Software Service von Microsoft besitzen, lesen Sie den Abschnitt über den Software Service in dieser Hilfedatei. In der Beschreibung der elektronischen Dienste finden Sie Anleitungen zur Verwendung des entsprechenden Dienstes.

•	Wenn Sie keinen Zugriff auf den elektronischen Software Service von Microsoft besitzen, können Microsoft-Objektbibliotheken von Microsoft als "Application Note" angefordert werden. Informationen, wie Sie sich an Ihren örtlichen Microsoft-Kundendienst wenden, finden Sie ebenfalls im Abschnitt über den Software Service in dieser Hilfedatei.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Objektverweisvariable oder Variable eines benutzerdefinierten Typs, die einen Objektverweis enthält, unterstützt Get oder Put nicht

Ein Objektverweis ist temporär und kann zwischen dem Schließen und dem Öffnen einer Datei leicht ungültig werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die Variable in Ihrer Get- oder Put-Anweisung enthält ein Element, das ein Objektverweis ist.

Wenn die Variable ein Objektverweis ist, können die Get- und Put-Anweisungen nicht verwendet werden. Um den Wert einiger oder aller Eigenschaften des Objekts in die Datei zu übernehmen, muß jede Eigenschaft einzeln angegeben werden.

•	Die Variable eines benutzerdefinierten Typs in Ihrer Get- oder Put-Anweisung enthält ein Element, das ein Objektverweis ist.

Wenn die Type-Anweisung der Variablen ein Element enthält, das ein Objekt darstellt (da es z.B. in einem Klassenmodul definiert ist, den Datentyp Object besitzt, ein Formular oder ein Steuerelement ist usw.), entfernen Sie dieses aus der Definition, oder definieren Sie einen neuen Typ für die Verwendung zusammen mit den Get- und Put-Anweisungen, der kein Element vom Typ Object in der Definition enthält.

Wenn im benutzerdefinierten Typ Elemente vom Typ Variant enthalten sind, dürfen diesen keine Objektverweise zugewiesen werden. Bei einer Variant-Variablen ist eine solche Zuweisung zulässig, aber wenn in einer Get- oder Put-Anweisung der benutzerdefinierte Typ verwendet wird, tritt ein Fehler auf.

Sie können Input #, Line Input #, Print # oder Write # verwenden, um die Standardeigenschaft eines Objekts auf dem Datenträger zu speichern.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Modul kann nicht geladen werden; Format ungültig

Ein Modul muß im Textformat vorliegen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, eine Datei im Binärformat als Modul zu laden.

Einige Versionen von Visual Basic erlauben das Speichern von Code sowohl im Binär- als auch im Textformat. Laden Sie die Datei nach Möglichkeit erneut in die Anwendung, mit der sie zuletzt gespeichert wurde, und speichern Sie sie als Text.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Zuweisung an schreibgeschützte Eigenschaft nicht möglich

Einige Eigenschaften akzeptieren keine Zuweisungen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, einer Eigenschaft einen Wert zuzuweisen, die keine Zuweisungen akzeptiert.

Im manchen Fällen akzeptiert eine Eigenschaft Zuweisungen nur zu bestimmten Zeiten. Beispielsweise kann eine Eigenschaft Zuweisungen nur zur Entwurfszeit, jedoch nicht zur Laufzeit akzeptieren. Suchen Sie in der Hilfe die entsprechende Eigenschaft, und überprüfen Sie, wann ggf. Zuweisungen akzeptiert werden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Die gewünschte Operation kann nicht ausgeführt werden, da das Modul ausgeblendet ist

Dieser Fehler bezieht sich auf das Visual Basic-Erweiterungsobjektmodell (Add-In). Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Es handelt sich um ein ausgeblendetes Modul. Es ist nicht möglich, ausgeblendete Module zu modifizieren oder Informationen von diesen abzurufen.

Blenden Sie das Modul ein, und führen Sie die Operation erneut aus.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Bedingte Überwachung eines Datenfelds ist nicht zulässig

Einem Datenfeld ist kein einzelner Wert zugewiesen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, einen bedingten Haltepunkt (auch als Überwachungspunkt bezeichnet) einzurichten, der die Ausführung des Programms unterbricht, wenn sich der Wert eines gesamten Datenfelds ändert.

Legen Sie den bedingten Haltepunkt auf ein bestimmtes Element des Datenfelds ein.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Aufzeichnung in momentan ausgeführtes Modul nicht möglich

Sie müssen die Ausführung beenden, um eine Aufzeichnung beginnen zu können. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, ein Makro aufzuzeichnen, während Modul-Code ausgeführt wurde.

Beenden Sie die Ausführung, indem Sie STGR+PAUSE (Windows) oder BEFEHLSTASTE+PUNKT (Macintosh) drücken, und starten Sie die Aufzeichnung.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Der Standardverweis kann nicht entfernt werden

Ein Standardverweis ist immer vorhanden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, einen Verweis zu löschen, der immer vorhanden sein muß, wie z.B. ein Verweis auf eine Klassenbibliothek oder eine Objektbibliothek.

Löschen Sie diese Verweise nicht.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Case Else außerhalb von Select Case

Eine Case Else-Anweisung kann nur innerhalb zueinander gehörender Select Case- und End Select-Anweisungen stehen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben eine Case Else-Anweisung außerhalb des Select Case...End Select-Blocks positioniert.

Verschieben Sie die Case Else-Anweisung in einen Select Case...End Select-Block.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Case ohne Select Case

Eine Case-Anweisung muß innerhalb eines Select Case...End Select-Blocks stehen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Eine Case-Anweisung konnte keiner vorhergehenden Select Case-Anweisung zugeordnet werden.

Überprüfen Sie andere Kontrollstrukturen innerhalb der Select Case...Case-Struktur, und stellen Sie sicher, daß diese in den jeweils zusammengehörenden Paaren auftreten. Eine If-Anweisung ohne ein zugehöriges End If in der Select Case...End Select-Struktur führt beispielsweise zu diesem Fehler.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Wechselseitige Abhängigkeit zwischen Modulen

Wechselseitige Abhängigkeiten zwischen Modulen, Konstanten und benutzerdefinierten Typen sind nicht zulässig. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Ein benutzerdefinierter Typ oder eine Konstante in einem Modul verweist auf einen benutzerdefinierten Typ oder eine Konstante in einem zweiten Modul, in dem wiederum auf einen anderen benutzerdefinierten Typ oder eine andere Konstante im ersten Modul verwiesen wird.

Entfernen Sie die wechselseitigen Abhängigkeiten.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Objektmodul muß 'Element1' für die Schnittstelle 'Element2' implementieren

Eine Schnittstelle ist eine Sammlung nicht implementierter Prozedur-Prototypen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben in einer Implements-Anweisung eine Schnittstelle angegeben, jedoch nicht Code für alle Prozeduren der Schnittstelle eingegeben.

Sie müssen Code für alle in der Schnittstelle angegebenen Prozeduren erstellen. Leere Prozeduren sind zulässig; die Prozedur sollte das entsprechende Verhalten implementieren.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ausführung des Codes wurde unterbrochen

Die Programmausführung kann bei Bedarf unterbrochen werden. Für diesen Zustand gibt es die folgende Ursache und Lösung:

•	Die Tastenkombination STRG+PAUSE (Microsoft Windows), ESC (Microsoft Excel) oder BEFEHL+PUNKT (Macintosh) wurde gedrückt.

Wählen Sie aus dem Dialogfeld entweder Testen, um in den Haltemodus zu wechseln, Fortfahren, um die Ausführung fortzusetzen, oder Beenden, um die Ausführung zu beenden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Kompilierungs-Fehler in verborgenem Modul: <Modulname>

Ein geschütztes Modul kann nicht angezeigt werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Im Code des angegebenen Moduls ist ein Kompilierungsfehler aufgetreten, der aber nicht angezeigt werden kann, weil das Projekt geschützt ist.

Heben Sie den Schutz des Projekts auf, und führen Sie dann den Code erneut aus, um den Fehler anzuzeigen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Konstanter Ausdruck erforderlich

Eine Konstante muß initialisiert werden. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Sie haben versucht, eine Konstante mit einer Variablen, einer Instanz eines benutzerdefinierten Typs, einem Objekt oder dem Rückgabewert eines Funktionsaufrufs zu initialisieren.

Initialisieren Sie Konstanten mit Literalen, zuvor deklarierten Konstanten oder Literalen, die über Operatoren miteinander verknüpft sind (mit Ausnahme des logischen Operators Is).

•	Sie haben versucht, ein Datenfeld zu deklarieren und dabei die Anzahl der Elemente mit einer Variablen festlegen.

Sie können ein dynamisches Datenfeld innerhalb einer Prozedur deklarieren, indem Sie das Datenfeld mit ReDim deklarieren und die Anzahl der Elemente mit einer Variablen angeben.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Konstanten, Zeichenfolgen fester Länge, Datenfelder, benutzerdefinierte Typen und Declare-Anweisungen sind nicht als Public-Elemente von Klassen- oder Formularmodulen zugelassen

Nicht alle Variablen eines Objektmoduls können als Public deklariert werden. Prozeduren sind standardmäßig Public, und Property-Prozeduren können verwendet werden, um Variablen syntaktisch zu simulieren. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Sie haben eine Konstante in einem Objektmodul als Public deklariert.

Sie können zwar in einem Objektmodul keine Konstante als Public deklarieren, aber Sie können eine Property Get-Prozedur mit demselben Namen erstellen. Wenn Sie keine Property Let- oder Property Set-Prozedur mit diesem Namen erstellen, haben Sie tatsächlich eine schreibgeschützte Eigenschaft erstellt, die Sie wie eine Konstante verwenden können.

•	Sie haben eine Zeichenfolge fester Länge in einem Objektmodul als Public deklariert.

Sie können Zeichenfolgen fester Länge durch Property-Prozeduren simulieren, die entweder die Zeichenfolge bei Überschreitung der zulässigen Maximallänge abschneiden, oder Sie können den Benutzer darauf hinweisen, daß die zulässige Maximallänge überschritten wurde.

•	Sie haben ein Datenfeld in einem Objektmodul als Public deklariert.

Eine Prozedur kann zwar kein Datenfeld als Ergebnis zurückgeben, jedoch einen Variant-Wert, der ein Datenfeld enthält. Sie können ein Public-Datenfeld in einem Objektmodul simulieren, indem Sie Property-Prozeduren verwenden, die einen Variant-Wert mit einem Datenfeld akzeptieren und zurückgeben.

•	Sie haben eine Declare-Anweisung in ein Objektmodul eingetragen.

Declare-Anweisungen sind implizit öffentlich. Setzen Sie das Schlüsselwort Private vor Declare.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Aktuelles Modul unterstützt Print-Methode nicht

Nicht alle Methoden und Eigenschaften können in allen Modulen verwendet werden. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Sie haben versucht, die Print-Methode für ein Objekt zu verwenden, mit dem keinerlei Ausgaben möglich sind. Sie können die Print-Methode z.B. nicht ohne genaue Kennzeichnung in einem Standardmodul verwenden.

•	Entfernen Sie den Verweis auf die Print-Methode, oder geben Sie ein geeignetes Objekt an. Geben Sie z.B. das Debug-Objekt an, damit die Argumente beim Testen im Direktfenster ausgegeben werden.

•	Sie haben versucht, die Line-, Circle-, Pset- oder Scale-Methode auf ein Objekt anzuwenden, das diese Methode nicht unterstützt. Diese Methoden können z.B. nicht ohne genaue Kennzeichnung in einem Standardmodul oder einem Klassenmodul im Rahmen der OLE-Automatisierung enthalten sein.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Wechselseitiger Verweis zwischen Projekten nicht zulässig

Wechselseitige Verweise auf Projekte sind nicht zulässig. Wenn beispielsweise Proj2 auf Proj1 verweist, dann kann Proj1 (oder ein Projekt, das auf Proj1 verweist) nicht auf Proj2 verweisen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, einem Projekt einen Verweis hinzuzufügen, der bereits im Projekt enthalten ist.

Entfernen Sie den oder die wechselseitigen Verweise.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Definitionen von Property-Prozeduren für dieselbe Eigenschaft sind inkonsistent oder enthalten optionale Parameter bzw. ein ParamArray-Feld

Die Parameter für Property Get-, Property Let- und Property Set-Prozeduren für ein und dieselbe Eigenschaft müssen genau übereinstimmen, außer daß Property Let einen zusätzlichen Parameter besitzt, dessen Typ mit dem Rückgabetyp des entsprechenden Property Get übereinstimmen muß, und daß Property Set im Vergleich zu Property Get einen zusätzlichen Parameter besitzt, dessen Typ entweder Variant, Object, ein Klassenname oder ein Objektbibliothekstyp ist, der in einer Objektbibliothek festgelegt wird. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Die Anzahl der Parameter für die Property Get-Prozedur ist nicht um eins niedriger als die Anzahl der Parameter für die entsprechende Property Let- oder Property Set-Prozedur.

Fügen Sie Property Let oder Property Set einen Parameter hinzu, oder löschen Sie einen Parameter für Property Get.

•	Die Parametertypen von Property Get müssen, abgesehen von dem zusätzlichen Property Set-Parameter, genau mit den entsprechenden Parametern von Property Let oder Property Set übereinstimmen.

Modifizieren Sie die Parameterdeklarationen in den entsprechenden Prozedurdefinitionen, so daß sie genau übereinstimmen.

•	Der Parametertyp des zusätzlichen Parameters für Property Let muß mit dem Rückgabetyp der entsprechenden Property Get-Prozedur übereinstimmen.

Modifizieren Sie die zusätzliche Parameterdeklaration für Property Let oder den Rückgabetyp der entsprechenden Property Get-Prozedur, so daß sie genau übereinstimmen.

•	Der Parametertyp des zusätzlichen Parameters für Property Set kann vom Rückgabetyp der entsprechenden Property Get-Prozedur abweichen, muß jedoch vom Typ Variant, Object, ein Klassenname oder ein gültiger Objektbibliothekstyp sein.

Vergewissern Sie sich, daß der zusätzliche Parameter der Property Set-Prozedur vom Typ Variant, Object, ein Klassenname oder ein Objektbibliothekstyp ist.

•	Sie haben eine Property-Prozedur mit den Parametern Optional oder ParamArray definiert.

Die Parameter ParamArray und Optional sind in Property-Prozeduren nicht zulässig. Definieren Sie die Prozeduren erneut ohne diese Schlüsselwörter.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Deftyp-Anweisungen müssen vor Deklarationen angegeben werden

DefTyp-Anweisungen umfassen die Anweisungen DefInt, DefDbl, DefCur und andere. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Eine Deklaration einer Variablen steht auf Modulebene vor einer DefTyp-Anweisung.

Verschieben Sie die DefTyp-Anweisung vor alle Variablendeklarationen.

•	Eine DefTyp-Anweisung steht in einer Prozedur.

Verschieben Sie die DefTyp-Anweisung auf Modulebene vor alle Variablendeklarationen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Die Zielmarke kann nicht angesprungen werden; Schleife, Select Case oder If-Block ist zu groß

Prozeduren dürfen von Anfang bis Ende maximal 64 KB umfassen, aber da Sprünge innerhalb einer Prozedur vorwärts oder rückwärts erfolgen können, sind derartige Sprünge auf 32.767 Bytes in beiden Richtungen beschränkt. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Sie haben eine Sprunganweisung (GoTo, GoSub) verwendet, deren Zielmarke weiter als 32.767 Bytes von der Sprunganweisung entfernt ist.

Verschieben Sie die Zielmarke näher an die Sprunganweisung, oder verkleinern Sie die Prozedur.

•	Sie haben eine sehr große Schleifenstruktur verwendet, die von Anfang bis Ende mehr als 32 KB Speicher benötigt.

Verkleinern Sie die Schleife.

•	Sie haben eine sehr große If-Blockstruktur verwendet, die einen Then- oder Else-Abschnitt enthält, der von Anfang bis Ende mehr als 32 KB Speicher benötigt.

Verkleinern Sie den Abschnitt der Struktur, der mehr als 32 KB umfaßt.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Do ohne Loop

Für jede Do-Anweisung muß eine abschließende Loop-Anweisung existieren. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Eine Do-Anweisung wurde ohne die abschließende Loop-Anweisung verwendet.

Überprüfen Sie, ob andere Kontrollstrukturen innerhalb der Do...Loop-Struktur ordnungsgemäß abgeschlossen sind. Ein If-Block ohne zugehörige End If-Anweisung innerhalb der Do...Loop-Struktur kann z.B. zu diesem Fehler führen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Mehrfachdeklaration im aktuellen Gültigkeitsbereich

Der angegebene Name wurde in diesem Gültigkeitsbereich bereits verwendet. Zwei Variablen können z.B. denselben Namen besitzen, wenn sie in zwei verschiedenen Prozeduren definiert wurden, aber nicht, wenn sie in derselben Prozedur definiert wurden. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Eine neue Variable oder Prozedur besitzt denselben Namen wie eine bestehende Variable oder Prozedur. Beispiel:

Sub Sub1()

Dim A As Integer

Dim A As Variant

. . .	' Weitere Deklarationen oder 	' Prozedurcode.

End Sub

Überprüfen Sie die aktuelle Prozedur, das aktuelle Modul oder das aktuelle Projekt, und entfernen Sie alle mehrfach vorkommenden Deklarationen.

•	Eine Const-Anweisung verwendet denselben Namen wie eine bestehende Variable oder Prozedur.

Entfernen Sie die fragliche Konstante, oder benennen Sie sie um.

•	Sie haben ein Datenfeld fester Länge mehrmals deklariert.

Entfernen Sie eines der Datenfelder, oder benennen Sie es um.

Suchen Sie nach dem mehrmals vorkommenden Namen. Geben Sie bei der Angabe des zu suchenden Namens keine Typkennzeichen (sofern vorhanden) ein, da es zu einem Konflikt kommt, wenn die Namen übereinstimmen und die Typkennzeichen verschieden sind.

Eine Variable auf Modulebene kann zwar denselben Namen besitzen wie eine Variable, die in einer Prozedur deklariert wurde, aber wenn Sie auf die Modulebenen-Variable innerhalb der Prozedur verweisen möchten, müssen Sie sie zusammen mit dem Modulnamen angeben. Modulnamen und die Namen referenzierter Projekte können innerhalb von Prozeduren ebenfalls als Variablennamen wiederverwendet und ggf. vollständig angegeben werden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Definition mehrfach vorhanden

Sie können nur einen Wert zur Definition einer Konstanten für die bedingte Kompilierung verwenden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben zwei unterschiedliche Werte für dieselbe Konstante für die bedingte Kompilierung angegeben, z.B.:

#Const Mac = 0

#Const Mac = 1

Entfernen Sie eine der Definitionen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Mehrfache Verwendung der Deftyp-Anweisung

DefTyp-Anweisungen im selben Gültigkeitsbereich müssen eindeutige Buchstabenbereiche angeben. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Ein Teil des Buchstabenbereichs oder der gesamte Bereich für diese DefTyp-Anweisung ist bereits in einer anderen DefTyp-Anweisung enthalten.

Ändern Sie die Anweisung so, daß sich die Buchstabenbereiche nicht mehr überschneiden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Option-Anweisung mehrfach vorhanden

In jedem Modul kann nur eine Option-Anweisung eines bestimmten Typs enthalten sein. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben mehrere Option Base-, Option Compare-, Option Explicit- oder Option Private-Anweisungen in diesem Modul verwendet.

Entfernen Sie alle mehrmals vorkommenden Anweisungen aus dem Modul.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Bearbeitungsvorgang nicht umkehrbar. Möchten Sie dennoch fortfahren?

Sie können nach dieser Änderung den Befehl Rückgängig nicht mehr ausführen, um den aktuellen Zustand wiederherzustellen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Wahrscheinlich sind die Änderungen zu umfangreich, um gespeichert werden zu können.

Versuchen Sie eine Bearbeitung in mehreren Teilschritten.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Else ohne If

Vor einer Else-Anweisung muß eine If-Anweisung stehen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Eine Else-Anweisung wurde ohne zugehörige If-Anweisung verwendet.

Überprüfen Sie andere Kontrollstrukturen innerhalb der If...End If-Struktur, und sorgen Sie dafür, daß diese in den jeweils zusammengehörenden Paaren auftreten. Überprüfen Sie auch, ob der If-Block die richtige Struktur aufweist.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Enum ohne Elemente nicht möglich

Ein Enum-Typ legt den Namen und die Elemente für eine Aufzählung fest. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben eine Aufzählung in einem Enum…End Enum-Block festgelegt, jedoch keine Elemente angegeben.

Fügen Sie dem Enum…End Enum-Block mindestens ein Element hinzu.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Leerer Überwachungsausdruck

Im Dialogfeld Überwachung hinzufügen muß ein Ausdruck eingegeben werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben im Dialogfeld Überwachung hinzufügen keinen Überwachungsausdruck angegeben.

Tragen Sie einen Überwachungsausdruck in das Dialogfeld Überwachung hinzufügen ein, oder drücken Sie die Taste ESC.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


End If ohne If-Block

Für eine End If-Anweisung muß eine entsprechende If-Anweisung existieren. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Der If-Abschnitt wurde nicht angegeben oder vom End If-Abschnitt getrennt.

Überprüfen Sie andere Kontrollstrukturen innerhalb der If...End If-Struktur, und sorgen Sie dafür, daß diese in den jeweils zusammengehörenden Paaren auftreten. Überprüfen Sie auch, ob der If-Block die richtige Struktur aufweist.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ende des Suchbereichs erreicht. Möchten Sie die Suche am Anfang des Suchbereichs fortsetzen?

Ihre Suche war nicht erfolgreich. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die Vorwärtssuche ist am Ende des angegebenen Bereichs angelangt.

Sie können die Suche entweder am Anfang des Suchbereichs fortsetzen oder aber die Suche abbrechen und den Suchbereich ändern.


End Select ohne Select Case

Vor einer End Select-Anweisung muß eine zugehörige Select Case-Anweisung stehen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben eine End Select-Anweisung ohne zugehörige Select Case-Anweisung verwendet.

Der Grund liegt in der Regel in einer überflüssigen End Select-Anweisung unterhalb eines Select Case-Blocks; oder die End Select-Anweisung wurde nicht gelöscht, als ein Select Case-Block von einer Prozedur in eine andere kopiert wurde. Überprüfen Sie, ob alle End Select-Anweisungen die zugehörige Select Case-Struktur abschließen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


End With ohne With

Für eine End With-Anweisung muß eine zugehörige With-Anweisung existieren. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben eine End With-Anweisung ohne zugehörige With-Anweisung verwendet.

Überprüfen Sie andere Kontrollstrukturen innerhalb der With...End With-Struktur, und sorgen Sie dafür, daß diese in den jeweils zusammengehörenden Paaren auftreten. Eine If-Anweisung ohne ein zugehöriges End If in der With...End With-Struktur führt beispielsweise zu diesem Fehler.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Private Enum-Typen und Enum-Typen, die in Standardmodulen oder privaten Klassen definiert sind, können in öffentlichen Objektmodulen nicht als Parameter oder Rückgabetypen für öffentliche Prozeduren, als öffentliche Datenmitglieder oder als Felder öffentlicher, benutzerdefinierter Typen verwendet werden
Private Enum-Typen und Enum-Typen, die in Standardmodulen oder privaten Klassen definiert sind, können in öffentlichen Objektmodulen nicht als Parameter oder Rückgabetypen für öffentliche Prozeduren, als Prozeduren, als öffentliche Datenmitglieder oder als Felder öffentlicher, benutzerdefinierter Typen verwendet werden

Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Eine nicht offengelegte Aufzählung wurde als Typ für einen Parameter oder Rückgabewert einer öffentlichen Prozedur oder als öffentliches Datenmitglied einer offengelegten Klasse verwendet.

Offengelegt bedeutet hier, daß die Aufzählung von dem zu definierenden ActiveX-Server offengelegt wird, oder anders ausgedrückt, daß sie in einer öffentlichen Klasse eines ActiveX-Exe- oder -Dll-Projekts deklariert wird.


Fehler beim Zugriff auf die Systemregistrierung

Einige Operationen müssen auf die Registrierungsdatenbank Ihres Systems zugreifen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die Registrierungsdatenbank Ihres Systems wurde beschädigt.

Führen Sie das Setup-Programm für die Host-Anwendung erneut aus.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ereignisbehandlungsroutine ist ungültig

Die Liste der Parameter einer Prozedur zur Ereignisbehandlung muß genau mit der Ereignisdeklaration übereinstimmen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die Prozedur zur Ereignisbehandlung besitzt die falsche Anzahl an Parametern.

Löschen Sie die zusätzlichen Parameter, oder fügen Sie die fehlenden Parameter hinzu.

•	Einer oder mehrere der Parameter der Ereignisbehandlungsprozedur weisen einen unzulässigen Datentyp auf.

Stimmen Sie die Parametertypen mit denen der Ereignisdeklaration ab.

•	Die Ereignisbehandlungsprozedur ist keine Sub-, sondern eine Function-Prozedur.

Ändern Sie die Prozedur in eine Sub-Anweisung ab. Eine Ereignisbehandlungsroutine kann keinen Wert zurückgeben.

•	Eine andere Klassenbibliothek verwendet den Ereignisnamen als eigenen Typ.

Geben Sie für den Namen der entsprechenden Klassenbibliothek an, um Mehrdeutigkeit zu vermeiden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Deklaration der Prozedur entspricht nicht der Beschreibung eines Ereignisses oder einer Prozedur mit demselben Namen

In Ihrem Klassenmodul tritt ein Prozedurname auf, der in Konflikt mit dem Namen eines Ereignisses steht. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Eine Prozedur besitzt denselben Namen wie ein Ereignis, aber eine andere Signatur (d.h. Anzahl und Typ der Parameter). Diese Situation entsteht beispielsweise, wenn Sie einer Ereignisprozedur neue Parameter hinzufügen. Der Fehler tritt z.B. auch dann auf, wenn Sie die Definition der Form_Load-Ereignisprozedur wie folgt ändern:

Sub Form_Load (Param1 As Integer)

. . .

End Sub

Wenn die Prozedur nicht die entsprechende Ereignisprozedur für das Ereignis ist, ändern Sie ihren Namen. Ist die Prozedur die Ereignisprozedur für das Ereignis, dann sorgen Sie dafür, daß ihre Parameterliste mit der für das Ereignis erforderlichen Parameterliste (sofern vorhanden) übereinstimmt.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Exit Do nicht innerhalb von Do...Loop

Exit Do ist nur innerhalb einer Do...Loop-Anweisung zulässig. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben eine Exit Do-Anweisung außerhalb einer Do...Loop-Anweisung verwendet.

Sorgen Sie dafür, daß eine gültige Do-Anweisung vor Exit Do steht.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Exit For nicht innerhalb von For...Next

Exit For ist nur innerhalb einer For...Next-Schleife zulässig. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben eine Exit For-Anweisung außerhalb einer For...Next-Anweisung verwendet.

Sorgen Sie dafür, daß eine gültige For-Anweisung vor Exit For steht.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Exit Function nicht zulässig in Sub oder Property

Eine Exit-Anweisung muß sich auf die Prozedur beziehen, in der die Anweisung auftritt. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben Exit Function in einer Sub- oder Property-Prozedur verwendet.

Verwenden Sie Exit Sub oder Exit Property für diese Prozedurtypen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Exit Property nicht zulässig in Function oder Sub

Eine Exit-Anweisung muß sich auf die Prozedur beziehen, in der die Anweisung auftritt. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben Exit Property in einer Sub- oder Function-Prozedur verwendet.

Verwenden Sie die richtige Exit-Anweisung für diesen Prozedurtyp.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Exit Sub nicht zulässig in Function oder Property

Eine Exit-Anweisung muß sich auf die Prozedur beziehen, in der die Anweisung auftritt. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben Exit Sub in einer Function- oder Property-Prozedur verwendet.

Verwenden Sie die richtige Exit-Anweisung für diesen Prozedurtyp.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Erwartet: Datenfeld

Ein Variablenname mit einem Index zeigt an, daß die Variable ein Datenfeld ist. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die angegebene Syntax kann für ein Datenfeld verwendet werden, aber im Gültigkeitsbereich befindet sich kein Datenfeld mit diesem Namen.

Überprüfen Sie, ob der Name der Variablen korrekt geschrieben ist. Wenn das Modul keine Option Explicit-Anweisung enthält, wird bei der ersten Verwendung eine Variable erstellt. Wenn Sie den Namen einer Datenfeldvariablen falsch schreiben, wird die Variable zwar erstellt, allerdings nicht als Datenfeldvariable.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


End Function erwartet

Eine End Prozedur-Anweisung muß sich auf die Prozedur beziehen, in der sie auftritt. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben End Property oder End Sub verwendet, um eine Function-Prozedur zu beenden.

Verwenden Sie End Function für diesen Prozedurtyp.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


End Property erwartet

Eine End Prozedur-Anweisung muß sich auf die Prozedur beziehen, in der sie auftritt. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben End Function oder End Sub verwendet, um eine Property-Prozedur zu beenden.

Verwenden Sie End Property für diesen Prozedurtyp.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


End Sub erwartet

Eine End Prozedur-Anweisung muß sich auf die Prozedur beziehen, in der sie auftritt. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben End Function oder End Property verwendet, um eine Sub-Prozedur zu beenden.

Verwenden Sie End Sub für diesen Prozedurtyp.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


End With erwartet

Ein With-Block muß abgeschlossen sein. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben einen With-Block nicht ordnungsgemäß abgeschlossen.

Fügen Sie ein End With am Ende des Blocks ein.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Function oder Variable erwartet

Die Syntax der Anweisung deutet auf eine Variable oder einen Funktionsaufruf hin. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Es handelt sich nicht um den Namen einer bekannten Variablen oder Function-Prozedur.

Überprüfen Sie, ob der Name korrekt geschrieben wurde. Sorgen Sie außerdem dafür, daß eine Variable oder Funktion mit diesem Namen im in dem Programmteil verfügbar ist, aus dem sie referenziert wird. Wenn die Funktion z.B. als Private oder die Variable nicht als Public definiert wurde, kann nur aus dem eigenen Modul darauf zugegriffen werden.

•	Sie versuchen, einem Prozedurnamen fälschlicherweise einen Wert zuzuweisen. Wenn beispielsweise Sub1 eine Sub-Prozedur ist, verursacht der folgende Code diesen Fehler:

Sub1 = 237	' Verursacht Fehler "Funktion oder 	' Variable erwartet"

Sie können die Zuweisungssyntax bei einer Property Let-Prozedur, einer Function-Prozedur, die ein Objekt zurückgibt, oder einem Variant-Wert, der ein Objekt enthält, verwenden. Bei einer Sub-, Property Get- oder Property Set-Prozedur können Sie die Zuweisungssyntax jedoch nicht verwenden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Prozedur anstelle eines Moduls erwartet

Im aktuellen Gültigkeitsbereich befindet sich keine Prozedur mit diesem Namen, aber es gibt ein Modul mit diesem Namen. Sie können eine Prozedur aufrufen, jedoch kein Modul. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Der Name eines Moduls wurde für einen Prozeduraufruf verwendet.

Überprüfen Sie, ob der Prozedurname richtig geschrieben wurde, und sorgen Sie dafür, daß die aufzurufende Prozedur nicht in einem anderen Modul als Private definiert ist.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Prozedur anstelle eines Projekts oder einer Bibliothek erwartet

Im aktuellen Gültigkeitsbereich befindet sich keine Prozedur mit diesem Namen, aber es gibt ein Projekt mit diesem Namen. Sie können eine Prozedur aufrufen, jedoch kein Projekt. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Der Name eines Projekts wird für einen Prozeduraufruf verwendet.

Überprüfen Sie, ob der Prozedurname richtig geschrieben wurde, und sorgen Sie dafür, daß die aufzurufende Prozedur nicht in einem anderen Modul als Private definiert ist.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Prozedur anstelle eines benutzerdefinierten Typs erwartet

Im aktuellen Gültigkeitsbereich befindet sich keine Prozedur mit diesem Namen, aber es gibt einen benutzerdefinierten Typ mit diesem Namen. Sie können eine Prozedur aufrufen, jedoch keinen benutzerdefinierten Typ. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Der Name eines benutzerdefinierten Typs wird für einen Prozeduraufruf verwendet.

Überprüfen Sie, ob der Prozedurname richtig geschrieben wurde, und sorgen Sie dafür, daß die aufzurufende Prozedur nicht in einem anderen Modul als Private definiert ist.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Prozedur anstelle einer Variablen erwartet

Im aktuellen Gültigkeitsbereich befindet sich keine Prozedur mit diesem Namen, aber es gibt eine Variable mit diesem Namen. Sie können eine Prozedur aufrufen, jedoch keine Variable. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Der Name einer Variablen wird für einen Prozeduraufruf verwendet.

Ein anderer Grund für diesen Fehler ist ein falsch geschriebener Name einer gültigen Prozedur, der als implizit definierte Variable interpretiert werden kann. Überprüfen Sie, ob der Prozedurname richtig geschrieben wurde, und sorgen Sie dafür, daß die aufzurufende Prozedur nicht in einem anderen Modul als Private definiert ist.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Sub, Function oder Property erwartet

Die Syntax der Anweisung zeigt den Aufruf einer Sub-, Function- oder Property-Prozedur an. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Beim angegebenen Namen handelt es sich nicht um eine bekannte Sub-, Function- oder Property-Prozedur im Gültigkeitsbereich dieses Programmteils.

Überprüfen Sie, ob der Name richtig geschrieben wurde. Wenn die Prozedur als Private definiert ist, kann sie nur aus dem umgebenden Modul aufgerufen werden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Benutzerdefinierter Typ anstelle eines Projekts erwartet

Im aktuellen Gültigkeitsbereich befindet sich kein benutzerdefinierter Typ mit diesem Namen, aber es gibt ein Projekt mit diesem Namen. Sie können eine Variable mit einem benutzerdefinierten Typ definieren, jedoch nicht mit dem Projekttyp. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Der Name eines Projekts wird als benutzerdefinierter Typ verwendet.

Überprüfen Sie, ob der Name des benutzerdefinierten Typs richtig geschrieben wurde, und sorgen Sie dafür, daß der benutzerdefinierte Typ nicht in einem anderen Modul als Private deklariert ist.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Variable oder Prozedur erwartet, nicht Aufzählungstyp

Ein Name vom Typ Enum erscheint nur in einer Anweisung zur Deklaration einer Aufzählung des Typs oder als Bezeichner. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Ein Name vom Typ Enum wird anstelle des Namens einer Aufzählungsvariablen des Typs verwendet.

Deklarieren Sie eine Variable vom Typ Enum, oder suchen Sie nach einer früheren Deklaration im aktuellen Gültigkeitsbereich, und verwenden Sie diese Variable.

•	Ein Name vom Typ Enum wird anstelle einer Variablen oder eines Prozedurnamens verwendet.

Überprüfen Sie, ob der Name des Bezeichners, der den Fehler verursachte, richtig geschrieben wurde. Verwenden Sie den Namen einer Variablen oder Prozedur, in der Sie einen Enum-Typ festgelegt haben.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Variable oder Prozedur anstelle eines Moduls erwartet

Im aktuellen Gültigkeitsbereich befindet sich keine Variable oder Prozedur mit diesem Namen, aber es gibt ein Modul mit diesem Namen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Der Name eines Moduls wird als Variable oder Prozedur verwendet.

Überprüfen Sie, ob der Name der Variablen oder Prozedur richtig geschrieben wurde, und sorgen Sie dafür, daß der von Ihnen verwendete Name nicht in einem anderen Modul als Private definiert oder deklariert ist. Ein Modulname kann als Bezeichner verwendet werden, darf jedoch nicht einzeln auftreten.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Variable oder Prozedur anstelle eines Projekts erwartet

Im aktuellen Gültigkeitsbereich befindet sich keine Variable oder Prozedur mit diesem Namen, aber es gibt ein Projekt mit diesem Namen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Der Name eines Projekts wird als Variable oder Prozedur verwendet.

Überprüfen Sie, ob der Name der Variablen oder Prozedur richtig geschrieben wurde, und sorgen Sie dafür, daß der von Ihnen verwendete Name nicht in einem anderen Modul als Private deklariert oder definiert ist. Ein Projektname kann als Bezeichner verwendet werden, darf jedoch nicht einzeln auftreten.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Erwartet: <Verschiedenes>

Ein erwarteter Teil der Syntax wurde nicht gefunden. Der Fehler liegt in der Regel links vom ausgewählten Element, ist aber nicht immer offensichtlich. Sie können z.B. eine Sub-Prozedur mit oder ohne das Schlüsselwort Call aufrufen. Wenn Sie jedoch das Schlüsselwort Call verwenden, müssen Sie die Argumentliste in Klammern setzen. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Erwartet: Anweisungsende. Falsche Verwendung von Klammern in einem Prozeduraufruf:

X = Workbook.Add F:= 5	' Fehlende Klammern.

Call Sub1 5	' Fehlende Klammern.

Sie müssen Klammern verwenden, wenn ein Funktionsaufruf Argumente beinhaltet. Außerdem müssen Sie die Argumentliste einer Sub-Prozedur in Klammern setzen, wenn diese mit dem Schlüsselwort Call aufgerufen wird.

•	Erwartet: ). Falsche Syntax für einen Prozeduraufruf. Ein Funktionsaufruf kann z.B. nicht alleine stehen. Außerdem benötigen Aufrufe von Sub-Prozeduren je nach Angabe der Argumente manchmal das Schlüsselwort Call.

Workbook.Add (X:=5, Y:=7)	' Funktionsaufruf ohne 	' Ausdruck.

Sub1(5, 7)	' Aufruf einer Sub-Prozedur ohne Call.

Verwenden Sie in Ausdrücken immer Funktionsaufrufe. Wenn Sie im Aufruf einer Sub-Prozedur mehrere in Klammern eingeschlossene Argumente angeben, müssen Sie das Schlüsselwort Call verwenden.

•	Erwartet: Ausdruck. Wenn Sie z.B. Code aus dem Objektkatalog einfügen, haben Sie möglicherweise vergessen, einen Wert für ein benanntes Argument anzugeben.

Workbook.Add (X:= )	' Kein Wert für benanntes

' Argument angegeben.

Geben Sie entweder einen Wert für das Argument an, oder löschen Sie es, wenn es optional ist.

•	Erwartet: Variable. Möglicherweise haben Sie eingeschränkte Schlüsselwörter für Variablennamen verwendet. Im folgenden Beispiel erwartet die Input #-Anweisung als zweites Argument eine Variable. Da Type aber ein eingeschränktes Schlüsselwort ist, kann es nicht als Variablenname verwendet werden.

Input # 1, Type	' Schlüsselwort Type unerlaubterweise 	' als Variablenname verwendet.

Benennen Sie die Variable um, damit sie nicht mehr mit eingeschränkten Schlüsselwörtern in Konflikt steht.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Externer Name nicht definiert

Sie können externe Namen angeben, indem Sie sie in eckige Klammern ([ ]) einschließen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Der in eckigen Klammern angegebene Bezeichner hat in der Host-Anwendung keine Bedeutung.

Überprüfen Sie, ob der Name richtig geschrieben wurde, damit sichergestellt ist, daß er den Erwartungen der Host-Anwendung entspricht.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Dateiformat wird nicht mehr unterstützt

Nicht alle Dateiformate können unter allen Umständen gelesen werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, eine Binärdatei zu laden, die mit einer früheren Version von Visual Basic erstellt wurde.

Laden Sie die Datei in die Version von Visual Basic, mit der die Datei erstellt wurde, speichern Sie sie im Textformat, und laden Sie sie dann erneut.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Zeichenfolgen fester Länge und die Verwendung des Bezeichners 'new' sind in Feldern eines öffentlichen benutzerdefinierten Typs, der in einem Objektmodul definiert ist, nicht erlaubt

Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Zeichenfolgen fester Länge und die Verwendung des Bezeichners ´new´sind in Feldern eines öffentlichen benutzerdefinierten Typs, der in einem Objektmodul definiert ist, nicht erlaubt.


Zeichenfolgen fester Länge sind als Typ eines öffentlichen Mitglieds eines Objektmoduls nicht erlaubt; private Objektmodule sind als Typ eines öffentlichen Mitglieds eines Objektmoduls nicht erlaubt

Für diesen Fehler gibt es folgende Ursachen und Lösungen:

•	Sie können den Typ eines öffentlichen Mitglieds eines Objektmoduls nicht auf eine Zeichenfolge fester Länge einstellen. Verwenden Sie einen anderen Variablentyp.

•	Sie können den Typ eines öffentlichen Mitglieds eines Objektmoduls nicht auf ein privates Objektmodul einstellen. Verwenden Sie einen anderen Typ.


Unveränderliche oder statische Daten können maximal 64 KB umfassen

Konstante und statische Daten umfassen nicht automatische Variablen, Zeichenfolgen fester Länge und Datenfelder fester Größe. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Sie haben versucht, mehr als 64 KB für Daten auf Modulebene zu reservieren.

Verringern Sie die deklarierte Datenmenge. Obwohl Daten auf Modulebene 64 KB nicht überschreiten dürfen, können Zeichenfolgen variabler Länge und Datenfelder auf Modulebene diesen Wert überschreiten.

•	Sie haben versucht, mehr als 64 KB für statische Daten auf Prozedurebene im Modul zu reservieren.

Verringern Sie die deklarierte Datenmenge dieses Typs. Statische Daten aus allen Prozeduren in einem Modul sind zusammengenommen auf maximal 64 KB beschränkt (nicht auf 64 KB pro Prozedur). Statische Zeichenfolgen variabler Länge und Datenfelder können diesen Wert überschreiten.

•	Die Größe eines benutzerdefinierten Typs überschreitet 64 KB.

Verringern Sie die Größe des benutzerdefinierten Typs. Die Größe eines benutzerdefinierten Typs entspricht im allgemeinen der Summe der einzelnen Elementgrößen. Auf einigen Plattformen können Lücken zwischen den Elementen entstehen, um die Elemente an Wortgrenzen auszurichten. Wenn Sie einen benutzerdefinierten Typ in einem anderen benutzerdefinierten Typ verschachteln, muß außerdem die Größe des eingeschlossenen Typs bei der Größe des neuen Typs berücksichtigt werden.

•	Sie haben versucht, in einer Prozedur eine Variable eines benutzerdefinierten Typs zu deklarieren, die mehr als 32 KB erfordert.

Obwohl die Größenbeschränkung für Variablen benutzerdefinierter Typen auf Modulebene 64 KB beträgt, dürfen Variablen eines benutzerdefinierten Typs in Prozeduren nicht größer als 32 KB sein. Verkleinern Sie die Variable des benutzerdefinierten Typs, oder verwenden Sie eine Variable auf Modulebene.

•	Die Länge einer in einer Prozedur deklarierten Zeichenfolge überschreitet 65.464 Zeichen.

Verkürzen Sie die Zeichenfolge fester Länge. Bei Zeichenfolgen variabler Länge gilt diese Einschränkung nicht.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


For-Steuervariable wird bereits verwendet

Beim Verschachteln von For...Next-Schleifen müssen Sie in jeder Schleife eine andere Steuervariable verwenden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Eine innere For-Schleife verwendet denselben Zähler wie eine umschließende For-Schleife.

Überprüfen Sie verschachtelte Schleifen auf Wiederholungen. Wenn die äußere Schleife z.B. For Zähler = 1 To 25 verwendet, können die inneren Schleifen Zähler nicht mehr als Steuervariable verwenden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Steuervariable für For Each muß vom Typ Variant oder Object sein

Eine Steuervariable entspricht dem Element-Teil in der Syntax der For Each...Next-Anweisung. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Eine Auflistung besitzt eine Steuervariable, die nicht vom Typ Variant oder Object ist.

Sorgen Sie dafür, daß der Element-Teil der For Each...Next-Syntax vom Typ Variant oder Object ist.

•	Ein Datenfeld besitzt eine Steuervariable, die nicht vom Typ Variant ist.

Sorgen Sie dafür, daß der Element-Teil der For Each...Next-Syntax vom Typ Variant ist.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


For Each-Steuervariable bei Datenfeldern muß vom Typ Variant sein

Eine Steuervariable entspricht dem Element-Teil in der Syntax der For Each...Next-Anweisung. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Ein Datenfeld besitzt eine Steuervariable, die nicht vom Typ Variant ist.

Sorgen Sie dafür, daß der Element-Teil der For Each...Next-Syntax vom Typ Variant ist.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


For Each darf nicht für Datenfelder eines benutzerdefinierten Typs oder mit fester Zeichenfolgenlänge verwendet werden

For Each-Konstruktionen können nur für Auflistungen und Datenfelder mit integrierten Typen (einschließlich Datenfelder mit Objekten) verwendet werden. Auch können keine Zeichenfolgen fester Länge mit For Each in einer Schleife durchlaufen werden. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Die Elemente des Datenfelds in der For Each-Konstruktion besitzen einen benutzerdefinierten Typ.

Verwenden Sie eine For...Next-Schleife, um die Elemente des Datenfelds zu durchlaufen.

•	Die Elemente des Datenfelds in der For Each-Konstruktion enthalten eine Zeichenfolge fester Länge.

Verwenden Sie eine For...Next-Schleife, um die Elemente des Datenfelds zu durchlaufen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


For Each kann nur zum Durchlaufen einer Auflistung oder eines Datenfelds verwendet werden

Die For Each-Konstruktion kann nur mit Auflistungen und Datenfeldern verwendet werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben im Gruppen-Teil der For Each-Syntax ein Objekt angegeben, das keine Auflistung und auch kein Datenfeld ist.

Überprüfen Sie, ob das Element, das durchlaufen werden soll, richtig geschrieben wurde. Bei dem Element muß es sich um eine Auflistung oder ein Datenfeld handeln, die oder das im Gültigkeitsbereich des aktuellen Codes liegt.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


For ohne Next

Für jede For-Anweisung muß eine zugehörige Next-Anweisung existieren. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Eine For-Anweisung wird ohne zugehörige Next-Anweisung verwendet.

Überprüfen Sie, ob sich eine unvollständige For...Next-Struktur innerhalb der umgebenden For...Next-Struktur befindet.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Vorwärtsverweis auf benutzerdefinierten Typ

Ein benutzerdefinierter Typ muß definiert werden, bevor darauf verwiesen werden kann. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Sie haben eine Variable mit einem benutzerdefinierten Typ deklariert, bevor Sie den zugehörigen benutzerdefinierten Typ definiert haben. Im folgenden Beispiel wird die Variable AndereVar deklariert, bevor der zugehörige Typ (AndererTyp) bekannt ist:

Type Typ1

AndereVar As AndererTyp

End Type

Type AndererTyp

WholeVar As Integer

RealVar As Double

End Type

Stellen Sie die Typdefinitionen so um, daß kein Vorwärtsverweis auftritt.

•	Sie haben einen benutzerdefinierten Typ in demselben benutzerdefinierten Typ verschachtelt.

Type Typ1

Var1 As Integer

AndereVar As Typ1

End Type

Entfernen Sie den auf sich selbst verweisenden verschachtelten Typ. Diese Situation kann indirekt eintreten, wenn Sie einen Typ innerhalb eines anderen Typs verschachteln, in dem der erste Typ bereits deklariert ist. Überprüfen Sie die Definition aller verschachtelten Typen, damit keine Typen mehrfach auftreten.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Funktionsaufruf auf der linken Seite der Zuweisung muß den Typ Variant oder Object zurückgeben

Ein Funktionsaufruf kann nur dann auf der linken Seite einer Zuweisung stehen, wenn der Rückgabewert der Funktion vom Typ Object oder Variant ist. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Der Rückgabetyp der Funktion auf der linken Seite der Zuweisung ist nicht Object oder Variant.

Ändern Sie den Rückgabetyp. Wenn der Rückgabewert den Typ Object besitzt oder ein Variant-Wert ist, der ein Objekt enthält, findet die Zuweisung zur Standard-Eigenschaft des Objekts statt. Wenn der zurückgegebene Variant-Wert kein Objekt ist, wird nichts zugewiesen.

•	Alle Angaben des Aufrufs sind korrekt, dieser kann jedoch nicht ausgeführt werden. Sie können z.B. eine Eigenschaft festlegen, die nur zur Entwurfszeit festgelegt werden kann.

Wechseln Sie in den Entwurfsmodus, und legen Sie die Eigenschaft im Fenster Eigenschaft fest. Löschen Sie den Code, der versucht hat, die Eigenschaft über das Programm einzurichten.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Funktion oder Schnittstelle kann nur eingeschränkt verwendet werden oder verwendet einen Typ der Automatisierung, der von Visual Basic nicht unterstützt wird

Nicht auf jede Prozedur, die in einer Klassenbibliothek oder Objektbibliothek enthalten ist, kann von jeder Programmiersprache zugegriffen werden. Der Entwickler einer Klassen- oder Objektbibliothek kann die Verwendung einiger Funktionen durch Makrosprachen einschränken. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Sie haben versucht, eine als eingeschränkt gekennzeichnete Funktion zu verwenden.

Sie können diese Funktion in Ihrem Programm nicht verwenden. Wenn Ihnen die Dokumentation der Bibliothek dieses Objekts zur Verfügung steht, überprüfen Sie, ob eine Methode mit gleichwertiger Funktionalität verfügbar ist.

•	Sie haben versucht, eine Funktion zu verwenden, deren Parameter- oder Rückgabetyp in Visual Basic nicht verfügbar ist.

Manchmal können Sie bestimmte Rückgabetypen mit Visual Basic-Datentypen simulieren, insbesondere mit den Untertypen des Datentyps Variant. Unter Umständen funktioniert dies auch für Parametertypen, die keine Basic-Typen sind und als Verweis übergeben werden müssen. Sie können allerdings eine Variable des Datentyps Variant nicht als Wert übergeben, um so einen Parametertyp zu simulieren, der kein Basic-Typ ist.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Bezeichner zu lang

Bezeichner dürfen nicht länger als 255 Zeichen sein. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Der Bezeichner ist länger als 255 Zeichen.

Verkürzen Sie den Bezeichner.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Bezeichner unter dem Cursor nicht erkannt

Sie haben versucht, eine Prozedur anzuzeigen, aber der Bezeichner an der Einfügemarke ist kein Prozedurname. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Der Bezeichner ist kein Prozedurname.

Überprüfen Sie, ob der Bezeichner richtig geschrieben wurde.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Falsche DLL-Version

Jede Visual Basic-Version funktioniert nur zusammen mit der zugehörigen Dynamic Link Library (DLL). Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Ihre Version der Visual Basic-DLL entspricht nicht der Version, die von dieser Host-Anwendung erwartet wird. Das Programm versucht, Routinen in einer DLL aufzurufen, aber die Version der Bibliothek ist nicht mit Visual Basic oder mit der Host-Anwendung kompatibel.

Fordern Sie die richtige Version der Bibliothek oder Ressource an, und sorgen Sie dafür, daß im Pfad keine älteren Versionen vor der richtigen Version aufgeführt sind.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Falsche OLE-Version

Ihre Versionen der OLE-DLLs (DLL = Dynamic Link Library) (Windows) or code resource (Macintosh) entsprechen nicht der Version, die von der Host-Anwendung erwartet wird. Unter Microsoft Windows sucht die Anwendung nach den DLLs zuerst im aktuellen Verzeichnis, dann in den Einstellungen des Systempfades und schließlich im Verzeichnis WINDOWS\SYSTEM. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Ältere OLE-DLLs wurden bei der Suche vor den von der Host-Anwendung erwarteten DLLs gefunden.

Sie sollten nicht beide DLL-Versionen verwenden.

Auf dem Macintosh befinden sich OLE-Dateien normalerweise nur im Ordner Systemerweiterungen; daher ist das Auftreten dieses Fehlers auf einem Macintosh unwahrscheinlich.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Variable kann im Direktbereich nicht erstellt werden

Der Speicher im Direktfenster ist begrenzt. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben im Direktfenster eine Variable angegeben, die eingerichtet werden muß, da sie nicht im Programm-Code erstellt wurde.

•	Löschen Sie den Verweis auf die Variable im Direktfenster, oder deklarieren Sie die Variable im Programm-Code, damit sie nicht im Direktfenster erstellt werden muß.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Nicht genügend Speicher zum Speichern der Rückgängig-Informationen

Sie können nach dieser Bearbeitung den Befehl Rückgängig nicht mehr ausführen, um den aktuellen Zustand wiederherzustellen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die Änderungen sind zu umfangreich, um für den Befehl Rückgängig gespeichert werden zu können.

Versuchen Sie eine Bearbeitung in mehreren Teilschritten.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Unzureichende Projektinformationen, um Projekt auf dieser Plattform oder mit der aktuell verwendeten Version zu laden

Beim Speichern eines Projekts werden zusätzliche Informationen gespeichert, die das Laden des Projekts mit einer höheren Programmversion oder auf einer unterschiedlichen Plattform ermöglichen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Beim Laden des Projekts trat ein Fehler auf, der anzeigte, daß nicht genügend Speicher zur Verfügung steht, um alle Informationen zu speichern, die zum Laden des Projekts mit einer anderen Programmversion oder auf einer unterschiedlichen Plattform notwendig sind.

Laden Sie die Datei mit der Visual Basic-Version, in der sie zuvor gespeichert wurde, oder auf der Plattform, auf der sie zuvor gespeichert wurde, und speichern sie die Datei erneut. Wenn beim Speichern keine Fehlermeldung angezeigt wird, sollte es möglich sein, das Projekt in der aktuellen Programmversion oder auf der aktuellen Plattform zu laden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Keine gültige Schnittstelle für Implementierung

Nicht alle Schnittstellen können in Visual Basic implementiert werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die Schnittstelle enthält Elemente, die von Visual Basic nicht unterstützt werden. Visual Basic besitzt beispielsweise keine Entsprechung zum vorzeichenlosen Typ Long Integer, Visual Basic kann einen Parameter einer Prozedur nicht als "nur Ausgabe" (engl.: out-only) definieren. Visual Basic unterstützt zwar die Verwendung des Unterstrichs (_) in Visual Basic-Bezeichnern, kann jedoch keine Schnittstelle implementieren, die Unterstriche für die Namen ihrer Elemente verwendet.

Die Schnittstelle kann in Visual Basic nicht implementiert werden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültiger Zugriffsmodus

In der Open-Anweisung wurde ein Zugriffsmodus angegeben, der für den angegebenen Dateityp nicht zulässig ist. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Sie haben versucht, eine Datei im Modus Input zu öffnen, haben aber einen unzulässigen Zugriffsmodus angegeben.

Sie brauchen keinen Zugriffsmodus anzugeben, wenn Sie eine Datei für Eingaben öffnen. Wenn Sie jedoch einen Zugriffsmodus angeben, müssen Sie Read verwenden. Sowohl Write als auch ReadWrite sind bei Dateien, die im Modus Input geöffnet wurden, unzulässig.

•	Sie haben versucht, eine Datei im Modus Append zu öffnen, haben aber einen unzulässigen Zugriffsmodus angegeben.

Sie brauchen keinen Zugriffsmodus anzugeben, wenn Sie eine Datei für das Hinzufügen öffnen. Wenn Sie jedoch einen Zugriffsmodus angeben, müssen Sie Write verwenden. Sowohl Read als auch ReadWrite sind bei Dateien, die im Modus Append geöffnet wurden, unzulässig.

•	Sie haben versucht, eine Datei im Modus Output zu öffnen, haben aber einen unzulässigen Zugriffsmodus angegeben.

Sie brauchen keinen Zugriffsmodus anzugeben, wenn Sie eine Datei für Ausgaben öffnen. Wenn Sie aber einen Zugriffsmodus angeben, müssen Sie Write verwenden. Sowohl Read als auch ReadWrite sind bei Dateien, die im Modus Output geöffnet wurden, unzulässig.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültiges Attribut in Sub, Function oder Property

Einige Attribute sind in Prozeduren unzulässig. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Das Attribut Public oder Private befindet sich im Rumpf einer Prozedurdefinition.

Entfernen Sie das Attribut aus der Prozedur. Die Variable erhält einen größeren Gültigkeitsbereich, wenn Sie die Deklaration auf die Modulebene verschieben. Variablen, die in Prozeduren deklariert werden, sind immer Private.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültiges Zeichen

Das Zeichen kann im aktuellen Kontext nicht verwendet werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben wahrscheinlich ein ungültiges Zeichen in einem Variablennamen verwendet, z.B. eine Klammer oder einen Bindestrich.

Vergleichen Sie die Schreibweise des Namens mit der zugehörigen Deklaration.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültiges Datenformat

Die aus einer Datei gelesenen Daten entsprechen nicht dem erwarteten Format. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Eine Projekt- oder Objektbibliotheks-Datei ist entweder beschädigt oder liegt in einem Format vor, das nicht interpretiert werden kann.

Fordern Sie eine neue Version der Projekt- oder Objektbibliotheks-Datei an.

•	Sie haben versucht, eine .EXE-Datei in ein Modul zu laden.

Laden Sie statt dessen den Quell-Code.

•	Sie haben das Dialogfeld Verweise und den Objektkatalog verwendet, um einen Verweis auf eine Datei hinzuzufügen, die keine gültige Objektbibliothek ist, oder die ein Basic-Projekt enthält, dessen Format von der Host-Anwendung nicht unterstützt wird. Microsoft Excel kann beispielsweise Dateien mit der Endung .BAS oder .FRM nicht interpretieren. Dasselbe gilt für Microsoft Project-Dateien, die Basic-Code enthalten.

Laden Sie die fragliche Datei in der Anwendung, in der sie erstellt wurde, und speichern Sie sie dann in einem kompatiblen Format. Der Quell-Code der Objektbibliothek kann beispielsweise von MKTYPLIB und QuickBasic verarbeitet werden, und Visual Basic-Code kann im Textformat gespeichert werden usw.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültiger Datentyp für Konstante

Nicht alle Arten von Daten können Konstanten zugewiesen werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, den Typ einer Konstanten als benutzerdefinierten Typ, als Objekt oder als Datenfeld zu deklarieren.

Entfernen Sie die Deklaration, oder deklarieren Sie die Konstante erneut als Variable.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültig im Direktbereich

Nicht alle Anweisungen können im Direktfenster verwendet werden. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Es wurde eine Deklarationsanweisung verwendet. Die folgenden Anweisungen sind im Direktfenster z.B. nicht zulässig: Const, Declare, DefTyp, Dim, Function, Option Base, Option Explicit, Option Compare, Option Private, Private, Public, Anweisungen zur Deklaration von Property-Prozeduren (Property Let, Property Set und Property Get), ReDim, Static, Sub und Type.

Entfernen Sie die Deklarationsanweisungen aus dem Direktfenster.

•	Eine Anweisung zur Ablaufsteuerung wurde verwendet, wie z.B., Sub, Function, Property, GoSub, GoTo, Return und Resume.

Entfernen Sie diese Anweisungen aus dem Direktfenster.

•	Zwischen den physischen Zeilen des Direktfensters besteht keine logische Verbindung, daher können Anweisungen, die sich über mehrere physische Zeilen erstrecken (z.B. eine If-Blockanweisung) nicht ordnungsgemäß ausgeführt werden.

Solche Anweisungen können in einer einzigen Zeile eingegeben werden, indem sie durch einen Doppelpunkt (:) voneinander getrennt werden. Sie können eine einzelne Anweisung im Direktfenster auf mehrere physische Zeilen aufteilen, indem Sie das Zeilenfortsetzungszeichen verwenden, ein Leerzeichen, auf das ein Unterstrich ( _) folgt.

•	Sie haben versucht, Code im Direktfenster auszuführen, durch den das Programm in einen ungültigen Zustand versetzt wird, und der eine Neuinitialisierung des Programms erfordert.

Entfernen Sie den fraglichen Code aus dem Direktfenster.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Innerhalb einer Prozedur ungültig

Die Anweisung darf nicht in einer Sub- oder Function-Prozedur auftreten. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Eine der folgenden Anweisungen erscheint in einer Prozedur: Declare, DefTyp, Private, Public, Option Base, Option Compare, Option Explicit, Option Private, Enum und Type.

Entfernen Sie die Anweisung aus der Prozedur. Die Anweisungen können auf Modulebene angegeben werden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültige Länge für Zeichenfolge fester Länge

Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Eine Zeichenfolge fester Länge wird mit der Länge Null deklariert.

Eine Zeichenfolge fester Länge muß mindestens ein Zeichen enthalten.

•	Eine Zeichenfolge fester Länge überschreitet die Länge von 65.529 Zeichen.

Reduzieren Sie die angegebene Länge für die Zeichenfolge fester Länge.

Anmerkung   Zeichenfolgen variabler Länge können diese Grenze überschreiten oder die Länge Null besitzen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültiger Verweis auf Next-Steuervariable

Die numerische Variable im Next-Teil einer For...Next-Schleife muß mit der Variablen im For-Teil übereinstimmen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die Variable im Next-Teil einer For...Next-Schleife unterscheidet sich von der Variablen im For-Teil. Beispiel:

For Zähler = 1 To 10

Var1 = Zähler

Next Zaehler

Prüfen Sie, ob die Schreibweise der Variablen im Next-Teil mit der Schreibweise der Variablen im For-Teil übereinstimmt. Überprüfen Sie auch, ob nicht versehentlich Teile der umschließenden Schleifenkonstruktion, die die Variable verwenden, gelöscht wurden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Unzulässiger oder unzureichender Verweis

Ein Bezeichner, der mit einem Punkt beginnt, ist nur innerhalb eines With-Blocks gültig. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Der Bezeichner beginnt mit einem Punkt.

Vervollständigen Sie die Angaben für den Bezeichner, oder entfernen Sie den Punkt.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Außerhalb einer Prozedur ungültig

Die Anweisung muß innerhalb einer Sub-, Function- oder Property-Prozedur (Property Get, Property Let, Property Set) auftreten. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Eine ausführbare Anweisung, Static oder ReDim, befindet sich auf Modulebene.

Static ist auf Modulebene nicht erforderlich, da alle Variablen auf Modulebene statisch sind. Verwenden Sie auf Modulebene nicht ReDim, sondern Dim. Sie erstellen ein dynamisches Datenfeld auf Modulebene, indem Sie es mit Dim deklarieren und ein leeres Klammernpaar verwenden.

Anmerkung   Auf Modulebene können Sie nur Kommentare und Deklarationsanweisungen verwenden, z.B.: Const, Declare, DefTyp, Dim, Option Base, Option Compare, Option Explicit, Option Private, Private, Public und Type. Die Anweisungen Sub, Function und Property befinden sich außerhalb des Rumpfes der zugehörigen Prozedur, aber innerhalb der Prozedurdeklaration.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Unzulässige Verwendung von ParamArray

Der als ParamArray definierte Parameter wird in der Prozedur nicht richtig verwendet. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Sie haben versucht, ParamArray als Argument an eine andere Prozedur zu übergeben, die ein Datenfeld oder einen Wert vom Typ ByRef Variant erwartet.

Weisen Sie ParamArray einem Variant-Wert zu, und übergeben Sie dann den Variant-Wert.

•	Sie haben versucht, eine Erase- oder ReDim-Anweisung mit einem ParamArray-Parameter innerhalb der zugehörigen Prozedur zu verwenden.

Entfernen Sie Erase oder ReDim. Diese Operationen können für den ParamArray-Parameter nicht ausgeführt werden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültiger Prozedurname

Es gibt Beschränkungen für Prozedurnamen, die über die Regeln zur Benennung von Bezeichnern hinausgehen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, eine Prozedur zu definieren, aber der für die Prozedur verwendete Name ist unzulässig, weil dieser Name bereits vom Host zu einem anderen Zweck verwendet wird. Ist die Host-Anwendung z.B. Microsoft Excel, dann können Sie einer Prozedur nicht den Namen R1C1 geben, weil dieser Bezeichner bereits von Microsoft Excel verwendet wird.

Wählen Sie einen anderen Namen für die Prozedur.

•	Der Name Ihrer Prozedur entspricht den Namen eines Schlüsselworts, ist länger als 255 Zeichen, oder das erste Zeichen ist kein Buchstabe.

Wählen Sie einen anderen Namen für die Prozedur.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültiger Bezeichner

Bezeichner werden für eindeutige Kennzeichnungen verwendet. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Der Bezeichner kennzeichnet kein Projekt, Modul, Objekt und keine Variable eines benutzerdefinierten Typs innerhalb des aktuellen Gültigkeitsbereichs.

Überprüfen Sie die Schreibweise des Bezeichners. Sorgen Sie dafür, daß der Bezeichner innerhalb des aktuellen Gültigkeitsbereichs liegt. Eine Variable eines benutzerdefinierten Typs in einem Modul mit dem Attribut Private ist beispielsweise nur innerhalb dieses Moduls sichtbar.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


ReDim ungültig

Nicht jedes Datenfeld kann neu dimensioniert werden. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Eine Variable wurde implizit als Variant deklariert, und Sie haben versucht, sie mit ReDim in ein Datenfeld umzuwandeln.

Ein Variant-Wert kann ein Datenfeld enthalten, aber wenn der Wert nicht explizit deklariert wurde, können Sie ihn mit ReDim nicht in ein Datenfeld umwandeln. Deklarieren Sie den Variant-Wert, bevor Sie ReDim verwenden, um die Anzahl der Elemente anzugeben, die der Wert enthalten kann. Im folgenden Code löst ReDim AVar(10) z.B. den Fehler "Redim ungültig" aus, ReDim BVar(10) jedoch nicht:

AVar = 1	' Implizite Deklaration von AVar.

ReDim AVar(10)	' Fehler "Redim unzulässig.

.

.

.

Dim BVar	' Explizite Deklaration von BVar.

ReDim BVar(10)	' Kein Fehler.

•	Sie haben versucht, mit ReDim mehrere Dimensionen eines Datenfelds zu ändern, das in einem Variant-Wert enthalten ist.

Sie können mit ReDim nur die Größe der letzten Dimension eines Datenfelds in einem Variant-Wert ändern. Wenn Sie ein Datenfeld erstellen möchten, in dem mehrere Dimensionen verändert werden können, kann es nicht in einem Variant-Wert enthalten sein, und Sie müssen es normal deklarieren.

•	Sie können mit ReDim nur die Anzahl der Elemente in einem normalen Datenfeld ändern, aber nicht den Typ dieser Elemente.

Wenn Sie ein Datenfeld benötigen, in dem der Typ der Elemente geändert werden kann, verwenden Sie ein Datenfeld, das in einem Variant-Wert enthalten ist. Wenn Sie das Datenfeld zuerst deklarieren, können Sie die Typen und die Anzahl der Elemente wie folgt ändern:

Dim Var1 As Variant	' Variable deklarieren.

ReDim Var1(10) As String	' Datenfeld mit String-	' Untertypen.

ReDim Var1(20) As Integer	' Datenfeld mit Integer-	' Untertypen.

ReDim Var1(5) As Variant	' Datenfeld mit Variant-	' Untertypen.

•	Sie haben versucht, ReDim mit einem Datenfeld zu verwenden, das ein Element eines Automatisierungsobjekts ist.

Entfernen Sie ReDim.

Anmerkung   Wenn Sie keinen Typ für eine Variable angeben, wird der Variablen der Standardtyp Variant zugewiesen. Dies ist nicht immer offensichtlich. Der folgende Code deklariert beispielsweise zwei Variablen: die erste mit dem Namen Var1 ist vom Typ Variant, die zweite mit dem Namen Var2 ist vom Typ Integer.

Dim Var1, Var2 As Integer

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültige Syntax für Konstantendeklarationen für die bedingte Kompilierung

Die Eingabe von Konstanten für die bedingte Kompilierung in dem Dialogfeld Optionen entspricht nicht der Deklaration von Konstanten im Code. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben bei der Eingabe einer Konstantendeklaration in dem Dialogfeld Optionen eine unzulässige Syntax verwendet.

Die einzig zulässige Syntax ist eine einfache Zuweisung einer ganzen Zahl an den Bezeichner. Die folgende Syntax für Eingaben muß eingehalten werden, und die Konstanten müssen durch einen Doppelpunkt (:) voneinander getrennt sein:

KonstBezeichner = [{+ | – }]ganzZahlWert : [{+ | – }] KonstBezeichner = ganzZahlWert [...]

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültiges Typkennzeichen

Typkennzeichen sind zulässig, existieren aber nicht für alle Datentypen. In bestimmten Situationen sind sie nicht zulässig. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Ein Typkennzeichen wurde an eine Variable angehängt, die in einer Private-, Public- oder Static-Anweisung mit einem As-Abschnitt deklariert wurde.

Entfernen Sie das Typkennzeichen.

•	Ein Typkennzeichen wurde an ein nicht konsistentes Literal angehängt. Da & z.B. das Typkennzeichen für eine Ganzzahl vom Typ Long ist, verursacht das Anhängen dieses Zeichens an ein Literal eines anderen Typs diesen Fehler:

10.253&

Entfernen Sie das Typkennzeichen, oder ersetzen Sie es durch das richtige Zeichen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültige Verwendung des AddressOf-Operators

Der AddressOf-Operator modifiziert ein Argument für die Übergabe der Adresse einer Funktion, und nicht für die Übergabe des Ergebnisses des Funktionsaufrufs. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, AddressOf mit dem Namen der Klassenmethode zu verwenden.

Nur die Namen von Visual Basic-Prozeduren in .BAS-Modulen können mit AddressOf modifiziert werden. Eine Klassenmethode kann nicht angegeben werden.

•	Der von AddressOf modifizierte Prozedurname ist im Modul eines anderen Projekts definiert.

•	Sie haben versucht, den Namen einer DLL-Funktion oder einer Funktion, die in einer Klassenbibliothek definiert ist, mit AddressOf zu modifizieren.

•	DLL- und Klassentypfunktionen können mit AddressOf nicht modifiziert werden.

Die Prozedurdefinition muß sich in einem Modul des aktuellen Projekts befinden. Verschieben Sie die Definition in ein Modul dieses Projekts, oder fügen Sie dessen aktuelles Modul in das Projekt ein.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Unzulässige Verwendung des Schlüsselworts Me

Das Schlüsselwort Me kann in Klassenmodulen verwendet werden. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Das Schlüsselwort Me befand sich in einem Standardmodul.

Das Me-Schlüsselwort kann in Standardmodulen nicht verwendet werden, da diese kein Objekt darstellen. Sollten Sie den fraglichen Code aus einem Klassenmodul kopiert haben, so müssen Sie das Schlüsselwort Me durch den angegebenen Objekt- oder Formularnamen ersetzen, um den ursprünglichen Verweis zu erhalten.

•	Das Schlüsselwort Me befindet sich auf der linken Seite einer Set-Zuweisung, z.B.:

Set Me = Objekt1	' Erzeugt diese Fehlermeldung.

Entfernen Sie die Set-Zuweisung.

Anmerkung   Das Me-Schlüsselwort kann auf der linken Seite einer Let-Zuweisung verwendet werden, wodurch die Standardeigenschaft des von Me repräsentierten Objekts festgelegt wird. Beispiel:

Let Me = Objekt1 	' Zulässige Zuweisung mit explizitem 	' Let.

Me = Objekt1	 ' Zulässige Zuweisung mit implizitem Let.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Unzulässige Verwendung des Schlüsselworts New

Das Schlüsselwort New kann nur auf Objekte angewendet werden, die erstellt werden können (Instanzen einer Klasse oder eines Automatisierungsobjekts). Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Sie haben versucht, eine Instanz eines Objekts zu erstellen, das nur eine einzige Instanz besitzen kann. Sie haben z.B. versucht, eine neue Instanz eines Moduls mit dem Namen Modul1 zu erstellen, indem Sie eine Anweisung wie die folgende angegeben haben:

Dim Mod1 As New Modul1

Sie können die neue Instanz nicht erstellen, da ein Modul nur eine einzige Instanz besitzen kann.

•	Sie haben versucht, eine Instanz eines Automatisierungsobjekts zu erstellen, das kein erstellbares Objekt ist. Sie haben beispielsweise versucht, eine neue Instanz eines Listenfelds zu erstellen, indem Sie "ListBox" in einer Anweisung wie der folgenden angegeben haben:

' Zulässige Syntax zum Erstellen der Variablen.

Dim ListBox1 As ListBox

Dim FormInst1 As Form

' Unzulässige Syntax zum Erstellen der Variablen.

Set FormInst1 = New Form

Set ListBox1 = New ListBox

ListBox und Form sind Namen von Klassen, aber keine bestimmten Objektnamen. Sie können damit angeben, daß eine Variable einen Verweis auf einen bestimmten Objekttyp darstellen soll, wie mit den gültigen Dim-Anweisungen im oberen Teil des Beispiels. Sie können aber keine Instanzen dieser Objekte mit der Set-Anweisung erstellen. In der Set-Anweisung müssen Sie den Namen eines bestimmten Objekts angeben; der allgemeine Klassenname ist nicht zulässig:

' Zulässige Syntax zum Erstellen einer neuen Instanz ' ' eines Formulars oder eines Listenfelds.

Set FormInst1 = New Form1

Set ListBox1 = New List1

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Unzulässige Verwendung eines Objekts

Sie haben versucht, ein Objekt in einer unzulässigen Weise zu verwenden. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Sie haben einen Objektverweis entfernt, indem Sie ihm Nothing zugewiesen haben, aber Sie haben das Schlüsselwort Set nicht angegeben:

Objekt1 = Nothing

Verwenden Sie die Set-Anweisung, um ein Objekt auf Nothing festzulegen. Wenn Objekt1 ein Objekt ist, müssen Sie es mit der Set-Anweisung auf Nothing setzen:

Set Objekt1 = Nothing

Durch Weglassen des Schlüsselworts Set wird diese Anweisung als implizite Let-Anweisung interpretiert, wodurch ein Wert und kein Verweis zugewiesen wird. Nothing kann in einer Wertzuweisung nicht verwendet werden.

•	Sie haben versucht, Nothing in einem Ausdruck zu verwenden.

Schreiben Sie den Ausdruck so um, daß Nothing nicht mehr verwendet wird.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Verwendung einer Eigenschaft unzulässig

Sie verwenden einen Typ der Property-Prozedur, obwohl eine Prozedur eines anderen Typs erwartet wird. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Sie versuchen, einer schreibgeschützten Eigenschaft einen Wert zuzuweisen.

Wenn die einzige für die Eigenschaft definierte Property-Prozedur eine Property Get-Prozedur ist, können Sie der Eigenschaft keinen Wert zuweisen. Schreiben Sie entweder eine geeignete Property Let-Prozedur, oder unterlassen Sie das Zuweisen eines Wertes an die Eigenschaft.

•	Sie versuchen, eine Eigenschaft zu lesen, die nur geschrieben werden kann.

Wenn die einzige für die Eigenschaft definierte Property-Prozedur eine Property Let-Prozedur ist, können Sie die Eigenschaft nicht lesen. Schreiben Sie entweder eine geeignete Property Get-Prozedur, oder unterlassen Sie das Lesen der Eigenschaft.

•	Sie versuchen, einen Verweis festzulegen, aber die Eigenschaft umfaßt nur Property Get- bzw. Property Let-Prozeduren.

Schreiben Sie entweder eine Property Set-Prozedur für die Eigenschaft, oder unterlassen Sie den Versuch, einen Verweis darauf festzulegen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültiger Überwachungsausdruck

Der angegebene Überwachungsausdruck ist kein gültiger Ausdruck. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Der Überwachungsausdruck ist syntaktisch falsch.

Überprüfen Sie die Syntax aller Bestandteile des Ausdrucks. Die Syntax für einen Überwachungsausdruck wird durch das Gebietsschema des Projekts festgelegt, in dem der Überwachungsausdruck definiert ist.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Sprungmarke nicht definiert

Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Eine Zeilenmarke oder Zeilennummer wurde angegeben (z.B. in einer GoTo-Anweisung), existiert aber nicht im Gültigkeitsbereich des Verweises.

Die Marke muß sich innerhalb der Prozedur befinden, die den Verweis enthält. Zeilenmarken sind nur innerhalb der umgebenden Prozedur verfügbar.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Sprach-/Ländereinstellung wurde geändert

Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben die voreingestellten Länder- oder Spracheinstellungen für die Visual Basic-Umgebung geändert.

Dies kann zu Problemen führen, ist aber zulässig.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Zeile enthält keine ausführbare Anweisung

Deklarationen und Kommentare sind keine ausführbaren Anweisungen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben den Befehl Weiter bis Cursor gewählt, aber der Cursor befand sich in einer Zeile, die keine ausführbare Anweisung enthielt.

Setzen Sie den Cursor in eine ausführbare Anweisung in die Nähe der aktuellen Zeile.

Weitere Informationen erhalten Sie, wenn Sie im Menü Ausführen den Befehl Weiter bis Cursor wählen und anschließend F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Zeile zu lang

Eine physische Zeile mit Visual Basic-Code kann maximal 1023 Zeichen enthalten. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Eine Zeile enthält zu viele Zeichen.

Sie können eine längere logische Zeile erstellen, indem Sie physische Zeilen durch das Zeilenfortsetzungszeichen (ein Leerzeichen, auf das ein Unterstrich ( _) folgt) miteinander verbinden. Bis zu 25 physische Zeilen können mit Zeilenfortsetzungszeichen zu einer einzigen logischen Zeile verbunden werden, oder 24 aufeinanderfolgende Zeilenfortsetzungszeichen. Daher kann eine logische Zeile maximal 10.230 Zeichen enthalten. Wird diese Länge überschritten, müssen Sie die Zeile in einzelne Anweisungen aufteilen oder einige Ausdrücke temporären Variablen zuweisen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Loop ohne Do

Eine Do-Schleife muß mit einer Do-Anweisung beginnen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Ein Schleifenblock innerhalb einer anderen Schleife ist nicht abgeschlossen.

Überprüfen Sie, ob die richtige Do...Loop-Syntax verwendet wird.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


LSet nur für Zeichenfolgen und benutzerdefinierte Typen zulässig

LSet wird verwendet, um Daten innerhalb von Zeichenfolgen und Variablen eines benutzerdefinierten Typs links auszurichten. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Die angegebene Variable ist keine Zeichenfolge und hat keinen benutzerdefinierten Typ.

Sie können LSet nicht verwenden, um ein Datenfeld als Ganzes einem anderen Datenfeld zuzuweisen. Sie müssen die Elemente in einer Schleife einzeln zuweisen.

•	Sie haben versucht, LSet mit einem Objekt zu verwenden.

Mit LSet können Sie die Elemente einer Variablen mit einem benutzerdefinierten Typ den Elementen eines anderen, aber kompatiblen benutzerdefinierten Typs zuweisen. Objekte sind zwar benutzerdefinierten Typen ähnlich, erlauben aber nicht die Verwendung von LSet. Genauso können Sie LSet nicht für Variablen eines benutzerdefinierten Typs verwenden, die Zeichenfolgen, Objekte oder Variant-Werte enthalten.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


LSet nicht zulässig

LSet wird verwendet, um Daten innerhalb von Zeichenfolgen und Variablen eines benutzerdefinierten Typs links auszurichten. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, LSet für einen benutzerdefinierten Typ zu verwenden, der Zeichenfolgen, Objekte oder Variant-Werte enthält.

Sie müssen die Elemente dieser Variablen eines benutzerdefinierten Typs den Elementen einer anderen Variablen einzeln zuweisen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Schlechte Schnittstelle für Implementierung: Schnittstelle ist von einer reinen Schnittstelle mit unbeschränkten Methoden abgeleitet

Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die Schnittstelle ist direkt oder indirekt von einer reinen Schnittstelle abgeleitet, die unbeschränkte Methoden enthält.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Schlechte Schnittstelle für Implementierung: Schnittstelle enthält Datenfelder

Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die Schnittstelle bzw. Klasse enthält Datenfelder.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Schlechte Schnittstelle für Implementierung: Name der Methode enthält einen Unterstrich

Die Implements-Anweisung wird verwendet, um eine Schnittstelle bzw. Klasse anzugeben, die in dem Klassenmodul implementiert wird, in dem die Anweisung angezeigt wird. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die Schnittstelle bzw. Klasse enthält einen Methodennamen, in dem ein Unterstrichzeichen vorkommt.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Schlechte Schnittstelle für Implementierung: Methode gibt nicht HRESULT zurück

Die Implements-Anweisung wird verwendet, um eine Schnittstelle bzw. Klasse anzugeben, die in dem Klassenmodul implementiert wird, in dem die Anweisung angezeigt wird. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die Schnittstelle bzw. Klasse enthält den Namen einer Methode, die einen Wert von anderem Typ als HRESULT zurückgibt.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Schlechte Schnittstelle für Implementierung: Methode hat einen reinen Out- oder LCID-Parameter

Die Implements-Anweisung wird verwendet, um eine Schnittstelle bzw. Klasse anzugeben, die in dem Klassenmodul implementiert wird, in dem die Anweisung angezeigt wird. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die Schnittstelle bzw. Klasse enthält eine Methode, die einen Parameter vom Typ Nur-Ausgabe oder LCID hat.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Schlechte Schnittstelle für Implementierung: Methode hat einen Parameter mit zu vielen Dereferenzierungsebenen

Die Implements-Anweisung wird verwendet, um eine Schnittstelle bzw. Klasse anzugeben, die in dem Klassenmodul implementiert wird, in dem die Anweisung angezeigt wird. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die Schnittstelle bzw. Klasse enthält eine Methode, die einen Parameter mit zu vielen Dereferenzierungsebenen hat. Beispiele sind zweifache Dereferenzierung bei Ganzzahlen oder dreifache Dereferenzierung bei benutzerdefinierten Typen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Schlechte Schnittstelle für Implementierung: Methode verwendet einen Typ, der nicht von Visual Basic unterstützt wird

Die Implements-Anweisung wird verwendet, um eine Schnittstelle bzw. Klasse anzugeben, die in dem Klassenmodul implementiert wird, in dem die Anweisung angezeigt wird. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die Schnittstelle bzw. Klasse enthält eine Methode, die einen von Visual Basic nicht unterstützten Datentyp verwendet.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Schlechte Schnittstelle für Implementierung: Schnittstelle ist nicht von IUnknown abgeleitet

Die Implements-Anweisung wird verwendet, um eine Schnittstelle bzw. Klasse anzugeben, die in dem Klassenmodul implementiert wird, in dem die Anweisung angezeigt wird. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die Schnittstelle ist nicht von IUnknown abgeleitet.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Maximale Anzahl an Überwachungsausdrücken hinzugefügt

Das Überwachungsfenster kann nur eine begrenzte Anzahl an Überwachungsausdrücken enthalten. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben im Überwachungsfenster die maximale Anzahl an Überwachungsausdrücken hinzugefügt.

Entfernen Sie für jeden Überwachungsausdruck, der hinzugefügt werden soll, einen bereits vorhandenen Überwachungsausdruck, oder zeigen Sie den gewünschten Wert im Direktfenster an.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Der Elementbezeichner ist bereits in einer Klasse vorhanden, von der diese Klasse abgeleitet wird

Bezeichner, die für Objektmodulelemente verwendet werden, dürfen nicht in Konflikt mit Namen stehen, die bereits in einem Objektmodulverwendet werden und von dem die Bezeichner abgeleitet sind. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Ein Prozedur- oder Datenelementbezeichner in Ihrem Objektmodul verwendet einen Bezeichner, der bereits in dem Objektmodul verwendet wird, von dem er abgeleitet ist. Ein Formular besitzt beispielsweise eine BackColor-Eigenschaft und der folgende Code würde diesen Fehler erzeugen:

' Formular besitzt bereits BackColor-Eigenschaft.

0	Dim BackColor As Integer	' Erzeugt Fehler.

1	Function BackColor()	' Erzeugt Fehler.

2	End Function

Ändern Sie den Bezeichner, der in Konflikt mit dem Elementbezeichner im Objektmodul steht.

Hinweis   Die folgenden Namen können nicht als Eigenschaftennamen verwendet werden, weil sie zu den zugrundeliegenden Schnittstellen IUnknown und IDispatch gehören: QueryInterface, AddRef, Release, GetTypeInfoCount, GetTypeInfo, GetIDsOfNames, Invoke. Die Verwendung dieser Namen verursacht einen Kompilierungsfehler.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Methode ohne geeignetes Objekt nicht zulässig

Nicht alle Methoden können von allen Objekten ausgeführt werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben eine Methode aufgerufen, ohne ein Objekt anzugeben, und die Methode kann für das implizierte Objekt nicht verwendet werden. Sie können beispielsweise nicht die Line-Methode in einem Standardmodul ohne einen gültigen Objektbezeichner verwenden, da Standardmodule die Ausgabe der Line-Methode nicht anzeigen können.

Definieren Sie den Methodenaufruf explizit mit einem Objekt, für das diese Methode eingesetzt werden kann. Geben Sie zum Beispiel ein Formular- oder ein Bildfeld für die Line-Methode an.

Anmerkung    Weitere Methoden, für die bei Verwendung in Standardmodulen ein expliziter Objektbezeichner erforderlich ist, sind Circle, Print und PSet.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Fehlende schließende Klammer

In einer Anweisung muß zu jeder öffnenden Klammer auch eine schließende Klammer angegeben werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Für eine öffnende Klammer fehlt die entsprechende schließende Klammer.

Fügen Sie eine schließende Klammer am Ende des zu umschließendes Abschnitts ein.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Modul nicht gefunden

Module werden nicht durch einen Verweis im Code geladen, sondern sie müssen Bestandteil des Projekts  sein. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Das gewünschte Modul ist im angegebenen Projekt nicht vorhanden. Die Anweisung TestModul.Var1 = 5 löst zum Beispiel diesen Fehler aus, wenn auf TestModul aus dem Projekt TestProjekt nicht zugegriffen werden konnte.

Weitere Informationen darüber, wie das Modul in das Projekt aufgenommen werden kann, finden Sie in der Dokumentation zu Ihrer Host-Anwendung.


Modul zu groß

Ein Modul enthält Code innerhalb des Projekts. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Der Code in dem Modul ist zu umfangreich.

Erstellen Sie ein neues Modul, und verlagern Sie einen Teil der Prozeduren aus dem vorhandenen Modul in das neue Modul. Sollte das aktuelle Modul auf Modulebene Deklarationen von Daten enthalten, die für die Prozeduren in dem neuen Modul verfügbar sein müssen, deklarieren Sie diese Daten als Public.

Anmerkung   Kommentare werden nicht als Code-Zeilen gezählt. Das Löschen von Kommentarzeilen verhindert deshalb diesen Fehler nicht.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Es muß sich um die erste Anweisung in der Zeile handeln

Nicht alle Schlüsselwörter dürfen am Anfang einer Code-Zeile stehen. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Vor einer Sub-, Function- oder Property-Anweisung befindet sich eine weitere Anweisung in derselben Zeile.

Eine Sub-, Function- oder Property-Anweisung muß immer die erste Anweisung in einer Zeile sein, die diese Anweisung enthält (nur die Schlüsselwörter Public, Private oder Static sind vor den Anweisungen zulässig).

•	Vor einer End If-, Else- oder ElseIf-Anweisung befindet sich eine weitere Anweisung in derselben Zeile.

Eine End If-, Else- oder ElseIf-Anweisung (sofern sie in einem If-Block verwendet wird) muß immer die erste Anweisung in der Zeile sein, die diese Anweisung enthält.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Name steht in Konflikt mit existierendem Modul, Projekt oder existierender Objektbibliothek

Module, Objektbibliotheken sowie referenzierte Projekte müssen innerhalb eines Projekts einen eindeutigen Namen besitzen. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Es wird bereits ein Modul, ein Projekt oder eine Objektbibliothek mit diesem Namen in Ihrem Projekt referenziert. Beachten Sie, daß die Dateinamenerweiterung nicht als Teil des Dateinamens interpretiert wird. Zwei Dateien können also nicht durch verschiedene Dateinamenerweiterungen voneinander unterschieden werden.

Verwenden Sie unterschiedliche Namen für die mehrfach auftretenden Verweise auf Module, Projekte oder Objektbibliotheken.

•	Sie haben versucht, einen Verweis auf ein Projekt oder eine Objektbibliothek hinzuzufügen, und der Dateiname (ohne Dateinamenerweiterung) entspricht dem Namen eines Moduls im aktuellen Projekt.

Ändern Sie entweder den Modulnamen oder den Namen der Datei, die nicht hinzugefügt werden konnte.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Benanntes Argument bereits angegeben

Ein benanntes Argument kann in einer Argumentliste eines Prozeduraufrufs nur einmal verwendet werden. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Sie haben ein benanntes Argument in einer Argumentliste mehrmals angegeben. Der folgende Aufruf löst zum Beispiel diesen Fehler aus, wenn die Prozedur TestSub die benannten Argumente Arg1 und Arg2 erwartet:

Call TestSub(Arg1 := 3, Arg1 := 5)

Entfernen Sie eine der beiden Angaben.

•	Sie haben ein Argument sowohl durch seine Position in der Argumentliste als auch durch seinen Namen angegeben, zum Beispiel:

Call TestSub(1, Arg1 := 3)

Entfernen Sie eine der beiden Angaben.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Benannte Argumente nicht zulässig

Sie können benannte Argumente nicht immer verwenden. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Sie haben versucht, ein benanntes Argument als Index eines Datenfeldes zu verwenden, zum Beispiel:

Var1 = Datenfeld1(BenArg1 := 1)

Verwenden Sie einen Ausdruck mit einer gewöhnlichen Variablen oder einer Konstanten als Index für ein Datenfeld.

•	Sie haben versucht, ein benanntes Argument mit einem Objekt anzugeben, zum Beispiel:

Var1 = Objekt1(BenArg1 := 1)

Verwenden Sie einen Ausdruck mit einer Variablen oder einer Konstanten, wenn das Objekt ein Argument erfordert. Ist die Voreinstellung für ein Objekt zum Beispiel eine Methode, so wird diese durch den Objektnamen dargestellt. Wenn diese Methode Argumente benötigt, dann geben Sie sie über ihre Position in der Argumentliste an.

•	Sie haben versucht, ein benanntes Argument mit einem externen Namen anzugeben:

Var1 = [Name1](BenArg1 := 1)

Verwenden Sie einen Ausdruck mit einer gewöhnlichen Variablen oder einer Konstanten, wenn der externe Name ein Argument erwartet.

•	Sie haben versucht, eine benanntes Argument mit einem Datenelement eines Objekts anzugeben, zum Beispiel:

Var1 = [Objekt1].Eigenschaft1(BenArg1 := 1)

Verwenden Sie einen Ausdruck mit einer gewöhnlichen Variablen oder einer Konstanten, wenn das Datenobjekt ein Argument erwartet.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Next ohne For

Vor jede Next-Anweisung gehört eine zugehörige For-Anweisung. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Eine Next-Anweisung wurde ohne vorangestellte For-Anweisung verwendet.

Überprüfen Sie auch andere Kontrollstrukturen innerhalb der For...Next-Struktur und überprüfen Sie, ob diese in den jeweils zusammengehörenden Paaren auftreten. Eine If-Anweisung ohne ein zugehöriges End If in einer For...Next-Struktur löst beispielsweise diesen Fehler aus.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Kein Text ausgewählt

Sie müssen Text ausgewählt haben, damit diese Operation ausgeführt werden kann. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben vor einer Operation zum Suchen oder Ersetzen keinen Text ausgewählt

In einigen Host-Anwendungen ist es möglich, den Bereich der Markierung zum Suchen und Ersetzen von Text anzugeben, obwohl momentan kein Text ausgewählt wurde. Sie markieren Text, indem Sie den Cursor an den Anfang des Bereichs setzen, der markiert werden soll. Halten Sie die UMSCHALTTASTE gedrückt, und markieren Sie den gewünschten Text entweder mit den Pfeiltasten oder durch Klicken auf das Textende. Soll keine Suchoperation durchgeführt werden, so heben Sie die Markierung auf.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Nicht genügend Speicher, um Projekt vollständig zu speichern

Beim Speichern eines Projekts werden gewöhnlich zusätzliche Informationen gespeichert, die das Laden des Projekts mit einer höheren Programmversion oder auf einer anderen Plattform ermöglichen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Es steht nicht genügend Speicher zur Verfügung steht, um Informationen zu speichern, die zum Laden des Projekts mit einer höheren Programmversion von Visual Basic oder auf einer anderen Plattform notwendig sind.

Wenn Sie das Projekt mit einer höheren Version von Visual Basic oder auf einer anderen Plattform laden möchten, schließen Sie einige Anwendung, und führen Sie den Speichervorgang erneut durch.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Kein Überwachungsausdruck ausgewählt

Sie müssen einen Ausdruck ausgewählt haben, wenn Sie den Befehl Aktuellen Wert anzeigen wählen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben keinen Ausdruck ausgewählt, bevor Sie Aktuellen Wert anzeigen gewählt haben.

Markieren Sie den Überwachungsausdruck im Code-Fenster, bevor Sie Aktuellen Wert anzeigen wählen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Funktionsmerkmal der Objektbibliothek nicht unterstützt

Eine Objektbibliothek kann Funktionen unterstützen, für die es in Visual Basic keine Entsprechung gibt. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, auf einen Datentyp oder eine Funktion einer Objektbibliothek zuzugreifen, der/die von Visual Basic nicht unterstützt wird.

Setzen Sie sich mit den Entwicklern der Objektbibliothek in Verbindung, und fordern Sie Informationen darüber an, in welchen Situationen die Objektbibliothek sinnvoll eingesetzt werden kann und mit welchen Programmen sie verwendet werden sollte.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Objektbibliothek für Visual Basic für Applikationen nicht gefunden

0	Die Objektbibliothek von Visual Basic für Applikationen ist keine eigenständige Datei mehr; sie ist in die Dynamic Link Library (DLL) integriert.

Unter bestimmten Bedingungen benötigen Sie möglicherweise eine frühere Version der Objektbibliothek (vaxxx.olb oder vaxxxx.olb), die der Sprache des Projekts entspricht, diese wird jedoch nicht gefunden. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Die Objektbibliothek ist nicht vorhanden, befindet sich nicht im erwarteten Verzeichnis, oder es steht nicht die richtigen Version zur Verfügung.

Durchsuchen Sie den Datenträger, um sicherzustellen, daß sich die Objektbibliothek im dem Verzeichnis befindet, das in der Dokumentation der Host-Anwendung angegeben ist.

Sollte es sich bei der fehlenden Bibliothek um eine Sprachversion handeln, die durch die Host-Anwendung installiert wurde, sollten Sie das Installationsprogramm erneut ausführen. Wenn Ihr Projekt eine Objektbibliothek für eine Sprache erfordert, die nicht im Lieferumfang der Host-Anwendung enthalten ist (weil Ihnen zum Beispiel jemand ein Projekt gesendet hat, das auf einem System mit einer anderen Gebietsschema-Einstellung geschrieben wurde), müssen Sie die richtige Sprachversion der Visual Basic-Objektbibliothek für das Projekt anfordern und im richtigen Verzeichnis installieren.

0	Anwendungen können verschiedene Sprachversionen ihrer Objektbibliotheken unterstützen. Ermitteln Sie die erforderliche Sprachversion, indem Sie das Dialogfeld Verweise anzeigen. Die Sprache für die Objektbibliothek wird unten im Dialogfeld angezeigt.

1	Objektbibliotheken existieren in verschiedenen Versionen für unterschiedliche Plattformen. Wenn Projekte auf eine andere Plattform übertragen werden (zum Beispiel von Macintosh nach Windows), muß sich daher die richtige Sprachversion der referenzierten Bibliothek (für die Zielplattform) an der Stelle befinden, die in der Dokumentation der Host-Anwendung angegeben ist. Beachten Sie, daß einige Sprach-Codes aus zwei Zeichen bestehen, während andere aus drei Zeichen aufgebaut sind.

2	Der Dateiname der Visual Basic-Objektbibliothek ist folgendermaßen aufgebaut:

•	Windows: Anwendungs-Code + Sprach-Code + [Version].OLB. Beispiel:

Vafr2.olb ist der Name der Datei für die französische Objektbibliothek von Visual Basic für Applikationen, Version 2.

•	Macintosh: Anwendungs-Code Sprach-Code [Version] OLB. Beispiel:

VA FR 2 OLB ist der Name der Datei für die französische Objektbibliothek von Visual Basic für Applikationen, Version 2.

Wenn Sie auf Ihrem System fehlende Projekte oder Bibliotheken nicht finden können, wenden Sie sich an den Autor des referenzierten Projekts. Sollte es sich bei der fehlenden Bibliothek um eine Anwendungsobjektbibliothek von Microsoft handeln, gehen Sie folgendermaßen vor, um sie zu beziehen:

•	Wenn Sie Zugriff auf den elektronischen Software Service von Microsoft haben, lesen Sie den Abschnitt über den Microsoft Software Service in dieser Hilfedatei. In der Beschreibung der elektronischen Dienste finden Sie Anleitungen zur Verwendung des entsprechenden Dienstes.

•	Wenn Sie keinen Zugriff auf den elektronischen Software Service von Microsoft haben, können Microsoft-Objektbibliotheken von Microsoft als Anwendungshinweise (engl.: Application Notes) angefordert werden. Informationen, wie Sie sich an Ihren örtlichen Microsoft Software Service wenden können, finden Sie ebenfalls im Abschnitt über den Software Service in dieser Hilfedatei.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Objektbibliothek nicht registriert

Die Objektbibliothek von Visual Basic für Applikationen ist keine eigenständige Datei mehr; sie ist in die Dynamic Link Library (DLL) integriert.

0	In früheren Versionen wurden beim Starten einer Anwendung, die Visual Basic für Applikationen verwendet, bestimmte Objektbibliotheken geladen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Es wurde versucht, eine frühere Version der Visual Basic-Objektbibliothek (vaxxx.olb) oder die Objektbibliotheken der Host-Anwendungen zu laden, aber die richtige Sprachversion dieser Objektbibliotheken konnte nicht in der Systemregistrierung gefunden werden.

Registrieren Sie Ihre Anwendung. Löschen Sie auf dem Macintosh die Datei vba.ini im Ordner Preferences, und starten Sie die Anwendung erneut.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Spracheinstellung für Objektbibliothek ist mit aktuellem Projekt nicht kompatibel

Der Verweis konnte nicht hinzugefügt werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, einer Objektbibliothek einen Verweis hinzuzufügen, aber das Gebietsschema der Objektbibliothek ist nicht mit dem Gebietsschema des aktuellen Projekts kompatibel. Der Verweis wurde nicht hinzugefügt. Damit Sie diese Objektbibliothek verwenden können, müssen Sie ein Projekt erstellen, dessen Gebietsschema mit der Objektbibliothek kompatibel ist.

Versuchen Sie, sowohl Visual Basic für Applikationen als auch die Host-Anwendung für die betreffende Sprache zu registrieren. Die Objektbibliothek steht anschließend im Dialogfeld Verweise zur Verfügung.

Anmerkung   Ist Visual Basic die Host-Anwendung, so können Sie die Spracheinstellung eines Projekts nicht ändern, und alle Objektbibliotheken müssen mit der Einstellung Englisch/USA kompatibel sein.


Typ in Visual Basic nicht unterstützt

Nicht alle Typen werden in Visual Basic unterstützt. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie wollten einen Typ in Ihrem Programm verwenden, der in Visual Basic für Applikationen keine Entsprechung besitzt. In Visual Basic gibt es beispielsweise keinen Zeiger oder einen vorzeichenlosen Integer-Datentyp. Wenn Sie daher versuchen, eine Variable einer dieser Typen aus einer Objektbibliothek zu erstellen, tritt dieser Fehler auf. Im folgenden Beispiel kann Regenbogen zwar eine zulässige Struktur darstellen, aber Visual Basic kann keine Variable des Typs Regenbogen erstellen, wenn ein Typ enthalten ist, den Visual Basic nicht erkennt:

Dim Var1 As Regenbogen	' Führt zu einem Fehler.

Wenn der Typ ein zulässiger Parametertyp für eine Funktion in einer Objektbibliothek ist, besagt diese Fehlermeldung lediglich, daß Sie keine Variable dieses Typs in Ihrem eigenen Code erstellen können. Sie können zwar nicht immer Variablen mit dem in der Objektdokumentation angegebenen Datentyp deklarieren, aber es gibt oft eine Entsprechung für den Datentyp in Visual Basic. Sie können beispielsweise, obwohl Visual Basic keinen Zeigertyp besitzt, mit Hilfe des AddressOf-Operators einen Zeiger auf eine Funktion an eine API-Funktion übergeben. Überprüfen Sie auch die Variant-Untertypen. Diese können häufig als gleichwertiger Ersatz für Typen verwendet werden, die Visual Basic nicht direkt unterstützt. In einigen Fällen bietet Visual Basic jedoch keinen gleichwertigen Ersatz. Beispielsweise stehen keine Datenzeiger zur Verfügung.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Nach End Sub, End Function oder End Property sind nur Kommentare möglich

Außerhalb einer Prozedur sind nur Kommentare, Anweisungen und Deklarationen zulässig. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben ausführbaren Code außerhalb einer Prozedur plaziert.

Außerhalb einer Prozedur müssen alle Zeilen, die keine Deklarationen enthalten, mit dem Kommentarzeichen (') beginnen. Alle Deklarationsanweisungen müssen vor der ersten Prozedurdeklaration erscheinen. Kommentare werden bei der Ausführung des Codes nicht beachtet.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Optionales Argument muß Variant oder integrierter Typ mit einem Standardwert sein

Für Optional-Argumente können beliebige integrierte Datentypend verwendet werden, es muß sich jedoch um einen Datentyp handeln, der nur einen Standardwert besitzt. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben Optional für einen Parameter angegeben, der keinen Standardwert besitzt, zum Beispiel ein Datenfeld.

Stellen Sie sicher, daß alle als Optional festgelegten Argumente einen Standardwert besitzen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Option Private Module ist in einem Objektmodul nicht zulässig

Durch Option Private Module ist der Inhalt eines Moduls für andere Projekte nicht länger verfügbar, für Ihr Projekt steht er jedoch weiterhin zur Verfügung. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die Option Private Module-Anweisung ist in einem Objektmodul enthalten.

Entfernen Sie die Option Private Module-Anweisung aus dem Modul. Objektmodule besitzen die Option Private Module-Anweisung per Voreinstellung. Diese Voreinstellung kann im Code nicht geändert werden. Lesen Sie in der Dokumentation zu Ihrer Host-Anwendung nach, wie Sie die Zugriffsmöglichkeit auf Modulelemente erweitern.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Nicht genügend Speicher. Einige Überwachungsausdrücke können gelöscht worden sein

Wenn Ihrem System nicht mehr genügend Speicher zur Verfügung steht, wird Speicherplatz durch Löschen von Überwachungsausdrücken bereitgestellt, damit die Ausführung fortgesetzt werden kann. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Es sind zu viele Anwendungen, Projekte oder Module geladen.

Wenn Sie Ihre Arbeit fortsetzen möchten, entfernen Sie alle nicht benötigten Elemente aus dem Speicher, einschließlich nicht benötigter Anwendungen, Projekte oder Module, die geladen sein könnten.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Keine weiteren Ressourcen verfügbar

Bestimmte Typen von Ressourcen, sogenannte "Zugriffsnummern", werden intern für eine Vielzahl von Operationen verwendet. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Ihr Code hat eine Ressourcengrenze erreicht.

Versuchen Sie, den Code zu speichern, das Programm zu beenden und dann das Programm und erneut zu starten und den Code erneut zu laden. Sollten Sie danach immer noch dieselbe Fehlermeldung erhalten, verringern Sie die Anzahl der Objekte, auf die in Ihrem Code verwiesen wird.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


ParamArray muß als Datenfeld vom Typ Variant deklariert werden

Jedes Argument eines ParamArray-Parameters kann einen anderen Datentyp besitzen. Daher muß der Parameter selbst als Datenfeld vom Typ Variant deklariert werden. Sie können beliebig viele Argumente in ParamArray-Parametern angeben. Beim Aufruf der Prozedur entspricht dann jedes übergebene Argument einem Element des Variant-Datenfeldes. Beispiel:

Sub Sub1(ParamArray VarArg())

0	. . .

End Sub

Call Sub1 ("Arg 1", 2, 3.54)

Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Bei der Definition der Prozedur ist der ParamArray-Parameter nicht als Datenfeld vom Typ Variant definiert worden.

Deklarieren Sie den betreffenden Parameter als Datenfeld mit Elementen des Typs Variant.

•	Es wurde kein Datentyp für den ParamArray-Parameter angegeben, aber die Prozedurdefinition liegt innerhalb des Gültigkeitsbereichs einer DefTyp-Anweisung, so daß der betreffende Parameter implizit mit einem Datentyp deklariert wird, der nicht dem Datentyp Variant entspricht.

Verwenden Sie bei der Angabe des ParamArray-Parameters einen expliziten As Variant-Abschnitt.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Weitere Informationen zu diesem Fehler finden Sie in der Info-Datei

Nach Fertigstellung der Hilfe wurden noch einige Themen hinzugefügt. Erläuterungen zu diesen Themen finden Sie in der Info-Datei der Host-Anwendung.

0	Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Private Aufzählungstypen und benutzerdefinierte Typen können nicht als Parameter oder Rückgabetypen für öffentliche Prozeduren,als öffentliche Datenelemente, oder als Felder öffentlicher, benutzerdefinierter Typen verwendet werden

Eine Public-Prozedur ist für alle Module eines Projekts verfügbar, während ein Private Enum-Typ nicht außerhalb des eigenen Moduls verfügbar ist. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die Public-Prozedur befindet sich in einer Public-Klasse, gibt jedoch einen Wert zurück oder besitzt einen Parameter, der in einem StandardmoduldefStanda oder in einer Private-Klasse definiert ist.

Deklarieren Sie Enum als Public. Diese Anweisung muß sich in einem Klassenmodul befinden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Prozedur zu groß

Der kompilierte Code einer Prozedur darf 64 KB nicht überschreiten. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Der kompilierte Code für diese Prozedur umfaßt mehr als 64 KB.

Teilen Sie diese und andere große Prozeduren in zwei oder mehrere kleinere Prozeduren auf.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Projekt enthält zu viele Prozedur-, Variablen- und Konstantennamen

In einem Projekt werden die Namen der Prozeduren, Variablen, Konstanten und Parameter in einer Namenstabelle gespeichert. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die Namenstabelle des Projekts enthält mehr als 32.768 Namen.

Die Namenstabelle enthält möglicherweise temporäre Duplikate. Komprimieren Sie die Tabelle, indem Sie das Projekt auf einem Datenträger speichern und schließen. Sollte das Problem weiterhin bestehen, reduzieren Sie die Zahl der Namen, indem Sie lokale Variablennamen in mehreren Prozeduren wiederverwenden und anschließend die Tabelle komprimieren, indem Sie das Projekt speichern, schließen und erneut öffnen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Projekt nicht gefunden

Das Projekt wurde nicht gefunden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Der von Ihnen angegebene Projektname wurde nicht gefunden.

Überprüfen Sie Ihre Angaben zum Projekt auf eventuelle Fehler.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Angegebener Name im Modul-Gültigkeitsbereich nicht zulässig

Unter bestimmten Bedingungen lassen einige Host-Anwendungen keine Prozeduraufrufe zu, die Namen mit expliziten Bezeichnern enthalten. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben in einem Prozeduraufruf den Namen eines Moduls in Punktnotation angegeben (Bezeichner.Element).

Der Grund für diesen Fehler ist wahrscheinlich, daß die Host-Anwendung den angegeben Bezeichner bereits kennt und diese Angabe im Prozeduraufruf nicht mehr benötigt. In diesem Fall können Sie den Bezeichner weglassen, und die Host-Anwendung ruft die Prozedur korrekt auf. In der Dokumentation der Host-Anwendung finden Sie Hinweise auf mögliche weitere Beschränkungen von Namen mit expliziten Bezeichnern.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Bezeichner muß eine Auflistung angeben

Die Verwendung eines Ausrufezeichens zwischen zwei Bezeichnerndef ist für Auflistungen reserviert. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben links neben dem Ausrufezeichen (!) einen Namen angegeben, der keine Auflistung darstellt.

Soll der Name eine Auflistung darstellen, so überprüfen Sie die Schreibweise des Namens. Beachten Sie, daß das Ausrufezeichen auch als Typkennzeichen für den Datentyp Single verwendet wird. Wenn der Name keine Auflistung darstellen soll, wurde das Typkennzeichen ! am Ende einer Variablen möglicherweise mit einem weiteren Namen verkettet.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Bereich ohne Werte

Die Art und Weise, mit der Sie die Anzahl der Elemente eines Datenfeldes angeben können, ist beschränkt. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben falsche Begrenzungen für das Datenfeld angegeben. Zum Beispiel sind folgende Bereiche nicht zulässig:

Dim Datenfeld1(10 To -5)	' Absteigende Reihenfolge 	' nicht erlaubt.

0	Dim Datenfeld1(0 To 0)	' Datenfeld enthält keine 	' Elemente.

Überprüfen Sie, ob die verwendete Syntax korrekt ist. Der folgende Bereich ist zum Beispiel zulässig:

Dim Datenfeld1(-5 To 10)

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


RSet nur für Zeichenfolgen zulässig

RSet wird verwendet, um Zeichenfolgendaten innerhalb von Zeichenfolgen fester oder variabler Länge rechts auszurichten. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, die RSet-Anweisung für eine Variable zu verwenden, die keine Zeichenfolge darstellt.

Versuchen Sie ggf., die Variable in eine Zeichenfolge umzuwandeln. Wenn dies nicht möglich ist, verwenden Sie die RSet-Anweisung nicht.

Anmerkung   Sie können zwar mit der LSet-Anweisung Elemente einer Variablen eines benutzerdefinierten Typs einer anderen, kompatiblen Variablen eines benutzerdefinierten Typs zuweisen, aber diese Vorgehensweise wird nicht empfohlen, da keine Portierbarkeit gewährleistet ist.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Laufzeitfehler <Nummer>:

Dieser Fehler ist benutzerdefiniert. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Es trat ein Fehler auf, der keinem Visual Basic-Fehler entspricht.

Bearbeiten Sie den Fehler, wie in der Dokumentation zu dem Objekt oder der Objektbibliothek beschrieben, das oder die den Fehler ausgelöst hat.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Suchzeichenfolge zu lang oder zu komplex

Die Fähigkeiten von Visual Basic zum Mustervergleich sind beschränkt. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die angegebene Suchzeichenfolge ist entweder zu lang, oder die Kombination von Platzhalterzeichen konnte nicht interpretiert werden.

Verkürzen oder vereinfachen Sie die Suchzeichenfolge, und starten Sie den Suchvorgang erneut.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Suchzeichenfolge muß angegeben werden

Sie müssen eine Suchzeichenfolge angeben. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie wollten einen Suchvorgang ohne Angabe einer Suchzeichenfolge ausführen.

Sie müssen die zu suchende Zeichenfolge angeben. Sie können zwar eine Null-Zeichenfolge ("") als Ersatz-Zeichenfolge angeben, aber nicht als zu suchende Zeichenfolge.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Suchtext nicht gefunden

Der angegebene Suchtext konnte nicht gefunden werden. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Der angegebene Text konnte innerhalb des festgelegten Suchbereichs nicht gefunden werden.

Sie können den Suchbereich vergrößern, wenn Sie den Suchvorgang fortsetzen wollen.

•	Sie haben in einem Mustervergleich-Ausdruck keine öffnende eckige Klammer angegeben.

Geben Sie die öffnende eckige Klammer an.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Seek fehlgeschlagen: Schreiben auf/Lesen von Datenträger nicht möglich

Die Seek-Anweisung greift direkt auf den Datenträger zu. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Sie haben versucht, auf eine Datei oder einen Datenträger zuzugreifen, die/der schreibgeschützt oder gesperrt ist.

Entfernen Sie den Schreibschutz vom Datenträger bzw. ändern Sie das Schreibschutz-Attribut der betreffenden Datei, oder versuchen Sie, die Sperrung der Datei aufzuheben. Wurde die Datei durch einen anderen Prozeß gesperrt, kann die Sperrung nicht aufgehoben werden.

•	Die Datei ist nicht verfügbar (wenn zum Beispiel ein austauschbarer Datenträger ausgewechselt wurde).

Wenn die Datei auf einen anderen Datenträger verschoben wurde, versuchen Sie, auf diesen Datenträger zuzugreifen. Andernfalls können Sie nicht auf die Datei zugreifen.

•	Sie haben versucht, aus einer Projekt-Datei, einer Objektbibliothek oder einer Klassenbibliothek zu lesen, aber die Datei ist beschädigt.

Versuchen Sie, eine neue Kopie der Bibliothek oder Projektdatei zu erhalten.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Select Case ohne End Select

Jede Select Case-Konstruktion muß mit einer End Select-Anweisung abgeschlossen werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben eine Select Case-Anweisung ohne die zugehörige End Select-Anweisung verwendet.

Prüfen Sie, ob innerhalb einer Select Case...End Select-Konstruktion eine unvollständige Select Case...End Select-Konstruktion enthalten ist. Bei verschachtelten Select Case-Anweisungen muß jeder Select Case-Anweisung eine End Select-Anweisung zugeordnet sein.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ausgewählter Überwachungsausdruck ungültig

Es ist nicht immer möglich, einen gültigen Überwachungsausdruck auszuwählen. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Sie haben den Befehl Aktuellen Wert anzeigen gewählt, aber der ausgewählte Ausdruck ist kein gültiger Ausdruck. Sie können zum Beispiel einen Kommentar oder den Aufruf einer Sub-Prozedur nicht überwachen.

Wählen Sie einen gültigen Überwachungsausdruck aus, oder wählen Sie den Befehl Überwachung hinzufügen, und geben Sie einen gültigen Ausdruck ein.

•	Die Syntax des Codes im Überwachungsausdruck muß dem Gebietsschema des Projekts entsprechen, das den zu überwachenden Ausdruck definiert.

Erstellen sie einen neuen Überwachungsausdruck, der für das Gebietsschema des Projekts gültig ist.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Set Next-Anweisung nur für ausführbare Zeilen innerhalb der aktuellen Prozedur möglich

Mit dem Befehl Nächste Anweisung festlegen bestimmen Sie die Anweisung, mit der die Ausführung eines unterbrochenen Programms fortgesetzt werden soll. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Der Cursor befand sich beim Wählen des Befehls in einer Zeile, die keine ausführbare Anweisung enthielt.

Setzen Sie den Cursor in eine Zeile mit einer ausführbaren Anweisung, und wählen Sie den Befehl erneut. Deklarationen, Zeilenmarken sowie Kommentare sind nicht ausführbar und können daher nicht als Ziel des Befehls Nächste Anweisung festlegen angegeben werden.

•	Der Cursor befand sich beim Wählen des Befehls in einer Zeile, die außerhalb der momentan ausgeführten Prozedur liegt.

Setzen Sie den Cursor in eine Zeile, die sich innerhalb der momentan ausgeführten Prozedur befindet.


SHARE.EXE erforderlich

Das Programm share.exe muß ausgeführt werden, wenn Sie Visual Basic starten. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben share.exe nicht ausgeführt, bevor Sie Visual Basic gestartet haben.

Beenden Sie Ihre Anwendung, starten Sie share.exe, und rufen Sie anschließend Ihre Anwendung erneut auf. Sie können diese Fehlermeldung in Zukunft vermeiden, wenn Sie share.exe in der Datei autoexec.bat aufrufen. Share.exe wird dann beim Einschalten des Computers automatisch gestartet.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Auf angegebene(s) Bibliothek/Projekt wird bereits verwiesen

Das Dialogfeld Verweise zeigt Bibliotheken und Projekte an, auf die verwiesen wird. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben im Dialogfeld Verweise die Schaltfläche Suchen gewählt und anschließend eine Klassenbibliothek oder ein Projekt ausgewählt, die/das bereits unter Verfügbare Verweise im Dialogfeld Verweise aufgeführt war.

Wenn Sie ein bestimmtes Projekt oder eine bestimmte Klassenbibliothek zu Ihrem Projekt hinzufügen möchten, zeigen Sie das Dialogfeld Verweise an, und aktivieren Sie die gewünschte Klassenbibliothek bzw. das gewünschte Projekt.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Anweisung innerhalb eines Type-Blocks ungültig

Innerhalb eines Type...End Type-Anweisungsblocks sind nur Elementnamen (sowie die zugehörigen As Typ-Abschnitte) und Kommentare zulässig. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben eine ungültige Anweisung innerhalb der Definition eines benutzerdefinierten Typs eingegeben.

Entfernen Sie alle Eingaben, die keine Kommentare, Elementnamen oder As Typ-Abschnitte sind.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Anweisung außerhalb eines Type-Blocks ungültig

Die Syntax zur Deklaration von Variablen außerhalb eines Type...End Type-Anweisungsblocks unterscheidet sich von der Syntax zur Deklaration von Elementen des benutzerdefinierten Typs. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Sie haben versucht, eine Variable außerhalb eines Type...End Type-Blocks oder außerhalb einer Anweisung zu deklarieren.

Verwenden Sie eine der Deklarationsanweisungen Dim, ReDim, Static, Public oder Private, wenn Sie eine Variable außerhalb eines Type...End Type-Blocks mit einem As-Abschnitt deklarieren möchten. Die erste Deklaration von TestVar im folgenden Code löst zum Beispiel diesen Fehler aus, aber die zweite und dritte Deklaration von TestVar ist zulässig:

TestVar As Double	' Unzulässige Deklarationssyntax.

0	Dim Var1 As Double

1	Type EinTyp

2	Var1 As Double	' Zulässige Deklarationssyntax

3	End Type	' da innerhalb eines Type-Blocks.

•	Sie haben eine End Type-Anweisung ohne die zugehörige Type-Anweisung verwendet.

Prüfen Sie, ob Ihr Code eine End Type-Anweisung ohne die zugehörige Type-Anweisung enthält, und fügen Sie diese ggf. ein, oder entfernen Sie die End Type-Anweisung, wenn sie nicht benötigt wird.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Anweisung zu komplex

Visual Basic kann diese Anweisung nicht interpretieren. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Die Anweisung kann aufgrund ihrer Komplexität nicht interpretiert werden.

Versuchen Sie, die Anweisung in mehrere einfachere Anweisungen aufzuteilen, oder verwenden Sie anstelle einer komplexen Bedingung eine Kombination aus logischen Operatoren und If...Then...Else-Anweisungen.

•	Die Anweisung oder Funktion enthält zu viele verschachtelte Funktionsaufrufe.

Führen Sie Funktionsaufrufe vor der fehlerverursachenden Anweisung aus, weisen Sie die Ergebnisse eigenen Variablen zu, und verwenden Sie diese Variablen dann in der Anweisung, die den Fehler auslöst.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Anweisungen und Zeilenmarken zwischen Select Case und erstem Vorkommen von Case unzulässig

Zwischen einer Select Case-Anweisung und dem ersten Case-Abschnitt dürfen nur Kommentare enthalten sein. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben zwischen einer Select Case-Anweisung und dem ersten Case-Abschnitt eine Anweisung eingegeben. Beispiel:

Select Case Var1

0	' Dies ist ein Kommentar und somit zulässig.

1	Stop	' Sogar eine Stop-Anweisung ist hier nicht 	' zulässig.

2	Case IrgendeinWert

3	. . .

End Select

Einer Select Case-Anweisung muß unmittelbar auf die erste Case-Anweisung folgen. Sollte der dazwischenliegende Ausdruck ein Kommentar sein, dann setzen Sie vor den Text ein Kommentarzeichen ('). Plazieren Sie den Ausdruck andernfalls an eine geeignete Stelle, oder löschen Sie ihn.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Syntaxfehler

Visual Basic kann nicht bestimmen, welche Operation durchgeführt werden soll. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Ein Schlüsselwort oder ein Argument ist nicht korrekt geschrieben.

Schlüsselwörter und die Namen benannter Argumente müssen genau mit den Angaben in der Syntaxspezifikation übereinstimmen. Überprüfen Sie diese anhand der Hilfe, und korrigieren Sie ggf. die Schreibweise.

•	Die Zeichensetzung ist nicht korrekt.

Wenn Sie zum Beispiel optionale Argumente über ihre Position angeben und ein Argument nicht angeben möchten, müssen Sie ein Komma (,) als Platzhalter für das fehlende Argument einsetzen.

•	Eine Prozedur ist nicht definiert.

Überprüfen Sie die Schreibweise des Prozedurnamens.

•	Sie haben versucht, Optional und ParamArray in derselben Prozedurdeklaration anzugeben.

Ein ParamArray-Argument kann nicht vom Typ Optional sein. Wählen Sie ein Argument, und entfernen Sie das anderen.

•	Sie versuchten, eine Ereignisprozedur mit einem Optional- oder ParamArray-Parameter zu definieren.

Entfernen Sie das Schlüsselwort Optional oder ParamArray aus der Parameterdefinition.

•	Sie versuchten, in einer RaiseEvent-Anweisung ein benanntes Argument zu verwenden.

Ereignisse unterstützen keine benannten Argumente.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Die binäre Kompatibilitäts-DLL oder -EXE enthält einen Parametertyp, dessen Definition nicht gefunden wurde

Wenn Sie einen Binärkompatibilitätsserver haben, der eine Schnittstelle implementiert, die in einer anderen DLL enthalten ist, müssen Sie bei dessen Neukompilierung achtgeben. Für diese Warnung gibt es folgende Ursache und Lösung:

•	Die andere DLL wurde als Project Compatible neukompiliert, wodurch sich die Schnittstellen-GUID ändert. Da diese Änderung nicht sichtbar ist, kann dies ein unerwarteter Fehler sein. Dieser kann auch auftreten, wenn Ihnen jemand eine Project Compatible-DLL zur Referenzierung angibt.

Dieser Fehler tritt im allgemeinen auf, wenn die binärkompatible DLL oder EXE eines Projekts eine Typenbibliothek mit unaufgelösten Verweisen enthält. Letztere kommen vor, wenn eine referenzierte Typenbibliothek mit einer anderen Datei (z.B. einer neukompilierten DLL oder EXE) überschrieben wird, wenn Sie die Typenbibliothek löschen, oder wenn Sie eine referenzierende Typenbibliothek auf eine andere Maschine verlagern, aber die referenzierte Typenbibliothek entweder nicht mit verlagern oder nicht registrieren.

0	Eine mögliche Korrektur ist es, eine Kopie der referenzierten Typenbibliothek auf Ihrer Maschine zu erhalten und diese zu registrieren. Sie können die alte nicht verwenden, weil sie bei der Neukompilierung überschrieben wurde. Falls dies nicht hilft, bleibt Ihnen nichts anderes übrig als die DLL/EXE nicht mehr als Ihre Binärkompatibilitätsversion zu verwenden.


Die binäre Kompatibilitäts-DLL oder -EXE enthält einen Parametertyp, dessen Definition nicht gefunden wurde

Wenn Sie einen Binärkompatibilitätsserver haben, der eine Schnittstelle implementiert, die in einer anderen DLL enthalten ist, müssen Sie bei dessen Neukompilierung achtgeben. Für diese Warnung gibt es folgende Ursache und Lösung:

•	Wenn Sie für ein Projekt Binary Compatibility einstellen und es dann neu kompilieren, wird automatisch Project Compatibility eingestellt, wodurch sich die interne GUID der Schnittstelle ändert. Da diese Änderung nicht sichtbar ist, kann ein unerwarteter Fehler auftreten.

Dieser Fehler tritt im allgemeinen auf, wenn die binärkompatible DLL oder EXE eines Projekts eine Typenbibliothek mit unaufgelösten Verweisen enthält. Letztere kommen vor, wenn eine referenzierte Typenbibliothek mit einer anderen Datei (z.B. einer neukompilierten DLL oder EXE) überschrieben wird, wenn Sie die Typenbibliothek löschen, oder wenn Sie eine referenzierende Typenbibliothek auf eine andere Maschine verlagern, aber die referenzierte Typenbibliothek entweder nicht mit verlagern oder nicht registrieren.

0	Eine mögliche Korrektur ist es, eine Kopie der referenzierten Typenbibliothek auf Ihrer Maschine zu erhalten und diese zu registrieren. Sie können die alte nicht verwenden, weil sie bei der Neukompilierung überschrieben wurde. Falls dies nicht hilft, bleibt Ihnen nichts anderes übrig als die DLL/EXE nicht mehr als Ihre Binärkompatibilitätsversion zu verwenden.


Durch diesen Bearbeitungsvorgang kann das Objektmodul inkompatibel zum zuvor angegebenen kompatiblen ActiveX-Server werden

Wenn eine kompatible ActiveX-Komponente bereits als zuvor verteilte ausführbare Datei oder Dynamic Link Library (DLL) vorhanden ist, sollten Sie die Schnittstelle des Objekts nicht mehr ändern. Für diese Warnung gibt es die folgende Ursache und Lösung:

•	Sie wollten den Code eines Objektmoduls bearbeiten, das bereits als ausführbare Datei vorliegt.

Wenn Sie Änderungen an der Schnittstelle des Objekts vornehmen, ist die Klasse nicht mehr aufwärtskompatibel mit der früheren Version und die neue Version kann nicht anstelle der alten Version für den kompilierten Code verwendet werden.

0	In Visual Basic wird der Name der kompatiblen ActiveX-Komponente in dem Dialogfeld angezeigt, das angezeigt wird, wenn Sie aus dem Menü Extras den Befehl Projektoptionen wählen.

Wichtig   Wenn Sie die Änderungen übernehmen möchten, klicken Sie im Dialogfeld mit der Fehlermeldung auf OK. Wenn Sie die Änderungen rückgängig machen möchten, klicken Sie auf Abbrechen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Der angegebene Bereich wurde durchsucht

Wenn Sie im Dialogfeld Ersetzen auf die Schaltflächen Weitersuchen oder Ersetzen klicken, wird die Gesamtzahl der durchgeführten Ersetzungen nicht angegeben. Dieser Zustand hat folgende Ursache und Wirkung:

•	Sie können vor der Durchführung einer Suchen-und-Ersetzen-Aktion den zu durchsuchenden Bereich angeben: Auswahl, Prozedur, Modul oder Projekt.

Wenn Sie einen Bereich ausgewählt haben, ist dies der Standard-Suchbereich. Wenn Sie keinen Bereich ausgewählt haben, ist das aktuelle Modul der Standard-Suchbereich. Sie können den Suchbereich ändern, indem Sie im Dialogfeld Ersetzen eine andere Option aktivieren.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Der angegebene Bereich wurde durchsucht. 1 Element wurde ersetzt

Wenn Sie im Dialogfeld Ersetzen auf die Schaltfläche Alle ersetzen geklickt haben, gibt Ihnen diese Meldung die Gesamtzahl der durchgeführten Ersetzungen an. Dieser Zustand hat folgende Ursache und Wirkung:

•	Der angegebene Suchtext konnte während der Suchen-und-Ersetzen-Operation nur ein einziges Mal gefunden und ersetzt werden. Sie können den zu durchsuchenden Bereich angeben: Auswahl, Prozedur, Modul oder Projekt.

Wenn Sie einen Bereich ausgewählt haben, ist dies der Standard-Suchbereich. Wenn Sie keinen Bereich ausgewählt haben, ist das aktuelle Modul der Standard-Suchbereich. Sie können den Suchbereich ändern, indem Sie im Dialogfeld Ersetzen eine andere Option aktivieren.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Der angegebene Bereich wurde durchsucht. <n> Elemente wurden ersetzt

Wenn Sie im Dialogfeld Ersetzen auf die Schaltfläche Alle ersetzen geklickt haben, gibt Ihnen diese Meldung die Gesamtzahl der durchgeführten Ersetzungen an. Dieser Zustand hat folgende Ursache und Wirkung:

•	Sie können vor der Durchführung einer Suchen-und-Ersetzen-Operation den zu durchsuchenden Bereich angeben: Auswahl, Prozedur, Modul oder Projekt project.

Wenn Sie einen Bereich ausgewählt haben, ist dies der Standard-Suchbereich. Wenn Sie keinen Bereich ausgewählt haben, ist das aktuelle Modul der Standard-Suchbereich. Sie können den Suchbereichde ändern, indem Sie im Dialogfeld Ersetzen eine andere Option aktivieren.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Die .VBP-Datei für dieses Projekt enthält eine ungültige oder beschädigte ID für Bibliotheksverweise

Beim Speichern eines Projekts, für das im Dialogfeld Verweise ein Verweis ausgewählt wurde, wird in der .VBP-Datei (in früheren Visual Basic-Versionen als .MAK-Datei bezeichnet) des Projekts ein Eintrag vorgenommen. Der Eintrag für ein Datenzugriffsobjekt lautet beispielsweise:

Reference=*\G{00025E01-0000-0000-C000-000000000046}#0.0#0#C:\WINDOWS\SYSTEM\DAO2516.DLL#Microsoft

0	DAO 2.5 Object Library

Dieser Fehler tritt auf, wenn solche Verweise bearbeitet oder beschädigt wurden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Ein Verweis in der .VBP-Datei ist nicht mehr gültig.

Löschen Sie die unzulässige Zeile in der .VBP-Datei, und überprüfen Sie die entsprechende Objektbibliothek über das Menü Extras im Dialogfeld Verweise. Speichern Sie das Projekt; die richtigen Informationen werden nun in die .VBP-Datei eingetragen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Objekt löst keine Ereignisse aus

Eine Ereignisprozedur muß einem Ereignis entsprechen, das von einem Objekt ausgelöst werden kann. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben eine Ereignisprozedur für ein Objekt erstellt, das keine Ereignisse auslöst.

Es ist nicht möglich, eine Ereignisprozedur zu erstellen, die keinem Ereignis entspricht.

•	Sie wollten WithEvents für eine Klasse verwenden, die keine Ereignisse auslöst.

Es ist nicht möglich, WithEvents für eine Klasse zu verwenden, die keine Ereignisse auslöst.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Zu viele Argumente

Eine Prozedur kann nur 60 Argumente haben. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben mehr als 60 Argumente für eine Prozedur angegeben.

Wenn Sie mehr Argumente benötigen, definieren Sie einen benutzerdefinierten Typ, um mehrere Argumente unterschiedlicher Typen anzugeben, oder verwenden Sie ParamArray als letztes Argument, und übergeben Sie diesem mehrere Werte. Sie können auch mehrere Argumente übergeben, indem Sie sie in ein Datenfelddefa einfügen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Zu viele Dimensionen

Datenfelder können nicht mehr als 60 Dimensionen haben. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Sie haben versucht, ein Datenfeld mit mehr als 60 Dimensionen zu deklarieren.

Verringern Sie die Anzahl der Dimensionen.

•	Die Datenfelddeklaration liegt zwar innerhalb des angegebenen Bereichs, aber es steht nicht genügend Arbeitsspeicher zur Verfügung, um das Datenfeld tatsächlich zu erstellen.

Stellen Sie entweder zusätzlichen Arbeitsspeicher zur Verfügung, oder verringern Sie die Anzahl der Dimensionen. Wenn Ihr Datenfeld den Typ Variant besitzt oder in einem Variant-Wert enthalten ist, können Sie ein Datenfeld mit derselben Anzahl an Elementen erstellen, indem Sie das Datenfeld neu deklarieren und bei der Deklaration den Datentyp der darin enthaltenen Elemente verwenden. Enthält Ihr Datenfeld beispielsweise nur ganze Zahlen, und Sie deklarieren es als Datenfeld vom Typ Integer, so wird weniger Speicher benötigt, als wenn jedes Element den Typ Variant besitzt.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Zu viele Zeilenfortsetzungen

Die Anzahl der Zeilen, die mit Zeilenfortsetzungszeichen verbunden werden können, ist beschränkt. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	In Ihrem Code befinden sich mehr als 25 aufeinanderfolgende Zeilen, die mit Zeilenfortsetzungszeichen verbunden sind, oder mehr als 24 aufeinanderfolgende Zeilenfortsetzungszeichen in einer Zeile.

Verlängern Sie einige Zeilen physisch, um die Anzahl der erforderlichen Zeilenfortsetzungszeichen zu reduzieren, oder teilen Sie die Konstruktion in mehrere Anweisungen auf.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Zu viele lokale, nichtstatische Variablen

Lokale, nichtstatische Variablen sind Variablen, die in einer Prozedur definiert und bei jedem Aufruf der Prozedur neu initialisiert werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Der erforderliche Gesamtspeicher für die lokalen, nichtstatischen Variablen und Compiler-generierten temporären Variablen überschreitet 32 KB.

Deklarieren Sie, wo dies möglich ist, einige der Variablen mit der Static-Anweisung. Static-Variablen behalten im Gegensatz zu nichtstatischen Variablen zwischen den Prozeduraufrufen ihren Wert, weil ihnen verschiedene Speicherressourcen zugeordnet werden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Zu viele Variablen auf Modulebene

Variablen auf Modulebene werden im Deklarationsabschnitt eines Moduls vor den Prozeduren des Moduls deklariert. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Der erforderliche Gesamtspeicher für alle Variablen auf Modulebene in diesem Modul überschreitet 64 KB.

Dies stellt die Speichergrenze für dieses Modul dar. Sie können gegebenenfalls einige der Variablen als Public in einem anderen Modul deklarieren, oder, wenn einige Variablen auf Modulebene nur in einer Prozedur verwendet werden, können Sie sie in dieser Prozedur deklarieren. Wenn Sie Variablen auf Modulebene deklariert haben, weil sie zwischen Prozeduraufrufen ihren Wert behalten sollen, können diese auch in der Prozedur, in der sich der Verweis befindet, als Static deklariert werden.

Anmerkung   Der verfügbare Speicherplatz kann bei den unterschiedlichen Betriebssystemen variieren.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Typkennzeichen entspricht nicht deklariertem Datentyp

Der Datentyp einer Variablen kann nicht dadurch geändert werden, daß das Typkennzeichen eines anderen Typs angefügt wird. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben eine Variable eines bestimmten Typs deklariert, anschließend im gleichen Gültigkeitsbereich auf eine Variable mit demselben Namen verwiesen und ein anderes Typkennzeichen angefügt.

Wenn die Möglichkeit bestehen soll, den Typ der Daten zu ändern, die einer Variablen zugewiesen werden, deklarieren Sie die Variable als Variant. Wenn Sie lediglich ein falsches Typkennzeichen angefügt haben, ändern oder entfernen Sie es.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Typkennzeichen unzulässig

Die Verwendung von Typkennzeichen ist in Visual Basic zwar zulässig, jedoch verfügen einige Datentypen (wie Byte, Boolean, Date, Object und Variant) über kein zugeordnetes Typkennzeichen. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Sie haben versucht, das Typkennzeichen in der Deklaration einer Variablen zu verwenden, die einen As-Abschnitt verwendet, zum Beispiel Dim, Static, Public usw.

Entfernen Sie entweder das Typkennzeichen oder den As-Abschnitt.

•	Sie haben versucht, ein Typkennzeichen in einem Verweis auf eine Variable zu verwenden, die bereits ohne Typkennzeichen implizit deklariert ist:

Var1 = 20	' Implizite Deklaration.

0	Var1% = 25	' Löst einen Fehler aus.

Entfernen Sie das Typkennzeichen, oder deklarieren Sie die ursprüngliche Variable neu.

Anmerkung   Enthält die explizite Deklaration einer Variablen bereits ein Typkennzeichen, dann ist die Verwendung des Typkennzeichens in nachfolgenden Verweisen optional. Beispiel:

Dim Str1$

Str1 = "Aufgrund der expliziten Deklaration ist das $ optional."

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Typkennzeichen erforderlich

Ob Typkennzeichen erforderlich sind, hängt von der Art der Deklaration des Bezeichners ab. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben auf eine Variable, die ursprünglich implizit mit einem Typkennzeichen deklariert wurde, ohne Typkennzeichen verwiesen. Zum Beispiel:

Str1$ =  "Implizite Deklaration"

0	Str1 = 	"Versuch, auf Str1$ zuzugreifen, aber es" tritt ein"_

1	 & "Fehler auf, da die Variable den Namen Str1 besitzt."

Deklarieren Sie die Variable explizit, oder fügen Sie in nachfolgenden Verweisen das Typkennzeichen an.

Anmerkung   Enthält die explizite Deklaration einer Variablen bereits ein Typkennzeichen, dann ist die Verwendung des Typkennzeichens in nachfolgenden Verweisen optional. Beispiel:

Dim Str1$

Str1 = "Bei expliziter Deklaration ist $ optional."

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Unverträglicher Typ: Datenfeld oder benutzerdefinierter Typ erwartet

Der Datentyp eines Arguments oder Parameters zeigt an, ob es sich um ein Datenfeld oder einen benutzerdefinierten Typ handelt. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Das Argument hat ein einzelnes Element eines Datenfeldes oder benutzerdefinierten Typs oder eine einfache Variable, ein Literal oder eine Konstante angegeben. Das Argument wird aber einem Parameter übergeben, der ein Datenfeld oder einen benutzerdefinierten Typ erwartet.

Ändern Sie das Argument oder die Definition des Parameters.

•	Das Argument hat ein Datenfeld oder einen benutzerdefinierten Typ angegeben, aber der Typ stimmt nicht mit dem Typ des Parameters überein.

Übergeben Sie entweder ein Datenfeld des erwarteten Typs, oder ändern Sie die Definition der Parameterdeklaration.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Lesen von Datenträger nicht möglich

Beim Lesen von einem Datenträger ist ein Fehler aufgetreten. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Die Laufwerksverriegelung ist nicht ordnungsgemäß geschlossen.

Handelt es sich um einen austauschbaren Datenträger, so überprüfen Sie die Laufwerksverriegelung, und schließen Sie sie ggf.

•	Der Datenträger wurde verkehrt herum eingelegt.

Legen Sie den Datenträger richtig ein.

•	Der Datenträger ist nicht richtig formatiert.

Formatieren Sie den Datenträger neu, wenn Sie den Verlust der darauf enthaltenen Daten akzeptieren können.

•	Es bestehen Netzwerkprobleme.

Versuchen Sie, das Netzwerk erneut zu starten.

•	Sie haben einen Datenträger mit einer bestimmten Speicherkapazität in ein Laufwerk eingelegt, das solche Datenträger nicht lesen kann.

Verwenden Sie ein anderes Laufwerk, oder kopieren Sie die gewünschten Daten auf einen geeigneten Datenträger.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Schreiben auf Datenträger nicht möglich

Beim Schreiben auf einen Datenträger ist ein allgemeiner Fehler aufgetreten. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Die Laufwerksverriegelung ist nicht ordnungsgemäß geschlossen.

Handelt es sich um einen austauschbaren Datenträger, so überprüfen Sie die Laufwerksverriegelung, und schließen Sie sie ggf.

•	Der Datenträger wurde verkehrt herum eingelegt.

Legen Sie den Datenträger richtig ein.

•	Der Datenträger ist nicht richtig formatiert.

Formatieren Sie den Datenträger neu, wenn Sie den Verlust der darauf enthaltenen Daten akzeptieren können.

•	Es bestehen Netzwerkprobleme.

Versuchen Sie, das Netzwerk erneut zu starten.

•	Sie haben einen Datenträger mit einer bestimmten Speicherkapazität in ein Laufwerk eingelegt, das solche Datenträger nicht lesen kann.

Verwenden Sie ein anderes Laufwerk, oder kopieren Sie die gewünschten Daten auf einen geeigneten Datenträger.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Unerwarteter Fehler; setzen Sie sich bitte mit dem Microsoft Software Service in Verbindung

Bei diesem Fehler kann, muß es sich jedoch nicht um einen schwerwiegenden Fehler handeln. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Ein unvorhergesehener Fehler ist in der Host-Anwendung oder in Visual Basic aufgetreten.

Hierbei handelt es sich nicht notwendigerweise um einen schwerwiegenden Fehler. Notieren Sie jedoch die Fehlernummer notieren und wenden Sie sich an den Microsoft Software Service.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Nichtaufgelöste schließende Klammer in Suchzeichenfolge

Zu jeder öffnenden Klammer muß eine schließende Klammer angegeben werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben in einer Suchzeichenfolge eine öffnende Klammer ohne die zugehörige schließende Klammer angegeben.

Fügen Sie an der entsprechenden Stelle eine schließende Klammer ein.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Projektsprache nicht erkannt

Das angegebene Gebietsschema für den Code des zu ladenden Projekts wird von dieser Anwendung momentan nicht unterstützt. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Das Projekt wurde auf einem System erstellt, das das Code-Gebietsschema unterstützt, und anschließend auf ein anderes System übertragen, auf dem das Code-Gebietsschema nicht erkannt wird. Zum Beispiel kann auf dem momentan verwendeten System eine Version der Datei ole2nls.dll verwendet werden, die das angegebene Code-Gebietsschema nicht erkennt.

Installieren Sie auf dem aktuellen System die richtige Version der Dynamic Link Library (DLL).

•	Die richtige Objektbibliothek dieses Projekts konnte nicht gefunden werden.

Stellen Sie sicher, daß die richtigen Objektbibliotheken verfügbar sind. Sie können zum Beispiel überprüfen, ob deren Verzeichnisse im aktuellen Pfad aufgeführt sind.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Benutzerdefinierter Typ kann nicht ByVal übergeben werden

Benutzerdefinierte Typen können nur als Referenz (Voreinstellung) und nicht als Wert übergeben werden. Dieser Fehler tritt erst dann auf, wenn der Aufruf erfolgt. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben das Schlüsselwort ByVal in der Definition eines Parameters verwendet, der einen benutzerdefinierten Typ darstellt.

Entfernen Sie das Schlüsselwort ByVal. Wenn die Rückgabe von Änderungen an die aufrufende Prozedur unterbunden werden soll, deklarieren Sie mit Dim eine temporäre Variable des Typs, und übergeben Sie diese an die Prozedur.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Benutzerdefinierter Typ nicht definiert

Sie können in Visual Basic eigene Datentypen erstellen, diese müssen jedoch zunächst in einer Type...End Type-Anweisung, in einer ordnungsgemäß registrierten Objektbibliothek oder in einer Klassenbibliothek definiert werden. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Sie haben versucht, eine Variable oder ein Argument mit einem undefinierten Datentyp zu deklarieren, oder Sie haben einen unbekannten Klassen- oder Objektnamen angegeben.

Verwenden Sie die Type-Anweisung in einem Modul, um einen neuen Datentyp zu definieren. Wenn Sie einen Verweis auf eine Klasse erstellen möchten, muß auf diese Klasse von Ihrem Projekt zugegriffen werden können. Wenn Sie in Ihrem Programm auf eine Klasse verweisen, muß in Ihrem Projekt ein Klassenmodul mit dem angegebenen Klassennamen vorhanden sein. Überprüfen Sie die Schreibweise des Typ- und Objektnamens.

•	Der Typ, den Sie deklarieren möchten, befindet sich in einem anderen Modul, ist aber als Private deklariert.

Verschieben Sie die Typdefinition in ein Standardmodul, wo sie als Public deklariert sein kann.

•	Sie haben einen gültigen Datentyp angegeben, aber die Objekt- bzw. Klassenbibliothek, in der der Typ definiert ist, ist nicht in Visual Basic registriert.

Zeigen Sie das Dialogfeld Verweise an, und wählen Sie dann die entsprechende Objekt- oder Klassenbibliothek aus. Wenn Sie beispielsweise im Dialogfeld Verweise die Bibliothek "Microsoft DAO 3.5 Object Library" nicht aktiviert haben, werden Datentypen wie Database, Recordset und TableDef nicht erkannt, und im Code vorhandene Verweise auf diese Typen lösen den Fehler aus.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Benutzerdefinierter Typ ohne Elemente nicht zulässig

Benutzerdefinierte Typen müssen mindestens ein Element enthalten. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben in einer Type...End Type-Definition einen benutzerdefinierten Typ ohne Elemente angegeben.

Überprüfen Sie, ob Sie in der Type-Anweisung irrtümlich ein Kommentartrennzeichen eingefügt haben.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Variable nicht definiert

Mit der Option Explicit-Anweisung können Sie ausschließen, daß Ihre Module Variablen enthalten, die nicht deklariert wurden, oder daß durch Tippfehler versehentlich neue Variablen erstellt werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben mit einer Option Explicit-Anweisung festgelegt, daß Variablen explizit deklariert werden müssen, aber trotzdem eine nicht deklarierte Variable verwendet.

Deklarieren Sie die Variable explizit, oder korrigieren Sie deren Schreibweise so, daß sie mit der gewünschten Variablen übereinstimmt.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Variable in diesem Kontext noch nicht erzeugt

Eine Variable muß bereits erstellt worden sein, bevor sie im Überwachungsfenster oder im Direktfenster angezeigt werden kann und ihr im Direktfenster Werte zugewiesen werden können. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Sie haben versucht, den Wert einer lokalen Variablen anzuzeigen, die Sie in den Code eingegeben haben, bevor Sie im Haltemodus den Befehl Einzelschritt mindestens einmal ausgeführt haben.

Sie erzwingen das Kompilieren der neuen Anweisung, indem Sie die Ausführung des Codes mit einem Einzelschritt starten.

•	Sie haben versucht, den Wert einer lokalen Variablen anzuzeigen, die Sie unmittelbar vorher in einer Prozedur eingegeben haben, die in der Aufrufhierarchie weiter unten steht, indem Sie zu dieser Prozedur mit Hilfe des Dialogfelds Aufrufeliste gewechselt sind.

Sie müssen zur Prozedur zurückkehren, bevor Sie die Variable in ihrem Kontext anzeigen können.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Variable erforderlich - Zuweisung an diesen Ausdruck nicht möglich

Dieser Fehler tritt in der Regel dann auf, wenn Sie einen Wert zuweisen wollen, diese Zuweisung jedoch nicht akzeptiert wird. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Sie haben versucht, einen numerischen Ausdruck als Argument für die Len-Funktion zu verwenden.

Die Len-Funktion akzeptiert numerischen Ausdrücke, numerische Literale oder binäre numerische Ausdrücke nicht als Argument. Zeichenfolgen- oder numerische Variablen und Zeichenfolgenausdrücke oder Variablen eines benutzerdefinierten Typs sind als Argument jedoch zulässig.

•	Sie haben einen Funktionsaufruf oder Ausdruck als Argument für Input #, Let, Get oder Put verwendet. Dieser Fehler tritt zum Beispiel dann auf, wenn Sie ein Argument verwendet haben, das anscheinend einen gültigen Verweis auf eine Datenfeldvariable darstellt, tatsächlich aber eine Funktion mit demselben Namen aufruft.

Input #, Let, Get und Put akzeptieren keine Funktionsaufrufe als Argumente.

•	Sie haben versucht, einem bereits als Konstante deklarierten Bezeichner einen Wert zuzuweisen.

Wählen Sie einen anderen Namen für den Bezeichner.

•	Sie haben versucht, eine Konstante als Schleifenzähler in einer For...Next-Anweisung zu verwenden.

Verwenden Sie eine Variable als Schleifenzähler.

•	Sie wollten einer schreibgeschützten Eigenschaft oder einem Ausdruck, der mehrere Variablen enthält (z.B. X + Y), einen Wert zuweisen. Eine Zuweisung legt einen Wert an einem Speicherort ab. Der angegebene Ausdruck muß genau einen Speicherort darstellen, auf den geschrieben werden kann.

Ändern Sie die Zuweisung, so daß sie nur einen Variablennamen angibt, dem die Daten zugewiesen werden.

•	Sie wollten eine undeklarierte Variable verwenden, die in einer Klassenbibliothek als Konstante definiert ist.

Verwenden Sie entweder einen anderen Namen für die Variable, oder deklarieren Sie sie explizit.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Achtung: benutzerdefinierte Spracheinstellungen sind nicht portierbar

Nicht alle Spracheinstellungen sind portierbar. Für diese Warnung gibt es die folgende Ursache und Lösung:

•	Sie haben in Ihrem Code benutzerdefinierte Spracheinstellungen verwendet.

Wenn Sie benutzerdefinierte Sprach- und Ländereinstellungen für Ihren Code auswählen, entsprechen die im Code verwendeten Sprachkonventionen den Einstellungen in der Systemsteuerung Ihres Systems. Sie können benutzerdefinierte Einstellungen für das Code- Gebietsschema verwenden, jedoch funktioniert der Code dann eventuell nicht mit anderen Gebietsschemata oder Systemen mit anderen Einstellungen. Die Host-Anwendung legt bei der Analyse einiger Zeichenfolgen die Einstellungen in der Systemsteuerung des Systems zugrunde, auf dem die Anwendung ausgeführt wird.

0	Wenn die Einstellungen in der Systemsteuerung des Zielsystems nicht mit den Einstellungen auf dem System übereinstimmen, auf dem der Code entwickelt wurde, können Zeichenfolgen, die von einer Host-Anwendung analysiert werden (zum Beispiel Code, der ein vom Gebietsschema abhängiges Dezimaltrennzeichen verarbeitet), nicht richtig interpretiert werden. Daher sollten Sie ein benutzerdefiniertes Gebietsschema nur dann verwenden, wenn der Code keinem anderen Benutzer zur Verfügung gestellt werden soll. Wenn Sie den Code an andere Benutzer weitergeben möchten, verwenden Sie ein vordefiniertes Gebietsschema.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Wend ohne While

Vor jeder Wend-Anweisung muß eine zugehörige While-Anweisung angegeben werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben eine Wend-Anweisung angegeben, ohne die zugehörige While-Anweisung voranzustellen.

Überprüfen Sie, ob eine unvollständige Schleife innerhalb der While...Wend-Schleife diesen Fehler verursacht.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


While ohne Wend

Eine While-Anweisung wurde ohne zugehörige Wend-Anweisung verwendet. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben eine While...Wend-Konstruktion begonnen, aber nicht abgeschlossen.

Prüfen Sie, ob sich innerhalb der äußeren While...Wend-Struktur eine unvollständige While...Wend-Struktur befindet.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


With-Objekt muß einen benutzerdefinierten Typ oder den Typ Object oder Variant haben

Ein With...End With-Block kann nicht mit allen Variablen-Typen verwendet werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie wollten eine Variable, die nicht vom Typ Object oder Variant ist oder einen benutzerdefinierten Typ darstellt und ein Objekt enthält, innerhalb eines With-Blocks verwenden.

Überprüfen Sie, ob der Name des Objekts, des benutzerdefinierten Typs oder der Variant-Variablen möglicherweise falsch geschrieben wurde.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Falsche Anzahl an Dimensionen

Sie müssen auf Datenfelder mit Hilfe von Indizes verweisen, die der Anzahl der Dimensionen in der Deklaration des Datenfeldes entsprechen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben auf ein Datenfeld mit einer Anzahl an Dimensionen verwiesen, die nicht der tatsächlichen Anzahl an Dimensionen entspricht, die dieses Datenfeld enthält. Dieser Fehler tritt zum Beispiel dann auf, wenn mit der Anweisung X(2,4) (zweidimensionales Datenfeld) auf ein Datenfeld verwiesen wird, das mit Dim X(5) (eindimensionales Datenfeld) definiert wurde.

Überprüfen Sie die Deklaration des Datenfeldes, und schließen Sie in den Verweis auf das Datenfeld einen Indexwert für jede Dimension ein.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Nach diesem Vorgang wird das Projekt zurückgesetzt. Möchten Sie trotzdem fortfahren?

Sie können zwar im Haltemodus den Code bearbeiten, bei einigen Bearbeitungen muß die Ausführung jedoch beendet werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie wollten eine Bearbeitung durchführen, die die Fortsetzung der Ausführung verhindert, z.B. die Deklaration einer statischen Variablen.

Wenn Sie Ja wählen, wird die Programmausführung beendet, und Sie können den Code bearbeiten. Wenn Sie Nein wählen, können Sie die Programmausführung an der Stelle fortsetzen, an der sie unterbrochen wurde.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Sie müssen einen #If-Block mit #End If abschließen

#If ist eine Anweisung für die bedingte Kompilierung. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Ein #If-Block wurde gefunden, der nicht durch ein #End If abgeschlossen wird.

Fügen Sie an der entsprechenden Stelle eine #End If-Anweisung ein.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Private Objektmodule dürfen in öffentlichen Objektmodulen nicht als Parameter oder Rückgabetypen für öffentliche Prozeduren, als öffentliche Datenmitglieder, oder als Felder öffentlicher, benutzerdefinerter Typen verwendet werden

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Sie versuchten, ein privates Objektmodul als Parameter in einem öffentlichen Objektmodul oder als Feld von einem öffentlichen, benutzerdefinierten Typ zu verwenden, was nicht zulässig ist.


Nur öffentliche, benutzerdefinierte Typen, die in öffentlichen Objektmodulen definiert sind, können als Parameter oder Rückgabetypen für öffentliche Prozeduren von Klassenmodulen oder als Felder öffentlicher, benutzerdefinierter Typen verwendet werden

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Sie versuchten, einen öffentlichen, benutzerdefinierten Typ als Parameter oder Rückgabetyp für eine öffentliche Prozedur eines Klassenmoduls oder als Feld von öffentlichen, benutzerdefinierten Typen zu verwenden. So können nur öffentliche, benutzerdefinierte Typen verwendet werden, die in einem öffentlichen Objektmodul definiert sind.


Die Objektbibliothek ist ungültig oder enthält Verweise auf Objektdefinitionen, die nicht gefunden werden konnten

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Eine Objektbibliothek enthält Verweise auf Objektdefinitionen, die nicht gefunden wurden oder ist in anderer Weise ungültig.


Argument ist nicht optional (Fehler 449)

Anzahl und Typ der Argumente müssen mit Anzahl und Typ der erwarteten Argumente übereinstimmen. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Falsche Anzahl an Argumenten.

Geben Sie alle erforderlichen Argumente an. Die Left-Funktion erfordert zum Beispiel zwei Argumente: das erste Argument enthält die zu verarbeitende Zeichenfolge, und das zweite Argument gibt die Anzahl der Zeichen an, die ab dem ersten (linken) Zeichen der Zeichenfolge zurückgegeben werden sollen. Da keines der Argumente optional ist, müssen beide Argumente angegeben werden.

•	Das nicht angegebene Argument ist nicht optional.

Ein Argument kann nur dann in einem Aufruf einer benutzerdefinierten Prozedur weggelassen werden, wenn es in der Prozedurdeklaration als Optional deklariert wurde. Geben Sie entweder das Argument im Aufruf an, oder deklarieren Sie den Parameterin der Definition als Optional.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Falsche DLL-Aufrufkonvention (Fehler 49)

Argumente , die an eine Routine in einer Dynamic Link Libraryd  (DLL) oder in einer Macintosh Code-Ressource übergeben werden, müssen mit den von der Routine erwarteten Argumenten genau übereinstimmen. Aufrufkonventionen legen die Anzahl, den Typ und die Reihenfolge der Argumente fest. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Ihr Programm ruft eine Routine in einer DLL (unter Windows) oder in einerCode-Ressource (auf dem Macintosh) auf, der ein falscher Argumenttyp übergeben wird.

Stellen Sie sicher, daß alle Argumenttypen mit den Typen übereinstimmen, die in der Deklaration der aufgerufenen Routine angegeben sind.

•	Ihr Programm ruft eine Routine in einer DLL (unter Windows) oder in einer Code-Ressource (auf dem Macintosh) auf, der die falsche Anzahl an Argumenten übergeben wird.

Stellen Sie sicher, daß die Anzahl an Argumenten übergeben wird, die in der Deklaration der aufgerufenen Routine angegeben ist.

•	Ihr Programm ruft eine Routine in einer DLL auf, verwendet aber nicht die Aufrufkonvention StdCall.

Wenn die DLL-Routine Argumente als Wert erwartet, muß ByVal für diese Argumente in der Deklaration der Routine angegeben werden.

•	Die Declare-Anweisung für eine Windows-DLL enthält CDecl.

Das Schlüsselwort CDecl kann nur bei Macintosh-Computern verwendet werden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Falscher Dateimodus (Fehler 54)

Anweisungen, die zum Ändern des Inhalts von Dateien verwendet werden, müssen für den Modus geeignet sein, in dem die Datei geöffnet wurde. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Eine Put- oder Get-Anweisung gibt eine sequentielle Datei an.

Put und Get können nur bei Dateien verwendet werden, die im Zugriffsmodus Random oder Binary geöffnet wurden.

•	Eine Print #-Anweisung gibt eine Datei an, die nicht im Zugriffsmodus Output oder Append geöffnet wurde.

Verwenden Sie eine andere Anweisung, um Daten in die Datei zu schreiben, oder öffnen Sie die Datei erneut in einem geeigneten Zugriffsmodus.

•	Eine Input #-Anweisung gibt eine Datei an, die nicht im Zugriffsmodus Input geöffnet wurde.

Verwenden Sie eine andere Anweisung, um Daten in die Datei zu schreiben, oder öffnen Sie die Datei erneut im Zugriffsmodus Input.

•	Sie wollten in eine schreibgeschützte Datei schreiben.

Ändern Sie den Lesen/Schreiben-Status der Datei, oder unterlassen Sie die Schreibversuche.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Dateiname oder -nummer falsch (Fehler 52)

Ein Fehler trat beim Zugriff auf die angegebene Datei auf. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Eine Anweisung bezieht sich auf eine Datei mit einer Dateinummer  oder einem Dateinamen, und es gibt folgendes Problem:

•	Die Dateinummer oder der Dateiname wurde nicht in der Open-Anweisung angegeben, oder sie/er wurden angegeben, aber die Datei wurde anschließend geschlossen:

Geben Sie den Dateinamen in einer Open-Anweisung an. Wenn Sie die Close-Anweisung ohne Argumente ausgeführt haben, können versehentlich alle momentan geöffneten Dateien geschlossen worden sein, wodurch alle Dateinummern ungültig geworden sind.

•	Dateinummern liegen außerhalb des zulässigen Bereichs (1 - 511).

Wenn Ihr Code Dateinummern auf der Basis von Berechnungen generiert, überprüfen Sie, ob die Nummern zulässig sind.

•	Ein Name oder eine Nummer ist ungültig.

Dateinamen müssen entsprechend den Konventionen des Betriebssystems und den Basic-Dateinamenkonventionen angegeben werden. In Microsoft Windows gelten die folgenden Konventionen für die Namen von Dateien und Verzeichnissen:

•	Der Name einer Datei oder eines Verzeichnisses kann aus zwei Abschnitten bestehen, einem Namen und einer optionalen Erweiterung. Beide Abschnitte sind durch einen Punkt getrennt, zum Beispiel testdat.neu.

•	Der Name kann bis zu 255 Zeichen enthalten.

•	Der Name muß mit einem Buchstaben oder einer Zahl anfangen. Es sind sowohl Groß- als auch Kleinbuchstaben zulässig (Zwischen Groß- und Kleinschreibung wird nicht unterschieden.). Der Name kann mit Ausnahme der folgenden Zeichen alle Zeichen enthalten: Anführungszeichen ("), Apostroph ('), Schrägstrich (/), umgekehrter Schrägstrich (\), Doppelpunkt (:) und vertikale Linie (|).

•	Der Name kann Leerzeichen enthalten.

•	Die folgenden Namen sind reserviert und stehen für Datei- und Verzeichnisnamen nicht zur Verfügung: CON, AUX, COM1, COM2, COM3, COM4, LPT1, LPT2, LPT3, PRN und NUL. Wenn Sie zum Beispiel versuchen, eine Datei mit dem Namen PRN in einer Open-Anweisung zu verwenden, wird der Standarddrucker zum Ziel für alle Print #- und Write #-Anweisungen, die die in der Open-Anweisung angegebene Dateinummer verwenden.

•	Die folgende Liste enthält einige Beispiele für Dateinamen, die unter Microsoft Windows zulässig sind:

BRIEF.DOC

Datei Memo.Txt

BUDGET.92

12345678.901

Zweiter Versuch.Wdh

•	Auf dem Macintosh sind außer dem Doppelpunkt (:) alle Zeichen (auch Leerzeichen) für Dateinamen zulässig. Null-Zeichen (Chr(0)) können in Dateinamen nicht verwendet werden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Falsche Datensatzlänge (Fehler 59)

Die Länge einer Datensatzvariablen in einer Get- oder Put-Anweisung muß mit der Länge übereinstimmen, die in der entsprechenden Open-Anweisung angegeben wurde. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:

•	Die Länge einer Datensatzvariablen stimmt nicht mit der Länge überein, die in der zugehörigen Open-Anweisung angegeben wurde.

Überprüfen Sie, ob die Summe der Längen aller Variablen fester Länge in dem benutzerdefinierten Typ , der den Typ der Datensatzvariablen festlegt, mit dem Wert übereinstimmt, der im Len-Abschnitt der Open-Anweisung angegeben wird. Angenommen, im folgenden Beispiel ist RecVar eine Variable eines geeigneten Typs. Mit der Len-Funktion können Sie dann die Länge wie folgt angeben:

Open Datei1 As #1 Len = Len(RecVar)

•	Die Variable in einer Put-Anweisung ist (oder enthält) eine Zeichenfolge variabler Länge.

Da immer ein 2 Byte großer Deskriptor zu einer Zeichenfolge variabler Länge hinzugefügt wird, die mit Put in eine Datei mit wahlfreiem Zugriff geschrieben wird, muß die Zeichenfolge variabler Länge mindestens zwei Zeichen kürzer sein als die Datensatzlänge, die im Len-Abschnitt der Open-Anweisung angegeben wird.

•	Die Variable in einer Put -Anweisung hat den Typ Variant (oder enthält einen Wert vom Typ Variant).

Wie Zeichenfolgen variabler Länge benötigen Variant-Datentypen  ebenfalls einen 2 Byte großen Deskriptor. Variablen vom Typ Variant, die Zeichenfolgen variabler Länge enthalten, benötigen einen Deskriptor mit 4 Bytes. Daher müssen Zeichenfolgen variabler Länge in einer Variablen vom Typ Variant mindestens 4 Bytes kleiner sein als die Datensatzlänge, die im Len-Abschnitt angegeben wurde.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Falsche Datensatznummer (Fehler 63)

Bei dem Versuch, auf eine Datei zuzugreifen, ist ein Fehler aufgetreten. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die Datensatznummer in einer Put- oder Get-Anweisung ist kleiner als oder gleich Null.

Überprüfen Sie die Berechnungen, die beim Generieren der Datensatznummer verwendet wurden. Stellen Sie sicher, daß die Variablen, die die Datensatznummer enthalten oder bei der Berechnung von Datensatznummern verwendet werden, richtig geschrieben wurden. Der Name einer falsch geschriebenen Variablen wird implizit deklariert und mit Null initialisiert, sofern Sie keine Option Explicit-Anweisung im Modul an der richtigen Stelle angegeben haben.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Erforderliche temporäre Datei kann nicht angelegt werden (Fehler 322)

Zum Erstellen einer ausführbaren Datei sind temporäre Dateien erforderlich. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Das Laufwerk mit dem Verzeichnis, das durch die Umgebungsvariable TEMP bezeichnet wird, ist voll.

Löschen Sie Dateien aus dem entsprechenden Verzeichnis, oder geben Sie in der Umgebungsvariablen TEMP ein anderes Laufwerk an.

•	Die Umgebungsvariable TEMP bezeichnet ein ungültiges oder schreibgeschütztes Laufwerk oder Verzeichnis.

Geben Sie ein gültiges Laufwerk für die Umgebungsvariable TEMP an, oder löschen Sie das Schreibschutz-Attribut vom angegebenen Laufwerk oder Verzeichnis.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Angeforderte Operation nicht durchführbar (Fehler 17)

Eine Operation kann nicht ausgeführt werden, wenn dadurch der aktuelle Zustand des Projekts ungültig würde. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die gewünschte Operation konnte nicht durchgeführt werden, weil dadurch das Projekt in einen ungültigen Zustand versetzt worden wäre. Dieser Fehler tritt zum Beispiel auf, wenn Sie das Dialogfeld Verweise verwenden, um einen Verweis auf ein neues Projekt oder eine Objektbibliothek hinzuzufügen, während sich das Programm im Haltemodus befindet.

Beenden Sie die Ausführung des aktuellen Codes, und führen Sie die Operation erneut aus.

•	Es wurde versucht, momentan ausgeführten Code aus dem Programm heraus zu verändern. Ihr Code hat möglicherweise versucht, Code aus einer Datenträgerdatei in ein momentan ausgeführtes Modul einzulesen.

Sie können zwar Module im Projekt verändern, solange sie nicht tatsächlich ausgeführt werden, aber Sie können keine Änderungen an einem gerade ausgeführten Modul vornehmen. Damit solche Änderungen durchgeführt werden können, beenden Sie die Ausführung des Moduls, nehmen Sie die Änderungen oder Erweiterungen vor, und starten Sie dann die Ausführung erneut.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Umbenennen bei Angabe unterschiedlicher Laufwerke nicht möglich (Fehler 74)

Die Name-Anweisung muß die Datei auf dem aktuellen Laufwerk umbenennen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie wollten eine Datei mit der Name-Anweisung auf ein anderes Laufwerk verschieben.

Verwenden Sie FileCopy, um die Datei auf ein anderes Laufwerk zu kopieren, und löschen Sie die alte Datei mit einer Kill-Anweisung.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Datei kann nicht in TEMP-Verzeichnis gespeichert werden (Fehler 735)

Komponenten müssen des öfteren temporäre Daten auf dem Datenträger speichern. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die Komponent kann ein Verzeichnis mit Namen TEMP nicht finden.

Erstellen Sie ein Verzeichnis mit Namen TEMP, und setzen Sie die Umgebungsvariable TEMP auf diesen Pfad.

•	Auf dem Laufwerk oder der Partition mit dem Verzeichnis TEMP steht nicht genügend Speicherplatz für die Daten zur Verfügung.

Löschen Sie nicht länger benötigte Dateien aus dem Verzeichnis, oder erstellen Sie das Verzeichnis TEMP auf einer anderen Partition und geben in der Umgebungsvariablen TEMP den neuen Pfad an.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Klasse unterstützt keine Automatisierung (Fehler 430)

Nicht alle Objekte legen eine Automatisierungsschnittstelle offen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die von Ihnen im Aufruf der Funktion GetObject oder CreateObject angegebene Klasse wurde zwar gefunden, hat aber keine Programmierschnittstelle offengelegt.

Sie können keinen Code schreiben, um die Funktionalität eines Objekts zu steuern, wenn das Objekt nicht für die Automatisierung offengelegt wurde. Überprüfen Sie in der Dokumentation der Anwendung, mit der das Objekt erstellt wurde, ob es Einschränkungen für die Verwendung von Automatisierung mit dieser Objektklasse gibt.

•	Sie haben versucht, ein Projekt von .dll auf .exe umzustellen oder umgekehrt. Wenn Sie beispielsweise bereits einen kompilierten und registrierten .dll-Server haben, den Projekttyp dann auf .exe ändern und das Projekt neu kompilieren, verhindert die Tatsache, daß die .dll und die .exe bereits in Ihrem System registriert sind, die Erstellung beider Objekte. Sie müssen die alte .dll bzw. .exe manuell deregistrieren, um das Problem zu vermeiden.

Dies wird verursacht durch die Kombination von Projektkompatibilität und Änderung des Projekts von .exe auf .dll. Bei Projektkompatibilität bleibt die CLSID erhalten, nicht aber die IID. Da die CLSID erhalten bleibt, wird die Klasse letzten Endes mit zwei Servern registriert, einem prozessinternen und einem lokalen Server. Bei Erstellung einer Instanz wird der prozessinterne Server ausgewählt. Wenn es zur Abfrage der Schnittstelle kommt, unterstützt die .dll die IID nicht, weil sie neu ist.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Fehler durch gesperrte Code-Ressource (Fehler 455)

Dieser Fehler kann nur auf dem Macintosh auftreten. Wenn Sie auf eine Code-Ressource zugreifen, müssen Sie diese sperren. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Eine Prozedur in einer Code-Ressource wurde aufgerufen. Die Code-Ressource wurde gefunden, aber beim Versuch, die Ressource zu sperren, trat ein Fehler auf.

Überprüfen Sie, ob HLock einen Fehler zurückgegeben hat (zum Beispiel "Illegal on empty handle" oder "Illegal on free block").

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Code-Ressource nicht gefunden (Fehler 454)

Dieser Fehler kann nur auf dem Macintosh auftreten. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Eine Prozedur in einer Code-Ressource wurde aufgerufen, aber die Code-Ressource konnte nicht gefunden werden.

Überprüfen Sie, ob die Ressource verfügbar ist und ordnungsgemäß referenziert wird.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Verbindung des Remote-Prozesses zur Klassen- oder Objektbibliothek wurde getrennt (Fehler 442)

Während eines Remote-Zugriffs (d.h. beim Zugriff auf ein Objekt, das Teil eines anderen Prozesses ist oder auf einem anderen Computer ausgeführt wird) wurde die Verbindung zu der Bibliothek, die die Objektinformationen enthält, unterbrochen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die Verbindung zur Objektbibliothek oder Klassenbibliothek des Remote-Prozesses wurde unterbrochen.

So stellen Sie die Verbindung wieder her:

1.	Starten Sie das Application-Objekt neu.

2.	Klicken Sie im Fehler-Dialogfeld, über das Sie in dieses Hilfethema gelangt sind, auf OK, um das Dialogfeld Verweise zu öffnen.

3.	Der fehlende Verweis wird angezeigt (links davon steht das Wort FEHLT).

4.	Entfernen Sie den fehlenden Verweis.

5.	Klicken Sie im Dialogfeld Verweise auf das Kontrollkästchen für das Objekt, das Sie in Schritt 1 gestartet haben.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Fehler beim Lesen von/Schreiben auf Gerät (Fehler 57)

Externe Geräte lösen manchmal unerwartete Fehler aus. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Ein Eingabe- oder Ausgabefehler ist aufgetreten, während das Programm auf ein Gerät (zum Beispiel einen Drucker oder ein Datenträgerlaufwerk) zugegriffen hat.

Überprüfen Sie, ob das Gerät einwandfrei funktioniert, und wiederholen Sie die Operation.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Gerät nicht verfügbar (Fehler 68)

Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Das Gerät, auf das Sie zugreifen wollen, ist entweder nicht aktiv oder nicht vorhanden.

Überprüfen Sie die Stromversorgung für das Gerät und alle Kabel zum Anschluß des Geräts an Ihren Computer. Wenn Sie versuchen, über ein Netzwerk auf einen Drucker zuzugreifen, muß auf jeden Fall eine logische Verbindung zwischen Ihrem Computer und dem Drucker bestehen, zum Beispiel eine Verbindung, die die Kennung des Netzwerkdruckers der Schnittstelle LPT1 zuordnet.

•	Die Netzwerkverbindung besteht nicht mehr.

Stellen Sie die Verbindung mit dem Netzwerk wieder her, und führen Sie die Operation erneut durch.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Datenträger voll (Fehler 61)

Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Auf der Festplatte oder Diskette steht nicht mehr genügend Speicherplatz zum vollständigen Ausführen einer Print #-, Write #- oder Close-Operation zur Verfügung.

Verschieben Sie einige Dateien auf einen anderen Datenträger, oder löschen Sie einige Dateien.

•	Auf der Festplatte oder Diskette steht nicht mehr genügend Speicherplatz zur Verfügung, um benötigte Dateien zu erstellen.

Verschieben Sie einige Dateien auf einen anderen Datenträger, oder löschen Sie einige Dateien.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Datenträger nicht bereit (Fehler 71)

Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Im angegebenen Laufwerk befindet sich kein Datenträger.

Legen Sie einen Datenträger in das Laufwerk, und führen Sie die Operation erneut durch.

•	Die Laufwerksverriegelung des angegebenen Laufwerks ist nicht geschlossen.

Schließen Sie die Laufwerksverriegelung, und führen Sie die Operation erneut durch.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Division durch Null (Fehler 11)

Eine Division durch Null ist nicht möglich. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Der Wert eines Ausdrucks, der als Divisor verwendet wird, ist gleich Null.

Überprüfen Sie die Schreibweise der Variablen im Ausdruck. Durch einen falsch geschriebenen Variablennamen kann implizit eine numerische Variable erstellt werden, die mit Null initialisiert wird. Überprüfen Sie vorangegangene Operationen auf Variablen in dem Ausdruck, besonders jene, die der Prozedur von anderen Prozeduren als Argumente übergeben werden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Fehler beim Laden einer DLL (Fehler 48)

Eine Dynamic Link Library (DLL) ist eine Bibliothek, die im Lib-Abschnitt einer Declare-Anweisung angegeben wird. Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Die Datei ist keine ausführbare DLL.

Wenn die Datei eine Quelltextdatei ist, muß sie kompiliert und als ausführbare DLL gebunden werden.

•	Die Datei ist keine Microsoft Windows-DLL.

Fordern Sie die entsprechende DLL für Microsoft Windows an.

•	Die Datei ist eine alte Microsoft Windows-DLL, die mit dem geschützten Modus von Microsoft Windows nicht kompatibel ist.

Fordern Sie eine aktualisierte Version der DLL an.

•	Die DLL referenziert eine andere DLL, die nicht vorhanden ist.

Fordern Sie die referenzierte DLL an, und stellen Sie sie der anderen DLL zur Verfügung.

•	Die DLL oder eine der referenzierten DLLs befindet sich nicht in dem Verzeichnis, das durch den Pfad angegebenen ist.

Verschieben Sie die DLL in ein referenziertes Verzeichnis, oder tragen Sie das aktuelle Verzeichnis in den Pfad ein.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Datei existiert bereits (Fehler 58)

Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Dieser Fehler tritt zur Laufzeit auf, wenn der neue Dateiname (der zum Beispiel in einer Name-Anweisung angegeben wurde) mit einem bereits bestehenden Dateinamen übereinstimmt.

Geben Sie einen neuen Dateinamen in der Name-Anweisung an, oder löschen Sie die alte Datei, bevor Sie sie in einer Name-Anweisung angeben.

•	Sie wollten ein momentan geladenes Projekt mit dem Befehl Speichern unter unter einem Projektnamen speichern, der bereits vorhanden ist.

Verwenden Sie einen anderen Projektnamen, wenn Sie das andere Projekt nicht ersetzen möchten.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Datei bereits geöffnet (Fehler 55)

Manchmal muß eine Datei geschlossen werden, bevor eine weitere Open-Anweisung oder eine andere Operation ausgeführt werden kann. Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Eine Open-Anweisung wurde ausgeführt, um eine Datei für sequentielle Ausgaben zu öffnen, aber die Datei war bereits geöffnet.

Sie müssen ein Datei, die für eine Art des sequentiellen Zugriffs geöffnet ist, schließen, bevor sie für eine andere Art des Zugriffs geöffnet werden kann. Sie müssen zum Beispiel eine Datei, die für Eingaben (Input) geöffnet ist, schließen, bevor Sie sie für Ausgaben (Output) öffnen können.

•	Eine Anweisung (zum Beispiel Kill, SetAttr oder Name) bezieht sich auf eine geöffnete Datei.

Schließen Sie die Datei, bevor Sie die Anweisung ausführen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Datei nicht gefunden (Fehler 53)

Die Datei wurde an der angegebenen Stelle nicht gefunden. Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Eine Anweisung (zum Beispiel Kill, Name oder Open) bezieht sich auf eine Datei, die nicht vorhanden ist.

Überprüfen Sie die Schreibweise des Dateinamens und die Pfadangabe.

•	Es wurde versucht, eine Prozedur in einer Dynamic Link Library (DLL) oder einer Macintosh Code-Ressource aufzurufen, aber der im Lib-Abschnitt der Declare-Anweisung angegebene Name der Bibliotheksdatei oder der Ressourcendatei wurde nicht gefunden.

Überprüfen Sie die Schreibweise des Dateinamens und die Pfadangabe.

•	In der Entwicklungsumgebung tritt dieser Fehler auf, wenn Sie ein nicht vorhandenes Projekt öffnen oder eine nicht vorhandene Textdatei laden wollen.

Überprüfen Sie die Schreibweise des Projekts oder Dateinamens und die Pfadangabe.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


For-Schleife nicht initialisiert (Fehler 92)

For-Schleifenzähler müssen initialisiert werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie sind in eine For...Next-Schleife gesprungen.

Entfernen Sie den Sprung in die Schleife. Sprungmarken innerhalb einer For...Next-Schleife sollten nicht verwendet werden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Einlesen hinter Dateiende (Fehler 62)

Hinter der Dateiende-Position kann nicht gelesen werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Eine Input #- oder Line Input #-Anweisung liest aus einer leeren Datei oder aus einer Datei, aus der bereits alle Daten gelesen wurden.

Verwenden Sie die EOF-Funktion (unmittelbar vor der Input #-Anweisung), um das Dateiende zu erkennen.

•	Sie haben die EOF-Funktion mit einer Datei verwendet, die für binären Zugriff (Binary) geöffnet wurde.

EOF kann nur mit Dateien verwendet werden, die für sequentielle Eingabe (Input) geöffnet wurden. Verwenden Sie für den binären Zugriff die Funktionen Seek und Loc.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Interner Fehler (Fehler 51)

Überprüfen Sie, ob dieser Fehler nicht durch die Error-Anweisung oder Raise-Methode verursacht wurde. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	In Visual Basic ist ein interner Fehler aufgetreten.

Wenn diese Meldung nicht mit der Error-Anweisung oder Raise-Methode erzeugt wurde, setzen Sie sich mit dem Microsoft Software Service in Verbindung, und geben Sie an, unter welchen Bedingungen es zu dieser Meldung kam.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Zwischenablageformat ungültig (Fehler 460)

Die Zwischenablage kann nur Daten in bestimmten Formaten übernehmen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, Daten einer Komponente in der Zwischenablage zu speichern, die Daten liegen jedoch nicht in einem Format vor, das mit der Zwischenablage kompatibel ist.

Informationen darüber, ob Sie zum Übertragen der Daten von der Komponente die Zwischenablage verwenden können, finden Sie in der Dokumentation der Komponente.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültiges Dateiformat (Fehler 321)

Beim Speichern von Daten in Dateien werden oft proprietäre Formate verwendet. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, eine Datei in eine Komponente zu laden, das Datenformat der Datei ist jedoch nicht kompatibel mit der Komponente.

Informationen über das zu verwendende Dateiformat und die Unterstützung von Formatkonvertierungen finden Sie in der Dokumentation der Komponente.

•	Sie haben versucht, Daten einer Komponente in einer Datei zu speichern, das Datenformat ist jedoch mit dem Dateiformat nicht kompatibel.

Informationen über die Unterstützung von Formatkonvertierungen finden Sie in der Dokumentation der Komponente.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültiger Ordinalwert (Fehler 452)

Im Aufruf einer Dynamic Link Library (DLL) wurde angegeben, daß statt eines Prozedurnamens eine Zahl (mit der Syntax #Zahl) verwendet werden soll. Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Beim Umwandeln des Ausdrucks Zahl in einen Ordinalwert ist ein Fehler aufgetreten.

Stellen Sie sicher, daß der Ausdruck eine gültige Zahl darstellt. Rufen Sie die Prozedur alternativ über ihren Namen auf.

•	Die mit Zahl angegebene Funktion existiert in der DLL nicht.

Stellen Sie sicher, daß Zahl eine gültige Funktion in der DLL kennzeichnet.

•	Eine Klassenbibliothek enthält eine ungültige Deklaration, die durch die interne Verwendung eines ungültigen Ordinalwertes verursacht wird.

Kommentieren Sie Code aus, um den Prozeduraufruf zu isolieren, der das Problem verursacht. Schreiben Sie eine Declare-Anweisung für die Prozedur, und leiten Sie das Problem an den Hersteller der Klassenbibliothek weiter.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültige Zeichenfolge für Mustervergleich (Fehler 93)

Das in der Like-Operation einer Suche angegebene Zeichenfolgenmuster ist ungültig. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Ein verbreitetes Beispiel für einen falsch angegebenen Zeichenbereich ist [a-b. Bei diesem Ausdruck fehlt die rechte eckige Klammer.

Überprüfen Sie, ob nur gültige Zeichen für Listenausdrücke verwendet werden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Unzulässiger Prozeduraufruf oder ungültiges Argument (Fehler 5)

Ein Teil des Aufrufs konnte nicht abgeschlossen werden. Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Ein Argument hat wahrscheinlich den Bereich zulässiger Werte überschritten. Die Sin-Funktion kann zum Beispiel nur Werte innerhalb eines bestimmten Bereichs verarbeiten. Positive Argumente, die kleiner als 2.147.483.648 sind, werden akzeptiert, während 2.147.483.648 diesen Fehler auslöst.

Überprüfen Sie die für Argumente zulässigen Bereiche.

•	Dieser Fehler kann auch auftreten, wenn versucht wird, eine Prozedur aufzurufen, die auf der aktuellen Plattform nicht zulässig ist. Einige Prozeduren sind zum Beispiel nur für Microsoft Windows oder auf dem Macintosh zulässig usw.

Überprüfen Sie die Angaben zu zulässigen Plattformen für die Prozedur.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültiger Index des Eigenschaftsfeldes (Fehler 381)

Der Wert einer Eigenschaft kann aus einem Datenfeld von Werten bestehen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Für ein Eigenschaftenfeld einer Komponente kann als unterer Index Null und als oberer Index die Anzahl der Elemente im Feld minus 1 verwendet werden. Alternativ dazu kann als unterer Index 1 und als oberer Index die Anzahl der Elemente im Feld verwendet werden.

Informationen darüber, ob der verwendete Index im gültigen Bereich für die angegebene Eigenschaft liegt, finden Sie in der Dokumentation der Komponente.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültige Verwendung von Null (Fehler 94)

Null ist ein Variant-Untertyp, der zur Kennzeichnung eines Datenelements verwendet wird, das keine gültigen Daten enthält. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie wollten den Wert einer Variablen vom Typ Variant oder eines Ausdrucks abrufen, und der Wert ist Null. Zum Beispiel:

Var1 = Null

For Zähler = 1 To Var1

. . .

Next Zähler

Stellen Sie sicher, daß die Variable einen gültigen Wert enthält.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Benanntes Argument nicht gefunden (Fehler 448)

Sie können in einem Prozeduraufruf ein benanntes Argument nur dann verwenden, wenn es in der Definition der Prozedur angegeben wurde. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben ein benanntes Argument angegeben, aber in der Prozedurdefinition ist kein Argument mit diesem Namen enthalten.

Überprüfen Sie, ob Sie den Namen des Arguments korrekt geschrieben haben.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Index des Eigenschaftsfelds erforderlich (Fehler 385)

Der Wert dieser Eigenschaft besteht aus einem Datenfeld und nicht aus einem einzelnen Wert. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben den Index für das gewünschte Eigenschaftenfeld nicht angegeben.

Informationen darüber, wie der gültige Bereich für die Indizes des Felds bestimmt werden muß, finden Sie in der Dokumentation der Komponente. Geben Sie in der Zugriffsanweisung der Eigenschaft einen geeigneten Index an.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Objekt unterstützt die aktuelle Ländereinstellung nicht (Fehler 447)

Nicht alle Objekte unterstützen alle Einstellungen für das Gebietsschema. Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Sie haben versucht, auf ein Objekt zuzugreifen, das das für Ihr aktuelles Projekt eingestellte Gebietsschema nicht unterstützt. Ist beispielsweise als Gebietsschema für Ihr aktuelles Projekt Frankokanadisch eingestellt, so muß das Objekt, auf das zugegriffen werden soll, dieses Gebietsschema unterstützen.

Überprüfen Sie, welche Gebietsschemata vom Objekt unterstützt werden.

•	Das Objekt benötigt die von einer Dynamic Link Library (DLL) oder Macintosh Code-Ressource wie OLE2NLS.DLL unterstützten Sprachinformationen, und die DLL ist nicht mehr aktuell.

Fordern Sie eine aktuellere Version der DLL an, die das Gebietsschema des aktuellen Projekts unterstützt.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Objekt unterstützt keine benannten Argumente (Fehler 446)

Nicht alle Objekte unterstützen benannte Argumente. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie wollten auf ein Objekt zugreifen, dessen Methoden benannte Argumente nicht unterstützen.

Geben Sie die Argumente durch ihre Position an, wenn Sie Methoden auf dem betreffenden Objekt ausführen. Weitere Informationen über die Reihenfolge und den Typ der Argumente finden Sie in der Dokumentation des Objekts.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Objekt unterstützt diese Aktion nicht (Fehler 445)

Nicht alle Objekte unterstützen alle Aktionen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben auf eine Methode oder Eigenschaft verwiesen, die vom betreffenden Objekt nicht unterstützt wird.

Weitere Informationen über das Objekt und die Schreibweise von Eigenschaften und Methoden finden Sie in der Dokumentation des Objekts.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Let-Prozedur der Eigenschaft ist nicht definiert, und Get-Prozedur hat kein Objekt zurückgegeben (Fehler 451)

Bestimmte Eigenschaften, Methoden und Operationen werden nur von Collection-Objekten unterstützt. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben eine Operation oder Eigenschaft angegeben, die nur für Auflistungen verwendet werden kann, das betreffende Objekt ist jedoch keine Auflistung.

Überprüfen Sie, ob der Objekt- oder Eigenschaftsname richtig geschrieben wurde. Vergewissern Sie sich, ob das Objekt ein Collection-Objekt ist. Überprüfen Sie auch, ob für die Add-Methode, die zum Hinzufügen des Objekts zur Auflistung verwendet wurde, die korrekte Syntax verwendet wurde, und ob die Bezeichner korrekt geschrieben wurden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Objekt erforderlich (Fehler 424)

Verweise auf Eigenschaften und Methoden benötigen häufig einen expliziten Objektbezeichner. Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Sie haben auf eine Objekteigenschaft oder Objektmethode verwiesen, ohne einen gültigen Objektbezeichner anzugeben.

Geben Sie einen Objektbezeichner an, wenn keiner angegeben wurde. Sie können zum Beispiel auf einen Objektbezeichner verzichten, wenn Sie auf eine Formulareigenschaft innerhalb des das Formular umfassenden Moduls verweisen. Sie müssen jedoch einen Objektbezeichner explizit angeben, wenn Sie von einem Standardmodul auf eine Eigenschaft verweisen.

•	Sie haben zwar einen Objektbezeichner angegeben, aber dieser wurde nicht als Objekt erkannt.

Überprüfen Sie die Schreibweise des Objektbezeichners und stellen Sie sicher, daß auf das betreffende Objekt in dem Programmabschnitt, in dem darauf verwiesen wird, zugegriffen werden kann. Überprüfen Sie bei Collection-Objekten alle Vorkommen der Add-Methode auf richtige Syntax und korrekte Schreibweise aller Elemente.

•	Sie haben einen gültigen Objektbezeichner angegeben, ein anderer Teil des Aufrufs enthält jedoch einen Fehler.

Ein falscher Pfad als Argument für den File Open-Befehl einer Host-Anwendung kann diesen Fehler verursachen. Überprüfen Sie die Argumente.

•	Sie haben beim Zuweisen eines Objektverweises nicht die Set-Anweisung verwendet.

Wenn Sie den Rückgabewert eines CreateObject-Aufrufs einer Variant-Variablen zuweisen, tritt nicht unbedingt ein Fehler auf, wenn die Set-Anweisung fehlt. Im folgenden Code-Beispiel wird eine implizite Instanz von Microsoft Excel erzeugt, und deren Standardeigenschaft (die Zeichenfolge "Microsoft Excel") wird zurückgegeben und der Variant-Variablen RückWert zugewiesen. Wenn anschließend versucht wird, RückWert als Objektverweis zu verwenden, tritt dieser Fehler auf:

Dim RückWert	' Implizit ein Variant.

' Standardeigenschaft wird der Variablen RückWert

' (Variant mit Typ 8) zugewiesen.

RückWert = CreateObject("Excel.Application")

RückWert.Visible = True	' Fehler tritt hier auf.

Verwenden Sie die Set-Anweisung, wenn Sie einen Objektverweis zuweisen.

•	In seltenen Fällen kann dieser Fehler auftreten, wenn das Objekt gültig ist, Sie jedoch eine unzulässige Operation auf das Objekt ausführen möchten. Dieser Fehler tritt beispielsweise dann auf, wenn Sie versuchen, einer schreibgeschützten Eigenschaft einen Wert zuzuweisen.

Informationen darüber, ob die gewünschte Operation zulässig ist, finden Sie in der Dokumentation des Objekts.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Objektvariable oder With-Blockvariable nicht festgelegt (Fehler 91)

Objektvariablen werden in zwei Schritten erstellt. Zunächst müssen Sie die Objektvariable deklarieren, und anschließend müssen Sie der Objektvariablen mit der Set-Anweisung einen gültigen Verweis zuweisen. Ähnlich muß ein With...End With-Block initialisiert werden, indem der Einsprungpunkt der With-Anweisung ausgeführt wird. Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Sie wollten eine Objektvariable verwenden, die auf kein gültiges Objekt verweist.

Geben Sie für die betreffende Objektvariable (ggf. erneut) einen Verweis an. Wenn zum Beispiel im folgenden Code-Beispiel die Set-Anweisung nicht verwendet würde, wäre ein Fehler beim Verweis auf TestObjekt die Folge:

Dim TestObjekt As Object	' Objektvariable erstellen.

Set TestObjekt = Sheets(1)	' Zulässigen Objektverweis erstellen.

Anzahl1 = TestObjekt.Count	' Anzahl1 den Wert von Count zuweisen.

•	Sie wollten eine Objektvariable verwenden, die auf Nothing gesetzt wurde.

Set TestObjekt = Nothing	' Objekt freigeben.

Anzahl1 = TestObjekt.Anzahl1	' Verweis auf

' freigegebenes Objekt erstellen.

Erstellen Sie einen neuen Verweis für die Objektvariable. Sie können beispielsweise mit einer weiteren Set-Anweisung einen neuen Verweis auf das betreffende Objekt festlegen.

•	Das Objekt ist gültig, aber der Verweis wurde nicht zugewiesen, weil die Objektbibliothek, in der es beschrieben ist, noch nicht im Dialogfeld Verweise aktiviert wurde.

Wählen Sie die Objektbibliothek im Dialogfeld Verweis hinzufügen aus.

•	Das Ziel einer GoTo-Anweisung liegt in einem With-Block.

Verzweigen Sie nicht in einen With-Block. Stellen Sie sicher, daß der Block initialisiert ist, indem Sie den Einsprungpunkt für die With-Anweisung ausführen.

•	Sie haben eine Zeile innerhalb eines With-Blocks angegeben, als Sie den Befehl Nächste Anweisung festlegen gewählt haben.

Der With-Block muß initialisiert werden, indem die With-Anweisung ausgeführt wird.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Automatisierungsfehler (Fehler 440)

Wenn Sie auf Automatisierungsobjekte zugreifen, können bestimmte Fehler auftreten. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Während der Ausführung einer Methode oder beim Abrufen bzw. Festlegen einer Eigenschaft einer Objektvariablen ist ein Fehler aufgetreten. Der Fehler wurde von der Anwendung gemeldet, die dieses Objekt erstellt hat.

Überprüfen Sie die Eigenschaften des Err-Objekts, um Ursache und Art des Fehlers bestimmen zu können. Versuchen Sie auch, vor der Zugriffsanweisung die On Error Resume Next-Anweisung zu verwenden, und überprüfen Sie dann unmittelbar nach der Zugriffsanweisung, ob Fehler aufgetreten sind.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Objekt unterstützt diese Eigenschaft oder Methode nicht (Fehler 438)

Nicht alle Objekte unterstützen alle Eigenschaften und Methoden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben eine Methode oder Eigenschaft angegeben, die für dieses Automatisierungsobjekt nicht existiert.

Weitere Informationen über das Objekt finden Sie in der Dokumentation des Objekts. Überprüfen Sie auch die Schreibweise von Eigenschaften und Methoden.

•	Sie haben angegeben, daß eine aufzurufende Friend-Prozedur zur Laufzeit gebunden werden soll.

Der Name einer Friend-Prozedur muß zur Kompilierungszeit bekannt sein. Er kann nicht in einem zur Laufzeit gebundenen Aufruf verwendet werden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Nicht genügend Speicher (Fehler 7)

Es ist mehr Speicher erforderlich, als verfügbar ist, oder eine 64 KB-Segmentgrenze wurde erreicht. Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Es sind zu viele Anwendungen, Dokumente oder Quelldateien geöffnet.

Schließen Sie alle geöffneten Anwendungen, Dokumente oder Quelldateien, die Sie nicht benötigen.

•	Ein Modul oder eine Prozedur ist zu groß.

Teilen Sie sehr große Module oder Prozeduren in kleinere Komponenten auf. Dadurch wird zwar kein Speicher eingespart, aber das Überschreiten von 64 KB-Segmentgrenzen kann vermieden werden.

•	Sie haben Microsoft Windows im Standard-Modus gestartet.

Starten Sie Microsoft Windows erneut im erweiterten Modus.

•	Sie haben Microsoft Windows im erweiterten Modus gestartet, aber es ist kein virtueller Speicher mehr verfügbar.

Vergrößern Sie den virtuellen Speicher, indem Sie zusätzlichen Festplattenspeicher bereitstellen, oder stellen Sie sicher, daß freier Speicherplatz vorhanden ist.

•	Es sind TSR-Programme (TSR = terminate-and-stay-resident) aktiv.

Entfernen Sie die TSR-Programme.

•	Es wurden zu viele Gerätetreiber geladen.

Entfernen Sie alle nicht benötigten Gerätetreiber.

•	Es ist kein Speicherplatz mehr für Public-Variablen verfügbar.

Verringern Sie die Anzahl von Public-Variablen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Nicht genügend Stapelspeicher (Fehler 28)

Der Stapelspeicher ist ein Bereich des Arbeitsspeichers, der je nach Anforderungen des momentan ausgeführten Programms dynamisch seine Größe verändert. Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Es sind zu viele Aufrufe von Function-, Sub- oder Property-Prozeduren aktiv.

Überprüfen Sie, ob Prozeduren eventuell zu tief verschachtelt sind. Dies kann insbesondere bei rekursiven Prozeduren (also bei Prozeduren, die sich selbst aufrufen) auftreten. Sorgen Sie dafür, daß rekursive Prozeduren ordnungsgemäß beendet werden. Mit dem Dialogfeld Aufrufeliste können Sie überprüfen, welche Prozeduren momentan aktiv sind (also Stapelspeicher benötigen).

•	Für lokale Variablen steht nicht genügend lokaler Variablenspeicher zur Verfügung.

Versuchen Sie statt dessen, einige Variablen auf Modulebene zu deklarieren. Sie können auch alle Variablen in der betreffenden Prozedur als statisch deklarieren, indem Sie vor die Schlüsselwörter Property, Sub oder Function das Schlüsselwort Static setzen. Sie können mit der Static-Anweisung auch einzelne Variablen innerhalb einer Prozedur als Static-Variablen deklarieren.

•	Es sind zu viele Zeichenfolgen fester Länge vorhanden.

Zwar erfolgen in einer Prozedur Zugriffe auf Zeichenfolgen fester Länge schneller als auf Zeichenfolgen variabler Länge, aber Zeichenfolgen fester Länge benötigen mehr Stapelspeicher, da die Daten der Zeichenfolge auf dem Stapel abgelegt werden. Versuchen Sie, einige Zeichenfolgen fester Länge als Zeichenfolgen variabler Länge zu deklarieren, da bei diesen nur der Zeichenfolgendeskriptor (also der Zeiger auf die Zeichenfolge und nicht die Daten selbst) auf dem Stapel abgelegt wird. Sie können die Zeichenfolge auch auf Modulebene definieren. Sie benötigt dann keinen Stapelspeicher, da auf Modulebene deklarierte Variablen standardmäßig den Typ Public haben, d.h. auf die Zeichenfolge kann von allen Prozeduren im Modul zugegriffen werden.

•	Es gibt zu viele verschachtelte Aufrufe der DoEvents-Funktion.

Überprüfen Sie mit dem Dialogfeld Aufrufeliste, welche Prozeduren zur Zeit aktiv sind (also Stapelspeicher benötigen).

•	Ihr Code hat eine Ereigniskette ausgelöst.

Eine Ereigniskette entsteht, wenn ein Ereignis ausgelöst wird, das eine weitere Ereignisprozedur aufruft, die sich bereits auf dem Stapel befindet. Eine Ereigniskette ähnelt einem nicht abgebrochenen Aufruf einer rekursiven Prozedur, ist jedoch weniger offensichtlich, da der Aufruf durch Visual Basic erfolgt und nicht explizit durch Ihren Code. Überprüfen Sie mit dem Dialogfeld Aufrufeliste, welche Prozeduren zur Zeit aktiv sind (also Stapelspeicher benötigen).

Das Dialogfeld Aufrufeliste wird angezeigt, wenn Sie im Testfenster auf die Schaltfläche mit den Auslassungspunkten rechts neben dem Feld Prozedur klicken oder den Befehl Aufrufeliste wählen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Nicht genügend Zeichenfolgenspeicher (Fehler 14)

In Visual Basic können Sie sehr lange Zeichenfolgen verwenden. Dieser Fehler kann jedoch auftreten, wenn andere Programme Zeichenfolgenspeicher in einer bestimmten Weise benötigen oder wenn Sie Zeichenfolgen in Ihrem Programm in bestimmter Weise verändern. Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Ausdrücke, die das Erzeugen temporärer Zeichenfolgen erfordern, können diesen Fehler auslösen. Der folgende Code erzeugt zum Beispiel bei manchen Betriebssystemen die Fehlermeldung Nicht genügend Zeichenfolgenspeicher:

TestZF = "Hallo"

For Anzahl = 1 To 100

TestZF = TestZF & TestZF

Next Anzahl

Weisen Sie die Zeichenfolge einer Variablen mit einem anderen Namen zu.

•	Für Ihr System steht kein Speicher mehr zur Verfügung, wodurch kein Speicherplatz mehr für eine Zeichenfolge reserviert werden konnte.

Stellen Sie Speicherplatz zur Verfügung, indem Sie nicht länger benötigte Anwendungen aus dem Arbeitsspeicher entfernen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Überlauf (Fehler 6)

Wenn Sie versuchen, einen Wert zuzuweisen, und dieser Wert den zulässigen Wertebereich der Zielvariablen überschreitet, kommt es zu einem Überlauf. Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Das Ergebnis einer Zuweisung, einer Berechnung oder der Umwandlung eines Datentyps liegt außerhalb des für diesen Variablen-Typ zulässigen Bereichs.

Weisen Sie den Wert einer Variablen mit einem Typ zu, der einen größeren Wertebereich aufnehmen kann.

•	Einer Eigenschaft wurde ein Wert zugewiesen, der den maximal zulässigen Wert für diese Eigenschaft überschreitet.

Stellen Sie sicher, daß Ihre Zuweisung innerhalb des zulässigen Bereichs für die Eigenschaft liegt, der der Wert zugewiesen werden soll.

•	Sie versuchen, eine Zahl in einer Berechnung zu verwenden, die in eine Ganzzahl gezwungen wird, aber das Ergebnis ist größer als eine Ganzzahl. Beispiel:

    Dim x As Long

    x = 2000 * 365   ' Fehler: Überlauf

Um diese Situation zu umgehen, geben Sie die Zahl folgendermaßen an:

    Dim x As Long

    x = CLng(2000) * 365

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Pfad nicht gefunden (Fehler 76)

Eine Pfadangabe für eine Datei umfaßt eine Laufwerksangabe sowie die Verzeichnisse bzw. Unterverzeichnisse, die zum Auffinden einer Datei durchlaufen werden müssen. Eine Pfadangabe kann relativ oder absolut sein. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Beim Zugriff auf eine Datei oder ein Laufwerk (zum Beispiel mit Open, MkDir, ChDir oder RmDir) konnte das Betriebssystem den angegebenen Pfad nicht finden.

Geben Sie den Pfad erneut an.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Fehler beim Zugriff auf Pfad/Datei (Fehler 75)

Beim Zugriff auf eine Datei oder ein Laufwerk (zum Beispiel mit Open, MkDir, ChDir oder RmDir) konnte das Betriebssystem keine Verbindung zwischen der Pfadangabe und dem Dateinamen herstellen. Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Ihre Pfadangabe hat nicht das korrekte Format.

Ein Dateiname kann einen vollständigen (absoluten) oder einen relativen Pfad enthalten. Ein vollständiger Pfad beginnt mit der Laufwerksbezeichnung (wenn sich die Datei auf einem anderen Laufwerk befindet) und enthält den expliziten Pfad durch alle Verzeichnisse vom Hauptverzeichnis bis zum Dateinamen. Alle nicht vollständigen Dateipfade sind relativ zum aktuellen Laufwerk und Verzeichnis.

•	Sie haben versucht, beim Speichern einer Datei eine bestehende schreibgeschützte Datei zu überschreiben.

Ändern Sie das Schreibschutz-Attribut der Zieldatei, oder speichern Sie die Datei unter einem anderen Namen.

•	Sie haben versucht, eine schreibgeschützte Datei mit dem sequentiellen Modus Output oder Append zu öffnen.

Öffnen Sie die Datei im Input-Modus, oder ändern Sie das Schreibschutz-Attribut der Datei.

•	Sie haben versucht, ein Visual Basic-Projekt in einer Datenbank oder einem Dokument zu ändern.

Sie können an dem Projekt keine Designänderungen vornehmen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Zugriff verweigert (Fehler 70)

Es wurde versucht, auf einen schreibgeschützten Datenträger zu schreiben oder auf eine gesperrte Datei zuzugreifen. Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Sie haben versucht, eine schreibgeschützte Datei im sequentiellen Modus Output oder Append zu öffnen.

Öffnen Sie die Datei im Input-Modus, oder ändern Sie das Schreibschutz-Attribut der Datei.

•	Sie haben versucht, eine Datei auf einem schreibgeschützten Datenträger im sequentiellen Modus Output oder Append zu öffnen.

Entfernen Sie den Schreibschutz des Datenträgers, oder öffnen Sie die Datei im Input-Modus.

•	Sie haben versucht, in eine Datei zu schreiben, die bereits von einem anderen Prozeß gesperrt wurde.

Warten Sie mit dem Öffnen der Datei, bis der andere Prozeß die Datei freigegeben hat.

•	Sie haben versucht, auf die Registrierung zuzugreifen, aber Ihre Benutzerrechte lassen diese Art von Zugriff auf die Registrierung nicht zu.

In 32-Bit Microsoft Windows-Systemen benötigt ein Benutzer zum Zugriff auf die Systemregistrierung eine entsprechende Berechtigung. Ändern Sie Ihre Berechtigungen, oder bitten Sie den Systemadministrator, Ihre Berechtigungen zu ändern.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Druckerfehler (Fehler 482)

Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Beim Drucker ist ein Fehler aufgetreten, an den sendenden Computer wurden jedoch keine weiteren Informationen übermittelt.

Überprüfen Sie, ob alle Verbindungen zwischen Drucker und Computer in Ordnung sind. Die meisten Drucker verfügen über eine Anzeige, in der Sie Fehlermeldungen sehen können (etwa "Kein Papier", "Offline" usw.).

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Get wird zur Laufzeit nicht unterstützt (Error 393)

Nicht alle Eigenschaften geben Informationen zur Laufzeit zurück. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die Eigenschaft, auf die Sie zugreifen möchten, ist zur Laufzeit schreibgeschützt.

Beenden Sie die Ausführung, und überprüfen Sie die Eigenschaft zur Entwurfszeit.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Get wird nicht unterstützt (schreibgeschützte Eigenschaft) (Fehler 394)

Nicht alle Eigenschaften geben Informationen zurück. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die Eigenschaft, auf die Sie zugreifen möchten, gibt keine Informationen zurück.

Sie können den Zustand der Eigenschaft nicht bestimmen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Eigenschaft oder Methode nicht gefunden (Fehler 423)

Die Schreibweise eines Objektnamens muß genau mit seiner Definition in der Objektbibliothek übereinstimmen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Es wurde auf Objekt.Methode oder Objekt.Eigenschaft verwiesen, aber Methode oder Eigenschaft ist nicht definiert.

Sie haben möglicherweise den Namen von Objekt falsch geschrieben. Sie erhalten eine Liste der für ein Objekt definierten Eigenschaften und Methoden, indem Sie den Objektkatalog anzeigen. Wählen Sie die entsprechende Objektbibliothek aus, um eine Liste der verfügbaren Eigenschaften und Methoden anzuzeigen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Eigenschaft nicht gefunden (Fehler 422)

Nicht alle Objekte unterstützen die gleiche Menge von Eigenschaften. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Dieses Objekt unterstützt die angegebene Eigenschaft nicht.

Überprüfen Sie die Schreibweise des Eigenschaftennamens. Sie haben möglicherweise versucht, auf eine Eigenschaft "Text" zuzugreifen, während das Objekt eigentlich eine Eigenschaft "Caption" oder eine ähnliche Eigenschaft unterstützt. Die notwendigen Informationen finden Sie in der Dokumentation des Objekts.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Set wird zur Laufzeit nicht unterstützt (Fehler 382)

Es ist eventuell nicht möglich, zur Laufzeit einen Verweis auf eine Eigenschaft zu erhalten. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, einen Verweis auf eine Eigenschaft zu erhalten, die zur Laufzeit nur gelesen oder nur geschrieben werden kann.

Da Sie einen Verweis sowohl zum Lesen als auch zum Schreiben verwenden können, muß die Eigenschaft zur Laufzeit beide Operationen unterstützen, damit ein Verweis zur Laufzeit erhalten werden kann.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Set wird nicht unterstützt (schreibgeschützte Eigenschaft) (Fehler 383)

Es ist eventuell nicht möglich, zur Laufzeit einen Verweis auf eine Eigenschaft zu erhalten. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, einen Verweis auf eine Eigenschaft zu erhalten, die zur Laufzeit nur gelesen werden kann.

Da Sie einen Verweis sowohl zum Lesen als auch zum Schreiben verwenden können, muß die Eigenschaft zur Laufzeit beide Operationen unterstützen, damit ein Verweis zur Laufzeit erhalten werden kann. Sie können für diese Eigenschaft lediglich Property Get verwenden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Set nicht zulässig (Fehler 387)

Nicht alle Eigenschaften liefern einen Verweis. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, einen Verweis auf eine Eigenschaft zu erhalten, die keinen Verweis liefert.

Beschränken Sie den Zugriff auf diese Eigenschaft auf Property Let und Property Get.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Begriff zum Ersetzen zu lang (Fehler 746)

Eine Ersetzung darf eine bestimmte Länge nicht überschreiten. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben eine Ersetzung angegeben, die die zulässige Länge überschreitet.

Informationen über die Beschränkung der Länge für Ersetzungen finden Sie in der Dokumentation der Komponente.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Resume ohne Fehler (Fehler 20)

Eine Resume-Anweisung kann sich nur innerhalb einer Fehlerbehandlungsroutine befinden und nur in einer aktiven Fehlerbehandlungsroutine ausgeführt werden. Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Sie haben eine Resume-Anweisung außerhalb einer Fehlerbehandlungsroutine plaziert.

Fügen Sie die betreffende Anweisung in eine Fehlerbehandlungsroutine ein, oder löschen Sie sie.

•	Ihr Programm hat eine Fehlerbehandlungsroutine aktiviert, obwohl kein Fehler aufgetreten ist.

Sie haben unter Umständen eine Zeilenmarke falsch geschrieben. Sprünge zu Sprungmarken können nur innerhalb einer Prozedur ausgeführt werden. Suchen Sie also in der Prozedur nach der Sprungmarke, die die Fehlerbehandlungsroutine kennzeichnet. Wenn Sie eine mehrfach auftretende Sprungmarke als Ziel einer GoTo-Anweisung finden, die keine On Error GoTo-Anweisung ist, ändern Sie die Sprungmarke entsprechend dem eigentlichen Sprungziel.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Return ohne GoSub (Fehler 3)

Für jede Return-Anweisung muß eine zugehörige GoSub-Anweisung existieren. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben eine Return-Anweisung ohne eine zugehörige GoSub-Anweisung verwendet.

Überprüfen Sie, ob die GoSub-Anweisung nicht versehentlich gelöscht wurde.

Während die Vollständigkeit der Paare For...Next, While...Wend und Sub...End Sub bereits zur Kompilierungszeit überprüft wird, erfolgt die Überprüfung von GoSub und Return erst zur Laufzeit.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Angegebene DLL-Funktion nicht gefunden (Fehler 453)

Die Dynamic Link Library (DLL) in einem Verweis auf eine Benutzerbibliothek wurde gefunden, aber die angegebene DLL-Funktion in der DLL konnte nicht gefunden werden. Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Sie haben einen ungültigen Ordinalwert in der Funktionsdeklaration angegeben.

Prüfen Sie, ob Sie den richtigen Ordinalwert angegeben haben, oder rufen Sie die Funktion mit ihrem Namen auf.

•	Sie haben zwar den richtigen DLL-Namen angegeben, aber die vorhandene Version enthält die angegebene Funktion nicht.

Möglicherweise befindet sich die richtige Version auf Ihrem Computer, aber eine andere, falsche Version befindet sich in einem Verzeichnis, das im Pfad vor dem richtigen Verzeichnis steht, so daß auf die falsche DLL zugegriffen wird. Überprüfen Sie, ob auf Ihrem Computer verschiedene Versionen installiert sind. Sollten Sie eine veraltete Version haben, so fordern Sie von Ihrem Händler eine aktuelle Version an.

•	Sollten Sie auf einer 32-Bit Microsoft Windows-Plattform arbeiten, müssen sowohl der DLL-Name als auch der Alias (sofern Sie einen verwenden) korrekt angegeben werden.

Verwenden Sie den korrekten DLL-Namen und Alias.

•	Einige 32-Bit-DLLs enthalten Funktionen mit etwas unterschiedlichen Versionen, um sowohl Unicode- als auch ANSI-Zeichenfolgen zu unterstützen. Ein "A" am Ende des Funktionsnamens weist auf die ANSI-Version hin, ein "W" auf die entsprechende Unicode-Version.

Wenn die Funktion Argumente mit unterschiedlichen Typen von Zeichenfolgen als Argumente akzeptiert, versuchen Sie, ein "A" an den Funktionsnamen anzufügen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ausdruck zu komplex (Fehler 16)

Die Anzahl der Unterausdrücke, die in einem Fließkomma-Ausdruck zulässig sind, ist je nach Plattform unterschiedlich. Unter 32-Bit Microsoft Windows-Betriebssystemen liegt die Beschränkung beispielsweise bei acht ineinander verschachtelten Fließkomma-Ausdrücken. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Ein Fließkomma-Ausdruck enthält zu viele ineinander verschachtelte Unterausdrücke.

Teilen Sie den Ausdruck in genügend Unterausdrücke auf, damit der Fehler nicht mehr auftritt.

Anmerkung   In früheren Versionen von Visual Basic hatte Fehler 16 die Bezeichnung "Zeichenfolgenausdruck zu komplex". Dieser Fehler kann nicht mehr auftreten. Wenn Sie jedoch alten Code verwenden, der diesen Fehler auffängt und verarbeitet, sollten Sie den Code entfernen, um Verwechslungsmöglichkeiten mit diesem neuen Fehler auszuschließen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Suchtext nicht gefunden (Fehler 744)

Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Der angegebene Text wurde nicht gefunden.

Der Text ist nicht vorhanden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Sub, Function oder Property nicht definiert (Fehler 35)

Eine Sub-, Function- oder Property-Prozedur muß definiert sein, um aufgerufen werden zu können. Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Sie haben den Namen der Prozedur falsch geschrieben.

Überprüfen Sie die Schreibweise des Prozedurnamens und korrigieren Sie sie gegebenenfalls.

•	Sie haben versucht, eine Prozedur eines anderen Projekts aufzurufen, ohne einen expliziten Verweis auf das Projekt im Dialogfeld Verweise hinzuzufügen.

So fügen Sie einen Verweis hinzu:

1.	Öffnen Sie das Dialogfeld Verweise.

2.	Bestimmen Sie den Namen des Projekts, das die gewünschte Prozedur enthält. Wenn der Projektname nicht im Dialogfeld Verweise angezeigt wird, können Sie nach dem Prozedurnamen suchen, indem Sie auf die Schaltfläche Suchen klicken.

3.	Aktivieren Sie das Kontrollkästchen links neben dem Projektnamen.

4.	Klicken Sie auf OK.

•	Die angegebene Prozedur ist für die aufrufende Prozedur nicht verfügbar.

Werden Prozeduren in einem Modul als Private deklariert, so können sie von Prozeduren außerhalb des Moduls nicht aufgerufen werden. Wenn Option Private Module aktiv ist, stehen die Prozeduren in diesem Modul anderen Projekten nicht zur Verfügung. Suchen Sie nach der Prozedur.

•	Sie haben eine Routine aus einer Windows Dynamic Link Library (DLL) oder einer Macintosh Code-Ressource deklariert, die sich aber nicht in der angegebenen Bibliothek befindet.

•	Überprüfen Sie den Ordinalwert (sofern Sie einen verwenden) oder den Namen der Routine. Stellen Sie sicher, daß Sie die korrekte DLL-Version oder Macintosh Code-Ressource-Version verwenden. Möglicherweise existiert die Routine nur in einer neueren Version der DLL oder der Macintosh Code-Ressource. Wenn sich eine ältere Version in einem Verzeichnis befindet, das im Pfad vor dem Verzeichnis mit der aktuellen Version steht, tritt ein Fehler auf, da Visual Basic auf die Version zugreift, deren Verzeichnis als erstes im Pfad angegeben ist. Sie haben zwar den richtigen Namen für die DLL oder Macintosh Code-Ressource angegeben, dies ist jedoch nicht die Version mit der gewünschten Funktion.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Index außerhalb des gültigen Bereichs (Fehler 9)

Sie können auf Elemente von Datenfeldern und Auflistungen nur innerhalb des dafür definierten Bereichs zugreifen. Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Sie haben auf ein nicht vorhandenes Element eines Datenfeldes verwiesen.

Der Index liegt außerhalb des zulässigen Bereichs für die Indizes, oder dem Datenfeld wurden an dieser Stelle der Programmausführung noch keine Dimensionen zugewiesen. Überprüfen Sie anhand der Deklaration des Datenfeldes, ob der verwendete Index innerhalb der festgelegten oberen und unteren Grenzen liegt. Mit den Funktionen UBound und LBound können Sie bedingte Zugriffe auf Datenfelder durchführen, wenn Sie Datenfelder mit variabler Dimensionierung verwenden. Ist der Index in Form einer Variablen angegeben, so überprüfen Sie die Schreibweise des Variablennamens.

•	Sie haben ein Datenfeld deklariert, ohne die Anzahl der Elemente anzugeben. Der folgende Code löst beispielsweise diesen Fehler aus:

Dim Datenfeld1() As Integer

Datenfeld1(8) = 234	' Löst Fehler 9 aus.

Wenn Sie keine Bereichsgrenzen für ein Datenfeld angegeben haben, führt Visual Basic keine implizite Dimensionierung des Datenfeldes von 0 - 10 durch. Sie müssen statt dessen Dim oder ReDim verwenden, um die Anzahl der Elemente eines Datenfeldes explizit anzugeben.

•	Sie haben auf ein nicht vorhandenes Auflistungsobjekt verwiesen.

Versuchen Sie, eine For Each...Next-Struktur zu verwenden, anstatt Indexelemente anzugeben.

•	Sie haben eine abgekürzte Form für den Index verwendet, der implizit ein ungültiges Element angegeben hat.

Wenn Sie beispielsweise den !-Operator mit einer Auflistung verwenden, gibt ! implizit einen Schlüssel an. Objekt!Schlüsselname.value entspricht beispielsweise Objekt.item(Schlüsselname).value. In diesem Fall tritt ein Fehler auf, falls Schlüsselname einen ungültigen Schlüssel in der Auflistung darstellt. Verwenden Sie einen gültigen Schlüsselnamen oder Index für die Auflistung, um den Fehler zu beheben.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Diese Komponente unterstützt diese Ereignismenge nicht (Fehler 459)

Nicht jede Komponente unterstützt das Auffangen von Client-Ereignissen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie versuchten, eine WithEvents-Variable mit einer Komponente zu verwenden, die nicht als Ereignisquelle für die angegebene Gruppe von Ereignissen eingesetzt werden kann. Beispielsweise fangen Sie möglicherweise Ereignisse eines Objekts ab, erstellen dann ein weiteres Objekt, das das erste Objekt (mit Implements) implementiert. Sie mögen zwar der Ansicht sein, daß Sie die Ereignisse des implementierten Objekts abfangen können, aber dies ist nicht automatisch der Fall. Implements implementiert lediglich eine Schnittstelle für Methoden und Eigenschaften.

Sie können keine Ereignisse für eine Komponente abfangen, die keine Ereignisquelle ist.

•	WithEvents wird bei privaten UserControls nicht unterstützt, weil die zum Hervorbringen des ObjectEvent benötigten Informationen zur Laufzeit nicht verfügbar sind.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Zu viele Clients für DLL-Anwendung (Fehler 47)

Auf die Dynamic Link Library (DLL) für Visual Basic können nur 50 Host-Anwendungen gleichzeitig zugreifen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Ihre Anwendung und andere Visual Basic-Host-Anwendungen (Ihre Anwendung greift möglicherweise auf einige dieser Anwendungen zu) versuchen, gleichzeitig auf die Visual Basic-DLL zuzugreifen.

Verringern Sie die Anzahl der aktiven Anwendungen, die auf Visual Basic zugreifen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Zu viele Dateien (Fehler 67)

Die Anzahl der Datenträgerdateien, die gleichzeitig geöffnet sein können, ist begrenzt. Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Betriebssystem MS-DOS: Es wurden mehr Dateien im Stammverzeichnis erstellt, als vom Betriebssystem zugelassen werden.

Die Anzahl der Dateien im Stammverzeichnis ist durch MS-DOS begrenzt (normalerweise auf 512 Dateien). Wenn das Programm zum Öffnen, Schließen oder Speichern von Dateien das Stammverzeichnis verwendet, ändern Sie das Programm so ab, daß ein Unterverzeichnis verwendet wird.

•	Betriebssystem MS-DOS: Es sind mehr Dateien geöffnet, als im Eintrag files= in der Datei CONFIG.SYS angegeben wurden.

Erhöhen Sie in der Datei CONFIG.SYS die Anzahl der Dateien, die mit files= angegeben wird, und starten Sie Ihren Computer erneut.

•	Macintosh: Ihr Programm versucht, mehr als 40 Dateien zu öffnen.

Auf dem Macintosh liegt die Begrenzung standardmäßig bei 40 Dateien. Sie können diese Begrenzung mit einem Dienstprogramm ändern, das den Parameter MaxFiles für den Boot-Block anpaßt.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Typen unverträglich (Fehler 13)

Visual Basic kann viele Werte konvertieren und einen bestimmten Datentyp erzwingen und ermöglicht so Datentypzuweisungen, die in früheren Versionen nicht möglich waren. Dieser Fehler kann jedoch immer noch auftreten, und es gibt dafür die folgenden Ursachen und Lösungen:

•	Die Variable oder Eigenschaft hat nicht den richtigen Datentyp. Eine Variable, die einen ganzzahligen Wert erwartet, kann zum Beispiel keinen Zeichenfolgenwert akzeptieren, wenn die gesamte Zeichenfolge nicht als Ganzzahl interpretiert werden kann.

Versuchen Sie, nur kompatible Datentypen einander zuzuweisen. Zum Beispiel kann ein Integer immer dem Typ Long, ein Single immer dem Typ Double und alle Typen (außer benutzerdefinierten Typen) dem Typ Variant zugewiesen werden.

•	Einer Prozedur, die eine einzelne Eigenschaft oder einen Wert erwartet, wurde ein Objekt übergeben.

Übergeben Sie eine einzelne Eigenschaft, oder rufen Sie eine für das Objekt geeignete Methode auf.

•	Anstelle eines erwarteten Ausdrucks wurde der Name eines Moduls oder eines Projekts verwendet. Zum Beispiel:

Debug.Print Modul1

Geben Sie einen Ausdruck an, der angezeigt werden kann.

•	Sie haben versucht, Variant-Werte mit dem Untertyp Error (10, vbError) zusammen mit der in früheren Versionen von Basic verwendeten Fehlerbehandlung anzugeben:

Error CVErr(n)

Wenn Sie einen Fehler erneut auslösen müssen, müssen Sie ihn erst in einen systeminternen (oder benutzerdefinierten) Visual Basic-Fehler umwandeln und dann diesen Fehler auslösen.

•	Sie können einen CVErr-Wert nicht in den Datentyp Date umwandeln, zum Beispiel:

Var1 = CDate(CVErr(9))

Verwenden Sie eine Select Case-Anweisung oder einen ähnlichen Ausdruck, um den Rückgabewert von CVErr in einen solchen Wert umzuwandeln.

•	Zur Laufzeit zeigt dieser Fehler in der Regel an, daß ein in einem Ausdruck verwendeter Variant-Wert einen ungültigen Untertyp hat, oder daß ein Variant-Wert, der ein Datenfeld enthält, in einer Print #-Anweisung enthalten ist.

Verwenden Sie zur Ausgabe von Datenfeldern eine Schleife, die jedes Element einzeln ausgibt.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Unterbrechung durch Benutzer (Fehler 18)

Das Unterbrechen der Ausführung kann hilfreich sein, aber wenn keine entsprechende Bearbeitung des Zustands erfolgt, wird die Anwendung beendet. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Ein Benutzer hat STRG+UNTBR oder eine andere Unterbrechungstaste gedrückt.

Tritt dieser Fehler in der Entwicklungsumgebung auf, so fahren Sie mit der Ausführung der Anwendung fort. Zur Laufzeit können Sie den Fehler mit einer geeigneten Behandlungsroutine verarbeiten.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Variable verwendet einen in Visual Basic nicht unterstützten Automatisierungstyp (Fehler 458)

Nicht jede Variable, die in einer Klassenbibliothek oder einer Objektbibliothek enthalten ist, kann von jeder Programmiersprache verwendet werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, eine Variable zu verwenden, die in einer Klassenbibliothek oder Objektbibliothek mit einem Datentyp definiert worden ist, der von Visual Basic nicht unterstützt wird.

Sie können in einem Visual Basic-Programm keine Variable verwenden, deren Typ Visual Basic nicht kennt.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft (Fehler 450)

Die Anzahl der Argumente, die einer Prozedur übergeben werden, muß mit der Anzahl der Parameter in der Prozedurdefinition übereinstimmen. Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Die Anzahl der Argumente im Prozeduraufruf entspricht nicht der Anzahl der Argumenten, die von der Prozedur erwartet werden.

Vergleichen Sie die Argumentliste im Prozeduraufruf mit der Prozedurdeklaration bzw. der Prozedurdefinition.

•	Sie haben einen Index für ein Steuerelement angegeben, das nicht in einem Steuerelementefeld enthalten ist.

Die Indexangabe wird als Argument interpretiert, aber da weder ein Index noch ein Argument erwartet wird, tritt der Fehler auf. Entfernen Sie die Indexangabe, oder folgen Sie der Vorgehensweise zur Erstellung eines Steuerelementefeldes. Setzen Sie die Index-Eigenschaft im Eigenschaftenfenster des Steuerelements zur Entwurfszeit auf einen Wert ungleich Null.

•	Sie wollten einer schreibgeschützten Eigenschaft einen Wert zuweisen, oder Sie wollten einer Eigenschaft einen Wert zuweisen, für den keine Property Let-Prozedur existiert.

Das Zuweisen eines Wertes zu einer Eigenschaft entspricht dem Übergeben eines Wertes als Argument an die Property Let-Prozedur des Objekts. Definieren Sie die Property Let-Prozedur ordnungsgemäß (sie benötigt ein Argument mehr als die zugehörige Property Get-Prozedur). Wenn die Eigenschaft schreibgeschützt sein soll, können Sie ihr keinen Wert zuweisen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Objekterstellung durch ActiveX-Komponente nicht möglich (Fehler 429)

Bei der Erstellung eines Objekts muß die Klasse des Objekts in der Systemregistrierung registriert sein, und alle zugeordneten Dynamic Link Libraries (DLL) müssen verfügbar sein. Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Die Klasse ist nicht registriert. Die Klasse ist beispielsweise in der Systemregistrierung nicht aufgeführt, oder sie ist aufgeführt, aber die angegebene Datei hat den falschen Typ oder kann nicht gefunden werden.

Versuchen Sie, die Anwendung des Objekts zu starten. Wenn die Informationen in der Registrierung falsch oder veraltet sind, sollte die Anwendung die Registrierung überprüfen und die Informationen korrigieren. Sollte das Starten der Anwendung das Problem nicht beheben, so führen Sie das Installationsprogramm der Anwendung erneut aus.

•	Eine vom Objekt benötigte DLL kann nicht verwendet werden. Die DLL konnte entweder nicht gefunden werden, oder sie war beschädigt.

Stellen Sie sicher, daß alle zugeordneten DLLs verfügbar sind. Ein Objekt wie das Datenzugriffsobjekt (DAO = Data Access Object) benötigt DLLs, die je nach Plattform unterschiedlich sind. Sie müssen gegebenenfalls das Installationsprogramm für ein solches Objekt erneut ausführen, wenn dies die Ursache für den Fehler ist.

•	Das Objekt steht auf dem Computer zur Verfügung, aber es handelt sich um ein lizenziertes Automatisierungsobjekt, und die Verfügbarkeit der Lizenz, die zum Öffnen des Objekts erforderlich ist, kann nicht bestätigt werden.

Einige Objekte können erst geöffnet werden, nachdem der Server einen Lizenzschlüssel gefunden hat, mit dessen Hilfe bestätigt wird, daß die Objektinstanz auf dem aktuellen Computer zum Öffnen registriert ist. Wenn auf das Objekt mit einer ordnungsgemäß installierten Klassenbibliothek oder Objektbibliothek verwiesen wird, wird der richtige Schlüssel automatisch bereitgestellt.

Wenn die Objektinstanz aber durch einen Aufruf von CreateObject oder GetObject geöffnet werden soll, muß das Objekt den Schlüssel finden. In diesem Fall wird gegebenenfalls die Systemregistrierung durchsucht oder nach einer bestimmten Datei gesucht (zum Beispiel einer Datei mit der Dateinamenerweiterung .LIC), die bei der Installation erzeugt wird. Wenn der Schlüssel nicht gefunden werden kann, kann die Objektinstanz nicht geöffnet werden. Wenn ein Endanwender die Objektanwendung nicht ordnungsgemäß installiert, eine erforderliche Datei versehentlich gelöscht oder die Systemregistrierung geändert hat, kann das Objekt möglicherweise seinen Schlüssel nicht finden. Wenn der Schlüssel nicht gefunden werden kann, kann das Objekt nicht geöffnet werden. In diesem Fall kann das Öffnen der Objektinstanz auf dem Computer des Entwicklers erfolgreich sein, aber nicht auf dem Computer des Benutzers. Der Benutzer muß das lizenzierte Objekt ggf. neu installieren.

•	Sie versuchen, mit der GetObject-Funktion einen Verweis auf eine mit Visual Basic erstellte Klasse abzurufen.

GetObject kann nicht verwendet werden, um einen Verweis auf eine Klasse abzurufen, die mit Visual Basic erstellt wurde.

•	Der Zugriff auf das Objekt wurde explizit untersagt.

Sie versuchen beispielsweise, auf ein Datenobjekt zuzugreifen, das momentan benutzt wird und gesperrt ist, um ein Deadlock zu verhindern. In diesem Fall können Sie wahrscheinlich zu einem späteren Zeitpunkt auf das Objekt zugreifen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Unzulässiger Eigenschaftswert (Fehler 380)

Die meisten Eigenschaften können nur Werte eines bestimmten Typs mit einem bestimmten Wertebereich übernehmen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Einer Eigenschaft wurde ein falscher Wert zugewiesen.

Informationen darüber, welche Typen und welcher Wertebereich für diese Eigenschaft zulässig sind, finden Sie im Hilfethema zu der jeweiligen Eigenschaft.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültiges Bild (Fehler 481)

Einer Picture-Eigenschaft oder einem Picture-Objekt kann nur ein Bild zugewiesen werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben versucht, einer Picture-Eigenschaft oder einem Picture-Objekt etwas zuzuweisen, das nicht als Symbol, Bitmap oder Microsoft Windows-Metafile erkannt wurde.

Informationen über die zulässigen Bildtypen finden Sie in den Hilfethemen zum Picture-Objekt oder zur Picture-Eigenschaft des verwendeten Objekts.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültiges Format in Ressourcendatei (Fehler 325)

Beim Zugriff auf eine Ressourcendatei muß die gewünschte Datei in einem gültigen Format vorliegen. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Die gewünschte Datei hat ein ungültiges Format, oder eine bestimmte Ressource in der Datei hat ein ungültiges Format.

Wenn der Inhalt der Datei beschädigt worden ist, installieren Sie die Datei von der Originaldiskette. Besteht der Fehler weiterhin, setzen Sie sich mit dem entsprechenden Händler in Verbindung, um eine neue Datei oder eine Ressource im korrekten Format zu erhalten.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Dieser Schlüssel ist bereits einem Element dieser Auflistung zugeordnet (Fehler 457)

Ein Schlüssel ist eine in der Add-Methode angegebene Zeichenfolge, die ein bestimmtes Element einer Auflistung identifiziert. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Sie haben einen Schlüssel für das Element der Auflistung angegeben, der bereits ein anderes Element der Auflistung identifiziert.

Geben Sie für dieses Element einen anderen Schlüssel an.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Datenfeld ist unveränderlich oder momentan gesperrt (Fehler 10)

Nicht alle Datenfelder können neu dimensioniert werden. Selbst als dynamisch deklarierte Datenfelder und Datenfelder mit Variant-Variablen sind manchmal vorübergehend gesperrt. Dieser Fehler hat die folgenden Ursachen und Lösungen:

•	Sie haben versucht, mit ReDim die Anzahl der Elemente eines Datenfelds fester Größe zu ändern. Im folgenden Code wird das Datenfeld fester Größe FestesFeld von TestFeld in der Prozedur Proz2 übernommen. Dann wird versucht, die Größe von TestFeld zu ändern:

Sub Proz1

Dim FestesFeld(25) As Integer	' Erstellt Feld fester Größe

Proz2 FestesFeld()	' Übergabe an andere Prozedur.

End Sub

Sub Proz2 (TestFeld() As Integer)

ReDim TestFeld(35)	' Fehler 10 tritt auf.

. . .

End Sub

Machen Sie das ursprüngliche Datenfeld dynamisch anstatt konstant, indem Sie es mit ReDim (wenn das Datenfeld in einer Prozedur deklariert wurde) oder ohne Angabe der Anzahl der Elemente (wenn das Datenfeld auf Modulebene deklariert wurde) deklarieren.

•	Sie haben versucht, ein auf Modulebene dynamisches Datenfeld neu zu dimensionieren, aus dem ein Element als Argument an eine Prozedur übergeben wurde. Im folgenden Code beispielsweise ist ModFeld ein auf Modulebene dynamisches Datenfeld, dessen 45. Element als Referenz an die Prozedur Test übergeben wird:

Dim ModFeld () As Integer	' Erstellt dynamisches Datenfeld.

. . .

Sub AliasError()

ReDim ModFeld (1 To 73) As Integer

Test ModFeld (45)	' Übergibt Element des

' Datenfeldes an die Prozedur Test.

End Sub

Sub Test(TestInt As Integer)

ReDim ModFeld (1 To 40) As Integer  ' Fehler tritt auf.

End Sub

Sie müssen in diesem Fall kein Element des Datenfeldes auf Modulebene übergeben, da alle Prozeduren des Moduls darauf zugreifen können. Wenn Sie jedoch ein Element übergeben, wird das Datenfeld gesperrt, damit der Speicher für den referenzierten Parameter in der Prozedur nicht freigegeben wird. Anderenfalls wäre das Verhalten bei Rücksprung aus der Prozedur nicht mehr vorherzusehen.

•	Sie haben versucht, einer Variant-Variablen, die ein Datenfeld enthält, einen Wert zuzuweisen, die Variant-Variable ist jedoch momentan gesperrt. Wenn Ihr Code beispielsweise eine For Each...Next-Schleife verwendet, um eine Variant-Variable zu durchlaufen, die ein Datenfeld enthält, wird das Datenfeld beim Eintritt in die Schleife gesperrt und beim Verlassen der Schleife freigegeben:

TestFeld = Array(9,8,7,6,5,4,3,2,1)

For Each X In TestFeld

TestFeld = 301	' Fehler, da Datenfeld gesperrt ist.

Next X

Verwenden Sie eine For...Next-Schleife anstatt einer For Each...Next-Schleife, um die Variable zu durchlaufen. Wenn ein Datenfeld das Objekt einer For Each...Next-Schleife ist, können Sie das Datenfeld zwar lesen, jedoch keine Werte in das Feld schreiben.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Datei- oder Klassenname während Automatisierungsoperation nicht gefunden (Fehler 432)

Die GetObject-Funktion benötigt entweder einen gültigen Dateinamen mit Pfadangabe oder den Namen einer Klasse, die mit dem System registriert ist. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Der in einem Aufruf der GetObject-Funktion angegebene Name für die Datei oder die Klasse wurde nicht gefunden.

Überprüfen Sie die Namen, und starten Sie die Operation erneut. Stellen Sie sicher, daß der Name für den Parameter Klasse mit dem Namen übereinstimmt, der mit dem System registriert wurde.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Automatisierungsobjekt hat keinen Standardwert (Fehler 443)

Wenn Sie einen Objektnamen ohne Eigenschaft oder Methode angeben, geht Visual Basic davon aus, daß Sie auf das Standardelement (Eigenschaft oder Methode) des Objekts verweisen. Nicht alle Objekte besitzen jedoch ein Standardelement. Für diesen Fehler gibt es die folgende Ursache und Lösung:

•	Visual Basic kann das Standardelement für das angegebene Objekt nicht bestimmen.

Informationen zu Eigenschaften und Methoden des Objekts finden Sie in der Dokumentation des Objekts. Geben Sie explizit eine Eigenschaft oder Methode an.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Der Remote-Server-Computer existiert nicht oder ist nicht verfügbar (Fehler 462)

Die Funktion CreateObject benötigt einen gültigen Server. Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Ein Serverparameter wurde angegeben, aber der Server konnte nicht erreicht oder nicht gefunden werden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Klasse ist auf lokalem Computer nicht registriert (Fehler 463)

Die Funktion CreateObject benötigt einen gültigen Server. Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Ein Serverparameter wurde angegeben, aber die angegebene Klassen-ProgID (der erste Parameter der Funktion CreateObject) ist im lokalen System nicht registriert.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Methode oder Mitgliedsdaten nicht gefunden (Fehler 461)

Die Auflistung, das Objekt oder der benutzerdefinierte Typ enthalten das referenzierte Element nicht. Für diesen Fehler gibt es folgende Ursachen und Lösungen:

•	Sie haben sich beim Objekt- oder Elementnamen verschrieben.

Überprüfen Sie die Schreibweise der Namen und die Type-Anweisung an Hand der Objektdokumentation, um zu ermitteln, welches die Mitglieder sind und wie die Objekt- bzw. Mitgliedsnamen korrekt zu schreiben sind.

•	Sie haben einen Auflistungsindex außerhalb des Gültigkeitsbereichs angegeben.

Überprüfen Sie die Count-Eigenschaft, um festzustellen, ob ein Auflistungsmitglied existiert. Beachten Sie, daß Auflistungsindizes mit 1 beginnen, nicht mit Null, so daß die Count-Eigenschaft die höchste mögliche Indexnummer zurückgibt.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


<Element> ist kein gültiger Steuerelementtyp (Fehler 720)

Nur gültige ActiveX-Komponenten können als Steuerelement in einem Formular zugewiesen werden. Für diesen Fehler gibt es folgende Ursachen und Lösungen:

•	Sie haben versucht, eine ActiveX-Komponente als ein Steuerelement in einem Formular zuzuweisen, das nicht als gültige Steuerelementkomponente erkannt wird.

Lesen Sie in den Hilfethemen über das Erstellen von ActiveX-Steuerelementen nach, um zu bestimmen, welche Voraussetzungen ein gültiges Steuerelement erfüllen muß.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Unerwarteter Fehler; die Anwendung wird beendet

Ein unerwarteter Fehler ist aufgetreten, und Visual Basic konnte die Ausführung nicht fortsetzen. Dieser Fehler kann durch Hardware-Probleme oder durch andere Software in Ihrem System verursacht worden sein.


Gültige Werte sind Ganzzahlen im Bereich von 1 bis 32

Sie haben versucht, im Feld Tab-Schrittweite einen Wert außerhalb des erlaubten Bereichs festzulegen. Für dieses Feld wird eine Zahl im Bereich von 1 bis 32 (einschließlich) akzeptiert.


Gültige Werte sind Ganzzahlen im Bereich von 2 bis 60

Sie haben versucht, die Einstellungen für das Raster im Feld Breite oder Höhe außerhalb des erlaubten Bereichs festzulegen. Für dieses Feld wird eine Zahl im Bereich von 2 bis 60 (einschließlich) akzeptiert.


<Formular> ist ein binäres Formular und kann nicht in Visual Basic geladen werden

Binäre Formulare, die mit früheren Versionen von Visual Basic erstellt wurden, können mit dieser Version von Visual Basic nicht geladen werden. Nur die Versionen 2.0 und 3.0 von Visual Basic unterstützen das Umwandeln von binären Formularen in ASCII-Formulare. Wenn Sie eine Kopie von Visual Basic, Version 2.0 oder 3.0 besitzen, können Sie ein Formular, das mit Version 1.0, 2.0 oder 3.0 erstellt wurde, laden und als Text speichern. Anschließend können Sie das Formular in Visual Basic importieren.


Projektdatei ist schreibgeschützt

In die Projektdatei kann nicht geschrieben werden. Um Änderungen in der Projektdatei vorzunehmen, müssen Sie die Datei unter einem anderen Namen speichern oder das Attribut für den Schreibschutz entfernen.


Datei ist schreibgeschützt

In die Datei kann nicht geschrieben werden. Um die Datei zu ändern, müssen Sie sie unter einem anderen Namen speichern oder das Attribut für den Schreibschutz entfernen.


Prozedur mit diesem Namen bereits vorhanden

Prozedurnamen innerhalb desselben Gültigkeitsbereiches müssen eindeutig sein. Ändern Sie den Namen der Prozedur.


Die Projektdatei <Datei> enthält einen ungültigen Wert für den Schlüssel <Schlüssel>. Der Wert muß im Bereich von 0 bis <Wert> liegen

Der Bereich der Schlüsselwerte ist eingeschränkt. Stellen Sie sicher, daß sich der Schlüsselwerten im angegebenen Bereich befindet.


Der Projektname ist zu lang. Der Name wurde abgeschnitten

Wenn ein Projektname die erlaubte Länge überschreitet, wird er auf die maximal zulässige Größe abgeschnitten.


Die Projektdatei <Datei> enthält einen ungültigen Schlüssel <Schlüssel>. Das Projekt wird nicht geladen

Sie können das Projekt nicht laden, solange die Projektdatei den ungültigen Schlüssel enthält.


<Schlüssel> ist ein ungültiger Schlüssel. Die Datei <Datei> kann nicht geladen werden

Sie können die Datei nicht laden, solange sie den ungültigen Schlüssel enthält.


Die Projektdatei <Datei> enthält einen ungültigen Wert für den Schlüssel <Schlüssel>

Der angegebene Schlüsselwert ist ungültig. Bitte ändern Sie den Wert.


Nicht genügend Speicher für die Ausführung vorhanden; Anwendung wird beendet

Visual Basic konnte für die Ausführung nicht genügend Speicher reservieren. Schließen Sie andere Anwendungen, und versuchen Sie es erneut.


Falsche Version des Betriebssystems. Benötigt wird Windows NT 3.51 (Build <Nr> oder höher) oder Windows 95 (Build <Nr> oder höher)

Damit Sie diese Version von Visual Basic ausführen können, müssen Sie den angegebenen Build von Windows 95 oder Windows NT, Version 3.51, ausführen.


Systemfehler <Fehler>

Visual Basic ist auf einen Fehler gestoßen, der vom System oder einer externen Komponente ausgelöst wurde.


Die Datei <Datei> wird von der aktuellen Version von Visual Basic nicht unterstützt und wird daher nicht geladen

Sie haben versucht, ein Formular zu laden, das mit der Version 1.0 von Visual Basic oder mit einer höheren als der aktuellen Version von Visual Basic erstellt wurde. Dieser Vorgang wird nicht unterstützt.


Projektdatei <Datei> ist fehlerhaft und kann daher nicht geladen werden

Visual Basic kann die Projektdatei nicht lesen. Dieser Fehler kann auftreten, wenn die Datei durch einen Editor außerhalb von Visual Basic verändert wurde. Sie können das Problem beheben, indem Sie alle Änderungen an dieser Datei rückgängig machen.


Die Designer-Pufferdatei <Datei> konnte nicht geschrieben werden. Beim Laden werden nur normale Dateien verwendet

Ihr ActiveX-Designer war nicht in der Lage, Informationen in eine Pufferdatei zu schreiben, daher wird der Designer mit regulären Informationen geladen.

Zur Verbesserung des Leistungsverhaltens beim nächsten Start von Visual Basic schreibt ein ActiveX-Designer eine Pufferdatei. Der Designer konnte nicht in die Pufferdatei schreiben, da zu wenig Festplattenspeicher oder nicht die erforderlichen Zugriffsrechte für das Laufwerk vorhanden sind. Stellen Sie sicher, daß genügend Festplattenspeicher verfügbar ist und daß Sie die Schreibberechtigung für dieses Laufwerk haben. Wenn das Problem trotzdem weiterhin besteht, nehmen Sie mit dem Hersteller des ActiveX-Designers Kontakt auf.


Nicht genügend Speicherplatz zum Laden der Datei

Visual Basic konnte nicht genügend Speicher reservieren, um die Datei zu laden. Schließen Sie andere Anwendungen, und versuchen Sie es erneut.


Prozedurname mehrfach vorhanden

Sie haben mehr als eine Version einer Prozedur mit demselben Namen definiert (oder sie versuchen gerade, dies zu tun). Benennen Sie eine der Prozeduren um. Stellen Sie sicher, daß mehrfache Declare-Anweisungen für die gleiche Prozedur den gleichen Alias-Abschnitt verwenden.


Hilfe kann nicht angezeigt werden

Die Windows-Hilfe-Anwendung ist nicht verfügbar. Falls sich der Viewer der MSDN Library auf Ihrem Computer befindet, stellen Sie sicher, daß er im Pfad angegeben ist. Falls sich der Viewer nicht auf Ihrem Computer befindet, müssen Sie ihn installieren, um die Hilfe anzeigen zu könnend.


Systeminformationen können nicht angezeigt werden

Visual Basic kann die Systeminformationen nicht anzeigen, nachdem Sie aus dem Dialogfeld Microsoft Visual Basic-Info auf die Schaltfläche Systeminfo geklickt haben. Ihr System verfügt möglicherweise nicht über genügend Speicher, oder eine erforderliche Datei ist beschädigt oder nicht vorhanden.


Die Anwendungsbeschreibung kann maximal 2000 Zeichen lang sein

Eine Anwendungsbeschreibung darf nicht länger als 2000 Zeichen sein. Löschen Sie einige Zeichen aus der Beschreibung.


Die auszugebenden Elemente müssen angegeben werden

Sie haben nicht angegeben, was Sie drucken möchten. Aktivieren Sie im Dialogfeld Drucken mindestens eines der Kontrollkästchen Formulardarstellung oder Code, nachdem Sie im Menü Datei den Befehl Drucken gewählt haben.


Kein zulässiger Objektname: <Name>

Formular- und Steuerelementnamen müssen mit einem Buchstaben beginnen und können maximal 40 Zeichen lang sein - einschließlich Buchstaben, Zahlen und Unterstrichen (_).

Beachten Sie, daß die Name-Eigenschaft eines Formulars oder Steuerelements sich von den Label-Eigenschaften - Caption, Text und Value - unterscheidet, die den Inhalt eines Steuerelements zur Laufzeit bezeichnen oder anzeigen. Diese Eigenschaften können eingeschränkte Schlüsselwörter sein, sie können mit einer Zahl beginnen und nichtalphanumerische Zeichen enthalten.


Name <Name> steht in Konflikt zu vorhandenem Modul, Projekt oder vorhandener Objektbibliothek

Dieser Fehler hat die folgenden Ursachen:

•	Sie haben ein Formular, Benutzersteuerelement, Benutzerdokument oder eine Eigenschaftenseite geladen, das/die Objekte enthält, deren Namen den Konflikt verursacht haben. Dieser Fehler kann auftreten, wenn die Datei außerhalb von Visual Basic bearbeitet wurde.

•	Dieser Fehler kann auftreten, wenn Sie ein Formular so umbenennen, daß dieses den gleichen Namen wie das Projekt, ein anderes Formular oder ein Modul erhält. Er kann außerdem auftreten, wenn Sie das Projekt so umbenennen, daß es den gleichen Namen wie ein Formular oder Modul erhält.


Projektname kann zu diesem Zeitpunkt nicht festgelegt werden

Der Projektname kann zu diesem Zeitpunkt nicht festgelegt werden.


Die angegebene ActiveX-Komponente wurde nicht richtig registriert oder nicht gefunden

Eine Komponente sollte in der Systemregistrierung registriert sein. Dieser Fehler hat die folgende Ursache und Lösung:

•	Die Registrierungsinformationen der Komponente sind nicht korrekt, so daß die Komponente nicht gefunden werden kann.

Korrigieren Sie die Registrierung. Installieren Sie die Komponente notfalls erneut.

•	Die Komponente wurde durch Löschen entfernt, anstatt ein Deinstallationsprogramm zu verwenden.

Ersetzen Sie die Komponentendateien in dem Verzeichnis, das in der Registrierung angegeben ist.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Objekt auswählen und auf F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Die Operation kann nicht durchgeführt werden, weil das Projekt geschützt ist

Wenn ein Projekt geschützt ist, sind bestimmte Aktionen nicht erlaubt. Dieser Fehler hat die folgende Ursache und Lösung:

•	Das Projekt wurde unabsichtlich geschützt.

Entfernen Sie den Schutz, und versuchen erneut, die Aktion auszuführen.

•	Das Projekt wurde absichtlich geschützt.

Versuchen Sie nicht, die Aktion erneut auszuführen, bis der Schutz von der Person aufgehoben wurde, die ihn zuerst vorgenommen hat.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Objekt auswählen und auf F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Neue Aufzeichnung kann erst beginnen, wenn die aktuelle Sitzung beendet ist

Sie können Aufzeichnungen nicht "verschachteln". Dieser Fehler hat die folgende Ursache und Lösung:

•	Es ist bereits eine Aufzeichnung aktiv.

Beenden Sie die aktuelle Aufzeichnung, bevor Sie eine neue starten.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Objekt auswählen und auf F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Möchten Sie <angegebenes Objekt> vor dem Entfernen exportieren?

Sie können Formulare und Module exportieren und sie zu einem späteren Zeitpunkt erneut laden. Dieser Fehler hat die folgende Ursache und Lösung:

•	Sie entfernen ein Formular oder ein Modul aus einem Projekt.

Sie können das Modul erhalten, indem Sie es exportieren. Sie können somit das Modul zu einem späteren Zeitpunkt wieder importieren.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Objekt auswählen und auf F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Die in der angegebenen Datei enthaltene Formularklasse wird in Visual Basic für Applikationen nicht unterstützt;die Datei kann nicht geladen werden.

Visual Basic für Applikationen unterstützt nur UserForm-Formularobjekte. Dieser Fehler hat die folgende Ursache und Lösung:

•	Sie haben versucht, ein Formular aus einer früheren Version von Visual Basic oder ein Formular einer aktuellen eigenständigen Version von Visual Basic zu laden.

Es ist wahrscheinlich das Einfachste, das Formular mit den Dienstprogrammen für das UserForm-Objekts innerhalb von Visual Basic für Applikationen neu zu entwerfen. Wenn Sie das Formular im ASCII-Format speichern können, können Sie das Formular möglicherweise ändern und importieren. Sie müssen jedoch die Formate und Einschränkungen der verschiedenen Formularpakete verstehen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Objekt auswählen und auf F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Die angegebene Datei konnte nicht geladen werden.

Nicht alle Dateien können in Visual Basic für Applikationen geladen werden. Dieser Fehler hat die folgende Ursache und Lösung:

•	Die Datei, die Sie zu laden versuchen, hat ein Format, das von Visual Basic nicht interpretiert werden kann, oder die Datei ist beschädigt.

Sie können die Datei nicht laden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Objekt auswählen und auf F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Dieser Befehl beendet den Testmodus.

Einige Befehle und Aktionen bedingen, daß Visual Basic die Analyse von Code anhält. Dieser Fehler hat die folgende Ursache und Lösung:

•	Einige Bearbeitungen, wie das Deklarieren einer Static-Variable, und einige Befehle, wie z.B. diejenigen, mit denen ein neues Modul oder Formular hinzugefügt wird, bedingen, daß ausgeführter oder ausgesetzter Code angehalten wird.

Wenn Sie ausgeführten Code nicht beenden möchten, fügen Sie diesen Befehl nicht hinzu, oder führen Sie ihn nicht aus.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Objekt auswählen und auf F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Sie müssen das Projekt speichern, bevor Sie darauf verweisen können

Sie können zu einem nichtgespeicherten Projekt keinen Verweis hinzufügen. Dieser Fehler hat die folgende Ursache und Lösung:

•	Sie haben versucht, einen Verweis hinzuzufügen, obwohl das Projekt nicht gespeichert war.

Speichern Sie das Projekt, bevor Sie den Verweis hinzufügen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Objekt auswählen und auf F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Unzulässige Verwendung eines Objekts (Fehler 425)

Die meisten Objekte können nur auf bestimmte Arten verwendet werden. Dieser Fehler tritt normalerweise auf, wenn versucht wurde, ein Objekt außerhalb seines Gültigkeitsbereichs zu verwenden. Ein Objektverweis, der an ein Drag&Drop-Ereignis übergeben wird, kann möglicherweise nur in Verbindung mit diesem Ereignis verwendet werden.


Formular kann auf diesem Druckertyp nicht ausgedruckt werden (Fehler 486)

Sie müssen einen grafikfähigen Drucker verwenden, um ein Formularbild zu drucken.


Das angegebene Objekt kann nicht als aufrufendes Formular für Show() benutzt werden (Fehler 371)

Sie müssen ein geeignetes Objekt für die Show-Methode verwenden.


Das angegebene ActiveX-Steuerelement wurde nicht gefunden (Fehler 363)

Das geladene Formular enthält ein ActiveX-Steuerelement, das nicht Teil des aktuellen Projekts ist. Dieser Fehler hat folgende Ursachen und Lösungen:

•	Sie haben möglicherweise die .VBP-Datei des Projektes manuell bearbeitet, um ein Formular hinzuzufügen, das ein ActiveX-Steuerelement enthält, das noch kein Teil des Projekts ist.

Verwenden Sie nach dem Laden des Projekts aus dem Menü Datei den Befehl Datei hinzufügen, um dem Projekt das ActiveX-Steuerelement hinzuzufügen.

•	Sie haben möglicherweise die .VBP-Datei des Projektes manuell bearbeitet, um ein Formular hinzuzufügen, das ein ActiveX-Steuerelement in einer früheren Version enthält, als das ActiveX-Steuerelement, das bereits Teil des Projekts ist.

Löschen Sie nach dem Laden des Projekts die frühere Version des Steuerelements aus dem Formular, und speichern Sie die neuere Version in diesem Formular.


Objekt-Server nicht richtig registriert (Fehler 336)

Die ActiveX-Komponente wurde nicht korrekt in der Systemregistrierung registriert.


Datenwert <Wert> nicht gefunden (Fehler 327)

Der Datenwert konnte nicht gefunden werden.


Ungültiges Bild (Fehler 481)

Der Picture-Eigenschaft wurde ein ungültiges Grafikformat zugewiesen. Dieser Fehler hat folgende Ursache und Lösung:

•	Sie haben versucht, der Picture-Eigenschaft eines Formulars oder Steuerelements ein anderes Grafikformat als eine Bitmap, ein Symbol oder eine Windows-Metafile-Datei zuzuweisen.

Stellen Sie sicher, daß die Datei, die Sie in die Picture-Eigenschaft laden möchten, eine gültige Grafikdatei ist, die von Visual Basic unterstützt wird.


Druckerfehler (Fehler 482)

Es gibt ein Problem, aufgrund dessen nicht gedruckt werden kann. Dieser Fehler hat folgende Ursachen und Lösungen:

•	Sie haben in der Windows-Systemsteuerung keinen Drucker installiert.

Öffnen Sie die Systemsteuerung, doppelklicken Sie auf das Symbol Drucker, und klicken Sie auf das Symbol Neuer Drucker, um einen Drucker hinzuzufügen.

•	Ihr Drucker ist nicht bereit.

Stellen Sie sicher, daß Ihr Drucker betriebsbereit ist.

•	Ihr Drucker hat einen Papierstau oder kein Papier mehr.

Beseitigen Sie den Papierstau, oder legen Sie Papier nach.

•	Sie haben versucht, ein Formular auf einem Drucker zu drucken, der nur Text drucken kann.

Wechseln Sie zu einem installierten Drucker, der Grafik drucken kann.


Angegebene Eigenschaft wird vom Druckertreiber nicht unterstützt (Fehler 483)

Der Druckertreiber des verwendeten Druckers unterstützt diese Eigenschaft des Printer-Objekts nicht. Dieser Fehler hat folgende Ursache und Lösung:

•	Die Wirkung der Eigenschaften des Printer-Objekts hängt vom Treiber ab, der vom Druckerhersteller zur Verfügung gestellt wurde. Einige Eigenschaftseinstellungen wirken sich beispielsweise gar nicht aus, oder verschiedene Eigenschaftseinstellungen zeigen dieselbe Wirkung. Einstellungen, die außerhalb des Gültigkeitsbereichs liegen, können unter Umständen einen Fehler auslösen.

Weitere Informationen finden Sie in der Herstellerdokumentation über den jeweiligen Druckertreiber.


Druckerinformationen können nicht vom System abgerufen werden. Stellen Sie sicher, daß der Drucker richtig installiert ist. (Fehler 484)

Es gibt ein Problem, aufgrund dessen Druckerinformationen nicht vom System abgerufen werden können. Dieser Fehler hat folgende Ursachen und Lösungen:

•	Sie haben in der Windows-Systemsteuerung keinen Drucker installiert.

Öffnen Sie die Systemsteuerung, doppelklicken Sie auf das Symbol Drucker, und klicken Sie auf das Symbol Neuer Drucker, um einen Drucker hinzuzufügen.

•	Ihr Drucker ist nicht bereit.

Stellen Sie sicher, daß Ihr Drucker betriebsbereit ist.

•	Ihr Drucker hat einen Papierstau oder kein Papier mehr.

Beseitigen Sie den Papierstau, oder legen Sie Papier nach.


Unzulässiger Bildtyp (Fehler 485)

Das Bildformat der Ressourcendatei, die Sie laden wollten, stimmt nicht mit der angegebenen Eigenschaft des Objekts überein. Dieser Fehler hat folgende Ursachen und Lösungen:

•	Sie haben versucht, die LoadResPicture-Methode zum Laden einer Bitmap-Ressource als Icon-Eigenschaft eines Form-Objekts zu verwenden.

Ändern Sie die Eigenschaft von Form auf die Picture-Eigenschaft oder ändern Sie das Argument Format von der Methode LoadResPicture zu vbResIcon.

•	Sie haben versucht, die LoadResPicture-Methode zum Laden einer Cursor-Ressource als Eigenschaft eines Objekts oder Steuerelements zu verwenden, die nicht die MousePointer-Eigenschaft ist.

Ändern Sie den Eigenschaftsverweis auf MousePointer.


Zwischenablage kann nicht geleert werden (Fehler 520)

Die Zwischenablage wurde geöffnet, konnte jedoch nicht geleert werden. Dieser Fehler hat folgende Ursache und Lösung:

•	Eine andere Anwendung verwendet die Zwischenablage und gibt diese nicht an Ihre Anwendung frei.

Legen Sie eine Fehlerbehandlungsroutine für diese Situation in Ihrem Code fest, und stellen Sie ein Meldungsfeld mit den Schaltflächen Wiederholen und Abbrechen zur Verfügung, um dem Benutzer nach einer kurzen Pause einen erneuten Versuch zu ermöglichen.


Zwischenablage kann nicht geöffnet werden (Fehler 521)

Die Zwischenablage wurde bereits von einer anderen Anwendung geöffnet. Dieser Fehler hat folgende Ursache und Lösung:

•	Eine andere Anwendung verwendet die Zwischenablage und gibt diese nicht an Ihre Anwendung frei.

Legen Sie eine Fehlerbehandlungsroutine für diese Situation in Ihrem Code fest, und stellen Sie ein Meldungsfeld mit den Schaltflächen Wiederholen und Abbrechen zur Verfügung, um dem Benutzer nach einer kurzen Pause einen erneuten Versuch zu ermöglichen.


Angegebenes Format stimmt nicht mit dem Datenformat überein (Fehler 461)

Das für die Zwischenablage angegebene Format ist mit der ausgeführten Methode nicht kompatibel. Dieser Fehler hat folgende Ursachen und Lösungen:

•	Sie haben versucht, die GetText- oder SetText-Methode mit einem anderen Zwischenablageformat als vbCFText oder vbCFLink zu verwenden.

Benutzen Sie, bevor Sie diese Methoden verwenden, die GetFormat-Methode, um zu überprüfen, ob der aktuelle Inhalt der Zwischenablage mit dem angegebenen Format übereinstimmt.

•	Sie haben versucht, die GetData- oder SetData-Methode mit einem anderen Zwischenablageformat als vbCFBitmap, vbCFDIB oder vbCFMetafile zu verwenden.

Benutzen Sie, bevor Sie diese Methoden verwenden, die GetFormat-Methode, um zu überprüfen, ob der aktuelle Inhalt der Zwischenablage mit dem angegebenen Grafikformat übereinstimmt.


Zwischenablageformat ungültig (Fehler 460)

Das für die Zwischenablage angegebene Format ist mit der ausgeführten Methode nicht kompatibel. Dieser Fehler hat folgende Ursachen und Lösungen:

•	Sie haben versucht, die GetText- oder SetText-Methode mit einem anderen Zwischenablageformat als vbCFText oder vbCFLink zu verwenden.

Entfernen Sie das ungültige Format, und geben Sie eines der beiden gültigen Formate an.

•	Sie haben versucht, die GetData- oder SetData-Methode mit einem anderen Zwischenablageformat als vbCFBitmap, vbCFDIB oder vbCFMetafile zu verwenden.

Entfernen Sie das ungültige Format, und geben Sie eines der drei gültigen Formate an.


Informationen zur Lizenzierung dieser Komponente nicht gefunden. Sie verfügen nicht über eine geeignete Lizenz, um dieses Funktionsmerkmal in der Entwurfsumgebung zu nutzen (Fehler 429)

Sie sind kein lizenzierter Benutzer des ActiveX-Steuerelements. Dieser Fehler hat folgende Ursache und Lösung:

•	Sie haben zur Entwurfszeit versucht, ein ActiveX-Steuerelement in einem Formular abzulegen, oder Sie haben versucht, ein Formular mit einem ActiveX-Steuerelement zu einem Projekt hinzuzufügen, jedoch konnten die zugeordneten Informationen in der Registrierung nicht gefunden werden.

Die Informationen in der Registrierung wurden möglicherweise gelöscht oder beschädigt. Installieren Sie das ActiveX-Steuerelement erneut, oder nehmen Sie mit dem Hersteller des Steuerelements Kontakt auf.


Formular wird bereits angezeigt und kann daher nicht gebunden dargestellt werden (Fehler 400)

Sie können die Show-Methode nicht verwenden, um ein bereits sichtbares Formular gebunden anzuzeigen. Dieser Fehler hat folgende Ursache und Lösung:

•	Sie haben versucht, Show mit dem Wert 1 - vbModal für das Stil-Argument bei einem bereits eingeblendetem Formular zu verwenden.

Verwenden Sie entweder die Unload-Anweisung oder die Hide-Methode in dem Formular, bevor Sie versuchen, dieses als gebundenes Formular anzuzeigen.


Das oberste gebundene Formular muß zuerst geschlossen oder ausgeblendet werden (Fehler 402)

Das gebundene Formular, das Sie zu schließen oder auszublenden versuchen, befindet sich nicht an oberster Position in der Z-Reihenfolge. Dieser Fehler hat folgende Ursache und Lösung:

•	Ein anderes gebundenes Formular befindet sich in der Z-Reihenfolge vor dem gebundenen Formular, das Sie zu schließen oder auszublenden versuchten.

Verwenden Sie zuerst entweder die Unload-Anweisung oder die Hide-Methode für jedes Formular, das sich in der Sortierreihenfolge an einer vorderen Position befindet. Ein gebundenes Formular ist ein Formular, das durch die Show-Methode angezeigt wird, wobei das Stil-Argument auf den Wert 1 - vbModal festgelegt ist.


Objekt kann weder ge- noch entladen werden (Fehler 361)

Eine Load- oder Unload-Anweisung hat auf ein ungültiges Objekt oder Steuerelement verwiesen. Dieser Fehler hat folgende Ursachen und Lösungen:

•	Sie haben versucht, ein Objekt zu laden oder zu entladen, das nicht geladen werden kann, wie z.B. Screen, Printer oder Clipboard.

Löschen Sie die fehlerhafte Anweisung aus Ihrem Code.

•	Sie haben versucht, ein existierendes Steuerelement zu laden oder zu entladen, das kein Teil eines Steuerelementfeldes ist. Angenommen, es gibt ein Textfeld-Steuerelement (TextBox) mit dem Wert Text1 für die Name-Eigenschaft, dann verursacht Load Text1 diesen Fehler.

Löschen Sie die fehlerhafte Anweisung aus Ihrem Code, oder ändern Sie den Verweis auf ein Steuerelement in einem Steuerelementefeld.

•	Sie haben versucht, ein Menü-Steuerelement (Menu) im Click-Ereignis des zugehörigen übergeordneten Menüs zu entladen.

Entladen Sie das Menü-Steuerelement mit einer anderen Prozedur.

•	Sie haben versucht, das letzte sichtbare Menüelement eines Menü-Steuerelements zu entladen.

Überprüfen Sie die Einstellung der Visible-Eigenschaft für die anderen Menüelemente im Steuerelementefeld, bevor Sie versuchen, eine Menüelement zu entladen, oder löschen Sie die fehlerhafte Anweisung aus Ihrem Code.


Objekt bereits geladen (Fehler 360)

Das Steuerelement im Steuerelementefeld wurde bereits geladen. Dieser Fehler hat folgende Ursache und Lösung:

•	Sie haben versucht, zur Laufzeit mit der Load-Anweisung ein Steuerelement zu einem Steuerelementefeld hinzuzufügen, jedoch existiert der Indexwert, auf den Sie verwiesen haben, bereits.

Legen Sie den Indexverweis auf einen neuen Wert fest, oder überprüfen Sie, ob Ihr Code dieselbe Load-Anweisung mit dem gleichen Verweis auf den Indexwert mehr als einmal ausführt.


Formular nicht gefunden (Fehler 424)

Das Formular wurde nicht gefunden. Dieser Fehler hat folgende Ursache und Lösung:

Sie haben versucht, ein Formular zur UserForms-Auflistung mit der Add-Methode hinzuzufügen, jedoch existiert keine Formularklasse mit diesem Namen; z.B. UserForms.Add "Formular1", wobei Formular1 nicht existiert.

Anmerkung   Stellen Sie sicher, daß der Klassenname für Ihr Projekt verfügbar ist.


Entladen in diesem Kontext nicht möglich (Fehler 365)

In manchen Situationen können Sie ein Formular oder ein Steuerelement in einem Formular nicht entladen. Dieser Fehler hat folgende Ursachen und Lösungen:

•	Im Paint-Ereignis gibt es eine Unload-Anweisung für das Formular oder für ein Steuerelement in dem Formular, das über das Paint-Ereignis verfügt.

Entfernen Sie die Unload-Anweisung aus dem Paint-Ereignis.

•	In den Ereignissen Change, Click oder DropDown eines Kombinationsfeld-Steuerelements (ComboBox) gibt es eine Unload-Anweisung.

Entfernen Sie die Unload-Anweisung aus dem Ereignis.

•	Im Scroll-Ereignis eines Steuerelements für die horizontale oder vertikale Bildlaufleiste (HScrollBar oder VScrollBar) gibt es eine Unload-Anweisung.

Entfernen Sie die Unload-Anweisung aus dem Ereignis.

•	Im Resize-Ereignis eines Daten-Steuerelements (Data), Bildfeld-Steuerelements (PictureBox), eines Formulars oder MDI-Formulars gibt es eine Unload-Anweisung.

Entfernen Sie die Unload-Anweisung aus dem Ereignis.

•	Im Resize-Ereignis eines MDI-Formulars, das ein untergeordnetes MDI-Formular zu entladen versucht, gibt es eine Unload-Anweisung.

Entfernen Sie die Unload-Anweisung aus dem Ereignis.

•	Im Reposition- oder Validate-Ereignis eines Daten-Steuerelements gibt es eine Unload-Anweisung.

Entfernen Sie die Unload-Anweisung aus dem Ereignis.

•	Im ObjectMove-Ereignis eines OLE-Container-Steuerelements gibt es eine Unload-Anweisung.

Entfernen Sie die Unload-Anweisung aus dem Ereignis.


Die angegebene System-DLL kann nicht geladen werden (Fehler 298)

Eine .DLL-Datei, die vom Betriebssystem zur Verfügung gestellt wird; z.B. DDEML.DLL, VERSION.DLL oder WINSPOOL.DRV, konnte nicht gefunden werden. Dieser Fehler hat folgende Ursachen und Lösungen:

•	Die Datei befindet sich nicht im richtigen Pfad.

Stellen Sie sicher, daß sich die DLL im Windows-Systempfad befindet.

•	Die DLL ist beschädigt oder wurde gelöscht.

Laden Sie die DLL erneut.

•	Es ist zu wenig Speicherplatz oder Auslagerungsspeicher verfügbar.

Versuchen Sie Speicherplatz frei zu machen, indem Sie andere Anwendungen schließen.


Namen zeichenorientierter Geräte in Dateinamen unzulässig (Fehler 320)

Sie können in Visual Basic keiner Datei denselben Namen geben wie einem zeichenorientierten Treiber. Dieser Fehler hat folgende Ursache und Lösung:

•	Sie haben versucht, einen Dateinamen wie z.B. AUX, CON, COM1, COM2, LPT1, LPT2, LPT3, LPT4 oder NUL zu verwenden.

Geben Sie der Datei einen anderen Namen.


Ungültiges Dateiformat (Fehler 321)

Eine Visual Basic-Formulardatei ist beschädigt. Dieser Fehler hat folgende Ursachen und Lösungen:

•	Das Formular besitzt ein beschädigtes ActiveX-Steuerelement.

Versuchen Sie, das ActiveX-Steuerelement in dem Formular zu ersetzen.

•	Die Anzahl der Eigenschaften in der aktuellen Version des ActiveX-Steuerelements stimmt nicht mit der erwarteten Anzahl der Eigenschaften überein.

Versuchen Sie, das ActiveX-Steuerelement durch eine frühere oder höhere Version zu ersetzen.


Parameter nicht zulässig. Datenfeld kann nicht geschrieben werden (Fehler 328)

Ein ungültiger Parameter wurde an die Methode übergeben. Dieser Fehler hat folgende Ursache und Lösung:

•	Sie haben versucht, im WriteProperties-Ereignis Ihres Benutzer-Steuerelements (User Control) PropBag.WriteProperty X auszuführen, wobei der Wert X ein Datenfeld ist. Dies wird nicht unterstützt.

Sie müssen jedes Element des Datenfeldes einzeln schreiben.


Zugriff auf Systemregistrierung nicht möglich (Fehler 335)

Ein Versuch, Informationen der Systemregistrierung zu lesen oder in die Registrierung zu schreiben, schlug fehl.


ActiveX-Komponente nicht gefunden (Fehler 337)

Die erforderliche EXE- oder DLL-Datei kann nicht gefunden werden.


ActiveX-Komponente wurde nicht richtig ausgeführt (Fehler 338)

Die EXE-Datei der ActiveX-Komponente konnte nicht richtig ausgeführt werden. Möglicherweise gibt es ein Problem mit den Informationen in der Registrierung.


Objekt wurde entladen (Fehler 364)

Ein Formular wurde von seiner zugehörigen _Load-Prozedur entladen. Dieser Fehler hat folgende Ursache und Lösung:

•	Ein Formular, das in seiner zugehörigen _Load-Prozedur eine Unload Anweisung besitzt, wurde implizit geladen. Im folgenden Beispiel wird Formular2 implizit geladen, wenn es nicht bereits geladen wurde: Formular1.BackColor = Formular2.BackColor.

Entfernen Sie die Unload-Anweisung aus der Form_Load-Prozedur.


Die Datei <Datei> ist nicht mehr aktuell. Dieses Programm benötigt eine neuere Version (Fehler 368)

Es wurde ein ActiveX-Steuerelement gefunden, das nicht mehr aktuell ist. Dieser Fehler hat folgende Ursache und Lösung:

•	Die Anzahl der Eigenschaften in der aktuellen Version des ActiveX-Steuerelements stimmt nicht mit der erwarteten Anzahl an Eigenschaften überein.

Ersetzen Sie das ActiveX-Steuerelement durch eine neuere Version.


Unzulässiger Eigenschaftswert (Fehler 380)

Einer Eigenschaft wurde ein ungültiger Wert zugewiesen. Dieser Fehler hat folgende Ursache und Lösung:

•	Sie haben versucht, eine der Eigenschaften eines Objekts oder eines Steuerelements auf einen Wert außerhalb des erlaubten Bereichs festzulegen.

Ändern Sie den Wert der Eigenschaft auf eine gültige Einstellung. Die MousePointer-Eigenschaft muß z.B. auf eine Ganzzahl im Bereich von 0 bis 15 oder auf die Ganzzahl 99 festgelegt werden.


<Name>-Eigenschaft kann zur Laufzeit nicht gesetzt werden (Fehler 382)

Die Eigenschaft ist zur Laufzeit schreibgeschützt. Dieser Fehler hat folgende Ursache und Lösung:

•	Sie haben versucht, eine Eigenschaft festzulegen oder zu ändern, deren Wert nur zur Entwurfszeit festgelegt werden kann.

Entfernen Sie den Verweis auf diese Eigenschaft aus Ihrem Code, oder ändern Sie den Verweis so, daß zur Laufzeit nur der Wert der Eigenschaft zurückgegeben wird.


<Name>-Eigenschaft ist schreibgeschützt (Fehler 383)

Die Eigenschaft ist sowohl zur Entwurfszeit, als auch zur Laufzeit schreibgeschützt. Dieser Fehler hat folgende Ursache und Lösung:

•	Sie haben versucht, eine Eigenschaft festzulegen oder zu ändern, deren Wert nur gelesen werden kann.

Entfernen Sie den Verweis auf diese Eigenschaft aus Ihrem Code, oder ändern Sie den Verweis so, daß zur Laufzeit nur der Wert der Eigenschaft zurückgegeben wird.


<Name>-Eigenschaft kann zur Laufzeit nicht gelesen werden (Fehler 393)

Die Eigenschaft ist nur zur Entwurfszeit verfügbar. Dieser Fehler hat folgende Ursache und Lösung:

•	Sie haben versucht, eine Eigenschaft zur Laufzeit zu lesen, auf die nur zur Entwurfszeit zugegriffen werden kann.

Ändern Sie Ihren Code, und entfernen Sie den Verweis auf diese Eigenschaft.


<Name>-Eigenschaft kann nur gesetzt werden (Fehler 394)

Die Eigenschaft kann nicht gelesen werden. Dieser Fehler hat folgende Ursache und Lösung.

•	Eine Eigenschaft kann nicht gelesen werden; z.B. ist ctl.property = 3 möglicherweise zulässig, jedoch würde durch "Print ctl.property" dieser Fehler ausgelöst.

Ändern Sie Ihren Code, und entfernen Sie den Verweis auf diese Eigenschaft.


Zugriff auf dieses Objekt verweigert (Fehler 419)

Sie haben nicht die erforderlichen Berechtigungen für das angegebene Objekt. Dieser Fehler hat folgende Ursache und Lösung:

•	Sie haben momentan nicht die Berechtigung, auf dieses Objekt zuzugreifen.

Um Ihre Berechtigungszuweisungen zu ändern, treten Sie mit Ihrem Systemadministrator oder dem Hersteller des Objekts in Kontakt.


AutoRedraw-Bild kann nicht erstellt werden (Fehler 480)

Visual Basic kann keine beständige Bitmap für das automatische Neuzeichnen des Formulars oder des Bildes erstellen. Dieser Fehler hat folgende Ursache und Lösung:

•	Es ist zuwenig Speicher vorhanden, um die AutoRedraw-Eigenschaft auf den Wert True festzulegen.

Setzen Sie die AutoRedraw-Eigenschaft auf den Wert False fest, und führen Sie das Neuzeichnen in der Paint-Ereignisprozedur selbst durch, oder verkleinern Sie das Bildfeld-Steuerelement (PictureBox) oder das Form-Objekt, und versuchen Sie, die Operation erneut durchzuführen, wobei AutoRedraw auf True festgelegt ist.


Nicht genügend Speicher (Fehler 31001)

Es konnte nicht genügend Speicher oder Festplattenspeicher für die angegebene Operation von Ihrem System reserviert werden.


Kein Objekt (Fehler 31004)

Sie haben versucht, eine Aktion an einem Objekt durchzuführen, das nicht existiert.


Klasse ist nicht festgelegt (Fehler 31018)

Wenn Sie kein Quelldokument (SourceDoc-Eigenschaft) angeben, wenn Action = 0 (CreateEmbed-Methode) festgelegt ist, muß die Class-Eigenschaft auf den Namen einer Klasse festgelegt werden, die auf Ihrem System verfügbar ist.

Sie zeigen eine Liste der verfügbaren Klassennamen zur Entwurfszeit an, indem Sie auf das OLE-Container-Steuerelement mit der rechten Maustaste klicken und den Befehl Objekt einfügen wählen.


Objekt kann nicht aktiviert werden (Fehler 31027)

Das Quelldokument des Objekts kann nicht geladen werden, oder die Anwendung, die das Objekt erstellt hat, ist nicht verfügbar.

Dieser Fehler tritt auf, wenn Sie versuchen, ein verknüpftes Objekt (Action = 7 festlegen) zu aktivieren, und die in der SourceDoc-Eigenschaft angegebene Datei gelöscht wurde oder nicht mehr existiert.

Dieser Fehler tritt auch auf, wenn Sie ein Objekt aktivieren (Action = 7 festlegen) und die Aktion, die durch die Verb-Eigenschaft angegeben wird, ungültig ist. Manche Anwendungen, die Objekte zur Verfügung stellen, unterstützen verschiedene Verben, abhängig vom Status der Anwendung. Alle von einer Anwendung unterstützten Verben werden in der Liste der ObjectVerbs-Eigenschaft aufgelistet. Manche Verben sind jedoch möglicherweise für den momentanen Anwendungsstatus ungültig.


Eingebettetes Objekt kann nicht erstellt werden (Fehler 31032)

Die Anwendung, die das Objekt erstellt, kann das Objekt nicht, wie in der SourceDoc-Eigenschaft angegeben, erstellen.

Dieser Fehler tritt z.B. auf, wenn Sie versuchen, ein Tabellenobjekt einzubetten, und SourceDoc eine Tabelle angibt, die zu groß ist, um von dem Tabellenkalkulationsprogramm geladen zu werden.


Fehler beim Speichern einer Datei (Fehler 31036)

Visual Basic kann das Objekt nicht in die angegebene Datei schreiben (Action = 11 oder 18 festlegen). Mögliche Ursachen:

•	Die FileNumber-Eigenschaft ist ungültig.

•	Die angegebene Datei wurde nicht im Binary-Modus geöffnet.

•	Es ist zuwenig Festplattenspeicher vorhanden.


Fehler beim Laden einer Datei (Fehler 31037)

Beim Lesen der angegebenen Datei trat ein Fehler auf (Action = 12 festlegen). Mögliche Ursachen:

•	Die FileNumber-Eigenschaft ist ungültig.

•	Die Datei wurde nicht im Binary-Modus geöffnet.

•	Die Datei wurde nicht korrekt gespeichert (Action = 11 festlegen von).

•	Die Datei ist beschädigt.

•	Die Position der Datei befindet sich nicht am Anfang eines gültigen OLE-Objekts.


Zeile <Nr>: Der Name des angegebenen Formulars ist ungültig. Dieses Formular kann nicht geladen werden.

Die ASCII-Datei enthält einen Formularnamen, der keine gültige Zeichenfolge in Visual Basic ist. Das Formular wird nicht geladen.


Zeile <Nr>: Angegebenes eingebettetes Objekt kann nicht erstellt werden.

Ein eingebettetes Objekt konnte während des Ladens eines Formulars, Benutzer-Steuerelements, Benutzerdokuments oder einer Eigenschaftenseite aus einer Textdatei nicht erstellt werden. Sie würden diesen Fehler erhalten, wenn Sie zuvor z.B. in dieses Formular ein Microsoft Word-Dokument eingefügt und anschließend Microsoft Word von Ihrem System entfernt haben. Diese Meldung wird in die Fehlerprotokolldatei geschrieben.


Zeile <Nr>: Angegebenes eingebettetes Objekt kann nicht erstellt werden; Lizenz nicht gefunden

Ein eingebettetes Objekt konnte während des Ladens eines Formulars, Benutzer-Steuerelements, Benutzerdokuments oder einer Eigenschaftenseite aus einer Textdatei nicht erstellt werden, da die Lizenzdatei nicht gefunden wurde. Sie müssen eine Lizenz besitzen, um dieses Objekt zu verwenden. Treten Sie mit dem Hersteller des Objekts in Kontakt, um weitere Informationen zu erhalten. Diese Meldung wird in die Fehlerprotokolldatei geschrieben.


Zeile <Nr>: Maximale Verschachtelungstiefe für Steuerelemente mit angegebenem Element überschritten.

Die ASCII-Datei enthält Steuerelemente, die tiefer als sieben Ebenen verschachtelt sind.


Zeile <Nr>: Alle Steuerelemente müssen den Menüs vorausgehen. Angegebenes Steuerelement kann nicht geladen werden.

Ein Steuerelement befindet sich an der falschen Position in der ASCII-Formulardatei. Alle Steuerelemente müssen vor den Menüs geladen werden.


Zeile <Nr>: Angegebenes übergeordnetes Menü kann nicht als Trennlinie geladen werden.

Die ASCII-Datei enthält ein Menü-Steuerelement (Menu), dessen übergeordnetes Menü oder Menü oberster Ebene als Menü-Trennlinie definiert ist. Menüs oberster Ebene können keine Menü-Trennlinien sein. Die Trennlinie wird nicht festgelegt.


Zeile <Nr>: Checked-Eigenschaft in Menü <Name> kann nicht gesetzt werden. Ein übergeordnetes Menü kann nicht mit einem Häkchen versehen werden.

Bei einem Menü-Steuerelement (Menu) oberster Ebene in der ASCII-Formulardatei ist die Checked-Eigenschaft auf den Wert True festgelegt. Menüs oberster Ebene können nicht mit einem Häkchen versehen werden. Das Menü-Steuerelement wird geladen, jedoch wird die zugehörige Checked-Eigenschaft nicht festgelegt.


Zeile <Nr>: Shortcut-Eigenschaft in Menü <Name> kann nicht gesetzt werden. Ein übergeordnetes Menü kann keine Tastenkombination haben.

Ein Menü-Steuerelement (Menu) oberster Ebene in einer ASCII-Formulardatei weist eine definierte Tastenkombination auf. Menüs oberster Ebene können keine Tastenkombination besitzen. Das Menü-Steuerelement wird geladen, jedoch wird die zugehörige Shortcut-Eigenschaft nicht festgelegt.


Zeile <Nr>: Der Name des Formulars <Formular> ist ungültig. Dieses Formular kann nicht geladen werden.

Die ASCII-Datei enthält ein Formular mit einem Namen, der bereits in der Anwendung verwendet wird. Das Formular wird nicht geladen.


In <Element> wurden Attribute gefunden, die Konflikte verursachen. Die Standardeinstellungen werden verwendet.

Einige der Attributanweisungen in einem Formular, Benutzer-Steuerelement, einer Eigenschaftenseite, einem Benutzerdokument oder einem Klassenmodul verursachen mit den erforderlichen Einstellungen für ihren Typ einen Konflikt. So muß zum z.B. das VB_PredeclaredId-Attribut eines Formulars dem Wert True entsprechen. Dieser Fehler kann auftreten, wenn die Datei durch einen anderen als den Visual Basic-Editor verändert wurde.


<Datei> ist eine schreibgeschützte Datei

Sie wollten eine Datei speichern, die schreibgeschützt ist. Schreibgeschützte Dateien werden im Projekt-Explorer folgendermaßen angezeigt: . Sie können schreibgeschützte Dateien nicht mit dem Befehl Speichern speichern. Verwenden Sie statt dessen den Befehl Speichern als.


Zeile <Nr>: Verweis <Verweis> konnte nicht erstellt werden

Der für die angegebene Zeile bestimmte Verweis konnte nicht erstellt werden.


Zeile <Nr>: Datei <Datei> kann nicht geladen werden.

Syntaxfehler verhindern, daß Visual Basic eine Datei analysiert und lädt, oder ein Formularnamenskonflikt verhindert das Laden eines ASCII-Formulars. Das Formular wird nicht geladen, und der Formularname wird im Projekt-Explorer nicht angezeigt.

Stellen Sie sicher, daß die Datei, die diesen Fehler verursacht, ein gültiges ASCII-Formular im korrekten Format ist und daß unter den verschiedenen Formularen in dem Projekt keine Konflikte existieren.


Fehler beim Laden

Prüfen Sie die Fehlerprotokolldatei, um ausführlichere Informationen zu erhalten.


<Add-In> kann nicht geladen werden. Add-In aus der Liste der verfügbaren Add-Ins entfernen?

Visual Basic konnte das Add-In nicht laden, das Sie im Dialogfeld Add-In-Manager aus der Liste der verfügbaren Add-Ins ausgewählt haben. Klicken Sie auf Ja, um es aus der Liste zu entfernen, oder klicken Sie auf Nein, um es in der Liste zu belassen. In beiden Fällen können Sie es nicht laden.


<Add-In> kann von Visual Basic nicht geladen werden, da kein Eintrag in der Systemregistrierung gefunden wurde. Stellen Sie bitte sicher, daß alle Add-Ins korrekt installiert wurden.

Visual Basic konnte das Add-In nicht laden, das Sie im Dialogfeld Add-In-Manager aus der Liste der verfügbaren Add-Ins auswählen wollten, da dieses nicht korrekt registriert war oder in der Systemregistrierung nicht mehr registriert ist.


Weitere Ladefehler anzeigen?

Klicken Sie auf OK, um mehr Fehler anzuzeigen, ansonsten klicken Sie auf Abbrechen.


<Element> konnte nicht geladen werden

Syntaxfehler verhindern, daß Visual Basic eine Datei analysiert und lädt, oder ein Formularnamenskonflikt verhindert das Laden eines ASCII-Formulars. Das Formular wird nicht geladen, und der Formularname wird im Projekt-Explorer nicht angezeigt.

Stellen Sie sicher, daß die Datei, die diesen Fehler verursacht, ein gültiges ASCII-Formular im korrekten Format ist und das zwischen den verschiedenen Formularen in dem Projekt keine Konflikte existieren.


Versionsnummer fehlt oder ist ungültig

Die Versionssignatur wurde nicht gefunden, oder die angegebene Version wurde nicht erkannt. Stellen Sie sicher, daß die erste Zeile, die nicht leer ist oder einen Kommentar im ASCII-Formular darstellt, die korrekte Version angibt.


<Element> wird durch das Projekt <Projekt> referenziert und kann nicht aktualisiert werden

Auf das angegebene Steuerelement wird durch mehr als ein Projekt verwiesen. Das Aktualisieren des Steuerelements für ein Projekt kann dazu führen, daß es für ein anderes ungültig wird.


Verweis oder Steuerelement kann nicht entfernt werden; wird zur Zeit verwendet

Das ActiveX-Steuerelement oder der Verweis, das/den Sie zu entfernen versuchten, wird durch eines der Formulare im Projekt verwendet. Löschen Sie zuerst das Steuerelement oder das Objekt, auf das verwiesen wird, aus dem Formular, und brechen Sie dann die Auswahl desselben in der Liste ab.


Anwendung kann zu diesem Zeitpunkt nicht beendet werden

Sie können Windows nicht beenden, während Visual Basic ausgeführt wird oder sich im Haltemodus befindet. Sie können Windows auch nicht beenden, solange ein Dialogfeld oder Meldungsfeld angezeigt wird.


Fehler beim Laden von <Element>. Beim Laden einer Eigenschaft trat ein Fehler auf. Fortfahren?

Sie haben möglicherweise versucht, ein Formular zu laden, das Steuerelemente enthält, deren Namen im Konflikt mit Formularen stehen, die sich bereits im Projekt befinden. Das Laden von Formular2, das ein Steuerelement aus Formular1 enthält, löst z.B. diesen Fehler aus.


Fehler beim Laden von <Steuerelement>. Ein Steuerelement konnte aufgrund eines Ladefehlers nicht geladen werden. Fortfahren?

Diese Fehlermeldung wird angezeigt, nachdem ein weiterer Fehler aufgetreten ist. Nachdem Sie die geeignete Aktion für jenen Fehler durchgeführt haben, wird diese Fehlermeldung angezeigt. Sie laden das Steuerelement trotzdem, indem Sie auf Ja klicken. Klicken Sie auf Nein, um den Ladevorgang abzubrechen.


Die Datei <Datei> besitzt ein altes Dateiformat. Beim Speichern wird diese Datei in einem neueren Format gespeichert.

Diese Datei wurde mit einer älteren Version von Visual Basic erstellt. Wenn Sie die Datei speichern, wird sie im Dateiformat der aktuellen Version gespeichert.


Datei <Datei> gehört bereits zum Projekt

Die von Ihnen angegebene Datei ist bereits Teil des Projekts. Sie können dieselbe Datei einem Projekt nicht mehrmals hinzufügen. Sie können eine Datei nicht mit demselben Namen speichern wie eine andere Datei in dem Projekt.


Fehler beim Laden. Weitere Informationen finden Sie unter <Element>

In der ASCII-Formulardatei ist etwas Unerwartetes aufgetreten. Visual Basic hat eine Protokolldatei erstellt, um mehr Informationen über die Fehler zur Verfügung zu stellen. Sie sollten die Protokolldatei untersuchen, um die Schwere des Problems zu bestimmen. Manchmal können Sie die Fehler sicher ignorieren (z.B.: Versionsnummer fehlt oder ist ungültig...). Ein anderes Mal können die Fehler jedoch der Grund dafür sein, daß Formulare nicht wie erwartet ausgeführt werden (z.B.: Klasse 'Klasse1' des Steuerelements 'Steuerelement1' war keine geladene Steuerelementklasse).


Zeichenfolge zur Verarbeitung zu lang. Formular kann nicht geladen werden

Eine in das Formular eingebettete Zeichenfolge war zu lang, um verarbeitet zu werden.


Mindestens eine Datei im Projekt hat sich geändert. Möchten Sie die Änderungen jetzt speichern?

Eine der Einstellungen der Eigenschaft oder eine Code-Anweisung haben sich für eine oder mehrere Dateien im Projekt geändert, und die Änderungen wurden noch nicht abgespeichert. Dies ist ihre letzte Möglichkeit, die Änderungen vor dem Laden eines anderen Projekts zu speichern.


<Element> konnte nicht registriert werden

Die angegebene Datei konnte in der Systemregistrierung nicht registriert werden. Der Fehler bezieht sich auf Klassenbibliotheken, die von Komponenten der Visual Basic-Entwicklungsumgebung verwendet werden, und gibt an, daß der angegebene Dateieintrag in der Systemregistrierung beschädigt ist, oder daß die DLL selbst fehlt oder beschädigt ist.


Andere Anwendungen greifen zur Zeit auf ein Objekt in Ihrem Programm zu. Ein Beenden des Programms zum jetzigen Zeitpunkt kann Fehler in den anderen Programmen verursachen. Programm jetzt beenden?

Auf ein Automatisierungsobjekt im Visual Basic-Programm, das Sie momentan ausführen, wird durch mindestens eine andere Anwendung zugegriffen. Das Beenden Ihres Programms könnte einen Fehler in der anderen Anwendung verursachen. Klicken Sie auf Ja, um Ihr Programm zu beenden, oder klicken Sie auf Nein, um es fortzusetzen.


Mindestens eine Eigenschaft in <Element> war fehlerhaft. Einige oder alle Eigenschaften werden u.U. nicht richtig gesetzt.

Die angegebene Projektdatei besitzt eine oder mehrere ungültige Eigenschafteneinstellungen. Dieser Fehler tritt nur in Bezug auf eine Projektdatei auf.


In <Element> wurden Namen gefunden, die Konflikte verursachen. Der Name <Name> wird verwendet.

Der Name eines Formulars tritt in der Quelldatei für ein Formular, Benutzersteuerelement, eine Eigenschaftenseite oder ein Benutzerdokument zweimal auf. Dieser Fehler kann auftreten, wenn die Datei durch einen Editor verändert wurde, der nicht dem von Visual Basic entspricht.


Zeile <Nr>: Der Steuerelementname <Name> ist ungültig.

Die ASCII-Datei enthält einen Steuerelementnamen, der in Visual Basic keine gültige Zeichenfolge darstellt. Das Steuerelement wird nicht geladen.


Zeile <Nr>: Der Eigenschaftenname <Name> ist ungültig.

Die ASCII-Datei enthält einen Eigenschaftennamen, der für dieses Steuerelement keine gültige Eigenschaft ist.


Zeile <Nr>: <Element> enthält anstelle des Eigenschaftennamens eine Zeichenfolge in Anführungszeichen.

In der ASCII-Formulardatei wird an der Stelle, an der der Name der Eigenschaft erwartet wird, eine Zeichenfolge in Anführungszeichen (" ") angezeigt. Eigenschaftennamen werden nicht in Anführungszeichen angegeben.


Zeile <Nr>: Eigenschaft <Eigenschaft> in Steuerelement <Name> hat einen ungültigen Eigenschaftsindex.

Die ASCII-Datei enthält einen Eigenschaftennamen mit einem Eigenschaftsindex, der größer als 255 ist.


Zeile <Nr>: Eigenschaft <Eigenschaft> in <Element> konnte nicht geladen werden.

Die ASCII-Datei enthält eine unbekannte Eigenschaft. Die Eigenschaft wird beim Laden des Formulars übersprungen.


Zeile <Nr>: Eigenschaft <Eigenschaft> in <Element> muß eine Zeichenfolge in Anführungszeichen sein.

Die ASCII-Datei enthält eine Eigenschaft, die in Anführungszeichen (" ") eingeschlossen sein sollte, die Anführungszeichen fehlen jedoch. Diese Zeile in der Formularbeschreibung wird ignoriert.


Zeile <Nr>: Eigenschaft <Eigenschaft> in <Element> hat einen ungültigen Wert.

Die ASCII-Datei enthält eine Eigenschaft, deren Wert für dieses Steuerelement nicht korrekt ist. Die Eigenschaft wird mit dem zugehörigen Standardwert festgelegt.


Zeile <Nr>: Eigenschaft <Eigenschaft> in <Element> enthält einen ungültigen Dateiverweis.

Die ASCII-Datei enthält einen Verweis auf eine Datei, die durch Visual Basic im angegebenen Verzeichnis nicht gefunden werden konnte.


Zeile <Nr>: Eigenschaft <Eigenschaft> in <Element> konnte nicht gesetzt werden.

Visual Basic kann die Eigenschaft des angegebenen Steuerelements nicht so festlegen, wie sie durch die Formularbeschreibung in der ASCII-Datei bestimmt ist.


Zeile <Nr>: Klasse <Klasse> des Steuerelements <Steuerelement> war keine geladene Steuerelementklasse.

Die ASCII-Datei enthält eine Steuerelementklasse, die von Visual Basic nicht erkannt wird. Fügen Sie das Zusatzsteuerelement mit dieser Klasse Ihrem Projekt hinzu.


Zeile <Nr>: Obwohl Steuerelement <Steuerelement> bereits existiert, konnte keine Index-Eigenschaft gefunden werden.

Das Steuerelement kann nicht geladen werden, da kein Index existiert und es den gleichen Namen hat, wie ein zuvor geladenes Steuerelement.


Zeile <Nr>: Steuerelementname zu lang; verkürzt auf <Name>.

Die ASCII-Datei enthält einen Steuerelementnamen, der länger als 40 Zeichen ist. Beim Laden des Steuerelements wird der Name auf 40 Zeichen verkürzt.


Zeile <Nr>: Klassenname zu lang; verkürzt auf <Name>.

Die ASCII-Datei enthält einen Klassennamen, der länger als 40 Zeichen ist. Beim Laden der Klasse wird der Name auf 40 Zeichen verkürzt.


Zeile <Nr>: Syntaxfehler: Der Eigenschaft <Eigenschaft> in <Element> fehlt ein '='.

Die ASCII-Datei enthält einen Eigenschaftennamen und einen Wert, zwischen denen kein Gleichheitszeichen (=) steht. Die Eigenschaft wird nicht geladen.


Zeile <Nr>: Steuerelement <Steuerelement> kann nicht geladen werden. Umgebendes Steuerelement ist kein gültiger Container.

Sie haben versucht, ein Steuerelement in ein Steuerelement zu laden, das kein gültiger Container ist.


Zeile <Nr>: Steuerelement <Steuerelement> kann nicht geladen werden. Der Name wird bereits verwendet.

Das Steuerelement, das in der ASCII-Textdatei benannt wird, konnte nicht geladen werden, da der entsprechende Name bereits in der Anwendung verwendet wird.


Zeile <Nr>: Fehlende oder ungültige Steuerelementklasse in Datei <Datei>.

Die ASCII-Datei enthält eine unbekannte Steuerelementklasse in der Formularbeschreibung, oder der Klassenname ist keine gültige Zeichenfolge in Visual Basic.


Zeile <Nr>: Fehlender oder ungültiger Steuerelementname in Datei <Datei>.

Die ASCII-Datei enthält einen unbekannten Steuerelementnamen in der Formularbeschreibung, oder der Steuerelementname ist keine gültige Zeichenfolge in Visual Basic.


Zeile <Nr>: Steuerelement <Steuerelement> kann nicht geladen werden; Lizenz nicht gefunden.

Ein ActiveX-Steuerelement konnte während des Ladens eines Formulars, Benutzersteuerelements, Benutzerdokuments oder einer Eigenschaftenseite aus einer Textdatei nicht erstellt werden. Das Steuerelement fehlt möglicherweise oder wurde beschädigt. Installieren Sie das Steuerelement erneut und versuchen Sie es noch einmal. Diese Meldung wird in die Fehlerprotokolldatei geschrieben.


Zeile <Nr>: CLSID <ID> für <Element> ist ungültig.

Ein Objekt konnte während des Ladens eines Formulars, Benutzersteuerelements, Benutzerdokuments oder einer Eigenschaftenseite aus einer Textdatei nicht geladen werden. Die in der Datei angegebene CLSID ist ungültig. Dies betrifft nur Objekte, die Eigenschaften sind, wie z.B. das Font-Objekt. Diese Meldung wird in die Fehlerprotokolldatei geschrieben.


Verweis <Verweis> kann nicht erstellt werden.

Beim Aufbauen eines Verweises während des Ladens der Datei ist ein Fehler aufgetreten, so daß der Verweis nicht hinzugefügt wurde.


<Element> wird nicht geladen. Der Name wird bereits verwendet.

Sie können keine zwei Elemente der gleichen Art zur gleichen Zeit laden.


ChDir-Anweisung (Beispiel)

In diesem Beispiel wird die ChDir-Anweisung verwendet, um das aktuelle Verzeichnis oder den aktuellen Ordner zu ändern. Auf dem Macintosh ist der Standardlaufwerkname "HD", und die Bestandteile des Pfadnamens sind durch Doppelpunkte statt umgekehrter Schrägstriche voneinander getrennt. Außerdem würden Sie auch anstellen von \Windows Macintosh-Ordner angeben. Plazthalterzeichen haben keine Bedeutung auf dem Macintosh und werden als einfache Zeichen behandelt.

' Aktuelles Verzeichnis oder aktuellen Ordner auf "VERZ1" ändern.

ChDir "VERZ1"

' Unter Microsoft Windows:

' Im Beispiel wird angenommen, daß "C:" das aktuelle Verzeichnis ist.

' Die folgende Anweisung wechselt das Standardverzeichnis des

' Laufwerks "D:". "C:" bleibt weiterhin das aktuelle Verzeichnis.

ChDir "D:\WINDOWS\SYSTEM"

' Auf dem Macintosh:

' Standardordner und -laufwerk ändern.

ChDir "HD:ORDNER1"


ChDrive-Anweisung (Beispiel)

In diesem Beispiel wird die ChDrive-Anweisung verwendet, um das aktuelle Laufwerk zu ändern. Auf dem Macintosh ist "HD:" der Standardlaufwerkname, und ChDrive würde den aktuellen Ordner in den Stammordner des angegebenen Laufwerks ändern. Im folgenden Beispiel wird angenommen, daß der Computer über ein Laufwerk namens D: verfügt.

' Unter Microsoft Windows:

ChDrive "D"	' Auf Laufwerk D: wechseln.

' Auf dem Macintosh:

'"HD" zum aktuellen Laufwerk machen.

ChDrive "HD:"

' "HD" zum aktuellen Laufwerk und aktuellen Ordner machen ("HD" ist der

' Hauptordner).

ChDrive "HD:ORDNER1"


CurDir-Funktion (Beispiel)

In diesem Beispiel wird die CurDir-Funktion verwendet, um den aktuellen Pfad zurückzugeben. Auf dem Macintosh werden Angaben von Laufwerk, die an CurDir übergeben werden, ignoriert. Der Standardlaufwerkname ist "HD", und die Bestandteile des Pfadnamens sind durch Doppelpunkte statt umgekehrter Schrägstriche voneinander getrennt. Außerdem würden Sie auch anstellen von \Windows Macintosh-Ordner angeben.

' Unter Microsoft Windows:

' Aktueller Pfad auf Laufwerk C: ist "C:\WINDOWS\SYSTEM" (unter Microsoft Windows).

' Aktueller Pfad auf Laufwerk D: ist "D:\EXCEL".

' C: ist das aktuelle Laufwerk.

Dim Pfad1

Pfad1 = CurDir' Liefert "C:\WINDOWS\SYSTEM".

Pfad1 = CurDir("C")	' Liefert "C:\WINDOWS\SYSTEM".

Pfad1 = CurDir("D")	' Liefert "D:\EXCEL".

' Auf dem Macintosh:

' Laufwerksbuchstaben werden ignoriert. Der Pfad für das

' aktuelle Laufwerk wird zurückgegeben.

' Aktueller Pfad auf Laufwerk HD ist "HD:ORDNER1".

' HD ist das aktuelle Laufwerk. Außerdem existiert auf dem System

' ein Laufwerk MD.

Dim Pfad1

Pfad1 = CurDir' Liefert "HD:ORDNER1".

Pfad1 = CurDir("HD")	' Liefert "HD:ORDNER1".

Pfad1 = CurDir("MD")	' Liefert "HD:ORDNER1".


Dir-Funktion (Beispiel)

In diesem Beispiel wird die Dir-Funktion verwendet, um das Vorhandensein bestimmter Dateien und Verzeichnisse/Ordner zu überprüfen. Auf dem Macintosh kann über die MacID-Funktion ein Dateityp angegeben werden. Auf dem Macintosh ist der Standardlaufwerkname "HD", und die Bestandteile des Pfadnamens sind durch Doppelpunkte statt umgekehrter Schrägstriche voneinander getrennt. Außerdem werden die Platzhalterzeichen von Microsoft Windows auf dem Macintosh als gültige Dateinamenzeichen angesehen. Sie können allerdings mit Hilfe der MacID-Funktion Dateigruppen angeben.

Dim Datei1, Pfad1 , Name1

' Unter Microsoft Windows:

' Liefert "WIN.INI" (unter Microsoft Windows), falls die Datei existiert.

Datei1 = Dir("C:\WINDOWS\WIN.INI")

' Liefert einen Dateinamen mit der angegebenen Erweiterung. Existieren

' mehrere Dateien mit der Erweiterung .INI, so wird der erste gefundene

' Dateiname zurückgegeben.

Datei1 = Dir("C:\WINDOWS\*.INI")

' Dir erneut ohne Argumente aufrufen, um die nächste Datei mit der

' Erweiterung .INI im selben Verzeichnis zurückzugeben.

Datei1 = Dir

' Die erste versteckte Datei mit der Erweiterung *.TXT zurückgeben.

Datei1 = Dir("*.TXT", vbHidden)

' Namen in C:\ anzeigen, die Verzeichnisse darstellen.

Pfad1 = "c:\"	' Pfad setzen.

Name1 = Dir(Pfad1, vbDirectory)	' Ersten Eintrag abrufen.

Do While Name1 <> ""	' Schleife beginnen.

' Aktuelles und übergeordnetes Verzeichnis ignorieren.

If Name1 <> "." And Name1 <> ".." Then

' Mit bit-weisem Vergleich sicherstellen, daß Name1 ein

' Verzeichnis ist.

If (GetAttr(Pfad1 & Name1) And vbDirectory) = vbDirectory Then

Debug.Print Name1	' Eintrag nur anzeigen, wenn es sich

End If	' um ein Verzeichnis handelt.

End If

Name1 = Dir	' Nächsten Eintrag abrufen.

Loop

' Auf dem Macintosh.

' Dateityp mit der MacID-Funktion angeben.

' Die folgende Anweisung gibt die erste Datei mit dem Typ "TEXT"

' zurück, die im angegebenen Verzeichnis oder Ordner gefunden wurde.

Datei1 = Dir("HD:ORDNER1:", MacID("TEXT"))


Environ-Funktion (Beispiel)

In diesem Beispiel wird die Environ-Funktion verwendet, um die Eintragsnummer und Länge der PATH-Anweisung aus der Tabelle der Umgebungszeichenfolgen zu bestimmen und anzuzeigen. Nicht verfügbar auf dem Macintosh.

Dim UmgZF, Indx, Mldg, PfadLänge	' Variablen deklarieren.

Indx = 1	' Index mit 1 initialisieren.

Do

UmgZF = Environ(Indx)	' Umgebungsvariable

' bestimmen.

If Left(UmgZF, 5) = "PATH=" Then	' PATH-Eintrag prüfen.

PfadLänge = Len(Environ("PATH"))	' Länge bestimmen.

Mldg = "PATH-Eintrag = " & Indx & " und Länge = " & PfadLänge

Exit Do

Else

Indx = Indx + 1	' Kein PATH-Eintrag,

End If	' also hochzählen.

Loop Until UmgZF = ""

If PfadLänge > 0 Then

MsgBox Mldg	' Meldung anzeigen.

Else

MsgBox "Es existiert keine PATH-Umgebungsvariable."

End If


FileCopy-Anweisung (Beispiel)

In diesem Beispiel wird die FileCopy-Anweisung verwendet, um eine Datei in eine andere Datei zu kopieren. Im Rahmen dieses Beispiels wird angenommen, daß die Datei QUELLDAT vorhanden ist und Beispieldaten enthält.

Dim Quelldatei, Zieldatei

Quelldatei = "QUELLDAT"	' Namen der Quelldatei festlegen.

Zieldatei = "ZIELDAT"	' Namen der Zieldatei festlegen.

FileCopy Quelldatei, Zieldatei	' Quell- in Zieldatei kopieren.


FileDateTime-Funktion (Beispiel)

In diesem Beispiel wird die FileDateTime-Funktion verwendet, um Datum und Zeit der Erstellung oder letzten Änderung einer Datei zu bestimmen. Das Format der angezeigten Datums- und Zeitangaben hängt von den Ländereinstellungen Ihres Systems ab.

Dim Zeitangabe

' TSTDATEI wurde am 12. Februar 1993 um 16:35:47 zuletzt geändert.

' Das Gebietsschema ist Deutschland bzw. deutsch.

Zeitangabe = FileDateTime("TSTDATEI")	' Liefert "12.02.1993 16:35:47".


FileLen-Funktion (Beispiel)

In diesem Beispiel wird die FileLen-Funktion verwendet, um die Länge einer Datei in Bytes zurückzugeben. Im Rahmen dieses Beispiels wird angenommen, daß die Datei TSTDATEI vorhanden ist und Beispieldaten enthält.

Dim Größe1

Größe1 = FileLen("TSTDATEI")	' Liefert die Dateilänge in Bytes.


GetAttr-Funktion (Beispiel)

In diesem Beispiel wird die GetAttr-Anweisung verwendet, um die Attribute einer Datei, eines Verzeichnisses oder Ordners zu bestimmen. Auf dem Macintosh sind lediglich die Konstanten vbNormal, vbReadOnly, vbHidden und vbAlias verfügbar.

Dim Attr1

' Das Attribut "Versteckt" wurde für die Datei TSTDATEI gesetzt.

Attr1 = GetAttr("TSTDATEI")	' Liefert 2.

' Liefert Wert ungleich Null, wenn Attribut "Versteckt" (vbHidden)

' für TSTDATEI gesetzt wurde.

Debug.Print Attr1 And vbHidden

' Für Datei TSTDATEI wurden die Attribute "Versteckt" und

' "Schreibgeschützt" (vbReadOnly) gesetzt.

Attr1 = GetAttr("TSTDATEI")	' Liefert 3.

' Liefert Wert ungleich Null, wenn Attribute "Versteckt" und

' "Schreibgeschützt" für TSTDATEI gesetzt wurden.

Debug.Print Attr1 And (vbHidden + vbReadOnly)

' VERZ1 ist ein Verzeichnis oder ein Ordner.

Attr1 = GetAttr("VERZ1")	' Liefert 16.


Kill-Anweisung (Beispiel)

In diesem Beispiel wird die Kill-Anweisung verwendet, um eine Datei von einem Datenträger zu löschen. Da der Macintosh keine Platzhalter unterstützt, können Sie mit der MacID-Funktion einen Dateityp anstelle eines Dateinamens angeben.

' TSTDATEI ist eine Datei mit einigen Beispieldaten.

Kill "TstDatei"	' Datei löschen.

' Unter Microsoft Windows.

' Alle Dateien mit der Erweiterung .TXT im aktuellen

' Verzeichnis löschen.

Kill "*.TXT"

' Auf dem Macintosh:

' Alle PICT-Dateien im aktuellen Ordner mit der MacID-Funktion löschen.

Kill MacID("PICT")


MkDir-Anweisung (Beispiel)

In diesem Beispiel wird die MkDir-Anweisung verwendet, um ein Verzeichnis oder einen Ordner zu erstellen. Wird kein Laufwerk angegeben, so wird das neue Verzeichnis bzw. der neue Ordner auf dem aktuellen Laufwerk erstellt.

MkDir "VERZ1"	' Verzeichnis/Ordner neu erstellen.


Name-Anweisung (Beispiel)

In diesem Beispiel wird die Name-Anweisung verwendet, um den Namen einer Datei zu ändern. Im Rahmen dieses Beispiels wird angenommen, daß die Verzeichnisse/Ordner bereits existieren. Auf dem Macintosh ist der Standardlaufwerkname "HD", und die Bestandteile des Pfadnamens sind durch Doppelpunkte statt umgekehrter Schrägstriche voneinander getrennt.

Dim AlterName, Neuername

AlterName = "DATEIALT": Neuername = "DATEINEU"	' Dateinamen definieren.

Name AlterName As Neuername	' Datei umbenennen.

' Unter Microsoft Windows:

AlterName = "C:\VERZ1\DATEIALT": Neuername = "C:\VERZ2\DATEINEU"

Name AlterName As Neuername  ' Datei verschieben und umbenennen.

' Auf dem Macintosh:

AlterName = "HD:ORDNER1:DATEIALT": Neuername = "HD:ORDNER2:DATEINEU"

Name AlterName As Neuername  ' Datei verschieben und umbenennen.


QBColor-Funktion (Beispiel)

In diesem Beispiel wird die QBColor-Funktion verwendet, um die BackColor-Eigenschaft des Formulars, das als TestFormular übergeben wurde, in die durch FarbCode angegebene Farbe zu ändern. QBColor akzeptiert ganzzahlige Werte im Bereich von 0 bis 15.

Sub HintergrundfarbeÄndern (FarbCode As Integer, TestFormular As Form)

TestFormular.BackColor = QBColor(FarbCode)

End Sub


RGB-Funktion (Beispiel)

In diesem Beispiel wird gezeigt, wie mit der RGB-Funktion eine ganze Zahl als RGB-Farbwert zurückgegeben werden kann. Der Rückgabewert wird für Anwendungsmethoden und -eigenschaften verwendet, die einen Farbwert als Argument erwarten. Das Objekt Objekt1 und seine Eigenschaft werden hier lediglich zu Demonstrationszwecken verwendet. Wenn Objekt1 nicht vorhanden ist oder keine Color-Eigenschaft besitzt, tritt ein Fehler auf.

Dim ROT, I, RGBWert, Objekt1

Rot = RGB(255, 0, 0)	' Den Wert für Rot zurückgeben.

I = 75	' Offset initialisieren.

RGBWert = RGB(I, 64 + I, 128 + I) 	' Entspricht RGB(75, 139, 203).

Objekt1.Color = RGB(255, 0, 0)	' Color-Eigenschaft von Objekt1

' auf Rot festlegen.


RmDir-Anweisung (Beispiel)

In diesem Beispiel wird die RmDir-Anweisung verwendet, um ein bestehendes Verzeichnis bzw. einen bestehenden Ordner zu entfernen.

' VERZ1 ist ein leeres Verzeichnis bzw. ein leerer Ordner.

RmDir "VERZ1"	' VERZ1 entfernen.


SetAttr-Anweisung (Beispiel)

In diesem Beispiel wird die SetAttr-Anweisung verwendet, um Attribute für eine Datei festzulegen. Auf dem Macintosh sind nur die Konstanten vbNormal, vbReadOnly, vbHidden and vbAlias verfügbar.

SetAttr "TSTDATEI", vbHidden	' "Versteckt" setzen.

SetAttr "TSTDATEI", vbHidden + vbReadOnly	 "Versteckt" und

' "Schreibgeschützt" setzen.


ChDir-Anweisung

Wechselt das aktuelle Verzeichnis oder den aktuellen Ordner.

Syntax

ChDir Pfad

Das erforderliche Argument Pfad ist ein Zeichenfolgenausdruck, der angibt, welches Verzeichnis oder welcher Ordner zum neuen Standardverzeichnis oder -ordner wird. Pfad kann das Laufwerk beinhalten. Ist kein Laufwerk angegeben, so wechselt die ChDir-Anweisung das Standardverzeichnis oder den Standardordner auf dem aktuellen Laufwerk.

Bemerkungen

Die ChDir-Anweisung wechselt das Standardverzeichnis, aber nicht das Standardlaufwerk. Ist das Standardlaufwerk zum Beispiel C:, dann wechselt die folgende Anweisung zwar das Standardverzeichnis auf Laufwerk D:, aber C: bleibt das Standardlaufwerk:

ChDir "D:\TMP"

Auf dem Power Macintosh ändert sich das Standardlaufwerk immer auf das Laufwerk, das in Pfad angegeben wird. Eine vollständige Pfadangabe beginnt mit dem Volumennamen, eine relative Pfadangabe beginnt mit einem Doppelpunkt (:). ChDir löst alle im Pfad angegebenen Aliase auf:

ChDir "MacDrive:Tmp"	' Auf dem Macintosh.

Beim Wechseln relativer Verzeichnisse werden unter Microsoft Windows und auf dem Macintosh unterschiedliche Symbole verwendet:

ChDir ".."	' Wechselt unter Microsoft Windows ein Verzeichnis nach oben.

ChDir "::"	' Wechselt auf dem Macintosh ein Verzeichnis nach oben.


ChDrive-Anweisung

Wechselt das aktuelle Laufwerk.

Syntax

ChDrive Laufwerk

Das erforderliche Argument Laufwerk ist ein Zeichenfolgenausdruck, der ein existierendes Laufwerk angibt. Wenn Sie eine Null-Zeichenfolge ("") angeben, ändert sich das aktuelle Laufwerk nicht. Ist das Argument Laufwerk eine Zeichenfolge mit mehreren Zeichen, so verwendet die ChDrive-Anweisung nur den ersten angegebenen Buchstaben.

Beim Macintosh wechselt ChDrive vom aktuellen Verzeichnis zum Stammverzeichnis des angegebenen Laufwerks.


CurDir-Funktion

Gibt einen Wert vom Typ Variant (String) zurück, der den aktuellen Pfad darstellt.

Syntax

CurDir[(Laufwerk)]

Das optionale Argument Laufwerk ist ein Zeichenfolgenausdruck, der ein existierendes Laufwerk angibt. Ist kein Laufwerk angegeben, oder enthält das Laufwerk eine Null-Zeichenfolge (""), so gibt die CurDir-Funktion den Pfad des aktuellen Laufwerks zurück. Beim Macintosh ignoriert CurDir die Angabe für Laufwerk und gibt einfach den Pfad des aktuellen Laufwerks zurück.


Dir-Funktion

Gibt eine Zeichenfolge (String) zurück, die den Namen einer Datei, eines Verzeichnisses oder eines Ordners darstellt, der mit einem bestimmten Suchmuster, einem Dateiattribut oder mit der angegebenen Datenträger- bzw. Laufwerksbezeichnung übereinstimmt.

Syntax

Dir[(Pfadname[, Attribute])]

Die Syntax der Dir-Funktion besteht aus folgenden Teilen:

Teil	Beschreibung
Pfadname	Optional. Zeichenfolgenausdruck, der einen Dateinamen angibt. Der Dateiname kann ein Verzeichnis oder einen Ordner sowie ein Laufwerk enthalten. Eine Null-Zeichenfolge ("") wird zurückgegeben, wenn der Pfad aus Pfadname nicht gefunden werden kann
Attribute	Optional. Eine Konstante oder ein numerischer Ausdruck, deren Summe die Dateiattribute angibt. Wenn das Argument nicht angegeben wird, werden alle Dateien, die dem Argument Pfadnamen entsprechen, zurückgegeben.
Einstellungen

Das Argument Attribute hat die folgenden Einstellungen:

Konstante	Wert	Beschreibung
vbNormal	0	(Voreinstellung) Dateien ohne Attribute.
vbReadOnly	1	Schreibgeschützte Dateien, zusätzlich zu Dateien ohne Attributen.
vbHidden	2	Versteckte Dateien, zusätzlich zu Dateien ohne Attributen.
VbSystem	4	Systemdatei, zusätzlich zu Dateien ohne Attributen. Beim Macintosh nicht verfügbar.
vbVolume	8	Datenträgerbezeichnung. Falls andere Attribute angegeben wurden, wird vbVolume ignoriert. Beim Macintosh nicht verfügbar.
vbDirectory	16	Verzeichnis oder Ordner, zusätzlich zu Dateien ohne Attributen.
vbAlias	64	Der angegebene Dateiname ist ein Alias. Nur beim Mactintosh verfügbar.
Anmerkung Diese Konstanten werden durch Visual Basic für Applikationen definiert und können beliebig im Code anstelle der tatsächlichen Werte verwendet werden.

Bemerkungen

Die Dir-Funktion unterstützt unter Microsoft Windows die Verwendung von * (Platzhalter für mehrere Zeichen) und ? (Platzhalter für ein einzelnes Zeichen) zur Angabe von mehreren Dateien. Beim Macintosh werden diese Zeichen als normale Dateinamenzeichen behandelt und können nicht als Platzhalter zur Angabe mehrerer Dateien verwendet werden.

Da beim Macintosh Platzhalter nicht unterstützt werden, muß man den Dateitypen verwenden, um eine Gruppe von Dateien zu identifizieren. Sie können die MacID-Funktion verwenden, um nach Dateitypen statt nach Dateinamen zu suchen. Beispiel: Die folgenden Anweisung gibt den Namen der ersten TEXT-Datei im aktuellen Ordner zurück:

Dir("EinPfad", MacID("TEXT"))

Um alle Dateien in einem Ordner zu berücksichtigen, geben Sie eine leere Zeichenfolge an:

Dir("")

Wenn Sie die MacID-Funktion mit Dir unter Microsoft Windows, erhalten Sie eine Fehlermeldung.

Jeder Wert der Konstante Attribute, der größer ist als 256, wird als Wert von MacID angesehen.

Beim ersten Aufrufen der Dir-Funktion müssen Sie das Argument Pfadname angeben, da ansonsten ein Fehler auftritt. Wenn Sie Dateiattribute angeben, muß Pfadname auch angegebeben werden.

Die Dir-Funktion gibt den ersten Dateinamen zurück, der mit dem Argument Pfadname übereinstimmt. Weitere mit dem Argument Pfadname übereinstimmende Dateinamen erhalten Sie durch das erneute Aufrufen der Dir-Funktion ohne Angabe von Argumenten. Wenn keine weiteren übereinstimmenden Dateinamen gefunden werden, gibt die Dir-Funktion eine Null-Zeichenfolge ("") zurück. Wurde einmal eine Null-Zeichenfolge zurückgegeben, müssen Sie bei nachfolgenden Aufrufen wieder das Argument Pfadname angeben, da sonst ein Fehler auftritt. Sie können einen anderen Wert für Pfadname angeben, bevor sie alle mit dem aktuellen Wert von Pfadname übereinstimmenden Dateinamen abgerufen haben. Ein rekursiver Aufruf der Dir-Funktion ist allerdings nicht möglich. Beim Aufruf von Dir mit dem Attribut vbDirectory werden Unterverzeichnisse nicht fortlaufend zurückgegeben.

Tip Die Dateinamen werden unsortiert zurückgegeben. Bei Bedarf können Sie die zurückgegebenen Dateinamen in einem Datenfeld speichern und das Datenfeld anschließend sortieren.


Environ-Funktion

Gibt die mit einer Betriebssystem-Umgebungsvariablen verbundene Zeichenfolge (String) zurück. Nicht verfügbar auf dem Macintosh

Syntax

Environ({envstring | number})

Die Syntax der Environ-Funktion verwendet die folgenden benannten Argumente:

Teil	Beschreibung
envstring	Optional. Ein Zeichenfolgenausdruck, der den Namen einer Umgebungsvariablen enthält.
Number	Optional. Ein numerischer Ausdruck entsprechend der numerischen Reihenfolge der Umgebungszeichenfolge in der Tabelle für Umgebungszeichenfolgen. Das Argument number kann ein beliebiger numerischer Ausdruck sein, der aber vor der Auswertung auf eine ganze Zahl gerundet wird.
Bemerkungen

Kann die mit envstring verbundene Zeichenfolge in der Tabelle für Umgebungszeichenfolgen nicht gefunden werden, so wird eine Null-Zeichenfolge ("") zurückgegeben. Andernfalls gibt Environ den Text zurück, der der angegebenen Umgebungszeichenfolge (envstring) zugewiesen wurde. Dies ist der Text, der nach dem Gleichheitszeichen (=) in der Tabelle für die Umgebungszeichenfolgen für diese Umgebungsvariable angegeben ist.

Wenn Sie number angeben, wird die Zeichenfolge zurückgegeben, die an der entsprechenden numerischen Position in der Tabelle für Umgebungszeichenfolgen steht. In diesem Fall gibt Environ den ganzen Text (einschließlich envstring) zurück. Gibt es keine Umgebungszeichenfolge an der angegebenen Position, so gibt Environ eine Null-Zeichenfolge ("") zurück.


FileCopy-Anweisung

Kopiert eine Datei.

Syntax

FileCopy source, destination

Die Syntax der FileCopy-Anweisung verwendet die folgenden benannten Argumente:

Teil	Beschreibung
source	Erforderlich. Zeichenfolgenausdruck, der den Namen der zu kopierenden Datei angibt. Source kann ein Verzeichnis oder einen Ordner sowie ein Laufwerk enthalten.
destination	Erforderlich. Zeichenfolgenausdruck, der den Namen der Zieldatei angibt. Destination kann ein Verzeichnis oder einen Ordner sowie ein Laufwerk enthalten.
Bemerkungen

Wenn Sie mit der FileCopy-Anweisung eine momentan geöffnete Datei kopieren möchten, tritt ein Fehler auf.


FileDateTime-Funktion

Gibt einen Wert vom Typ Variant (Date) zurück, das den Tag und die Uhrzeit der Erstellung bzw. der letzten Änderung der Datei anzeigt.

Syntax

FileDateTime(Pfadname)

Das erforderliche Argument Pfadname ist ein Zeichenfolgenausdruck, der einen Dateinamen angibt. Pfadname kann ein Verzeichnis oder einen Ordner sowie ein Laufwerk enthalten.


FileLen-Funktion

Gibt einen Wert vom Typ Long zurück, der die Länge einer Datei in Bytes angibt.

Syntax

FileLen(Pfadname)

Das erforderliche Argument Pfadname ist ein Zeichenfolgenausdruck, der eine Datei angibt. Pfadname kann ein Verzeichnis oder einen Ordner sowie ein Laufwerk enthalten.

Bemerkungen

Wenn Sie die FileLen-Funktion für eine bereits geöffnete Datei aufrufen, erhalten Sie einen Rückgabewert, der der Dateilänge unmittelbar vor dem Öffnen der Datei entspricht.

Anmerkung Mit der LOF-Funktion können Sie die Dateilänge einer geöffneten Datei bestimmen.


GetAttr-Funktion

Gibt einen Wert vom Typ Integer zurück, der die Attribute einer Datei, eines Verzeichnisses oder eines Ordners darstellt.

Syntax

GetAttr(Pfadname)

Das erforderliche Argument Pfadname ist ein Zeichenfolgenausdruck, der einen Dateinamen angibt. Pfadname kann ein Verzeichnis oder Ordner sowie ein Laufwerk enthalten.

Rückgabewerte

Der von GetAttr zurückgegebene Wert ist die Summe der folgenden Attributwerte:

Konstante	Wert	Beschreibung
vbNormal	0	Normal.
vbReadOnly	1	Schreibgeschützt.
vbHidden	2	Versteckt.
vbSystem	4	Systemdatei. Beim Macintosh nicht verfügbar.
vbDirectory	16	Verzeichnis oder Ordner.
vbArchive	32	Datei wurde seit dem letzten Sichern geändert. Beim Macintosh nicht verfügbar.
vbAlias	64	Angegebener Dateiname ist ein Alias Nur beim Macintosh verfügbar.
Anmerkung Diese Konstanten werden durch Visual Basic für Applikationen definiert und können beliebig im Code anstelle der tatsächlichen Werte verwendet werden

Bemerkungen

Zur Ermittlung der Attributeinstellungen können Sie den And-Operator verwenden und einen bitweisen Vergleich zwischen dem Rückgabewert der GetAttr-Funktion und dem Wert des jeweils gewünschten Dateiatttributs durchführen. Ist das Ergebnis ungleich Null, dann ist das Attribut für die angegebene Datei gesetzt. Zum Beispiel hat der folgende And-Ausdruck den Rückgabewert Null, wenn das Archivattribut nicht gesetzt ist:

Ergebnis = GetAttr(FName) And vbArchive

Der Rückgabewert ist ungleich Null, wenn das Archivattribut gesetzt ist.


Kill-Anweisung

Löscht Dateien von einem Datenträger.

Syntax

Kill Pfadname

Das erforderliche Argument Pfadname ist ein Zeichenfolgenausdruck, der eine oder mehrere zu löschende Dateien angibt. Pfadname kann ein Verzeichnis oder einen Ordner sowie ein Laufwerk enthalten.

Bemerkungen

Die Kill-Anweisung unterstützt die Verwendung von * (Platzhalter für mehrere Zeichen) und ? (Platzhalter für ein einzelnes Zeichen) zur Angabe von mehreren Dateien. Beim Macintosh jedoch werden diese Zeichen als normale Dateinamenzeichen angesehen und können nicht als Platzhalter verwendet werden, um mehrere Dateien gleichzeitig anzugeben.

Da beim Macintosh keine Platzhalter unterstützt werden, muß man die Dateitypen verwenden, um eine Gruppe von Dateien, die zu löschen sind, angeben zu können. Sie können die MacID-Funktion verwenden, um den Dateitypen anzugeben, damit sie nicht für jede Datei den Befehl wiederholen müssen. Beispiel: Die folgende Anweisung löscht alle TEXT-Dateien im aktuellen Ordner:

Kill MacID("TEXT")

Wenn Sie die MacID-Funktion mit Kill unter Microsoft Windows verwenden, tritt ein Fehler auf.

Beim Versuch, mit der Kill-Anweisung eine geöffnete Datei zu löschen, tritt ein Fehler auf.

Anmerkung Verwenden Sie die RmDir-Anweisung zum Löschen von Verzeichnissen.


MkDir-Anweisung

Erstellt ein neues Verzeichnis oder einen neuen Ordner.

Syntax

MkDir Pfad

Das erforderliche Argument Pfad ist ein Zeichenfolgenausdruck, der das zu erstellende Verzeichnis oder den zu erstellenden Ordner angibt. Pfad kann das Laufwerk enthalten. Wenn kein Laufwerk angegeben ist, erstellt die MkDir-Anweisung ein neues Verzeichnis oder einen neuen Ordner auf dem aktuellen Laufwerk.


Name-Anweisung

Benennt eine Datei, ein Verzeichnis oder einen Ordner um.

Syntax

Name AlterPfadname As NeuerPfadname

Die Syntax der Name-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
AlterPfadname	Erforderlich. Zeichenfolgenausdruck, der einen existierenden Dateinamen und seinen Pfad angibt. In dem Wert kann ein Verzeichnis oder Ordner sowie ein Laufwerk enthalten sein.
NeuerPfadname	Erforderlich. Zeichenfolgenausdruck, der einen neuen Dateinamen und seinen Pfad angibt. In dem Wert kann ein Verzeichnis oder Ordner sowie ein Laufwerk enthalten sein. Die in NeuerPfadname angebene Datei darf noch nicht existieren.
Bemerkungen

Sowohl der Pfad in NeuerPfadname als auch der Pfad in AlterPfadname müssen sich auf demselben Laufwerk befinden. Wenn der Pfad in NeuerPfadname existiert und vom Pfad in AlterPfadname abweicht, verschiebt die Name-Anweisung die Datei in das neue Verzeichnis oder in den neuen Ordner und benennt sie ggf. um. Wenn sich die Pfadangaben in NeuerPfadname und AlterPfadname unterscheiden und der Dateiname gleich ist, verschiebt Name die Datei an die neue Position, ohne den Dateinamen zu ändern. Mit Name können sie eine Datei von einem Verzeichnis oder Ordner in ein anderes verschieben. Ein Verzeichnis oder einen Ordner können sie jedoch nicht verschieben.

Sie erhalten eine Fehlermeldung, wenn Sie Name auf einer geöffneten Datei ausführen. Die Datei muß geschlossen werden, bevor sie umbenannt werden kann. Das Argument Name darf die Zeichen * (Platzhalter für mehrere Zeichen) und ? (Platzhalter für ein einzelnes Zeichen) nicht enthalten.


QBColor-Funktion

Gibt einen Wert vom Typ Long zurück, der dem RGB-Farb-Code einer bestimmten Farbnummer entspricht.

Syntax

QBColor(Farbe)

Das erforderliche Argument Farbe entspricht einer ganzen Zahl im Bereich von 0 bis 15.

Einstellungen

Das Argument Farbe hat folgende Einstellungen:

Nummer	Farbe	Nummer	Farbe
0	Schwarz	8	Grau
1	Blau	9	Hellblau
2	Grün	10	Hellgrün
3	Cyan	11	Hellcyan
4	Rot	12	Hellrot
5	Magenta	13	Hellmagenta
6	Gelb	14	Hellgelb
7	Weiß	15	Leuchtend Weiß
Bemerkungen

Das Argument Farbe stellt die von früheren Basic-Versionen (wie Microsoft Visual Basic für MS-DOS und dem Basic-Compiler) verwendeten Farbwerte dar. Beginnend mit dem niedrigst wertigen Byte gibt der zurückgegebene Wert die Rot-, Grün- und Blauwerte an, mit denen die entsprechende Farbe in dem RGB-System gesetzt wird, das von Visual Basic für Applikationen verwendet wird.


RGB-Funktion

Gibt einen Wert vom Typ Long zurück, der einen RGB-Farbwert darstellt.

Syntax

RGB(red, green, blue)

Die Syntax der RGB-Funktion verwendet die folgenden benannten Argumente:

Teil	Beschreibung
red	Erforderlich. Wert vom Typ Variant (Integer). Zahl im Bereich von 0 bis 255 (einschließlich), die die Rot-Komponente der Farbe darstellt.
green	Erforderlich. Wert vom Typ Variant (Integer). Zahl im Bereich 0 bis 255 (einschließlich, die die Grün-Komponente der Farbe darstellt.
blue	Erforderlich. Wert vom Typ Variant (Integer). Zahl im Bereich von 0 bis 255 (einschließlich), die die Blau-Komponente der Farbe darstellt.
Bemerkungen

Methoden und Eigenschaften von Anwendungen, für die eine Farbe angegeben werden kann, erwarten eine Zahl, die einen RGB-Farbwert darstellt. Ein RGB-Farbwert gibt die relative Intensität von Rot, Grün und Blau an, um eine bestimmte Farbe, die angezeigt werden soll, hervorzurufen.

Wenn der Wert für ein beliebiges Argument der RGB-Funktion 255 überschreitet, wird 255 angenommen.

Die folgende Tabelle enthält einige Standardfarben mit den zugehörigen Rot-, Grün- und Blauwerten:

Farbe	Rot- Komponente	Grün- Komponente	Blau- Komponente
Schwarz	0	0	0
Blau	0	0	255
Grün	0	255	0
Cyan	0	255	255
Rot	255	0	0
Magenta	255	0	255
Gelb	255	255	0
Weiß	255	255	255
Die von dieser Funktion zurückgegebenen RGB-Farbwerte sind nicht mit den vom Macintosh-Betriebssystem zurückgegebenen kompatibel. Sie können im Zusammenhang mit Microsoft-Anwendungen für den Macintosh verwendet werden, sollten aber nicht zum Einsatz kommen, wenn Farbänderungen direkt dem Macintosh-Betriebssystem mitgeteilt werden.


RmDir-Anweisung

Entfernt ein existierendes Verzeichnis oder einen existierenden Ordner.

Syntax

RmDir Pfad

Das erforderliche Argument Pfad ist ein Zeichenfolgenausdruck, der das zu löschende Verzeichnis oder den zu löschenden Ordner angibt. Pfad kann das Laufwerk beinhalten. Wenn kein Laufwerk angegeben ist, löscht RmDir das Verzeichnis oder den Ordner auf dem aktuellen Laufwerk.

Bemerkungen

Ein Fehler tritt auf, wenn Sie RmDir für ein Verzeichnis oder einen Ordner ausführen, in dem Dateien enthalten sind. Löschen Sie zuerst alle Dateien mit der Kill-Anweisung, bevor Sie ein Verzeichnis oder einen Ordner entfernen.


SetAttr-Anweisung

Legt die Attribute für eine Datei fest.

Syntax

SetAttr pathname, attributes

Die Syntax der SetAttr-Anweisung verwendet die folgenden benannten Argumente:

Teil	Beschreibung
pathname	Erforderlich. Zeichenfolgenausdruck, der einen Dateinamen angibt. Der Dateiname kann ein Verzeichnis oder einen Ordner sowie ein Laufwerk enthalten.
attributes	Erforderlich. Konstante oder numerischer Ausdruck, die/der die Summe der Dateiattribute angibt.
Einstellungen

Das Argument attributes hat die folgenden Einstellungen:

Konstante	Wert	Beschreibung
vbNormal	0	Normal (Voreinstellung).
vbReadOnly	1	Schreibgeschützt.
vbHidden	2	Versteckt.
vbSystem	4	Systemdatei. Beim Macintosh nicht verfügbar.
vbArchive	32	Datei wurde seit dem letzten Speichern geändert.
vbAlias	64	Der angegebene Dateiname ist ein Alias. Nur beim Macintosh verfügbar.
Anmerkung Diese Konstanten werden durch Visual Basic für Applikationen definiert und können beliebig im Code anstelle der tatsächlichen Werte verwendet werden.

Bemerkungen

Das Festlegen von Attributen einer geöffneten Datei führt zu einem Laufzeitfehler.


Close-Anweisung (Beispiel)

In diesem Beispiel wird die Close-Anweisung zum Schließen von drei Dateien verwendet, die mit dem Zugriffsmodus Output geöffnet waren.

Dim I, Dateiname

For I = 1 To 3	' Schleife dreimal durchlaufen.

Dateiname = "TEST" & I	' Dateiname erstellen.

Open Dateiname For Output As #I	' Datei öffnen.

Print #I, "Ein Test."	' Zeichenfolge in Datei schreiben.

Next I

Close	' Alle 3 geöffneten Dateien

' schließen.


EOF-Funktion (Beispiel)

In diesem Beispiel wird die EOF-Funktion verwendet, um das Ende einer Datei zu erkennen. In diesem Beispiel wird angenommen, daß DATEI1 eine Textdatei mit einigen Textzeilen ist.

Dim Dateidaten

Open "DATEI1" For Input As #1	' Datei zum Einlesen öffnen.

Do While Not EOF(1)	' Auf Dateiende abfragen.

Line Input #1, Dateidaten	' Datenzeilen lesen.

Debug.Print Dateidaten	' Daten im Direktfenster ausgeben.

Loop

Close #1	' Datei schließen.


FileAttr-Funktion (Beispiel)

In diesem Beispiel wird die FileAttr-Funktion verwendet, um den Dateimodus und die Datei-Zugriffsnummer für eine geöffnete Datei zurückzugeben. Die Datei-Zugriffsnummer wird nur auf 16-Bit-Systemen zurückgegeben. Auf 32-Bit-Systemen erzeugt das Übergeben von 2 als zweitem Argument einen Fehler.

Dim DateiNum, Modus, ZNummer

DateiNum = 1	' Zugriffsnummer festlegen.

Open "DATEI1" For Append As DateiNum	' Datei öffnen.

Modus = FileAttr(DateiNum, 1)	' Liefert 8 (Dateimodus Append).

ZNummer = FileAttr(DateiNum, 2)	' Liefert Datei-Zugriffsnummer.

Close DateiNum	' Datei schließen.


FreeFile-Funktion (Beispiel)

In diesem Beispiel wird die FreeFile-Funktion verwendet, um die nächste verfügbare Dateinummer zurückzugeben. In der Schleife werden fünf Dateien zur Ausgabe geöffnet und mit Beispieldaten beschrieben.

Dim Index1, Dateinummer

For Index1 = 1 To 5	' Schleife 5 mal

' durchlaufen.

Dateinummer = FreeFile	' neue Datei-Nr.

' bestimmen.

Open "TEST" & Index1 For Output As #Dateinummer	' Dateiname

' erstellen.

Write #Dateinummer, "Beispieldaten."	' Text ausgeben.

Close #Dateinummer	' Datei schließen.

Next Index1


Get-Anweisung (Beispiel)

In diesem Beispiel wird die Get-Anweisung verwendet, um Daten aus einer Datei in eine Variable einzulesen. In diesem Beispiel wird angenommen, daß DATEI1 eine Datei mit fünf Datensätzen des benutzerdefinierten Typs Datensatz ist.

Type Datensatz	' Datentyp definieren.

Kennung As Integer

Name As String * 20

End Type

Dim DSatz1 As Datensatz, Position	' Variablen deklarieren.

' Beispieldatei mit wahlfreiem Zugriff öffnen.

Open "DATEI1" For Random As #1 Len = Len(DSatz1)

' Beispieldatei mit Get-Anweisung einlesen.

Position = 3	' Datensatznummer definieren.

Get #1, Position, DSatz1	' 3. Datensatz lesen.

Close #1	' Datei schließen.


Input #-Anweisung (Beispiel)

In diesem Beispiel wird die Input #-Anweisung verwendet, um Daten aus einer Datei in zwei Variablen einzulesen. In diesem Beispiel wird angenommen, daß DATEI1 eine Datei ist, in die mit der Write #-Anweisung einige Zeilen mit Daten geschrieben wurden. Jede Zeile enthält eine Zeichenfolge in Anführungszeichen und eine davon durch ein Komma getrennte Zahl, zum Beispiel ("Hallo", 234).

Dim Text1, Zahl1

Open "DATEI1" For Input As #1	' Datei zum Einlesen öffnen.

Do While Not EOF(1)	' Schleife bis Dateiende.

Input #1, Text1, Zahl1	' Daten in zwei Variablen einlesen.

Debug.Print Text1, Zahl1	' Daten im Direktfenster ausgeben.

Loop

Close #1	' Datei schließen.


Input-Funktion (Beispiel)

In diesem Beispiel wird die Input-Funktion verwendet, um Zeichen einzeln aus einer Datei zu lesen und im Direktfenster auszugeben. In diesem Beispiel wird angenommen, daß DATEI1 eine Textdatei ist, die einige Zeilen mit Beispieldaten enthält.

Dim Zeichen1

Open "DATEI1" For Input As #1	' Datei öffnen.

Do While Not EOF(1)	' Schleife bis Dateiende.

Zeichen1 = Input(1, #1)	' Ein Zeichen lesen.

Debug.Print Zeichen1	' Ausgabe im Direktfenster.

Loop

Close #1	' Datei schließen.


Line Input #-Anweisung (Beispiel)

In diesem Beispiel wird die Line Input #-Anweisung verwendet, um eine Zeile aus einer sequentiellen Datei zu lesen und einer Variablen zuzuweisen. In diesem Beispiel wird angenommen, daß DATEI1 eine Textdatei ist, die einige Zeilen mit Beispieldaten enthält.

Dim Textzeile

Open "DATEI1" For Input As #1	' Datei öffnen.

Do While Not EOF(1)	' Schleife bis Dateiende.

Line Input #1, Textzeile	' Zeile in Variable einlesen.

Debug.Print Textzeile	' Ausgabe im Direktfenster.

Loop

Close #1	' Datei schließen.


Loc-Funktion (Beispiel)

In diesem Beispiel wird die Loc-Funktion verwendet, um die aktuelle Schreib-/Leseposition innerhalb einer geöffneten Datei zurückzugeben. In diesem Beispiel wird angenommen, daß DATEI1 eine Textdatei mit einigen Zeilen an Beispieldaten ist.

Dim Position1, Zeile1

Open "DATEI1" For Binary As #1	' Neu erstellte Datei öffnen.

Do While Not EOF(1)	' Schleife bis Dateiende.

Zeile1 = Zeile1 & Input(1, #1)	' Zeichen in Variable einlesen.

Position1 = Loc(1)	' Position in Datei bestimmen.

' Ausgabe im Direktfenster.

Debug.Print Zeile1; Tab; Position1

Loop

Close #1	' Datei schließen.


Lock-, Unlock-Anweisungen (Beispiel)

In diesem Beispiel wird die Verwendung der Anweisungen Lock und Unlock demonstriert. Solange ein Datensatz bearbeitet wird, können andere Prozesse nicht auf diesen Datensatz zugreifen. In diesem Beispiel wird angenommen, daß DATEI1 eine Datei ist, die fünf Datensätze des benutzerdefinierten Typs Datensatz enthält.

Type Datensatz	' Datentyp definieren.

Kennung As Integer

Name As String * 20

End Type

Dim DSatz1 As Datensatz DSatzNummer	' Variable deklarieren.

' Beispieldatei mit wahlfreiem Zugriff öffnen.

Open "DATEI1" For Random Shared As #1 Len = Len(DSatz1)

DSatzNummer = 4	' Datensatznummer festlegen.

Lock #1, DSatzNummer	' Datensatz sperren.

Get #1, DSatzNummer, DSatz1	' Datensatz lesen.

DSatz1.Kennung = 234	' Datensatz ändern.

DSatz1.Name = "Johann Schmidt"

Put #1, DSatzNummer, DSatz1	' Geänderten Datensatz schreiben.

Unlock #1, DSatzNummer	' Aktuellen Datensatz freigeben.

Close #1	' Datei schließen.


LOF-Funktion (Beispiel)

In diesem Beispiel wird die LOF-Funktion verwendet, um die Größe einer geöffneten Datei auf einem Datenträger zu bestimmen. In diesem Beispiel wird angenommen, daß DATEI1 eine Textdatei mit Beispieldaten ist.

Dim Dateilänge

Open "DATEI1" For Input As #1	' Datei öffnen.

Dateilänge = LOF(1)	' Länge der Datei bestimmen.

Close #1	' Datei schließen.


Open-Anweisung (Beispiel)

In diesem Beispiel werden verschiedene Einsatzmöglichkeiten der Open-Anweisung veranschaulicht, um Ein-/Ausgabeoperationen auf Dateien durchzuführen.

Der folgende Code öffnet die Datei DATEI1 für sequentielle Eingaben.

Open "DATEI1" For Input As #1

' Datei schließen, bevor sie in einem anderen Modus erneut

' geöffnet wird.

Close #1

Dieses Beispiel öffnet die Datei im Modus Binary und ausschließlich für Schreiboperationen.

Open "DATEI1" For Binary Access Write As #1

' Datei schließen, bevor sie in einem anderen Modus erneut

' geöffnet wird.

Close #1

Das folgende Beispiel öffnet die Datei mit wahlfreiem Zugriff. Die Datei enthält Datensätze des benutzerdefinierten Typs Datensatz.

Type Datensatz	' Datentyp definieren.

Kennung As Integer

Name As String * 20

End Type

Dim DSatz1 As Datensatz	' Variable deklarieren.

Open "DATEI1" For Random As #1 Len = Len(DSatz1)

' Datei schließen, bevor sie in einem anderen Modus erneut

' geöffnet wird.

Close #1

Dieses Codebeispiel öffnet die Datei für sequentielle Ausgaben. Alle Prozesse können Lese- und Schreiboperationen auf der Datei ausführen.

Open "DATEI1" For Output Shared As #1

' Datei schließen, bevor sie in einem anderen Modus erneut

' geöffnet wird.

Close #1

Dieses Codebeispiel öffnet die Datei im Modus Binary für Lesezugriffe. Andere Prozesse können die Datei nicht lesen.

Open "DATEI1" For Binary Access Read Lock Read As #1


Print #-Anweisung (Beispiel)

In diesem Beispiel wird die Print #-Anweisung zum Schreiben von Daten in eine Datei verwendet.

Open "DATEI1" For Output As #1	' Datei zur Ausgabe öffnen.

Print #1, "Nur ein Test"	' Text in Datei schreiben.

Print #1,	' Leerzeile in Datei schreiben.

Print #1, "Bereich1"; Tab ; "Bereich2"	' 2 Ausgabebereiche ausgeben.

Print #1, "Hallo" ; " " ; "Welt"	' Zeichenfolgen mit Leerzeichen

' trennen.

Print #1, Spc(5) ; "5 Leerzeichen "	' 5 führende Leerzeichen.

Print #1, Tab(10) ; "Hallo"	' Wort in Spalte 10 ausgeben.

' Boolesche, Datums-, Null- und Fehlerwerte zuweisen.

Dim Bool1, Datum1, Null1, Fehler1

Bool1 = False : Datum1 = #1. Juli 1965# : Null1 = Null

Fehler1 = CVErr(32767)

' True, False, Null und Error werden in der Sprache ausgegeben, die

' im Gebietsschema des Systems eingestellt wurde. Datumsangaben

' werden im voreingestellten kurzen Datumsformat geschrieben.

Print #1, Bool1 ; " ist ein boolescher Wert"

Print #1, Datum1 ; " ist ein Datum"

Print #1, Null1 ; " ist ein Nullwert"

Print #1, Fehler1 ; " ist ein Fehlerwert"

Close #1	' Datei schließen.


Put-Anweisung (Beispiel)

In diesem Beispiel wird die Put-Anweisung verwendet, um Daten in eine Datei zu schreiben. Insgesamt werden fünf Datensätze des benutzerdefinierten Typs Datensatz in die Datei geschrieben.

Type Datensatz	' Datentyp definieren.

Kennung As Integer

Name As String * 20

End Type

Dim DSatz1 As Datensatz DSatzNummer' Variable deklarieren.

' Datei mit wahlfreiem Zugriff öffnen.

Open "DATEI1" For Random As #1 Len = Len(DSatz1)

For DSatzNummer = 1 To 5	' 5 Schleifendurchläufe.

DSatz1.Kennung = DSatzNummer	' Kennung definieren.

DSatz1.Name = "Name" & DSatzNummer	' Zeichenfolge erstellen.

Put #1, DSatzNummer, DSatz1	' Datensatz in Datei

' schreiben.

Next DSatzNummer

Close #1	' Datei schließen.


Reset-Anweisung (Beispiel)

In diesem Beispiel wird die Reset-Anweisung verwendet, um alle geöffneten Dateien zu schließen und den Inhalt aller Dateipuffer auf den Datenträger zu schreiben. Hinweis: Die Variant-Variable Dateinummer kann sowohl als Zeichenfolge als auch als Zahl verwendet werden.

Dim Dateinummer

For Dateinummer = 1 To 5	' 5 Schleifendurchläufe.

' Datei zur Ausgabe öffnen. Dateinummer wird an die Zeichenfolge

' TEST für den Dateinamen angehängt, ist jedoch eine Zahl, die dem

' Zeichen # folgt.

Open "TEST" & Dateinummer For Output As #Dateinummer

Write #Dateinummer, "Hallo Welt"	' Daten in Datei schreiben.

Next Dateinummer

Reset	' Dateien schließen und

' auf Datenträger speichern.


Seek-Funktion (Beispiel)

In diesem Beispiel wird die Seek-Funktion verwendet, um die aktuelle Dateiposition zurückzugeben. In diesem Beispiel wird angenommen, daß DATEI1 eine Datei ist, die Datensätze vom benutzerdefinierten Typ Datensatz enthält.

Type Datensatz	' Datentyp definieren.

Kennung As Integer

Name As String * 20

End Type

Bei Dateien mit wahlfreiem Zugriff (Random) gibt Seek die Nummer des nächsten Datensatzes zurück.

Dim DSatz1 As Datensatz	' Variable deklarieren.

Open "DATEI1" For Random As #1 Len = Len(DSatz1)

Do While Not EOF(1)	' Schleife bis Dateiende.

Get #1, , DSatz1	' Nächsten Datensatz lesen.

Debug.Print Seek(1)	' Datensatznummer im

' Direktfenster ausgeben.

Loop

Close #1	' Datei schließen.

Bei Dateien, die nicht mit wahlfreiem Zugriff (Random) geöffnet wurden, gibt Seek die Byte-Position zurück, an der die nächste Operation stattfindet. In dem Beispiel enthält die Datei DATEI1 einige Zeilen mit Text.

Dim Zeichen1

Open "DATEI1" For Input As #1	' Datei zum Lesen öffnen.

Do While Not EOF(1)	' Schleife bis Dateiende.

Zeichen1 = Input(1, #1)	' Nächstes Zeichen lesen.

Debug.Print Seek(1)	' Byte-Position im

' Direktfenster ausgeben.

Loop

Close #1	' Datei schließen.


Seek-Anweisung (Beispiel)

In diesem Beispiel wird die Seek-Anweisung verwendet, um die Dateiposition für den nächsten Lese-/Schreibvorgang festzulegen. In diesem Beispiel wird angenommen, daß DATEI1 eine Datei ist, die Datensätze vom benutzerdefinierten Typ Datensatz enthält.

Type Datensatz	' Datentyp definieren.

Kennung As Integer

Name As String * 20

End Type

Bei Dateien mit wahlfreiem Zugriff (Random) legt Seek den nächsten Datensatz fest.

Dim DSatz1 As Datensatz, MaxGröße, DSatzNummer	' Variable deklarieren.

' Datei mit wahlfreiem Zugriff öffnen.

Open "DATEI1" For Random As #1 Len = Len(DSatz1)

MaxGröße = LOF(1) \ Len(DSatz1)	' Datensatzanzahl in Datei bestimmen.

' Die Schleife durchläuft alle Datensätze und beginnt mit dem

' letzten Datensatz.

For DSatzNummer = MaxGröße To 1 Step - 1

Seek #1, DSatzNummer	' Position festlegen.

Get #1, , DSatz1	' Datensatz lesen.

Next DSatzNummer

Close #1	' Datei schließen.

Bei Dateien, die nicht mit wahlfreiem Zugriff (Random) geöffnet wurden, legt Seek die Byte-Position fest, an der die nächste Operation stattfindet. In dem Beispiel enthält die Datei DATEI1 einige Zeilen mit Text.

Dim MaxGröße, ZeichenPos, Zeichen1

Open "DATEI1" For Input As #1	' Datei zum Lesen öffnen.

MaxGröße = LOF(1)	' Größe der Datei in Bytes bestimmen.

' Die Schleife liest alle Zeichen und beginnt mit dem letzten Zeichen.

For ZeichenPos = MaxGröße To 1 Step -1

Seek #1, ZeichenPos	' Position festlegen.

Zeichen1 = Input(1, #1)	' Zeichen lesen.

Next ZeichenPos

Close #1	' Datei schließen.


Spc-Funktion (Beispiel)

In diesem Beispiel wird die Spc-Funktion verwendet, um die Ausgabeposition in einer Datei und im Direktfenster festzulegen.

' Die Spc-Funktion kann zusammen mit der Print #-Anweisung

' verwendet werden.

Open "DATEI1" For Output As #1	' Datei zur Ausgabe öffnen.

Print #1, "10 Leerzeichen von hier"; Spc(10); "bis hier."

Close #1	' Datei schließen.

Die folgende Anweisung zeigt den auszugebenden Text (mit der Print-Methode) im Direktfenster an, nachdem 30 Leerzeichen ausgegeben wurden.

Debug.Print Spc(30); "30 Leerzeichen später..."


Tab-Funktion (Beispiel)

In diesem Beispiel wird die Tab-Funktion verwendet, um die Ausgabeposition in einer Datei oder im Direktfenster festzulegen.

' Die Tab-Funktion kann zusammen mit der Print #-Anweisung

' verwendet werden.

Open "DATEI1" For Output As #1	' Datei zur Ausgabe öffnen.

' Das zweite Wort wird ab Spalte 20 ausgegeben.

Print #1, "Hallo"; Tab(20); "Jens."

' Wenn kein Argument angegeben wird, wird der Cursor in den

' nächsten Ausgabebereich gesetzt.

Print #1, "Hallo"; Tab; "Jens"

Close #1	' Datei schließen.

Die Tab-Funktion kann ebenfalls zusammen mit der Print-Methode verwendet werden. Die folgende Anweisung gibt Text ab Spalte 10 aus.

Debug.Print Tab(10); "10 Spalten von links."


Width #-Anweisung (Beispiel)

In diesem Beispiel wird die Width #-Anweisung verwendet, um die Breite einer Ausgabezeile für eine Datei festzulegen.

Dim I

Open "DATEI1" For Output As #1	' Datei zur Ausgabe öffnen.

VBA.Width 1, 5	' Zeilenbreite auf 5 festlegen.

For I = 0 To 9	' 10 Schleifendurchläufe.

Print #1, Chr(48 + I);	' 5 Zeichen pro Zeile ausgeben.

Next I

Close #1	' Datei schließen.


Write #-Anweisung (Beispiel)

In diesem Beispiel wird die Write #-Anweisung verwendet, um unformatierte Daten in eine sequentielle Datei zu schreiben.

Open "DATEI1" For Output As #1	' Datei zur Ausgabe öffnen.

Write #1, "Hallo Welt", 234	' Die geschriebenen Daten

' sind durch Kommas getrennt.

Write #1,	' Leere Zeile schreiben.

Dim Bool1, Datum1, Null1, Fehler1

' Boolesche, Datums-, Null- und Fehlerwerte zuweisen.

Bool1 = False : Datum1 = #Juli 16, 1970# : Null1 = Null

Fehler1 = CVErr(32767)

' Boolesche Daten werden als #TRUE# oder #FALSE# ausgegeben.

' Datumsangaben werden in einem universellen Datumsformat geschrieben,

' zum Beispiel entspricht #1994-07-13# dem 13. Juli 1994.

' Null-Daten werden als #NULL# geschrieben.

' Fehlerdaten werden als #ERROR Fehlercode# geschrieben.

Write #1, Bool1 ; " ist ein boolescher Wert"

Write #1, Datum1 ; " ist ein Datum"

Write #1, Null1 ; " ist ein Nullwert"

Write #1, Fehler1 ; " ist ein Fehlerwert"

Close #1	' Datei schließen.


Close-Anweisung

Beendet das Lesen aus und das Schreiben in eine Datei, die mit der Open-Anweisung geöffnet wurde.

Syntax

Close [Dateinummerliste]

Das optionale Argument Dateinummerliste entspricht einer oder mehreren Dateinummern mit der folgenden Syntax, in der Dateinummer eine beliebige gültige Dateinummer ist:

[[#]Dateinummer] [, [#]Dateinummer] . . .

Bemerkungen

Wenn Sie Dateinummerliste nicht angeben, werden alle aktiven und mit der Open-Anweisung geöffneten Dateien geschlossen.

Wenn Sie Dateien schließen, die im Modus Output oder Append geöffnet wurden, wird der letzte Ausgabepuffer in den Betriebssystempuffer für diese Datei geschrieben. Der gesamte dieser Datei zugeordnete Pufferspeicher wird freigegeben.

Durch Ausführen der Close-Anweisung wird die Zuordnung einer Datei zu ihrer Dateinummer beendet.


EOF-Funktion

Gibt einen Wert vom Typ Integer zurück, der den Boolean-Wert True enthält, wenn das Ende einer Datei, die im Zugriffsmodus Random oder Input geöffnet wurde, erreicht worden ist.

Syntax

EOF(Dateinummer)

Das erforderliche Argument Dateinummer ist ein Wert vom Typ Integer, der eine beliebige gültige Dateinummer enthält.

Bemerkungen

EOF können Sie verwenden, um den Fehler zu vermeiden, der durch den Versuch einer Eingabe hinter dem Ende einer Datei ausgelöst wird.

Die EOF-Funktion gibt so lange False zurück, bis das Ende der Datei erreicht ist, und gibt danach den Wert True zurück. Bei Dateien, die im Zugriffsmodus Random oder Binary geöffnet wurden, gibt EOF so lange False zurück, bis die zuletzt ausgeführte Get-Anweisung keinen ganzen Datensatz mehr lesen kann.

Bei Dateien, die im Zugriffsmodus Binary geöffnet wurden, führt der Versuch, sie so lange mit Hilfe der Input-Funktion zu lesen, bis die EOF-Funktion True zurückgibt, zu einem Fehler. Verwenden Sie anstelle der EOF-Funktion die LOF- und die Loc-Funktion, wenn Sie mit Input binäre Dateien lesen, oder verwenden Sie die EOF-Funktion mit Get. Wenn Dateien im Zugriffsmodus Output geöffnet werden, gibt EOF immer True zurück.


FileAttr-Funktion

Gibt einen Wert vom Typ Long zurück, der den Zugriffsmodus für mit der Open-Anweisung geöffnete Dateien darstellt.

Syntax

FileAttr(filenumber, returntype)

Die Syntax der FileAttr-Funktion verwendet die folgenden benannten Argumente:

Teil	Beschreibung
filenumber	Erforderlich; ein Wert vom Typ Integer. Eine beliebige gültige Dateinummer.
returntype	Erforderlich; ein Wert vom Typ Integer. Zahl, die die Art der zurückzugebenden Informationen festlegt: Geben Sie 1 an, um einen Wert zur Kennzeichnung des Zugriffsmodus zurückgegeben. Ausschließlich auf 16-Bit Systemen können Sie 2 angeben, um die Dateizugriffsnummer des Betriebssystems zurückgegeben. Auf 32-Bit-Systemen wird returntype = 2 nicht unterstützt und verursacht daher einen Fehler.
Rückgabewerte

Wenn das Argument returntype den Wert 1 hat, zeigen die folgenden Rückgabewerte der Funktion die verschiedenen Dateizugriffsmodi an:

Zugriffsmodus	Wert
Input	1
Output	2
Random	4
Append	8
Binary	32


FreeFile-Funktion

Gibt einen Wert vom Typ Integer zurück, der die nächste verfügbare Dateinummer darstellt, die die Open-Anweisung zum Öffnen einer Datei verwenden kann.

Syntax

FreeFile[(Bereichsnummer)]

Das optionale Argument Bereichsnummer ist ein Wert vom Typ Variant, der den Bereich festlegt, aus dem die nächste Dateinummer zurückgegeben werden wird. Bei 0 (Voreinstellung) wird eine Dateinummer im Bereich 1 bis 255 (einschließlich) zurückgegeben. Bei 1 wird eine Dateinummer im Bereich von 256 bis 511 zurückgegeben.

Bemerkungen

Verwenden Sie FreeFile, wenn sie eine Dateinummer bereitstellen, die noch nicht in Gebrauch ist.


Get-Anweisung

Liest Daten aus einer geöffneten Datenträgerdatei in eine Variable ein.

Syntax

Get [#]Dateinummer, [Satznummer], Variablennummer

Die Syntax der Get-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Dateinummer	Erforderlich. Eine beliebige gültige Dateinummer.
Satznummer	Optional. Wert vom Typ Variant (Long). Datensatznummer (Dateien im Modus Random) oder Byte-Nummer (Dateien im Modus Binary), an der der Lesevorgang beginnt.
Variablennummer	Erforderlich. Name einer gültigen Variablen, in die die Daten eingelesen werden.
Bemerkungen

Daten, die mit der Get-Anweisung gelesen werden, sind normalerweise mit der Put-Anweisung in die Datei geschrieben worden.

Das erste Datenelement (Datensatz oder Byte) in einer Datei beginnt an Position 1, das zweite Datenelement an Position 2 usw. Wenn Sie Satznummer nicht angeben, liest die Anweisung das nächste Datenelement (Datensatz oder Byte) im Anschluß an die vorhergehende Get- oder Put-Anweisung (oder das Datenelement, auf das der Rückgabewert der letzten Seek-Funktion verweist). Sie müssen Listentrennzeichen angeben, zum Beispiel:

Get #4,,Dateipuffer

Für Dateien, die im Modus Random geöffnet werden, gelten die folgenden Regeln:

•	Unterschreitet die Länge der zu lesenden Daten die im Len-Abschnitt der Open-Anweisung festgelegte Länge, so liest Get nachfolgende Datensätze trotzdem immer ab der Datensatzgrenze, die durch die Datensatzlänge festgelegt ist. Der freie Raum zwischen dem Ende eines Datensatzes und dem Anfang des nächsten Datensatzes wird mit dem bestehenden Inhalt des Dateipuffers aufgefüllt. Da die Länge der Fülldaten nicht mit Sicherheit bestimmt werden kann, sollten die Datensatzlänge und die Länge der eingelesenen Daten immer übereinstimmen.

•	Wird eine Zeichenfolge variabler Länge in die Variable eingelesen, so liest Get zunächst einen 2-Byte-Deskriptor mit der Länge der Zeichenfolge und dann den eigentlichen Inhalt der Variablen. Daher muß die im Len-Abschnitt der Open-Anweisung festgelegte Datensatzlänge mindestens 2 Bytes größer sein als die tatsächliche Länge der Zeichenfolge.

•	Wenn die Zielvariable ein Wert vom Typ Variant mit einem numerischen Typ ist, liest Get zunächst 2 Bytes, die den VarType-Typ der Variant-Variablen festlegen, und dann die eigentlichen Daten dieser Variablen. Bei einer Variant-Variablen mit dem VarType 3 liest Get zum Beispiel 6 Bytes: 2 Bytes legen die Variant-Variable als VarType 3 (Long) fest, und 4 Bytes enthalten die Daten vom Typ Long. Die im Len-Abschnitt der Open-Anweisung angegebene Datensatzlänge muß also mindestens 2 Bytes größer sein als die aktuell zum Speichern der Variablen benötigte Anzahl an Bytes.

Anmerkung Sie können mit der Get-Anweisung ein Variant-Datenfeld vom Datenträger lesen, aber Sie können Get nicht verwenden, um einen skalaren Variant-Wert zu lesen, der ein Datenfeld enthält, oder um Objekte von einem Datenträger zu lesen.

•	Wenn die Zielvariable ein Wert vom Typ Variant mit dem VarType 8 (String) ist, liest Get zunächst 2 Bytes, die den VarType-Typ festlegen, dann 2 Bytes, die die Länge der Zeichenfolge anzeigen, und anschließend die Daten der Zeichenfolge. Die im Len-Abschnitt der Open-Anweisung angegebene Datensatzlänge muß also mindestens 4 Bytes größer sein als die tatsächliche Länge der Zeichenfolge.

•	Wenn die Zielvariable ein dynamisches Datenfeld ist, so liest Get einen Deskriptor, dessen Länge 2 plus 8 mal der Anzahl der Dimensionen entspricht, also 2 + 8 *AnzahlDimensionen. Die durch den Len-Abschnitt in der Open-Anweisung angegebene Datensatzlänge muß größer oder gleich der Summe aller Bytes sein, die erforderlich sind, um die Daten des Datenfeldes und den Datenfelddeskriptor zu lesen. Die folgende Datenfelddeklaration erfordert z.B. 118 Bytes, wenn das Datenfeld auf einen Datenträger geschrieben wird.

Dim Datenfeld(1 To 5,1 To 10) As Integer

Die 118 Bytes werden folgendermaßen verteilt: 18 Bytes für den Deskriptor (2 + 8 * 2), und 100 Bytes für die Daten (5 * 10 * 2).

•	Wenn die Zielvariable ein Datenfeld fester Länge ist, liest Get nur die Daten. Es wird kein Deskriptor gelesen.

•	Wenn die Zielvariable einen anderen Typ (weder Zeichenfolge variabler Länge, noch Variant) hat, liest Get nur die eigentlichen Daten. Die im Len-Abschnitt der Open-Anweisung angegebene Datensatzlänge muß also mindestens so groß sein wie die Länge der eingelesenen Daten.

•	Get verhält sich beim Lesen der Elemente eines benutzerdefinierten Typs so wie beim separaten Lesen der einzelnen Elemente, ohne aber die Leerräume zwischen den Elementen aufzufüllen. Auf dem Datenträger wird einem dynamischen Datenfeld eines benutzerdefinierten Typs (das mit Put geschrieben wurde) ein Deskriptor vorangestellt, dessen Länge sich aus der Summe von 2 und dem Achtfachen der Anzahl an Dimensionen ergibt, also 2 + 8 *AnzahlDimensionen. Die im Len-Abschnitt der Open-Anweisung angegebene Datensatzlänge muß mindestens so groß sein wie die Summe aller Bytes, die zum Lesen der einzelnen Elemente, einschließlich aller Datenfelder und ihrer Deskriptoren, erforderlich sind.

Für Dateien, die im Modus Binary geöffnet wurden, gelten dieselben Regeln wie für Dateien im Modus Random, mit den folgenden Ausnahmen:

•	Der Len-Abschnitt der Open-Anweisung hat keine Wirkung. Get liest alle Variablen nacheinander vom Datenträger, ohne Zwischenräume zwischen Datensätzen aufzufüllen.

•	Bei jedem Datenfeld, das kein Datenfeld eines benutzerdefinierten Typs ist, liest Get nur die Daten. Es wird kein Deskriptor gelesen.

•	Get liest Zeichenfolgen variabler Länge, die keine Elemente eines benutzerdefinierten Typs sind, ohne den 2 Bytes großen Längendeskriptor zu benötigen. Daher entspricht die Anzahl gelesener Bytes der Zeichenanzahl in der Zeichenfolge. Die folgenden Anweisungen lesen zum Beispiel 10 Bytes aus der Datei mit der Dateinummer 1:

VarString = String(10," ")

0	Get #1,,VarString


Input #-Anweisung

Liest Daten aus einer geöffneten sequentiellen Datei und weist sie Variablen zu.

Syntax

Input #Dateinummer, Varliste

Die Syntax der Input #-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Dateinummer	Erforderlich. Eine beliebige gültige Dateinummer.
Varliste	Erforderlich. Liste mit Variablen, die jeweils durch ein Komma als Listentrennzeichen voneinander getrennt sind und denen die aus der Datei gelesenen Werte zugewiesen werden. Es kann weder ein Datenfeld noch eine Objektvariable sein. Sie können jedoch Variablen verwenden, die ein Element eines Datenfeldes oder benutzerdefinierten Typs beschreiben.
Bemerkungen

Daten, die mit der Input #-Anweisung gelesen werden, sind normalerweise mit der Write #-Anweisung geschrieben worden. Verwenden Sie diese Anweisung nur bei Dateien, die im Modus Input oder Binary geöffnet wurden.

0	Beim Lesen erfolgt die Zuweisung von normalen Zeichenfolgen oder numerischen Daten zu Variablen ohne jegliche Umwandlung. Die folgenden Tabelle führt auf, wie Eingabedaten behandelt werden:

Daten	Der Variablen zugewiesener Wert
Trennendes Komma oder leere Zeile	Empty
#NULL#	Null
#TRUE# oder #FALSE#	True oder False
#jjjj-mm-tt hh:mm:ss#	Datums- und/oder Zeitangabe, die durch den Ausdruck dargestellt wird.
#ERROR Fehlernummer#	Fehlernummer (Variable ist ein Wert vom Typ Variant und als Fehlerwert gekennzeichnet).
Anführungszeichen (" ") in eingelesenen Daten werden nicht beachtet.

Anmerkung   Sie sollten keine Zeichenfolgen mit eingebetteten Anführungszeichen, z.B. "1,2""X", zur Verwendung mit der Input #-Anweisung schreiben: Input # analysiert diese Zeichenfolge als zwei vollständige separate Zeichenfolgen.

Datenelemente in einer Datei müssen in derselben Reihenfolge aufeinander folgen wie die Variablen in VarListe, und sie müssen denselben Datentyp haben. Sollen einer numerischen Variablen nichtnumerische Daten zugewiesen werden, so erhält die Variable den Wert Null.

0	Wird während der Eingabe eines Datenelements das Ende der Datei erreicht, so wird die Eingabe abgebrochen, und es tritt ein Fehler auf.

Anmerkung Wenn Daten mit der Input #-Anweisung aus einer Datei korrekt in Variablen eingelesen werden sollen, sollten Sie die Daten immer mit der Write #-Anweisung anstelle der Print #-Anweisung in die Datei schreiben. Nur durch die Verwendung der Write #-Anweisung können Sie sicherstellen, daß die einzelnen Datenfelder richtig voneinander getrennt werden.


Input-Funktion

Gibt einen Wert vom Typ String zurück, der Zeichen aus einer im Modus Input oder Binary geöffneten Datei enthält.

Syntax

Input(Zahl, [#]Dateinummer)

Die Syntax der Input-Funktion besteht aus folgenden Teilen:

Teil	Beschreibung
Zahl	Erforderlich. Ein beliebiger gültiger numerischer Ausdruck, der die Zahl der zurückzugebenden Zeichen angibt.
Dateinummer	Erforderlich. Eine beliebige gültige Dateinummer.
Bemerkungen

Daten, die mit der Input-Funktion gelesen werden, sind normalerweise mit der Print #- oder der Put-Anweisung in eine Datei geschrieben worden. Verwenden Sie diese Funktion nur für Dateien, die im Modus Input oder Binary geöffnet wurden.

0	Im Gegensatz zur Input #-Anweisung gibt die Input-Funktion alle gelesenen Zeichen zurück, einschließlich Kommas, Wagenrücklaufzeichen, Zeilenvorschubzeichen, Anführungszeichen und führende Leerzeichen.

1	Bei Dateien, die im Zugriffsmodus Binary geöffnet wurden, führt der Versuch, sie so lange mit Hilfe der Input-Funktion zu lesen, bis die EOF-Funktion True zurückgibt, zu einem Fehler. Verwenden Sie statt EOF die Funktionen LOF und Loc, wenn Sie mit Input binäre Dateien lesen. Oder verwenden Sie die EOF-Funktion mit Get.

Anmerkung Verwenden Sie die InputB-Funktion für Byte-Daten, die in Textdateien enthalten sind. Mit Hilfe von InputB gibt Zahl nicht die Anzahl der zurückzugebenden Zeichen an, sondern die Anzahl der zurückzugebenden Bytes.


Line Input #-Anweisung

Liest eine einzelne Zeile aus einer geöffneten sequentiellen Datei und weist sie einer Variablen vom Typ String zu.

Syntax

Line Input #Dateinummer, Variablenname

Die Syntax der Line Input #-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Dateinummer	Erforderlich. Eine beliebige gültige Dateinummer.
Variablenname	Erforderlich. Ein gültiger Variablenname vom Typ Variant oder String.
Bemerkungen

Daten, die mit der Line Input #-Anweisung gelesen werden, sind normalerweise mit der Print #-Anweisung in die Datei geschrieben worden.

0	Die Line Input #-Anweisung liest einzelne Zeichen aus einer Datei, bis ein Wagenrücklauf (Chr(13)) oder eine Folge aus Wagenrücklaufzeichen und Zeilenvorschubzeichen (Chr(13) + Chr(10)) gelesen wird. Die Folge aus Wagenrücklaufzeichen und Zeilenvorschubzeichen wird übersprungen und nicht an die gelesene Zeichenfolge angehängt.


Loc-Funktion

Gibt einen Wert vom Typ Long zurück, der die aktuelle Schreib-/Leseposition innerhalb einer geöffneten Datei angibt.

Syntax

Loc(Dateinummer)

Das erforderliche Argument Dateinummer ist eine beliebige gültige Dateinummer vom Typ Integer.

Bemerkungen

Die folgende Aufstellung beschreibt die Rückgabewerte für die einzelnen Dateizugriffsmodi:

Zugriffsmodus	Rückgabewert
Random	Nummer des letzten Datensatzes, der aus der Datei gelesen oder in die Datei geschrieben wurde.
Sequential	Aktuelle Byte-Position in der Datei dividiert durch 128. Informationen, die von Loc für sequentielle Dateien zurückgegeben werden, werden jedoch nicht verwendet und sind auch nicht erforderlich.
Binary	Position des letzten gelesenen oder geschriebenen Bytes.


Lock-, Unlock-Anweisungen

Regelt die Zugriffsmöglichkeiten anderer Prozesse auf eine Datei (oder auf Teile einer Datei), die mit der Open-Anweisung geöffnet wurde.

Syntax

Lock [#]Dateinummer[, Satzbereich]
. . .

0	Unlock [#]Dateinummer[, Satzbereich]

Die Syntax der Anweisungen Lock und Unlock besteht aus folgenden Teilen:

Teil	Beschreibung
Dateinummer	Erforderlich. Eine beliebige gültige Dateinummer.
Satzbereich	Optional. Der Datensatzbereich, für den die Sperre eingerichtet oder aufgehoben werden soll.
Einstellungen

Die Einstellungen für das Argument Satzbereich sind:

Satznummer | [Anfang] To Ende

Einstellung	Beschreibung
Satznummer	Nummer des Datensatzes (in Dateien mit dem Modus Random) oder Byte-Nummer (in Dateien mit dem Modus Binary), an der das Einrichten/Aufheben der Sperre beginnt.
Anfang	Nummer des ersten Datenelements (Datensatz oder Byte), für das die Sperre eingerichtet/aufgehoben werden soll.
Ende	Nummer des letzten Datenelements (Datensatz oder Byte), für das die Sperre eingerichtet/aufgehoben werden soll.
Bemerkungen

Die Anweisungen Lock und Unlock werden in Umgebungen verwendet, in denen mehrere Prozesse auf dieselbe Datei zugreifen können.

0	Die Anweisungen Lock und Unlock treten immer paarweise auf. Die verwendeten Argumente für Lock und Unlock müssen genau miteinander übereinstimmen.

1	Das erste Datenelement (Datensatz oder Byte) befindet sich in der Datei an Position 1, das zweite an Position 2 usw. Wenn Sie nur einen Datensatz angeben, wird die Sperre nur für diesen Datensatz eingerichtet bzw. aufgehoben. Wenn Sie einen Datensatzbereich angeben, ohne den Anfangsdatensatz (Anfang) anzugeben, wird die Sperre für alle Datensätze vom ersten Datensatz bis zum Ende des Bereichs (Ende) eingerichtet bzw. aufgehoben. Lock ohne Angabe von Satznummer sperrt die gesamte Datei. Unlock ohne Satznummer hebt die Sperre für die gesamte Datei auf.

2	Wenn die Datei für sequentielle Ein- oder Ausgaben geöffnet wurde, beziehen sich Lock und Unlock immer auf die gesamte Datei, auch wenn mit Anfang und Ende ein Bereich der Datei angegeben wurde.

Vorsicht Stellen Sie sicher, daß Sie alle Sperren mit einer Unlock-Anweisung entfernt haben, bevor Sie eine Datei schließen oder das Programm beenden. Nicht entfernte Sperren führen zu unvorhersehbaren Ergebnissen.


LOF-Funktion

Gibt einen Wert vom Typ Long zurück, der die Größe einer mit der Open-Anweisung geöffneten Datei in Bytes angibt.

Syntax

LOF(Dateinummer)

Das erforderliche Argument Dateinummer ist ein Wert vom Typ Integer, der eine gültige Dateinummer enthält.

Anmerkung Sie können die Länge einer nicht geöffneten Datei mit der FileLen-Funktion feststellen.


Open-Anweisung

Ermöglicht Ein-/Ausgaben (E/A) in eine bzw. aus einer Datei.

Syntax

Open Pfadname For Modus [Access Zugriff] [Sperre] As [#]Dateinummer [Len=Satzlänge]

Die Syntax der Open-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Pfadname	Erforderlich. Zeichenfolgenausdruck, der einen Dateinamen festlegt und auch Verzeichnis- oder Ordner- sowie ein Laufwerksangaben enthalten kann.
Modus	Erforderlich. Schlüsselwort, das den Zugriffsmodus für die Datei festlegt: Append, Binary, Input, Output oder Random. Wenn kein Modus festgelegt ist, wird die Datei im Zugriffsmodus Random geöffnet.
Zugriff	Optional. Schlüsselwort, das die Operationen festlegt, die auf der geöffneten Datei ausgeführt werden können: Read, Write oder Read Write.
Sperre	Optional. Schlüsselwort, das die Operationen festlegt, die von anderen Prozessen auf der geöffneten Datei ausgeführt werden können: Shared, Lock Read, Lock Write und Lock Read Write.
Dateinummer	Erforderlich. Eine gültige Dateinummer im Bereich von 1 bis 511 (einschließlich). Mit der FreeFile-Funktion erhalten Sie die nächste verfügbare Dateinummer.
Satzlänge	Optional. Zahl kleiner oder gleich 32.767 (Bytes). Bei Dateien mit wahlfreiem Zugriff ist dies die Datensatzlänge, bei sequentiellen Dateien die Anzahl der gepufferten Zeichen.
Bemerkungen

Sie müssen eine Datei öffnen, bevor E/A-Operationen darauf ausgeführt werden können. Open reserviert einen E/A-Puffer für die Datei und legt den Zugriffsmodus für diesen Puffer fest.

0	Wenn die durch Pfadname angegebene Datei nicht existiert, wird sie angelegt, sobald eine Datei im Modus Append, Binary, Output oder Random geöffnet wird.

1	Wenn die Datei bereits von einem anderen Prozeß geöffnet wurde und der angegebene Zugriffsmodus nicht zulässig ist, wird die Open-Operation abgebrochen, und es tritt ein Fehler auf.

2	Im Modus Binary wird der Len-Abschnitt nicht beachtet.

Wichtig In den Modi Binary, Input und Random können Sie eine Datei mit einer anderen Dateinummer öffnen, ohne sie zuvor schließen zu müssen. In den Modi Append und Output müssen Sie eine Datei erst schließen, bevor sie mit einer anderen Dateinummer geöffnet werden kann.


Print #-Anweisung

Schreibt Daten, die für die Ausgabe formatiert sind, in eine sequentielle Datei.

Syntax

Print #Dateinummer, [Ausgabeliste]

Die Syntax der Print #-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Dateinummer	Erforderlich. Eine beliebige gültige Dateinummer.
Ausgabeliste	Optional. Ausdruck oder Liste mit Ausdrücken, die ausgegeben werden sollen.
Einstellungen

Die Einstellungen des Arguments Ausgabeliste sind:

[{Spc(n) | Tab[(n)]}] [Ausdruck] [ZeichenPos]

Einstellung	Beschreibung
Spc(n)	Fügt Leerzeichen in die Ausgabe ein. n ist die Anzahl der einzufügenden Leerzeichen.
Tab(n)	Positioniert die Einfügemarke in einer absoluten Spaltennummer, die durch n angegeben wird. Tab ohne Argument setzt die Einfügemarke an den Anfang des nächsten Ausgabebereichs.
Ausdruck	Numerische Ausdrücke oder Zeichenfolgenausdrücke, die ausgegeben werden sollen.
ZeichenPos	Legt die Einfügemarke für das nächste Zeichen fest. Mit einem Semikolon positionieren Sie die Einfügemarke unmittelbar hinter dem zuletzt ausgegebenen Zeichen. Mit Tab(n) legen Sie eine absolute Spaltennummer als Einfügemarke fest. Tab ohne Argument setzt die Einfügemarke an den Anfang des nächsten Ausgabebereichs. Ohne Angabe von ZeichenPos wird das nächste Zeichen in der nächsten Zeile ausgegeben.
Bemerkungen

Daten, die mit der Print #-Anweisung geschrieben werden, werden normalerweise mit Line Input # oder der Input-Funktion aus einer Datei gelesen.

0	Wenn Sie Ausgabeliste nicht angeben und hinter Dateinummer nur ein Listentrennzeichen angeben, wird eine leere Zeile in die Datei ausgegeben. Mehrere Ausdrücke können mit einem Leerzeichen oder einem Semikolon voneinander getrennt werden. Beide Zeichen haben dieselbe Wirkung.

1	Daten vom Typ Boolean werden als True oder False ausgegeben. Die Schlüsselwörter True und False werden ungeachtet des Gebietsschemas nicht übersetzt.

2	Daten vom Typ Date werden in dem Format in die Datei geschrieben, das als kurzes Datums- und Zeitformat für Ihr System eingestellt ist. Wenn entweder die Datums- oder die Zeitangabe fehlt oder gleich Null ist, wird nur der jeweils vorhandene Teil in die Datei geschrieben.

3	Wenn Daten in der Ausgabeliste den Wert Empty haben, werden keine Daten in die Datei geschrieben. Haben Daten in der Ausgabeliste jedoch den Wert Null, so wird Null in die Datei geschrieben.

4	Bei Daten vom Typ Error wird Error Fehler-Code an die Datei ausgegeben. Das Schlüsselwort Error wird ungeachtet des Gebietsschemas nicht übersetzt.

5	Wenn Daten mit Print # in eine Datei geschrieben werden, werden sie korrekt unter Verwendung der Dezimaltrennzeichen des jeweiligen Gebietsschemas formatiert.

6	Da Print # ein Abbild der Daten in die Datei schreibt, müssen Sie die Daten voneinander trennen, damit sie richtig ausgegeben werden. Wenn Sie Tab ohne Argument verwenden, um die Ausgabeposition an den Anfang des nächsten Ausgabebereichs zu verschieben, schreibt Print # auch die zwischen den Ausgabebereichen liegenden Leerzeichen in die Datei.

Anmerkung Wenn Sie zu einem späteren Zeitpunkt Daten aus einer Datei mit der Input #-Anweisung lesen möchten, sollten Sie die Daten mit der Write #-Anweisung schreiben und die Print #-Anweisung vermeiden. Write # stellt die Integrität der einzelnen Datenfelder sicher, da mit dieser Anweisung die einzelnen Datenfelder voneinander getrennt werden, so daß sie später mit Input # eingelesen werden können. Write # sorgt darüber hinaus dafür, daß die Daten bei allen Gebietsschema-Einstellungen richtig eingelesen werden können.


Put-Anweisung

Schreibt Daten aus einer Variablen in eine Datenträgerdatei.

Syntax

Put [#]Dateinummer, [Satznummer], Variablennummer

Die Syntax der Put-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Dateinummer	Erforderlich. Eine beliebige gültige Dateinummer.
Satznummer	Optional. Wert vom Typ Variant (Long). Datensatznummer (für Dateien im Modus Random) oder Byte-Nummer (für Dateien im Modus Binary), bei der der Schreibvorgang beginnt.
Variablenname	Erforderlich. Name der Variablen, die die auf den Datenträger zu schreibenden Daten enthält.
Bemerkungen

Daten, die mit der Put-Anweisung geschrieben worden sind, werden normalerweise mit der Get-Anweisung aus der Datei gelesen.

0	Das erste Datenelement (Datensatz oder Byte) beginnt an Position 1, das zweite Datenelement an Position 2 usw. Wenn Sie Satznummer nicht angeben, schreibt die Anweisung das nächste Datenelement (also das Datenelement im Anschluß an die letzte Get- oder Put-Anweisung oder das Datenelement, auf das der Rückgabewert der letzten Seek-Funktion verweist). Sie müssen Kommas als Trennzeichen angeben, zum Beispiel:

Put #4,,Dateipuffer

Für Dateien, die im Modus Random geöffnet werden, gelten die folgenden Regeln:

•	Unterschreitet die Länge der zu schreibenden Daten die im Len-Abschnitt der Open-Anweisung festgelegte Länge, so beginnen mit Put geschriebene nachfolgende Datensätze trotzdem immer an der durch die Datensatzlänge festgelegten Grenze. Der freie Raum zwischen dem Ende eines Datensatzes und dem Anfang des nächsten Datensatzes wird mit dem bestehenden Inhalt des Dateipuffers aufgefüllt. Da die Länge der Fülldaten nicht mit Sicherheit bestimmt werden kann, sollte die Datensatzlänge und mit der Länge der geschriebenen Daten immer genau übereinstimmen. Wenn die Länge der geschriebenen Daten die im Len-Abschnitt der Open-Anweisung festgelegte Länge überschreitet, tritt ein Fehler auf.

•	Wenn Put eine Variable mit einer Zeichenfolge variabler Länge schreibt, wird zunächst ein 2-Byte-Deskriptor mit der Länge der Zeichenfolge und dann die Variable geschrieben. Daher muß die im Len-Abschnitt der Open-Anweisung festgelegte Datensatzlänge mindestens 2 Bytes größer sein als die tatsächliche Länge der Zeichenfolge.

•	Ist die geschriebene Variable ein Variant mit einem numerischen Typ, so schreibt Put zunächst 2 Bytes, die den VarType-Typ der Variant-Variablen festlegen, und dann die eigentliche Variable. Bei einer Variant-Variablen mit dem VarType-Typ 3 schreibt Put zum Beispiel 6 Bytes: 2 Bytes legen die Variant-Variable als VarType 3 (Long) fest, und 4 Bytes enthalten die Daten vom Typ Long. Die im Len-Abschnitt der Open-Anweisung angegebene Datensatzlänge muß also mindestens 2 Bytes größer sein als die tatsächlich zum Speichern der Variablen benötigte Anzahl an Bytes.

Anmerkung Sie können mit der Put-Anweisung ein Variant-Datenfeld auf den Datenträger schreiben, aber Sie können Put nicht verwenden, um einen skalaren Variant-Wert, der ein Datenfeld enthält, auf den Datenträger zu schreiben. Sie können Put auch nicht verwenden, um Objekte auf den Datenträger zu schreiben.

•	Wenn die geschriebene Variable ein Wert vom Typ Variant des VarType 8 (String) ist, schreibt Put zunächst 2 Bytes, die den VarType-Typ kennzeichnen, dann 2 Bytes, die die Länge der Zeichenfolge anzeigen, und anschließend die Daten der Zeichenfolge. Die im Len-Abschnitt der Open-Anweisung angegebene Datensatzlänge muß also mindestens 4 Bytes größer sein als die tatsächliche Länge der Zeichenfolge.

•	Wenn die Zielvariable ein dynamisches Datenfeld ist, schreibt Put einen Deskriptor, dessen Länge 2 plus 8 mal der Anzahl der Dimensionen entspricht, also 2 + 8 * AnzahlDimensionen. Die durch den Len-Abschnitt der Open-Anweisung angegebene Datensatzlänge muß größer oder gleich der Summe aller Bytes sein, die erforderlich sind, um die Daten des Datenfeldes und den Datenfelddeskriptor zu schreiben. Die folgende Datenfelddeklaration erfordert z.B. 118 Bytes, wenn das Datenfeld auf den Datenträger geschrieben wird.

Dim Datenfeld(1 To 5,1 To 10) As Integer

•	Die 118 Bytes sind folgendermaßen verteilt: 18 Bytes für den Deskriptor (2 + 8 * 2), und 100 Bytes für die Daten (5 * 10 * 2).

•	Wenn die Zielvariable ein Datenfeld fester Länge ist, schreibt Put nur die Daten. Es wird kein Deskriptor auf den Datenträger geschrieben.

•	Wenn die geschriebene Variable einen anderen Typ (weder Zeichenfolge variabler Länge noch Variant) hat, schreibt Put nur die eigentlichen Daten der Variablen. Die im Len-Abschnitt der Open-Anweisung angegebene Datensatzlänge muß also mindestens so groß sein wie die Länge der geschriebenen Daten.

•	Put verhält sich beim Schreiben benutzerdefinierter Typen genauso wie beim separaten Schreiben der einzelnen Elemente, ohne jedoch die Leerräume zwischen den Elementen aufzufüllen. Auf dem Datenträger wird einem dynamischen Datenfeld eines benutzerdefinierten Typs (das mit Put geschrieben wurde) ein Deskriptor vorangestellt, dessen Länge sich aus der Summe von 2 und dem Achtfachen der Anzahl an Dimensionen ergibt, also 2 + 8 * AnzahlDimensionen. Die im Len-Abschnitt der Open-Anweisung angegebene Datensatzlänge muß also mindestens so groß sein wie die Summe aller Bytes, die zum Schreiben der einzelnen Elemente, einschließlich aller Datenfelder und ihrer Deskriptoren, nötig sind.

Für Dateien, die im Modus Binary geöffnet wurden, gelten dieselben Regeln wie für Dateien im Modus Random, jedoch mit den folgenden Ausnahmen:

•	Der Len-Abschnitt der Open-Anweisung bleibt ohne Wirkung. Put schreibt alle Variablen nacheinander auf den Datenträger, ohne Zwischenräume zwischen Datensätzen aufzufüllen.

•	Bei jedem Datenfeld, das kein Datenfeld eines benutzerdefinierten Typs ist, schreibt Put nur die Daten. Es wird kein Deskriptor geschrieben.

•	Put schreibt Zeichenfolgen variabler Länge, die keine Elemente eines benutzerdefinierten Typs sind, ohne den 2 Bytes großen Längendeskriptor. Daher entspricht die Anzahl geschriebener Bytes der Zeichenanzahl in der Zeichenfolge. Die folgenden Anweisungen schreiben z.B. 10 Bytes in die Datei mit der Dateinummer 1:

VarString$ = String$(10," ")

0	Put #1,,VarString$


Reset-Anweisung

Schließt alle Datenträgerdateien, die mit der Open-Anweisung geöffnet wurden.

Syntax

Reset

Bemerkungen

Die Reset-Anweisung schließt alle aktiven Dateien, die mit der Open-Anweisung geöffnet wurden, und schreibt den Inhalt aller Dateipuffer auf den Datenträger.


Seek-Funktion

Gibt einen Wert vom Typ Long zurück, der die aktuelle Schreib-/Leseposition in einer Datei festlegt, die mit der Open-Anweisung geöffnet wurde.

Syntax

Seek(Dateinummer)

Das erforderliche Argument Dateinummer ist ein Wert vom Typ Integer, der eine gültige Dateinummer enthält.

Bemerkungen

Seek gibt einen Wert aus dem Bereich von 1 bis einschließlich 2.147.483.647 (entspricht 2^31 - 1) zurück.

0	Die folgende Aufstellung beschreibt die Rückgabewerte für die einzelnen Dateizugriffsmodi:

Modus	Rückgabewert
Random	Nummer des nächsten zu lesenden oder zu schreibenden Datensatzes.
Binary Output Append Input	Byte-Position, an der die nächste Operation stattfindet. Das erste Byte einer Datei hat die Position 1, das zweite Byte die Position 2 usw.


Seek-Anweisung

Legt in einer mit der Open-Anweisung geöffneten Datei die Position für den nächsten Lese- oder Schreibvorgang fest.

Syntax

Seek [#]Dateinummer, Position

Die Syntax der Seek-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Dateinummer	Erforderlich. Eine beliebige gültige Dateinummer.
Position	Erforderlich. Zahl im Bereich 1 bis 2.147.483.647 (einschließlich), die die Position für den nächsten Lese- oder Schreibvorgang angibt.
Bemerkungen

In einer Get- oder Put-Anweisung angegebene Datensatznummern setzen die Positionierung durch Seek außer Kraft.

0	Ein Schreibvorgang nach der Ausführung von Seek über das Ende einer Datei hinaus verlängert die Datei. Eine Seek-Operation mit einer negativen Position oder der Position Null führt zu einem Fehler.


Spc-Funktion

Wird zusammen mit der Print #-Anweisung oder der Print-Methode verwendet, um die Ausgabeposition festzulegen.

Syntax

Spc(n)

Das erforderliche Argument n gibt die Anzahl der Leerzeichen an, die vor dem Anzeigen oder Ausgeben des nächsten Ausdrucks in eine Liste eingefügt werden sollen.

Bemerkungen

Wenn n kleiner als die Breite einer Ausgabezeile ist, folgt die nächste Ausgabeposition unmittelbar auf die Anzahl der ausgegebenen Leerzeichen. Wenn n größer als die Breite einer Ausgabezeile ist, berechnet Spc die nächste Ausgabeposition mit der folgenden Formel:

AktuelleAusgabeposition + (n Mod Breite)

Ist die aktuelle Ausgabeposition z.B. gleich 24 und die Breite der Ausgabezeile gleich 80, dann führt die Angabe von Spc(90) zur Ausgabe ab Position 34 (aktuelle Ausgabeposition zuzüglich des Restes von 90/80). Ist der Unterschied zwischen der aktuellen Ausgabeposition und der Breite der Ausgabezeile kleiner als n (oder n Mod Breite), so wechselt die Spc-Funktion an den Anfang der nächsten Zeile und fügt dort Leerzeichen ein, deren Anzahl durch die Formel n – (Breite – AktuelleAusgabeposition) bestimmt wird.

Anmerkung Achten Sie darauf, daß alle Tabellenspalten breit genug sind, um breitere Zeichen aufnehmen zu können.

Wenn Sie die Print-Methode mit einer Proportional-Schriftart verwenden, benutzt die Spc-Funktion für die Größe der ausgegebenen Leerzeichen immer einen Durchschnittswert aus der Breite aller Zeichen in der Punktgröße für die aktuelle Schriftart. Es gibt jedoch keinen Zusammenhang zwischen der Anzahl der ausgegebenen Zeichen und der Anzahl der Spalten mit konstanter Breite, den diese Zeichen einnehmen. Der Großbuchstabe W ist zum Beispiel breiter als eine Spalte, und der Kleinbuchstabe i ist schmaler als eine Spalte.


Tab-Funktion

Wird zusammen mit der Print #-Anweisung oder der Print-Methode verwendet, um die Ausgabe zu positionieren.

Syntax

Tab[(n)]

Das optionale Argument n gibt die Spaltennummer an, auf die die Einfügemarke bewegt wurde, bevor der Ausdruck in einer Liste angezeigt oder ausgegeben wird. Wenn n nicht angegeben wird, bewegt Tab die Einfügemarke an den Beginn des nächsten Ausgabebereichs. Auf diese Weise kann Tab anstatt eines Kommas in Gebietsschemata verwendet werden, in denen das Komma als Dezimaltrennzeichen benutzt wird.

Bemerkungen

Wenn die aktuelle Ausgabeposition in der aktuellen Zeile größer als n ist, springt Tab zur n-ten Spalte in der nächsten Ausgabezeile. Wenn n kleiner als 1 ist, bewegt Tab die Ausgabeposition auf die Spalte 1. Wenn n größer als die Breite der Ausgabezeile ist, berechnet Tab die nächste Ausgabeposition mit der folgenden Formel:

n Mod Breite

Wenn die Breite 80 ist und Sie Tab(90) angeben, wird die nächste Ausgabe in Spalte 10 (dem Rest von 90/80) beginnen. Wenn n kleiner als die aktuelle Ausgabeposition ist, beginnt die Ausgabe an der berechneten Ausgabestelle in der nächsten Zeile. Wenn die berechnete Ausgabeposition größer als die aktuelle Ausgabeposition ist, beginnt die Ausgabe an der berechneten Ausgabeposition in derselben Zeile.

0	Die äußerste linke Ausgabeposition in einer Ausgabezeile ist immer 1. Wenn Sie die Print #-Anweisung für Ausgaben in Dateien verwenden, ist die äußerste rechte Ausgabeposition die aktuelle Breite der ausgegebenen Datei, die sie mit der Width-Anweisung festsetzen können.

Anmerkung Achten Sie darauf, daß alle Tabellenspalten breit genug sind, um breitere Zeichen aufnehmen zu können.

Wenn Sie die Tab-Funktion mit der Print-Methode verwenden, wird der Ausgabebereich in konstante Spalten fester Breite unterteilt. Die Breite jeder Spalte ist ein Durchschnittswert aus der Breite aller Zeichen in der Punktgröße für die ausgewählte Schriftart. Es gibt jedoch keinen Zusammenhang zwischen der Anzahl ausgegebener Zeichen und der Anzahl der Spalten mit konstanter Breite, die diese Zeichen einnehmen. Der Großbuchstabe W ist zum Beispiel breiter als eine Spalte, und der Kleinbuchstabe i ist schmaler als eine Spalte.


Width #-Anweisung

Legt die Breite einer Ausgabezeile für eine mit der Open-Anweisung geöffneten Datei fest.

Syntax

Width #Dateinummer, Breite

Die Syntax der Width #-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Dateinummer	Erforderlich. Eine beliebige gültige Dateinummer.
Breite	Erforderlich. Numerischer Ausdruck im Bereich von 0 bis 255 (einschließlich), der die Anzahl der Zeichen festlegt, die eine Zeile aufnehmen kann, bevor sie in eine neue Zeile umbrochen wird. Wenn Breite gleich 0 ist, gibt es keine Längenbeschränkung für eine Zeile. 0 ist die Voreinstellung für Breite.


Write #-Anweisung

Schreibt Daten in eine sequentielle Datei.

Syntax

Write #Dateinummer, [Ausgabeliste]

Die Syntax der Write #-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Dateinummer	Erforderlich. Eine beliebige gültige Dateinummer.
Ausgabeliste	Optional. Eine oder mehrere (durch Kommas getrennte) numerische Ausdrücke oder Zeichenfolgenausdrücke, die in eine Datei geschrieben werden sollen.
Bemerkungen

Daten, die mit der Write #-Anweisung geschrieben worden sind, werden normalerweise mit der Input #-Anweisung aus einer Datei gelesen.

0	Wenn Sie Ausgabeliste nicht angeben und ein Komma nach Dateinummer einfügen, wird eine Leerzeile in die Datei ausgegeben. Mehrere Ausdrücke können durch Leerzeichen, Semikolons oder Kommas voneinander getrennt werden. Leerzeichen und Semikolon haben dieselbe Wirkung.

1	Wenn Sie mit Write # Daten in eine Datei schreiben, gelten mehrere allgemeingültige Voraussetzungen, damit die Daten unabhängig vom Gebietsschema mit Input # immer richtig gelesen und interpretiert werden können:

•	Numerische Daten werden immer mit dem Punkt als Dezimaltrennzeichen geschrieben.

•	Daten vom Typ Boolean, werden entweder mit #TRUE# oder #FALSE# ausgegeben. Die Schlüsselwörter True und False werden nicht übersetzt, unabhängig vom Gebietsschema.

•	Daten vom Typ Date werden immer im universellen Datums- und Zeitformat in die Datei geschrieben. Fehlt entweder die Datums- oder die Zeitangabe, oder ist sie gleich Null, so wird nur der vorhandene Teil in die Datei geschrieben.

•	Wenn Daten in der Ausgabeliste den Wert Empty haben, werden keine Daten in die Datei geschrieben. Haben die Daten jedoch den Wert Null, so wird #NULL# in die Datei geschrieben.

•	Wenn die Daten in der Ausgabeliste Null-Daten sind, wird #NULL# in die Datei geschrieben.

•	Wenn die Daten den Wert Error haben, wird #ERROR Fehler-Code# ausgegeben. Das Schlüsselwort Error wird unabhängig vom Gebietsschema nicht übersetzt.

Im Gegensatz zur Print #-Anweisung fügt die Write #-Anweisung beim Schreiben in die Datei Kommas zwischen Elementen und Anführungszeichen eingeschlossener Zeichenfolgen ein. Sie brauchen daher in der Liste kein explizites Trennzeichen anzugeben. Die Write #-Anweisung fügt einen Zeilenumbruchzeichen, d.h. eine Kombination aus Wagenrücklauf und Zeilenvorschub (Chr(13) + Chr(10)), ein, nachdem sie das letzte Zeichen aus der Ausgabeliste in die Datei geschrieben hat.

Anmerkung   Sie sollten keine Zeichenfolgen mit eingebetteten Anführungszeichen, z.B. "1,2""X", zur Verwendung mit der Input #-Anweisung schreiben: Input # analysiert diese Zeichenfolge als zwei vollständige separate Zeichenfolgen.


DDB-Funktion (Beispiel)

In diesem Beispiel wird die DDB-Funktion verwendet, um die Abschreibung eines Vermögenswertes über einen bestimmten Zeitraum zurückzugeben, wobei die folgenden Werte gegeben sind: Anschaffungskosten (AnfKost), Wert des Vermögenswertes am Ende seiner Nutzungsdauer (Restwert), Länge der Nutzungsdauer des Vermögenswertes in Jahren (Nutzung) und Zeitraum in Jahren, für den die Abschreibung des Vermögenswertes berechnet wird (Zeitraum).

Dim Fmt, AnfKost, Restwert, NutzMonate, Nutzung, AbschrJahr, Zeitraum

Const JMONATE = 12	' Anzahl Monate pro Jahr.

Fmt = "###.##0,00"

AnfKost = InputBox("Anfangskosten des Vermögenswertes?")

Restwert = InputBox("Wert des Vermögensgegenstands am Ende " & _

"der Nutzungsdauer?")

NutzMonate = InputBox("Nutzungsdauer in Monaten?")

Do While NutzMonate < JMONATE	' Zeitraum >= 1 Jahr?

MsgBox "Nutzungsdauer muß mindestens ein Jahr sein."

NutzMonate = InputBox("Nutzungsdauer in Monaten?")

Loop

Nutzung = NutzMonate / JMONATE	' Monate in Jahre umrechnen.

If Nutzung <> Int(NutzMonate / JMONATE) Then

Nutzung = Int(Nutzung + 1)	' Auf ganzes Jahr aufrunden.

End If

AbschrJahr = CInt(InputBox("Geben Sie das Jahr für die " & _

"Abschreibungsberechnung ein."))

Do While AbschrJahr < 1 Or AbschrJahr > Nutzung

MsgBox "Sie müssen einen Wert von 1 bis " & Nutzung & _

" eingeben."

AbschrJahr = InputBox("Geben Sie das Jahr für die " & _

"Abschreibungsberechnung ein.")

Loop

Zeitraum = DDB(AnfKost, Restwert, Nutzung, AbschrJahr)

MsgBox "Die Abschreibung für das Jahr " & AbschrJahr & " ist " & _

Format(Zeitraum, Fmt) & "."


FV-Funktion (Beispiel)

In diesem Beispiel wird die FV-Funktion verwendet, um den Endwert einer Investition zurückzugeben, wenn die folgenden Werte gegeben sind: Zinssatz pro Zeitraum (JZINS / 12), Gesamtanzahl der Zahlungen (GesZahl), der Zahlungsbetrag (Zahlung), Barwert der Investition (BWert) und eine Zahl, die angibt, ob die Zahlung am Ende oder am Anfang des Zahlungszeitraums fällig ist (ZahlTyp). Da Zahlung einen ausgezahlten Betrag darstellt, ist der Wert negativ.

Dim Fmt, Zahlung, JZINS, GesZahl, ZahlTyp, BWert, EWert

Const TYPENDE = 0, TYPANFANG = 1	' Zahlungszeitpunkt.

Fmt = "###.###.##0,00"	' Geldformat definieren.

Zahlung = InputBox("Was ist Ihr monatliches Sparziel?")

JZINS = InputBox("Geben Sie den geschätzten Jahreszins ein.")

If JZINS > 1 Then JZINS = JZINS / 100	' Richtiges Format verwenden.

GesZahl = InputBox("Wie viele Monate möchten Sie sparen?")

ZahlTyp = MsgBox("Erfolgen Zahlungen am Monatsende?", vbYesNo)

If ZahlTyp = vbNo Then ZahlTyp = TYPANFANG Else ZahlTyp = TYPENDE

BWert = InputBox("Wieviel Geld liegt momentan auf diesem Sparbuch?")

EWert = FV(JZINS / 12, GesZahl, -Zahlung, -BWert, ZahlTyp)

MsgBox "Ihre Ersparnisse ergeben " & Format(EWert, Fmt) & "."


IPmt-Funktion (Beispiel)

In diesem Beispiel wird die IPmt-Funktion verwendet, um den Zinsanteil einer Zahlung zu berechnen, wenn alle Zahlungen denselben Betrag haben. Die folgenden Werte sind gegeben: Zinssatz pro Zeitraum(JZINS / 12), der Zahlungszeitraum, für den der Zinsanteil berechnet werden soll (Zeitraum), die Gesamtanzahl an Zahlungen (GesZahl), der Barwert oder heutige Wert des Kredits (BWert), der Endwert des Kredits (EWert) und eine Zahl, die angibt, ob die Zahlung am Ende oder am Anfang des Zahlungszeitraums fällig ist (ZahlTyp).

Dim EWert, Fmt, BWert, JZINS, GesZahl, ZahlTyp, Zeitraum, IntPmt, GesZins, Mldg

Const TYPENDE = 0, TYPANFANG = 1	' Zahlungszeitpunkt.

EWert = 0	' I.d.R. 0 für einen Kredit.

Fmt = "###.###.##0,00"	' Geldformat definieren.

BWert = InputBox("Welchen Betrag möchten Sie aufnehmen?")

JZINS = InputBox("Wie hoch ist der Jahreszins für den Kredit?")

If JZINS > 1 Then JZINS = JZINS / 100	' Richtiges Format

' verwenden.

GesZahl = InputBox("Wie viele Monatszahlungen?")

ZahlTyp = MsgBox("Erfolgen Zahlungen am Monatsende?", vbYesNo)

If ZahlTyp = vbNo Then ZahlTyp = TYPANFANG Else ZahlTyp = TYPENDE

For Zeitraum = 1 To GesZahl	' Alle Zinsen aufsummieren.

IntPmt = IPmt(JZINS / 12, Zeitraum, GesZahl, -BWert, EWert, ZahlTyp)

GesZins = GesZins + IntPmt

Next Zeitraum

Mldg = "Sie zahlen insgesamt " & Format(GesZins, Fmt)

Mldg = Mldg & " Zinsen für diesen Kredit."

MsgBox Mldg	' Ergebnisse anzeigen.


IRR-Funktion (Beispiel)

In diesem Beispiel gibt die IRR-Funktion den internen Zinsfuß für eine Folge von 5 Cash Flows zurück, die im Datenfeld Werte() gespeichert sind. Das erste Datenfeldelement ist ein negativer Cash Flow für die Anfangskosten der Unternehmung. Die verbleibenden 4 Cash Flows sind positive Cash Flows für die 4 Folgejahre. Schätz ist der geschätzte interne Zinsfuß.

Dim Schätz, Fmt, IntZins, Mldg

Static Werte(5) As Double	' Datenfeld einrichten.

Schätz = .1	' Schätzung beginnt bei 10 %.

Fmt = "#0,00"	' Prozentformat definieren.

Werte(0) = -70000	' Anfangskosten.

' Positive Cash Flows stellen Einkommen in den vier Folgejahren dar.

Werte(1) = 22000 : Werte(2) = 25000

Werte(3) = 28000 : Werte(4) = 31000

IntZins = IRR(Werte(), Schätz) * 100	' Internen Zinsfuß berechnen.

Mldg = "Der interne Zinsfuß für diese fünf Cash Flows beträgt "

Mldg = Mldg & Format(IntZins, Fmt) & " Prozent."

MsgBox Mldg	' Internen Zinsfuß anzeigen.


MIRR-Funktion (Beispiel)

In diesem Beispiel wird die MIRR-Funktion verwendet, um den modifizierten internen Zinsfuß bei einer Folge von Cash Flows zurückzugeben, die im Datenfeld Werte() gespeichert sind. KreditZins stellt den Finanzierungszinssatz dar, und InvZins stellt den Zinssatz dar, der bei erneuter Investition erzielt werden kann.

Dim KreditZins, InvZins, Fmt, IntZins, Mldg

Static Werte(5) As Double	' Datenfeld einrichten.

KreditZins = .1	' Kreditzins.

InvZins = .12	' Zins bei Neuinvestition.

Fmt = "#0,00"	' Geldformat definieren.

Werte(0) = -70000	' Anfangskosten.

' Positive Cash Flows stellen Einkommen in den vier Folgejahren dar.

Werte(1) = 22000 : Werte(2) = 25000

Werte(3) = 28000 : Werte(4) = 31000

IntZins = MIRR(Werte(), KreditZins, InvZins)	' Internen Zinsfuß

' berechnen.

Mldg = "Der modifizierte interne Zinsfuß für diese fünf Cash Flows ist"

Mldg = Mldg & Format(Abs(IntZins) * 100, Fmt) & "Prozent."

MsgBox Mldg	' Internen Zinsfuß

' anzeigen.


NPer-Funktion (Beispiel)

In diesem Beispiel wird die NPer-Funktion verwendet, um die Anzahl der Zeiträume zurückzugeben, während derer Zahlungen geleistet werden müssen, um einen Kredit abzuzahlen, dessen Wert in BWert gespeichert ist. Folgende Werte sind gegeben: Zinssatz pro Zeitraum (JZINS / 12), die Zahlung (Zahlung), der Endwert des Kredits (EWert) und eine Zahl, die angibt, ob die Zahlung am Ende oder am Anfang des Zahlungszeitraums fällig ist (ZahlTyp).

Dim EWert, BWert, JZINS, Zahlung, ZahlTyp, GesZahl

Const TYPENDE = 0, TYPANFANG = 1	' Zahlungszeitpunkt.

EWert = 0	' I.d.R. 0 für einen Kredit.

BWert = InputBox("Welchen Betrag möchten Sie aufnehmen?")

JZINS = InputBox("Wie hoch ist der Jahreszins für den Kredit?")

If JZINS > 1 Then JZINS = JZINS / 100	' Richtiges Format verwenden.

Zahlung = InputBox("Wie viel möchten Sie monatlich zahlen?")

ZahlTyp = MsgBox("Erfolgen Zahlungen am Monatsende?", vbYesNo)

If ZahlTyp = vbNo Then ZahlTyp = TYPANFANG Else ZahlTyp = TYPENDE

GesZahl = NPer(JZINS / 12, -Zahlung, BWert, EWert, ZahlTyp)

If Int(GesZahl) <> GesZahl Then GesZahl = Int(GesZahl) + 1

MsgBox "Ihr Kredit ist nach " & GesZahl & " Monaten abgezahlt."


NPV-Funktion (Beispiel)

In diesem Beispiel wird die NPV-Funktion verwendet, um den Netto-Barwert einer Folge von Cash Flows zurückzugeben, die im Datenfeld Werte() gespeichert sind. IntZins ist ein fester interner Zinsfuß.

Dim Fmt, Schätz, IntZins, NetPVal, Mldg

Static Werte(5) As Double	' Datenfeld einrichten.

Fmt = "###.##0,00"	' Geldformat definieren.

Schätz = .1	' Schätzung beginnt bei 10 %.

IntZins = .0625	' Festen internen Zinsfuß setzen.

Werte(0) = -70000	' Anfangskosten.

' Positive Cash Flows stellen Einkommen in den vier Folgejahren dar.

Werte(1) = 22000 : Werte(2) = 25000

Werte(3) = 28000 : Werte(4) = 31000

NetPVal = NPV(IntZins, Werte())	' Netto-Barwert berechnen.

Mldg = "Der Netto-Barwert dieser Cash Flows ist "

Mldg = Mldg & Format(NetPVal, Fmt) & "."

MsgBox Mldg	' Netto-Barwert anzeigen.


Pmt-Funktion (Beispiel)

In diesem Beispiel wird die Pmt-Funktion verwendet, um die monatliche Zahlung für einen Kredit über einen festgelegten Zeitraum zurückzugeben. Die folgenden Werte sind gegeben: Zinssatz pro Zeitraum (JZINS / 12), Gesamtanzahl der Zahlungen (GesZahl), Barwert oder heutiger Wert des Kredits (BWert), Endwert des Kredits (EWert) und eine Zahl, die angibt, ob die Zahlung am Ende oder am Anfang des Zahlungszeitraums fällig ist (ZahlTyp).

Dim Fmt, EWert, BWert, JZINS, GesZahl, ZahlTyp, Zahlung

Const TYPENDE = 0, TYPANFANG = 1	' Zahlungszeitpunkt.

Fmt = "###.###.##0,00"	' Geldformat definieren.

EWert = 0	' I.d.R. 0 für einen Kredit.

BWert = InputBox("Welchen Betrag möchten Sie aufnehmen?")

JZINS = InputBox("Wie hoch ist der Jahreszins für den Kredit?")

If JZINS > 1 Then JZINS = JZINS / 100	' Richtiges Format verwenden.

GesZahl = InputBox("Wie viele Monatszahlungen möchten Sie leisten?")

ZahlTyp = MsgBox("Erfolgen Zahlungen am Monatsende?", vbYesNo)

If ZahlTyp = vbNo Then ZahlTyp = TYPANFANG Else ZahlTyp = TYPENDE

Zahlung = Pmt(JZINS / 12, GesZahl, -BWert, EWert, ZahlTyp)

MsgBox "Sie zahlen " & Format(Zahlung, Fmt) & " pro Monat."


PPmt-Funktion (Beispiel)

In diesem Beispiel wird die PPmt-Funktion verwendet, um den Kapitalanteil einer Auszahlung für einen bestimmten Zeitraum zu berechnen, wenn alle Zahlungen konstant sind. Die folgenden Werte sind gegeben: Zinssatz pro Zeitraum (JZINS / 12), Zahlungszeitraum, für den der Kapitalanteil berechnet werden soll (Zeitraum), Gesamtanzahl der Zahlungen (GesZahl), Barwert oder heutiger Wert des Kredits (BWert), Endwert des Kredits (EWert) und eine Zahl, die angibt, ob die Zahlung am Ende oder am Anfang des Zahlungszeitraums fällig ist (ZahlTyp).

Dim NL, TB, Fmt, EWert, BWert, JZINS, GesZahl, ZahlTyp, Zahlung, Mldg, Aufstellung, Zeitraum, P, I

Const TYPENDE = 0, TYPANFANG = 1	' Zahlungszeitpunkt.

NL = Chr(13) & Chr(10)	' Zeilenumbruch definieren.

TB = Chr(9)	' Tabulator definieren.

Fmt = "###.###.##0,00"	' Geldformat definieren.

EWert = 0	' I.d.R. 0 für einen Kredit.

BWert = InputBox("Welchen Betrag möchten Sie aufnehmen?")

JZINS = InputBox("Wie hoch ist der Jahreszins für den Kredit?")

If JZINS > 1 Then JZINS = JZINS / 100	' Richtiges Format verwenden.

GesZahl = InputBox("Wie viele Monatszahlungen müssen Sie leisten?")

ZahlTyp = MsgBox("Erfolgen Zahlungen am Monatsende?", vbYesNo)

If ZahlTyp = vbNo Then ZahlTyp = TYPANFANG Else ZahlTyp = TYPENDE

Zahlung = Abs(-Pmt(JZINS / 12, GesZahl, BWert, EWert, ZahlTyp))

Mldg = "Ihre Monatsbelastung beträgt " & Format(Zahlung, Fmt) & ". "

Mldg = Mldg & "Wünschen Sie eine Aufstellung von Kapital- und "

Mldg = Mldg & "Zinsanteil pro Zeitraum?"

Aufstellung = MsgBox(Mldg, vbYesNo)	' Aufstellung gewünscht?

If Aufstellung <> vbNo Then

If GesZahl > 12 Then MsgBox "Nur das erste Jahr wird angezeigt."

Mldg = "Monat  Zahlung  Kapital  Zins" & NL

For Zeitraum = 1 To GesZahl

If Zeitraum > 12 Then Exit For	' Nur ersten 12 anzeigen.

P = PPmt(JZINS / 12, Zeitraum, GesZahl, -BWert, EWert, ZahlTyp)

P = (Int((P + .005) * 100) / 100)	' Kapitalanteil runden.

I = Zahlung - P

I = (Int((I + .005) * 100) / 100)	' Zinsen runden.

Mldg = Mldg & Zeitraum & TB & Format(Zahlung, Fmt)

Mldg = Mldg & TB & Format(P, Fmt) & TB & Format(I, Fmt) & NL

Next Zeitraum

MsgBox Mldg	' Amortisationstabelle

' anzeigen.

End If


PV-Funktion (Beispiel)

In diesem Beispiel gibt die PV-Funktion den Barwert einer Annuität in Höhe von DM 1.000.000 zurück, die im Laufe der nächsten 20 Jahre einen Betrag in Höhe von jeweils DM 50.000 bereitstellt. Die folgenden Werte sind gegeben: erwarteter Jahreszins (JZINS), Gesamtanzahl der Zahlungen (GesZahl), Betrag der einzelnen Zahlungen (JEinkommen), Gesamtendwert der Investition (EWert) und eine Zahl, die angibt, ob die einzelnen Zahlungen am Ende oder am Anfang des jeweiligen Zahlungszeitraums fällig sind (ZahlTyp). Beachten Sie, daß JEinkommen eine negative Zahl ist, da diese Auszahlungen von der Annuität eines jeden Jahres darstellt.

Dim Fmt, JZINS, GesZahl, JEinkommen, EWert, Zahltyp, BWert

Const TYPENDE = 0, TYPANFANG = 1	' Zahlungszeitpunkt.

Fmt = "###.##0,00"	' Geldformat definieren.

JZINS = .0825	' Jahreszins.

GesZahl = 20	' Gesamtanzahl an Zahlungen.

JEinkommen = 50000	' Jahreseinkommen.

EWert = 1000000	' Endwert.

ZahlTyp = TYPANFANG	' Zahlung am Monatsanfang.

BWert = PV(JZINS, GesZahl, -JEinkommen, EWert, ZahlTyp)

MsgBox "Der Barwert ist " & Format(BWert, Fmt) & "."


Rate-Funktion (Beispiel)

In diesem Beispiel wird die Rate-Funktion verwendet, um den Zinssatz eines Kredits zu berechnen, für den die folgenden Werte gegeben sind: Gesamtanzahl der Zahlungen (GesZahl), Höhe der Kreditzahlung (Zahlung), Barwert oder heutiger Wert des Kredits (BWert), Endwert des Kredits (EWert), eine Zahl, die angibt, ob die Zahlung am Ende oder am Anfang des Zahlungszeitraums fällig ist (ZahlTyp) und ein Schätzwert für den erwarteten Zinssatz (Schätz).

Dim Fmt, EWert, Schätz, BWert, Zahlung, GesZahl, ZahlTyp, JZINS

Const TYPENDE = 0, TYPANFANG = 1	' Zahlungszeitpunkt.

Fmt = "##0.00"	' Prozentformat definieren.

EWert = 0	' I.d.R. 0 für einen Kredit.

Schätz = .1	' Schätzwert = 10 Prozent.

BWert = InputBox("Kredithöhe?")

Zahlung = InputBox("Höhe der monatlichen Zahlung?")

GesZahl = InputBox("Wie viele Monatszahlungen müssen Sie leisten?")

ZahlTyp = MsgBox("Erfolgen Zahlungen am Monatsende?", vbYesNo)

If ZahlTyp = vbNo Then ZahlTyp = TYPANFANG Else ZahlTyp = TYPENDE

JZINS = (Rate(GesZahl, -Zahlung, BWert, EWert, ZahlTyp, Schätz) * 12) _

* 100

MsgBox "Ihr Zinssatz beträgt " & Format(CInt(JZINS), Fmt) & " Prozent."


SLN-Funktion (Beispiel)

In diesem Beispiel wird die SLN-Funktion verwendet, um die arithmetische Abschreibung eines Vermögenswertes für einen einzelnen Zeitraum zurückzugeben. Die folgenden Werte sind gegeben: Anfangskosten des Vermögenswertes (AnfKost), Vermögenswert am Ende seiner Nutzungsdauer (Restwert) und die Länge der Nutzungsdauer des Vermögenswertes in Jahren (Nutzung).

Dim Fmt, AnfKost, Restwert, NutzMonate, Nutzung, AbschrZeit

Const JMONATE = 12	' Anzahl Monate pro Jahr.

Fmt = "###.##0,00"	' Geldformat definieren.

AnfKost = InputBox("Anfangskosten des Vermögenswertes?")

Restwert = InputBox("Wert des Vermögens am Ende der Nutzungsdauer?")

NutzMonate = InputBox("Nutzungsdauer in Monaten?")

Do While NutzMonate < JMONATE	' Zeitraum >= 1 Jahr?

MsgBox "Nutzungsdauer muß mindestens ein Jahr sein."

NutzMonate = InputBox("Nutzungsdauer in Monaten?")

Loop

Nutzung = NutzMonate / JMONATE	' Monate in Jahre umrechnen.

If Nutzung <> Int(NutzMonate / JMONATE) Then

Nutzung = Int(Nutzung + 1)	' Auf ganzes Jahr runden.

End If

AbschrZeit  = SLN(AnfKost, Restwert, Nutzung)

MsgBox "Die Abschreibung ist " & Format(AbschrZeit , Fmt) & " pro Jahr."


SYD-Funktion (Beispiel)

In diesem Beispiel wird die SYD-Funktion verwendet, um die Abschreibung eines Vermögenswertes für einen bestimmten Zeitraum zurückzugeben, wobei folgende Werte gegeben sind: Anfangskosten des Vermögenswertes (AnfKost), Vermögenswert am Ende seiner Nutzungsdauer (Restwert) und Länge der Nutzungsdauer des Vermögenswertes in Jahren (Nutzung). Der Zeitraum in Jahren, für den die Abschreibung berechnet wird, ist AbschrZeit.

Dim Fmt, AnfKost, Restwert, NutzMonate, Nutzung, AbschrJahr, AbschrZeit

Const JMONATE = 12	' Anzahl Monate pro Jahr.

Fmt = "###.##0,00"	' Geldformat definieren.

AnfKost = InputBox("Anfangskosten des Vermögenswertes?")

Restwert = InputBox("Wert des Vermögens am Ende der Nutzungsdauer?")

NutzMonate = InputBox("Nutzungsdauer in Monaten?")

Do While NutzMonate < JMONATE	' Zeitraum >= 1 Jahr?

MsgBox "Nutzungsdauer muß mindestens ein Jahr sein."

NutzMonate = InputBox("Nutzungsdauer in Monaten?")

Loop

Nutzung = NutzMonate / JMONATE	' Monate in Jahre umrechnen.

If Nutzung <> Int(NutzMonate / JMONATE) Then

Nutzung = Int(Nutzung + 1)	' Auf ganzes Jahr runden.

End If

AbschrJahr = CInt(InputBox("Für welches Jahr soll die Abschreibung" & _

" berechnet werden?"))

Do While AbschrJahr < 1 Or AbschrJahr > Nutzung

MsgBox "Sie müssen einen Wert von 1 bis " & Nutzung & " eingeben."

AbschrJahr = CInt(InputBox("Für welches Jahr soll die " & _

"Abschreibung berechnet werden?"))

Loop

AbschrZeit = SYD(AnfKost, Restwert, Nutzung, AbschrJahr)

MsgBox "Die Abschreibung für das Jahr " & AbschrJahr & " ist " & Format(AbschrZeit, Fmt) & "."


DDB-Funktion

Gibt einen Wert vom Typ Double zurück, der die Abschreibung eines Vermögenswertes über einen bestimmten Zeitraum mit Hilfe der geometrisch degressiven Abschreibungsmethode oder einer von Ihnen ausgewählten Methode angibt.

Syntax

DDB(cost, salvage, life, period[, factor])

Die DDB-Funktion hat die folgenden benannten Argumente:

Teil	Beschreibung
cost	Erforderlich. Ein Wert vom Typ Double, der die Anschaffungskosten des Vermögenswertes angibt.
salvage	Erforderlich. Ein Wert vom Typ Double, der den Wert des Vermögenswertes am Ende seiner Nutzungsdauer angibt.
life	Erforderlich. Ein Wert vom Typ Double, der die Länge der Nutzungsdauer des Vermögenswertes angibt.
period	Erforderlich. Ein Wert vom Typ Double, der den Zeitraum angibt, für den die Abschreibung des Vermögenswertes berechnet wird.
factor	Optional. Ein Wert vom Typ Variant, der den Faktor angibt, um den der Wert vermindert wird. Wird der Wert nicht angegeben, so wird 2 (geometrisch degressive Methode) angenommen.
Bemerkungen

Die geometrisch degressive Abschreibungsmethode ermöglicht die beschleunigte Abschreibung eines Vermögenswertes. Die Abschreibung ist in der ersten Periode am höchsten und verringert sich in den darauffolgenden Perioden.

Die Argumente life und period müssen in derselben Maßeinheit angegeben werden. Wenn beispielsweise life in Monaten angegeben wird, muß auch period in Monaten angegeben werden. Alle Argumente müssen positive Zahlen sein.

Die DDB-Funktion verwendet die folgende Formel, um die Abschreibung für einen bestimmten Zeitraum zu berechnen:

Abschreibung / period = ((cost – salvage) * factor) / life


FV-Funktion

Gibt einen Wert vom Typ Double zurück, der den zukünftigen Wert einer Annuität bei regelmäßigen, konstanten Zahlungsausgängen und einem konstanten Zinssatz angibt.

Syntax

FV(rate, nper, pmt[, pv[, type]])

Die FV-Funktion hat die folgenden benannten Argumente:

Teil	Beschreibung
rate	Erforderlich. Ein Wert vom Typ Double, der den Zinssatz pro Zeitraum angibt. Wenn Sie beispielsweise für ein Auto einen Kredit mit einem Jahreszins von 10 Prozent aufnehmen und monatliche Zahlungen vereinbart haben, beträgt der Zinssatz pro Zeitraum 0,1 dividiert durch 12 oder 0,0083.
nper	Erforderlich. Ein Wert vom Typ Integer, der die Gesamtanzahl der Zahlungszeiträume für die Annuität angibt. Wenn Sie beispielsweise monatliche Zahlungen für einen Autokredit mit 4 Jahren Laufzeit vereinbart haben, beträgt die Summe der Zahlungszeiträume für Ihren Kredit 4 * 12 (oder 48).
pmt	Erforderlich. Ein Wert vom Typ Double, der die Zahlung pro Zeitraum angibt. Die Zahlungen enthalten gewöhnlich Kapital und Zinsen und ändern sich während der Laufzeit einer Annuität nicht.
pv	Optional. Ein Wert vom Typ Variant, der den Barwert (oder Gesamtbetrag) einer Folge zukünftiger Zahlungen zum jetzigen Zeitpunkt angibt. Wenn Sie beispielsweise Geld für einen Autokauf aufnehmen, stellt die Kredithöhe für den Kreditgeber den Barwert der von Ihnen zu leistenden monatlichen Zahlungen dar. Wird der Barwert nicht angegeben, so wird 0 angenommen.
type	Optional. Ein Wert vom Typ Variant, der angibt, wann Zahlungen fällig sind. Bei 0 sind die Zahlungen am Ende des Zahlungszeitraums fällig, bei 1 zu Beginn des Zahlungszeitraums. Wird der Wert nicht angegeben, so wird 0 angenommen.
Bemerkungen

Eine Annuität ist eine Folge konstanter Barzahlungen über einen bestimmten Zeitraum. Eine Annuität kann ein Kredit sein (z.B. eine Haushypothek) oder eine Investition (z.B. eine regelmäßige Spareinlage).

Die Argumente rate und nper müssen mit Zahlungszeiträumen berechnet werden, die in derselben Maßeinheit angegeben sind. Wenn rate in Monaten berechnet wird, muß auch nper in Monaten berechnet werden.

Bei allen Argumenten werden Zahlungsausgänge (z.B. Spareinlagen) durch negative Zahlen dargestellt, Zahlungseingänge (z.B. Dividendenauszahlungen) durch positive Zahlen.


IPmt-Funktion

Gibt einen Wert vom Typ Double zurück, der die Zinszahlung für einen bestimmten Zeitraum einer Annuität bei regelmäßigen, konstanten Zahlungen und einem konstanten Zinssatz angibt.

Syntax

IPmt(rate, per, nper, pv[, fv[, type]])

Die IPmt-Funktion hat die folgenden benannten Argumente:

Teil	Beschreibung
rate	Erforderlich. Ein Wert vom Typ Double, der den Zinssatz pro Zeitraum angibt. Wenn Sie beispielsweise einen Kredit für ein Auto mit einem Jahreszins von 10 Prozent aufnehmen und monatliche Zahlungen vereinbart haben, beträgt der Zinssatz pro Zeitraum 0,1 dividiert durch 12 oder 0,0083.
per	Erforderlich. Ein Wert vom Typ Double, der den Zahlungszeitraum im Bereich von 1 bis nper angibt.
nper	Erforderlich. Ein Wert vom Typ Double, der die Gesamtanzahl der Zahlungszeiträume für die Annuität angibt. Wenn Sie beispielsweise monatliche Zahlungen für einen Autokredit mit 4 Jahren Laufzeit vereinbart haben, beträgt die Summe der Zahlungszeiträume für den Kredit 4 * 12 (oder 48).
pv	Erforderlich. Ein Wert vom Typ Double, der den Barwert oder heutigen Wert einer Folge zukünftiger Aus- oder Einzahlungen angibt. Wenn Sie beispielsweise Geld für einen Autokauf aufnehmen, stellt die Kredithöhe für den Kreditgeber den Barwert der von Ihnen zu leistenden monatlichen Zahlungen dar.
fv	Optional. Ein Wert vom Typ Variant, der den Endwert oder Kontostand angibt, der nach der letzten Zahlung erreicht sein soll. Der Endwert eines Kredits ist zum Beispiel DM 0, da dies die Kredithöhe nach der letzten Zahlung ist. Wenn Sie jedoch für die Ausbildung Ihrer Kinder DM 50.000 in 18 Jahren ansparen wollen, entspricht der Endwert DM 50.000. Wird der Wert nicht angegeben, so wird 0 angenommen.
type	Optional. Ein Wert vom Typ Variant, der angibt, wann Zahlungen fällig sind. Bei 0 sind die Zahlungen am Ende eines Zahlungszeitraums fällig, bei 1 zu Beginn des Zahlungszeitraums. Wird der Wert nicht angegeben, so wird 0 angenommen.
Bemerkungen

Eine Annuität ist eine Folge konstanter Barzahlungen über einen bestimmten Zeitraum. Eine Annuität kann ein Kredit sein (z.B. eine Haushypothek) oder eine Investition (z.B. eine regelmäßige Spareinlage).

Die Argumente rate und nper müssen mit Zahlungszeiträumen berechnet werden, die in derselben Maßeinheit angegeben sind. Wenn rate in Monaten berechnet wird, muß auch nper in Monaten berechnet werden.

Bei allen Argumenten werden Zahlungsausgänge (z.B. Spareinlagen) durch negative Zahlen dargestellt, Zahlungseingänge (z.B. Dividendenauszahlungen) durch positive Zahlen.


IRR-Funktion

Gibt einen Wert vom Typ Double zurück, der den internen Ertragssatz für eine Folge regelmäßiger Cash Flows (Aus- und Einzahlungen) angibt.

Syntax

IRR(values()[, guess])

Die IRR-Funktion hat die folgenden benannten Argumente:

Teil	Beschreibung
values()	Erforderlich. Ein Datenfeld mit Werten des Typs Double, der Cash Flow-Werte angibt. Dieses Datenfeld muß mindestens einen negativen Wert (Zahlungsausgang) und einen positiven Wert (Zahlungseingang) enthalten.
guess	Optional. Ein Wert vom Typ Variant, der einen von Ihnen geschätzten Wert enthält, der von IRR zurückgegeben wird. Wird der Wert nicht angegeben, so ist guess gleich 0,1 (10 Prozent).
Bemerkungen

Der interne Ertragssatz ist der Zinssatz für eine Investition, die aus Ein- und Auszahlungen in regelmäßigen Abständen besteht.

Die IRR-Funktion verwendet die Reihenfolge der Werte innerhalb des Datenfeldes, um die Reihenfolge von Ein- und Auszahlungen zu bestimmen. Stellen Sie sicher, daß Ihre Aus- und Einzahlungen in der richtigen Reihenfolge eingegeben werden. Der Cash Flow muß nicht für alle Zeiträume gleichbleibend sein (wie bei einer Annuität).

IRR wird iterativ berechnet. IRR verwendet guess als Startwert und wiederholt die Berechnung so lange, bis das Ergebnis auf 0,00001 Prozent genau ist. Wenn nach 20 Versuchen kein Ergebnis gefunden werden kann, wird IRR abgebrochen.


MIRR-Funktion

Gibt einen Wert vom Typ Double zurück, der den modifizierten internen Ertragssatz für eine Folge regelmäßiger Cash Flows (Aus- und Einzahlungen) angibt.

Syntax

MIRR(values(), finance_rate, reinvest_rate)

Die MIRR-Funktion hat die folgenden benannten Argumente:

Teil	Beschreibung
values()	Erforderlich. Ein Datenfeld mit Werten des Typs Double, die Cash Flow-Werte angeben. Das Datenfeld muß mindestens einen negativen Wert (Zahlungsausgang) und einen positiven Wert (Zahlungseingang) enthalten.
finance_rate	Erforderlich. Ein Wert vom Typ Double, der den Zinssatz enthält, der bei der Finanzierung einer Anlage bezahlt werden muß.
reinvest_rate	Erforderlich. Ein Wert vom Typ Double, der den Zinssatz angibt, der bei erneuter Anlage von Kapital erzielt werden kann.
Bemerkungen

Der modifizierte interne Ertragssatz ist der interne Ertragssatz in dem Fall, in dem Aus- und Einzahlungen mit unterschiedlichen Zinssätzen verbunden sind. Die MIRR-Funktion berücksichtigt sowohl die Kosten der Investition (finance_rate) als auch den Zinssatz, der durch eine erneute Geldanlage erzielt wird (reinvest_rate).

Die Argumente finance_rate und reinvest_rate sind in Dezimalwerten ausgedrückte Prozentzahlen. 12 Prozent wird z.B. als 0,12 ausgedrückt.

Die MIRR-Funktion verwendet die Reihenfolge der Werte innerhalb des Datenfeldes, um die Reihenfolge der Ein- und Auszahlungen zu bestimmen. Stellen Sie sicher, daß Ihre Aus- und Einzahlungen in der richtigen Reihenfolge eingegeben werden.


NPer-Funktion

Gibt einen Wert vom Typ Double zurück, der die Anzahl der Zeiträume für eine Annuität bei regelmäßigen, konstanten Zahlungen und einem konstanten Zinssatz angibt.

Syntax

NPer(rate, pmt, pv[, fv[, type]])

Die NPer-Funktion hat folgende benannten Argumente:

Teil	Beschreibung
rate	Erforderlich. Ein Wert vom Typ Double, der den Zinssatz pro Zeitraum angibt. Wenn Sie beispielsweise einen Kredit für ein Auto mit einem Jahreszins von 10 Prozent aufnehmen und monatliche Zahlungen vereinbart haben, beträgt der Zinssatz pro Zeitraum 0,1 dividiert durch 12 oder 0,0083.
pmt	Erforderlich. Ein Wert vom Typ Double, der die Zahlung pro Zeitraum angibt. Die Zahlungen enthalten gewöhnlich Kapital und Zinsen und ändern sich während der Laufzeit einer Annuität nicht.
pv	Erforderlich. Ein Wert vom Typ Double, der den Barwert oder heutigen Wert einer Folge zukünftiger Aus- oder Einzahlungen angibt. Wenn Sie beispielsweise Geld für einen Autokauf aufnehmen, stellt die Kredithöhe für den Kreditgeber den Barwert der von Ihnen zu leistenden monatlichen Zahlungen dar.
fv	Optional. Ein Wert vom Typ Variant, der den Endwert oder Kontostand angibt, der nach der letzten Zahlung erreicht sein soll. Der Endwert eines Kredits ist zum Beispiel DM 0, da dies die Kredithöhe nach der letzten Zahlung ist. Wenn Sie jedoch für die Ausbildung Ihrer Kinder DM 50.000 in 18 Jahren ansparen wollen, entspricht der Endwert DM 50.000. Wird der Wert nicht angegeben, so wird 0 angenommen.
type	Optional. Ein Wert vom Typ Variant, der angibt, wann Zahlungen fällig sind. Bei 0 sind die Zahlungen am Ende eines Zahlungszeitraums fällig, bei 1 zu Beginn des Zahlungszeitraums. Wird der Wert nicht angegeben, so wird 0 angenommen.
Bemerkungen

Eine Annuität ist eine Folge konstanter Barzahlungen über einen bestimmten Zeitraum. Eine Annuität kann ein Kredit sein (z.B. eine Haushypothek) oder eine Investition (z.B. eine regelmäßige Spareinlage).

Bei allen Argumenten werden Zahlungsausgänge (z.B. Spareinlagen) durch negative Zahlen dargestellt, Zahlungseingänge (z.B. Dividendenauszahlungen) durch positive Zahlen.


NPV-Funktion

Gibt eine Wert vom Typ Double zurück, der den Netto-Barwert einer Investition bei regelmäßigen Cash Flows (Aus- und Einzahlungen) und einem Diskontsatz angibt.

Syntax

NPV(rate, values())

Die NPV-Funktion hat folgende benannte Argumente:

Teil	Beschreibung
rate	Erforderlich. Ein Wert vom Typ Double, der den Diskontsatz bezogen auf die Länge des Zeitraums (ausgedrückt als Dezimalzahl) enthält.
values()	Erforderlich. Ein Datenfeld mit Werten des Typs Double, die Cash Flow-Werte enthalten. Das Datenfeld muß mindestens einen negativen Wert (Auszahlung) und einen positiven Wert (Einzahlung) enthalten.
Bemerkungen

Der Netto-Barwert einer Investition ist der aktuelle Wert einer Folge zukünftiger Aus- und Einzahlungen.

Die NPV-Funktion verwendet die Reihenfolge der Werte innerhalb des Datenfeldes, um die Reihenfolge von Aus- und Einzahlungen zu bestimmen. Stellen Sie sicher, daß Ihre Aus- und Einzahlungen in der richtigen Reihenfolge eingegeben werden.

Die NPV-Investition beginnt einen Zeitraum vor dem Auftreten des ersten Cash Flow-Wertes und endet mit dem Auftreten des letzten Cash Flow-Wertes, der im Datenfeld eingetragen ist.

Die Berechnung des Netto-Barwertes basiert auf zukünftigen Cash Flows. Wenn der erste Cash Flow zu Beginn des ersten Zeitraums auftritt, muß der erste Wert zu dem von NPV zurückgegebenen Wert addiert werden und darf nicht in den Cash Flow-Werten von values() enthalten sein.

Die NPV-Funktion ist der PV-Funktion (Barwert) ähnlich, bei der PV-Funktion sind jedoch Cash Flows am Ende oder zu Beginn eines Zeitraums zulässig. Im Gegensatz zu den variablen Cash Flow-Werten von NPV müssen Cash Flows in PV während der Investition konstant bleiben.


Pmt-Funktion

Gibt einen Wert vom Typ Double zurück, der die Auszahlung für eine Annuität bei regelmäßigen konstanten Zahlungsausgängen und konstantem Zinssatz angibt.

Syntax

Pmt(rate, nper, pv[, fv[, type]])

Die Pmt-Funktion hat die folgenden benannten Argumente:

Teil	Beschreibung
rate	Erforderlich. Ein Wert vom Typ Double, der den Zinssatz pro Zeitraum angibt. Wenn Sie beispielsweise einen Kredit für ein Auto mit einem Jahreszins von 10 Prozent aufnehmen und monatliche Zahlungen vereinbart haben, beträgt der Zinssatz pro Zeitraum 0,1 dividiert durch 12 oder 0,0083.
nper	Erforderlich. Ein Wert vom Typ Integer, der die Gesamtanzahl der Zahlungszeiträume für die Annuität angibt. Wenn Sie beispielsweise monatliche Zahlungen für einen Autokredit mit 4 Jahren Laufzeit vereinbart haben, beträgt die Summe der Zahlungszeiträume für den Kredit 4 * 12 (oder 48).
pv	Erforderlich. Ein Wert vom Typ Double, der den Barwert oder heutigen Wert einer Folge zukünftiger Aus- oder Einzahlungen angibt. Wenn Sie beispielsweise Geld für einen Autokauf aufnehmen, stellt die Kredithöhe für den Kreditgeber den Barwert der von Ihnen zu leistenden monatlichen Zahlungen dar.
fv	Optional. Ein Wert vom Typ Variant, der den Endwert oder Kontostand angibt, der nach der letzten Zahlung erreicht sein soll. Der Endwert eines Kredits ist zum Beispiel DM 0, da dies die Kredithöhe nach der letzten Zahlung ist. Wenn Sie jedoch für die Ausbildung Ihrer Kinder DM 50.000 in 18 Jahren ansparen wollen, entspricht der Endwert DM 50.000. Wird der Wert nicht angegeben, so wird 0 angenommen.
type	Optional. Ein Wert vom Typ Variant, der angibt, wann Zahlungen fällig sind. Bei 0 sind die Zahlungen am Ende eines Zahlungszeitraums fällig, bei 1 zu Beginn des Zahlungszeitraums. Wird der Wert nicht angegeben, so wird 0 angenommen.
Bemerkungen

Eine Annuität ist eine Folge konstanter Barzahlungen über einen bestimmten Zeitraum. Eine Annuität kann ein Kredit sein (z.B. eine Haushypothek) oder eine Investition (z.B. eine regelmäßige Spareinlage).

Die Argumente rate und nper müssen mit Zahlungszeiträumen berechnet werden, die in derselben Maßeinheit angegeben sind. Wenn rate in Monaten berechnet wird, muß auch nper in Monaten berechnet werden.

Bei allen Argumenten werden Zahlungsausgänge (z.B. Spareinlagen) durch negative Zahlen dargestellt, Zahlungseingänge (z.B. Dividendenauszahlungen) durch positive Zahlen.


PPmt-Funktion

Gibt einen Wert vom Typ Double zurück, der den Kapitalanteil einer Auszahlung für einen bestimmten Zeitraum einer Annuität bei regelmäßigen konstanten Auszahlungen und einem konstanten Zinssatz angibt.

Syntax

PPmt(rate, per, nper, pv[, fv[, type]])

Die PPmt-Funktion hat folgende benannte Argumente:

Teil	Beschreibung
rate	Erforderlich. Ein Wert vom Typ Double, der den Zinssatz pro Zeitraum angibt. Wenn Sie beispielsweise einen Kredit für ein Auto mit einem Jahreszins von 10 Prozent aufnehmen und monatliche Zahlungen vereinbart haben, beträgt der Zinssatz pro Zeitraum 0,1 dividiert durch 12 oder 0,0083.
per	Erforderlich. Ein Wert vom Typ Integer, der den Zahlungszeitraum im Bereich von 1 bis nper angibt.
nper	Erforderlich. Ein Wert vom Typ Integer, der die Gesamtanzahl der Zahlungszeiträume für die Annuität angibt. Wenn Sie beispielsweise monatliche Zahlungen für einen Autokredit mit 4 Jahren Laufzeit vereinbart haben, beträgt die Summe der Zahlungszeiträume für den Kredit 4 * 12 (oder 48).
pv	Erforderlich. Ein Wert vom Typ Double, der den Barwert oder heutigen Wert einer Folge zukünftiger Aus- oder Einzahlungen angibt. Wenn Sie beispielsweise Geld für einen Autokauf aufnehmen, stellt die Kredithöhe für den Kreditgeber den Barwert der von Ihnen zu leistenden monatlichen Zahlungen dar.
fv	Optional. Ein Wert vom Typ Variant, der den Endwert oder Kontostand angibt, der nach der letzten Zahlung erreicht sein soll. Der Endwert eines Kredits ist zum Beispiel DM 0, da dies die Kredithöhe nach der letzten Zahlung ist. Wenn Sie jedoch für die Ausbildung Ihrer Kinder DM 50.000 in 18 Jahren ansparen wollen, entspricht der Endwert DM 50.000. Wird der Wert nicht angegeben, so wird 0 angenommen.
type	Optional. Ein Wert vom Typ Variant, der angibt, wann Zahlungen fällig sind. Bei 0 sind die Zahlungen am Ende eines Zahlungszeitraums fällig, bei 1 zu Beginn des Zahlungszeitraums. Wird der Wert nicht angegeben, so wird 0 angenommen.
Bemerkungen

Eine Annuität ist eine Folge konstanter Barzahlungen über einen bestimmten Zeitraum. Eine Annuität kann ein Kredit sein (z.B. eine Haushypothek) oder eine Investition (z.B. eine regelmäßige Spareinlage).

Die Argumente rate und nper müssen mit Zahlungszeiträumen berechnet werden, die in derselben Maßeinheit angegeben sind. Wenn rate in Monaten berechnet wird, muß auch nper in Monaten berechnet werden.

Bei allen Argumenten werden Zahlungsausgänge (z.B. Spareinlagen) durch negative Zahlen dargestellt, Zahlungseingänge (z.B. Dividendenauszahlungen) durch positive Zahlen.


PV-Funktion

Gibt einen Wert vom Typ Double zurück, der den Barwert einer Annuität bei zukünftig regelmäßig und konstant zu leistenden Zahlungsausgängen und einem konstanten Zinssatz angibt.

Syntax

PV(rate, nper, pmt[, fv[, type]])

Die PV-Funktion hat folgende benannte Argumente:

Teil	Beschreibung
rate	Erforderlich. Ein Wert vom Typ Double, der den Zinssatz pro Zeitraum angibt. Wenn Sie beispielsweise einen Kredit für ein Auto mit einem Jahreszins von 10 Prozent aufnehmen und monatliche Zahlungen vereinbart haben, beträgt der Zinssatz pro Zeitraum 0,1 dividiert durch 12 oder 0,0083.
nper	Erforderlich. Ein Wert vom Typ Integer, der die Gesamtanzahl der Zahlungszeiträume für die Annuität angibt. Wenn Sie beispielsweise monatliche Zahlungen für einen Autokredit mit 4 Jahren Laufzeit vereinbart haben, beträgt die Summe der Zahlungszeiträume für den Kredit 4 * 12 (oder 48).
pmt	Erforderlich. Ein Wert vom Typ Double, der die Zahlung pro Zeitraum angibt. Die Zahlungen enthalten gewöhnlich Kapital und Zinsen und ändern sich während der Laufzeit einer Annuität nicht.
fv	Optional. Ein Wert vom Typ Variant, der den Endwert oder Kontostand angibt, der nach der letzten Zahlung erreicht sein soll. Der Endwert eines Kredits ist zum Beispiel DM 0, da dies die Kredithöhe nach der letzten Zahlung ist. Wenn Sie jedoch für die Ausbildung Ihrer Kinder DM 50.000 in 18 Jahren ansparen wollen, entspricht der Endwert DM 50.000. Wird der Wert nicht angegeben, so wird 0 angenommen.
type	Optional. Ein Wert vom Typ Variant, der angibt, wann Zahlungen fällig sind. Bei 0 sind die Zahlungen am Ende eines Zahlungszeitraums fällig, bei 1 zu Beginn des Zahlungszeitraums. Wird der Wert nicht angegeben, so wird 0 angenommen.
Bemerkungen

Eine Annuität ist eine Folge konstanter Barzahlungen über einen bestimmten Zeitraum. Eine Annuität kann ein Kredit sein (z.B. eine Haushypothek) oder eine Investition (z.B. eine regelmäßige Spareinlage).

Die Argumente rate und nper müssen mit Zahlungszeiträumen berechnet werden, die in derselben Maßeinheit angegeben sind. Wenn rate in Monaten berechnet wird, muß auch nper in Monaten berechnet werden.

Bei allen Argumenten werden Zahlungsausgänge (z.B. Spareinlagen) durch negative Zahlen dargestellt, Zahlungseingänge (z.B. Dividendenauszahlungen) durch positive Zahlen.


Rate-Funktion

Gibt einen Wert vom Typ Double zurück, der den Zinssatz einer Annuität pro Zeitraum angibt.

Syntax

Rate(nper, pmt, pv[, fv[, type[, guess]]])

Die Rate-Funktion hat folgende benannte Argumente:

Teil	Beschreibung
nper	Erforderlich. Ein Wert vom Typ Double, der die Gesamtanzahl der Zahlungszeiträume für die Annuität angibt. Wenn Sie beispielsweise monatliche Zahlungen für einen Autokredit mit 4 Jahren Laufzeit vereinbart haben, beträgt die Summe der Zahlungszeiträume für den Kredit 4 * 12 (oder 48).
pmt	Erforderlich. Ein Wert vom Typ Double, der die Zahlung pro Zeitraum angibt. Die Zahlungen enthalten gewöhnlich Kapital und Zinsen und ändern sich während der Laufzeit einer Annuität nicht.
pv	Erforderlich. Ein Wert vom Typ Double, der den Barwert oder heutigen Wert einer Folge zukünftiger Aus- oder Einzahlungen angibt. Wenn Sie beispielsweise Geld für einen Autokauf aufnehmen, stellt die Kredithöhe für den Kreditgeber den Barwert der von Ihnen zu leistenden monatlichen Zahlungen dar.
fv	Optional. Ein Wert vom Typ Variant, der den Endwert oder Kontostand angibt, der nach der letzten Zahlung erreicht sein soll. Der Endwert eines Kredits ist zum Beispiel DM 0, da dies die Kredithöhe nach der letzten Zahlung ist. Wenn Sie jedoch für die Ausbildung Ihrer Kinder DM 50.000 in 18 Jahren ansparen wollen, entspricht der Endwert DM 50.000. Wird der Wert nicht angegeben, so wird 0 angenommen.
type	Optional. Ein Wert vom Typ Variant, der angibt, wann Zahlungen fällig sind. Bei 0 sind die Zahlungen am Ende eines Zahlungszeitraums fällig, bei 1 zu Beginn des Zahlungszeitraums. Wird der Wert nicht angegeben, so wird 0 angenommen.
guess	Optional. Ein Wert vom Typ Variant, der einen von Ihnen geschätzten Wert enthält, der von Rate zurückgegeben wird. Wird der Wert nicht angegeben, so ist guess gleich 0,1 (10 Prozent).
Bemerkungen

Eine Annuität ist eine Folge konstanter Barzahlungen über einen bestimmten Zeitraum. Eine Annuität kann ein Kredit sein (z.B. eine Haushypothek) oder eine Investition (z.B. eine regelmäßige Spareinlage).

Bei allen Argumenten werden Zahlungsausgänge (z.B. Spareinlagen) durch negative Zahlen dargestellt, Zahlungseingänge (z.B. Dividendenauszahlungen) durch positive Zahlen.

Rate wird iterativ berechnet. Rate verwendet guess als Startwert und wiederholt die Berechnung so lange, bis das Ergebnis auf 0,00001 Prozent genau ist. Wenn nach 20 Versuchen kein Ergebnis gefunden werden kann, wird die Funktion Rate abgebrochen. Wenn Sie für guess 10 Prozent angegeben haben und Rate kein Ergebnis ermitteln kann, versuchen Sie es mit einem anderen Wert für guess.


SLN-Funktion

Gibt einen Wert vom Typ Double zurück, der die arithmetische Abschreibung eines Vermögenswertes über einen bestimmten Zeitraum angibt.

Syntax

SLN(cost, salvage, life)

Die SLN-Funktion hat folgende benannte Argumente:

Teil	Beschreibung
cost	Erforderlich. Ein Wert vom Typ Double, der die Anschaffungskosten des Vermögenswertes angibt.
salvage	Erforderlich. Ein Wert vom Typ Double, der den Vermögenswert am Ende seiner Nutzungsdauer angibt.
life	Erforderlich. Ein Wert vom Typ Double, der die Länge der Nutzungsdauer des Vermögenswertes angibt.
Bemerkungen

Der Zeitraum der Abschreibung muß in derselben Maßeinheit ausgedrückt werden wie das Argument life. Alle Argumente müssen positive Zahlen sein.


SYD-Funktion

Gibt einen Wert vom Typ Double zurück, der die Jahresabschreibung eines Vermögenswertes über einen bestimmten Zeitraum angibt.

Syntax

SYD(cost, salvage, life, period)

Die SYD-Funktion hat folgende benannten Argumente:

Teil	Beschreibung
cost	Erforderlich. Ein Wert vom Typ Double, der die Anschaffungskosten des Vermögenswertes angibt.
salvage	Erforderlich. Ein Wert vom Typ Double, der den Vermögenswert am Ende seiner Nutzungsdauer angibt.
life	Erforderlich. Ein Wert vom Typ Double, der die Länge der Nutzungsdauer des Vermögenswertes angibt.
period	Erforderlich. Ein Wert vom Typ Double, der den Zeitraum angibt, für den die Abschreibung des Vermögenswertes berechnet wird.
Bemerkungen

Die Argumente life und period müssen mit Zahlungszeiträumen berechnet werden, die in derselben Maßeinheit ausgedrückt werden. Wenn life in Monaten berechnet wird, muß auch period in Monaten berechnet werden. Alle Argumente müssen positive Zahlen sein.


IsArray-Funktion (Beispiel)

In diesem Beispiel wird die IsArray-Funktion verwendet, um zu überprüfen, ob eine Variable ein Datenfeld enthält.

Dim Feld1(1 To 5) As Integer, Feld2, Test1	' Datenfeldvariable deklarieren.

Feld2 = Array(1, 2, 3)	' Array-Funktion verwenden.

Test1 = IsArray(Feld1)	' Liefert True.

Test1 = IsArray(Feld2)	' Liefert True.


IsDate-Funktion (Beispiel)

In diesem Beispiel wird die IsDate-Funktion verwendet, um festzustellen, ob ein Ausdruck in ein Datum umgewandelt werden kann.

Dim Datum1, Datum2, KeinDatum, Test1

Datum1 = "February 12, 1969": Datum2 = #2/12/69#: KeinDatum = "Hallo"

Test1 = IsDate(Datum1)	' Liefert True.

Test1 = IsDate(Datum2)	' Liefert True.

Test1 = IsDate(KeinDatum)	' Liefert False.


IsEmpty-Funktion (Beispiel)

In diesem Beispiel wird die IsEmpty-Funktion verwendet, um zu bestimmen, ob eine Variable initialisiert wurde.

Dim Var1, Test1

Test1 = IsEmpty(Var1)	' Liefert True.

Var1 = Null	' Null zuweisen.

Test1 = IsEmpty(Var1)	' Liefert False.

Var1 = Empty	' Empty zuweisen.

Test1 = IsEmpty(Var1)	' Liefert True.


IsError-Funktion (Beispiel)

In diesem Beispiel wird die IsError-Funktion verwendet, um zu überprüfen, ob es sich bei einem numerischen Ausdruck um einen Fehlerwert handelt. Mit der CVErr-Funktion wird ein Variant-Wert mit dem Untertyp Error von einer benutzerdefinierten Funktion zurückgegeben. Es wird angenommen, daß Benutzerfunktion eine benutzerdefinierte Function-Prozedur ist, die einen Fehlerwert zurückgibt. Dies kann beispielsweise ein Rückgabewert sein, der mit dem Ausdruck Benutzerfunktion = CVErr(32767) zugewiesen wird, wobei 32767 eine benutzerdefinierte Zahl ist.

Dim Ergebnis, Test1

Ergebnis = Benutzerfunktion()

Test1 = IsError(Ergebnis)	' Liefert True.


IsMissing-Funktion (Beispiel)

In diesem Beispiel wird die IsMissing-Funktion verwendet, um zu überprüfen, ob ein optionales Argument an eine benutzerdefinierte Prozedur übergeben wurde. Beachten Sie, daß Optional-Argumente jetzt Standardwerte haben können und einen anderen Typ als den Typ Variant annehmen können.

Dim Ergebnis

' Die folgenden Anweisungen rufen die benutzerdefinierte

' Function-Prozedur auf.

Ergebnis = MalZwei()	' Liefert Null.

Ergebnis = MalZwei(2)	' Liefert 4.

' Definition der Function-Prozedur.

Function MalZwei(Optional A)

If IsMissing(A) Then

' Wenn kein Argument, dann Null zurückgeben.

MalZwei = Null

Else

' Wenn Argument vorhanden, dann doppelten Wert zurückgeben.

MalZwei = A * 2

End If

End Function


IsNull-Funktion (Beispiel)

In diesem Beispiel wird die IsNull-Funktion verwendet, um festzustellen, ob eine Variable den Wert Null enthält.

Dim Var1, Test1

Test1 = IsNull(Var1)	' Liefert False.

Var1 = ""

Test1 = IsNull(Var1)	' Liefert False.

Var1 = Null

Test1 = IsNull(Var1)	' Liefert True.


IsNumeric-Funktion (Beispiel)

In diesem Beispiel wird die IsNumeric-Funktion verwendet, um festzustellen, ob eine Variable eine Zahl darstellt.

Dim Var1, Test1

Var1 = "53"	' Wert zuweisen.

Test1 = IsNumeric(Var1)	' Liefert True.

Var1 = "459.95"	' Wert zuweisen.

Test1 = IsNumeric(Var1)	' Liefert True.

Var1 = "45 Hilfe"	' Wert zuweisen.

Test1 = IsNumeric(Var1)	' Liefert False.


IsObject-Funktion (Beispiel)

In diesem Beispiel wird die IsObject-Funktion verwendet, um festzustellen, ob ein Bezeichner eine Objektvariable darstellt. Objekt1 und Objekt2 sind Objektvariablen desselben Typs. Es handelt sich um allgemeine Namen, die lediglich zu Demonstrationszwecken verwendet werden.

Dim Int1 As Integer, Objekt2, Test1	' Variablen deklarieren.

Dim Objekt1 As Object

Set Objekt2 = Objekt1	' Objektverweis zuweisen.

Test1 = IsObject(Objekt2)	' Liefert True.

Test1 = IsObject(Int1)	' Liefert False.


TypeName-Funktion (Beispiel)

In diesem Beispiel wird die TypeName-Funktion verwendet, um Informationen über eine Variable zurückzugeben.

' Variablen deklarieren.

Dim NullVar, Type1, StrVar As String, IntVar As Integer, CurVar As Currency

Dim FeldVar (1 To 5) As Integer

NullVar = Null	' Null zuweisen.

Typ1 = TypeName(StrVar)	' Liefert "String".

Typ1 = TypeName(IntVar)	' Liefert "Integer".

Typ1 = TypeName(CurVar)	' Liefert "Currency".

Typ1 = TypeName(NullVar)	' Liefert "Null".

Typ1 = TypeName(FeldVar)	' Liefert "Integer()".


VarType-Funktion (Beispiel)

In diesem Beispiel wird die VarType-Funktion verwendet, um den Untertyp einer Variablen zu bestimmen.

Dim IntVar, StrVar, DatumVar, Test1

' Variablen initialisieren.

IntVar = 459: StrVar = "Hallo Welt": DatumVar = #03.10.91#

Test1 = VarType(IntVar)	' Liefert 2.

Test1 = VarType(DatumVar)	' Liefert 7.

Test1 = VarType(StrVar)	' Liefert 8.


IsArray-Funktion

Gibt einen Wert vom Typ Boolean zurück, der angibt, ob eine Variable ein Datenfeld ist.

Syntax

IsArray(VarName)

Das erforderliche Argument VarName ist ein Bezeichner, der eine Variable angibt.

Bemerkungen

IsArray gibt den Wert True zurück, wenn die Variable ein Datenfeld ist, andernfalls wird False zurückgegeben. IsArray ist insbesondere bei Variant-Werten hilfreich, die Datenfelder enthalten.


IsDate-Funktion

Gibt einen Wert vom Typ Boolean zurück, der angibt, ob ein Ausdruck in ein Datum umgewandelt werden kann.

Syntax

IsDate(Ausdruck)

Das erforderliche Argument Ausdruck ist ein Wert vom Typ Variant und enthält einen Datumsausdruck oder einen Zeichenfolgenausdruck, der als Datum oder Uhrzeit interpretiert werden kann.

Bemerkungen

IsDate gibt den Wert True zurück, wenn der Ausdruck ein Datum ist oder als ein gültiges Datum erkannt werden kann. Andernfalls wird False zurückgegeben. In Microsoft Windows liegen gültige Datumswerte im Bereich vom 1. Januar 100 n.Chr bis 31. Dezember 9999 n.Chr. Auf anderen Betriebssystemen können andere Bereiche gelten.


IsEmpty-Funktion

Gibt einen Wert vom Typ Boolean zurück, der angibt, ob eine Variable initialisiert wurde.

Syntax

IsEmpty(Ausdruck)

Das erforderliche Argument Ausdruck ist ein Wert vom Typ Variant und enthält einen numerischen Ausdruck oder einen Zeichenfolgenausdruck. Da mit der IsEmpty-Funktion jedoch geprüft wird, ob einzelne Variablen initialisiert worden sind, enthält das Argument Ausdruck in der Regel nur einen einzelnen Variablennamen.

Bemerkungen

IsEmpty gibt den Wert True zurück, wenn die Variable nicht initialisiert ist oder explizit auf Empty gesetzt wurde, andernfalls wird False zurückgegeben. Die IsEmpty-Funktion gibt immer den Wert False zurück, wenn Ausdruck mehrere Variablen enthält. IsEmpty gibt nur für Variant-Werte sinnvolle Informationen zurück.


IsError-Funktion

Gibt einen Wert vom Typ Boolean, der angibt, ob ein Ausdruck ein Fehlerwert ist.

Syntax

IsError(Ausdruck)

Das erforderliche Argument Ausdruck kann irgendein gültiger Ausdruck sein.

Bemerkungen

Mit der CVErr-Funktion wandeln Sie reelle Zahlen in einen Fehlerwert um und können so einen Fehlerwert erzeugen. Mit der IsError-Funktion stellen Sie fest, ob ein numerischer Ausdruck einen Fehlerwert darstellt. IsError gibt den Wert True zurück, wenn Ausdruck einen Fehler angibt, andernfalls wird False zurückgegeben.


IsMissing-Funktion

Gibt einen Wert vom Typ Boolean zurück, der angibt, ob einer Prozedur ein optionales Argument vom Typ Variant übergeben wurde.

Syntax

IsMissing(ArgName)

Das erforderliche Argument ArgName enthält den Namen eines optionalen Variant-Arguments einer Prozedur.

Bemerkungen

Verwenden Sie die IsMissing-Funktion, um festzustellen, ob beim Aufrufen einer Prozedur optionale Argumente übergeben wurden. IsMissing gibt den Wert True zurück, wenn für das jeweilige Argument kein Wert angegeben wurde, andernfalls wird False zurückgegeben. Wenn IsMissing den Wert True für ein Argument zurückgibt, kann die Verwendung des fehlenden Arguments im Prozedurcode einen benutzerdefinierten Fehler auslösen. Wenn IsMissing für ein ParamArray-Argument verwendet wird, wird immer False zurückgegeben. Sie können feststellen, ob ein ParamArray-Argument leer ist, indem Sie überprüfen, ob die oberere Grenze des Datenfelds kleiner als die untere Grenze ist.

Anmerkung   IsMissing funktioniert nicht mit einfachen Datentypen (wie Integer oder Double), da diese im Gegensatz zum Datentyp Variant auf ein fehlendes Attribut-Bit nicht vorbereitet sind. Daher erlaubt Ihnen die Syntax für eingegebene optionale Argumente die Angabe eines Standardwertes. Wird das Argument beim Aufrufen der Prozedur weggelassen, erhält es den Standardwert, wie im folgenden Beispiel:

Sub MySub(Optional MyVar As String = "BesondererWert")

    If MyVar = "BesondererWert" Then

    ' MyVar wurde weggelassen.

    Else

    ...

End Sub

In vielen Fällen können Sie den If MyVar-Test auslassen, indem Sie den Standardwert so definierne, daß er gleich dem Wert ist, den MyVar enthalten soll, wenn der Benutzer es im Funktionsaufruf nicht angibt. Dadurch wird Ihr Code kürzer und effizienter.


IsNull-Funktion

Gibt einen Wert vom Typ Boolean zurück, der angibt, ob ein Ausdruck keine gültigen Daten (Null) enthält.

Syntax

IsNull(Ausdruck)

Das erforderliche Argument Ausdruck ist ein Wert vom Typ Variant und enthält einen numerischen Ausdruck oder einen Zeichenfolgenausdruck.

Bemerkungen

IsNull gibt True zurück, wenn Ausdruck den Wert Null hat, andernfalls wird False zurückgegeben. Wenn Ausdruck aus mehr als einer Variablen besteht, führt ein Null-Wert in einer der Variablen dazu, daß True für den gesamten Ausdruck zurückgegeben wird.

Null zeigt an, daß der Datentyp Variant keine gültigen Daten enthält. Der Wert Null darf nicht mit dem Wert Empty verwechselt werden, der anzeigt, daß eine Variable noch nicht initialisiert wurde. Null ist auch keine Zeichenfolge der Länge Null (""), die manchmal auch als Null-Zeichenfolge bezeichnet wird.

Wichtig Mit der IsNull-Funktion können Sie feststellen, ob ein Ausdruck den Wert Null enthält. Ausdrücke, die dem Anschein nach den Wert True ergeben könnten, zum Beispiel If Var = Null und If Var <> Null, sind immer False. Der Grund liegt darin, daß jeder Ausdruck, der den Wert Null enthält, selbst den Wert Null hat und daher False ist.


IsNumeric-Funktion

Gibt einen Wert vom Typ Boolean zurück, der angibt, ob ein Ausdruck als Zahl ausgewertet werden kann.

Syntax

IsNumeric(Ausdruck)

Das erforderliche Argument Ausdruck ist ein Wert vom Typ Variant und enthält einen numerischen Ausdruck oder einen Zeichenfolgenausdruck.

Bemerkungen

IsNumeric gibt den Wert True zurück, wenn der gesamte Ausdruck als Zahl interpretiert werden kann, andernfalls wird False zurückgegeben.

IsNumeric gibt False zurück, wenn Audruck ein Datumsaudruck ist.


IsObject-Funktion

Gibt einen Wert vom Typ Boolean zurück, der angibt, ob ein Bezeichner eine Objekt-Variable darstellt.

Syntax

IsObject(Bezeichner)

Das erforderliche Argument Bezeichner ist ein Variablenname.

Bemerkungen

IsObject ist nur sinnvoll, um festzustellen, ob eine Variable vom Typ Variant den VarType-Typ vbObject hat. Dies kann der Fall sein, wenn die Variant-Variable momentan auf ein Objekt verweist (oder darauf verwiesen hat) oder wenn sie den Wert Nothing enthält.

IsObject gibt True zurück, wenn Bezeichner eine Variable mit dem Typ Object oder einer beliebigen gültigen Klasse ist, wenn Bezeichner vom Typ Variant mit dem VarType-Typ vbObject oder ein benutzerdefiniertes Objekt ist. Andernfalls wird False zurückgegeben. IsObject gibt auch dann True zurück, wenn die Variable auf Nothing gesetzt wurde.

Verwenden Sie eine Fehlerbehandlungsroutine, um sicherzustellen, daß ein Objektverweis gültig ist. Mit Hilfe der IsNothing-Funktion können Sie feststellen, ob ein Objektverweis auf Nothing gesetzt wurde.


TypeName-Funktion

Gibt eine Zeichenfolge zurück, die Informationen über eine Variable enthält.

Syntax

TypeName(VarName)

Das erforderliche Argument VarName ist ein Wert vom Typ Variant und enthält eine beliebige Variable, mit Ausnahme von Variablen eines benutzerdefinierten Typs.

Bemerkungen

TypeName kann folgende Zeichenfolgen zurückgeben:

Zurückgegebene Zeichenfolge	Variable
Objekttyp	Ein Objekt mit dem Typ Objekttyp
Byte	Byte-Wert
Integer	Ganzzahl (Integer)
Long	Ganzzahl (Long)
Single	Fließkommazahl einfacher Genauigkeit
Double	Fließkommazahl doppelter Genauigkeit
Currency	Währungsbetrag (Currency)
Decimal	Dezimalwert
Date	Datumswert (Date)
String	Zeichenfolge (String)
Boolean	Boolescher Wert
Error	Fehlerwert
Empty	Nicht initialisiert
Null	Keine gültigen Daten
Object	Ein Objekt
Unknown	Ein Objekt mit unbekanntem Typ
Nothing	Objektvariable, die auf kein Objekt verweist
Wenn VarName ein Datenfeld ist, wird eine der möglichen Zeichenfolgen (oder ein Wert vom Typ Variant) zurückgegeben, an die ein leeres Klammernpaar angehängt ist. Ist z.B. VarName ein Datenfeld mit Ganzzahlen, so gibt TypeName "Integer()" zurück.


VarType-Funktion

Gibt einen Wert vom Typ Integer zurück, der den Untertyp einer Variablen anzeigt.

Syntax

VarType(VarName)

Das erforderliche Argument VarName ist ein Wert vom Typ Variant und enthält eine beliebige Variable, mit Ausnahme von Variablen eines benutzerdefinierten Typs.

Rückgabewerte

Konstante	Wert	Beschreibung
vbEmpty	0	Empty (nicht initialisiert)
vbNull	1	Null (keine gültigen Daten)
vbInteger	2	Ganzzahl (Integer)
vbLong	3	Ganzzahl (Long)
vbSingle	4	Fließkommazahl einfacher Genauigkeit
vbDouble	5	Fließkommazahl doppelter Genauigkeit
vbCurrency	6	Währungsbetrag (Currency)
vbDate	7	Datumswert (Date)
vbString	8	Zeichenfolge (String)
vbObject	9	Objekt
vbError	10	Fehlerwert
vbBoolean	11	Boolescher Wert (Boolean)
vbVariant	12	Variant (nur bei Datenfeldern mit Variant-Werten)
vbDataObject	13	Ein Datenzugriffsobjekt
vbDecimal	14	Dezimalwert
vbByte	17	Byte-Wert
vbArray	8192	Datenfeld (Array)
Anmerkung Diese Konstanten werden durch Visual Basic für Applikationen definiert und können beliebig im Code anstelle der tatsächlichen Werte verwendet werden.

Bemerkungen

Die VarType-Funktion gibt niemals den Wert für vbArray alleine zurück. Der Wert wird immer zu einem anderen Wert addiert, um ein Datenfeld eines bestimmten Typs anzugeben. Die Konstante vbVariant wird nur in Verbindung mit vbArray zurückgegeben, um anzuzeigen, daß das Argument für die VarType-Funktion ein Datenfeld vom Typ Variant ist. Zum Beispiel wird der Wert, der für ein Datenfeld aus Ganzzahlen zurückgegeben wird, durch vbInteger + vbArray (8194) angegeben. Wenn ein Objekt eine Standardeigenschaft hat, gibt VarType (Objekt) den Typ dieser Standardeigenschaft zurück.


Empty

Das Schlüsselwort Empty wird als Variant-Untertyp verwendet und zeigt einen nicht initialisierten Variablenwert an.


False

Das Schlüsselwort False hat den Wert 0.


Me

Das Schlüsselwort Me verhält sich wie eine implizit deklarierte Variable. Es steht allen Prozeduren in einem Klassenmodul automatisch zur Verfügung. Wenn eine Klasse mehrere Instanzen haben kann, stellt Me eine Möglichkeit dar, um sich auf diejenige Instanz der Klasse zu beziehen, in der Code ausgeführt wird. Die Verwendung von Me ist insbesondere dann hilfreich, wenn Sie Informationen zur momentan ausgeführten Instanz einer Klasse an eine Prozedur in einem anderen Modul übergeben möchten. Nehmen Sie beispielsweise an, ein Modul enthielte die folgende Prozedur:

Sub FormFarbeÄndern(FormName As Form)

FormName.BackColor = RGB(Rnd * 256, Rnd * 256, Rnd * 256)

End Sub

Sie können diese Prozedur aufrufen und die aktuelle Instanz der Formularklasse als Argument übergeben, indem Sie die folgende Anweisung verwenden:

FormFarbeÄndern Me


Nothing

Das Schlüsselwort Nothing wird verwendet, um die Verbindung einer Objektvariablen zum zugehörigen Objekt aufzuheben. Weisen Sie einer Objektvariablen mit der Set-Anweisung den Wert Nothing zu. Beispiel:

Set Objekt1 = Nothing

Mehrere Objektvariablen können sich auf dasselbe Objekt beziehen. Wenn einer Objektvariablen der Wert Nothing zugewiesen wird, verweist diese Variable anschließend auf kein aktuelles Objekt mehr. Wenn mehrere Objektvariablen auf dasselbe Objekt verweisen, werden die Speicher- und Systemressourcen, die für das Objekt reserviert wurden, auf das die Variablen verweisen, erst freigegeben, nachdem alle Objektvariablen auf Nothing gesetzt wurden (entweder explizit mit Set oder implizit, nachdem die letzte Objektvariable den Gültigkeitsbereich verläßt und auf Nothing gesetzt wird.)


Null

Das Schlüsselwort Null wird als Variant-Untertyp verwendet und zeigt an, daß eine Variable keine gültigen Daten enthält.


True

Das Schlüsselwort True hat den Wert -1.


MacScript-Funktion (Beispiel)

In diesem Beispiel wird die MacScript-Funktion verwendet, um das Dialogfeld Datei wählen (das Standarddialogfeld für Dateien auf dem Macintosh) zu öffnen. Für die vom Benutzer gewählte Datei wird der vollständige Pfad zurückgegeben. Gegebenenfalls steht der Dateityp vor der Pfadangabe.

ThePath$ = Macscript("ChooseFile")


MacID-Funktion

Wird auf dem Macintosh verwendet, um eine 4-Zeichen-Konstante in einen Wert umzuwandeln, der von Dir, Kill, Shell und AppActivate verwendet werden kann.

Syntax

MacID(Konstante)

Das erforderliche Argument Konstante besteht aus vier Zeichen, die verwendet werden, um einen Ressourcentyp, Dateityp, eine Anwendungssignatur oder ein Apple-Ereignis anzugeben, z.B. TEXT, OBIN, "XLS5" für Excel-Dateien ("XLS8" für Excel 97), Microsoft Word verwendet "W6BN" ("W8BN" für Word 97), usw.

Bemerkungen

MacID wird mit Dir und Kill verwendet, um einen Macintosh-Dateityp anzugeben. Da der Macintosh die Platzhalter * und ? nicht unterstützt, können Sie eine 4-Zeichen-Konstante verwenden, anstatt Gruppen von Dateien zu kennzeichnen. Die folgende Anweisung gibt z.B. alle Dateien vom Typ TEXT im aktuellen Ordner zurück:

Dir("EinPfad", MacID("TEXT"))

MacID wird mit Shell und AppActivate verwendet, um eine Anwendung anzugeben, die die eindeutige Signatur dieser Anwendung verwendet.


MacScript-Funktion

Führt ein AppleScript-Skript aus und gibt durch das Skript einen Wert zurück, falls vorhanden.

Syntax

MacScript Skript

Das Argument Skript ist ein Zeichenfolgenausdruck. Der Zeichenfolgenausdruck kann entweder eine Reihe von AppleScript-Befehlen repräsentieren oder den Namen eines AppleScript-Skripts oder eine Skriptdatei angeben.

Bemerkungen

Bemerkungen(Chr(13)) eingebettet werden.


Abs-Funktion (Beispiel)

In diesem Beispiel wird die Abs-Funktion verwendet, um den Absolutwert einer Zahl zu berechnen.

Dim Zahl1

Zahl1 = Abs(50.3)	' Liefert 50,3.

Zahl1 = Abs(-50.3)	' Liefert 50,3.


Atn-Funktion (Beispiel)

In diesem Beispiel wird die Atn-Funktion verwendet, um den Wert von Pi zu berechnen.

Dim pi

pi = 4 * Atn(1)	' Wert von Pi berechnen.


Cos-Funktion (Beispiel)

In diesem Beispiel wird die Cos-Funktion verwendet, um den Kosinus eines Winkels zurückzugeben.

Dim Winkel1, Sekans1

Winkel1 = 1.3	' Winkel im Bogenmaß definieren.

Sekans1 = 1 / Cos(Winkel1)	' Sekans berechnen.


Exp-Funktion (Beispiel)

In diesem Beispiel wird die Exp-Funktion verwendet, um e zu potenzieren.

Dim Winkel1, HypSin1

' Winkel im Bogenmaß definieren.

Winkel1 = 1.3

' Hyperbolischen Sinus berechnen.

HypSin1 = (Exp(Winkel1) - Exp(-1 * Winkel1)) / 2


Int-, Fix-Funktionen (Beispiel)

In diesem Beispiel wird veranschaulicht, wie die Funktionen Int und Fix den ganzzahligen Teil einer Zahl zurückgeben. Bei negativen Zahlen liefert die Int-Funktion die erste ganze negative Zahl, die kleiner oder gleich der übergebenen Zahl ist, während die Fix-Funktion die erste negative ganze Zahl liefert, die größer oder gleich der übergebenen Zahl ist.

Dim Zahl1

Zahl1 = Int(99.8)	' Liefert 99.

Zahl1 = Fix(99.2)	' Liefert 99.

Zahl1 = Int(-99.8)	' Liefert -100.

Zahl1 = Fix(-99.8)	' Liefert -99.

Zahl1 = Int(-99.2)	' Liefert -100.

Zahl1 = Fix(-99.2)	' Liefert -99.


Log-Funktion (Beispiel)

In diesem Beispiel wird die Log-Funktion verwendet, um den natürlichen Logarithmus einer Zahl zurückzugeben.

Dim Winkel, Log1

' Winkel im Bogenmaß definieren.

Winkel1 = 1.3

' Inversen hyperbolischen Sinus berechnen.

Log1 = Log(Winkel1 + Sqr(Winkel1 * Winkel1 + 1))


Randomize-Anweisung (Beispiel)

In diesem Beispiel wird die Randomize-Anweisung verwendet, um den Zufallszahlengenerator zu initialisieren. Da keine Zahl übergeben wurde, verwendet Randomize den Rückgabewert der Timer-Funktion als neuen Startwert.

Dim Wert1

Randomize	' Zufallszahlengenerator initialisieren.

Wert1 = Int((6 * Rnd) + 1)	' Zufallszahlen im Bereich von 1 bis 6

' generieren.


Rnd-Funktion (Beispiel)

In diesem Beispiel wird die Rnd-Funktion verwendet, um eine zufällige ganze Zahl im Bereich von 1 bis 6 zu generieren.

Dim Wert1

Wert1 = Int((6 * Rnd) + 1)	' Zufallszahl im Bereich von 1 bis 6

' generieren.


Sgn-Funktion (Beispiel)

In diesem Beispiel wird die Sgn-Funktion verwendet, um das Vorzeichen einer Zahl zu bestimmen.

Dim Var1, Var2, Var3, Vorzeichen

Var1 = 12: Var2 = -2.4: Var3 = 0

Vorzeichen = Sgn(Var1)	' Liefert 1.

Vorzeichen = Sgn(Var2)	' Liefert -1.

Vorzeichen = Sgn(Var3)	' Liefert 0.


Sin-Funktion (Beispiel)

In diesem Beispiel wird die Sin-Funktion verwendet, um den Sinus eines Winkels zurückzugeben.

Dim Winkel1, Kosekans1

Winkel1 = 1.3	' Winkel im Bogenmaß definieren.

Kosekans1 = 1 / Sin(Winkel1)	' Kosekans berechnen.


Sqr-Funktion (Beispiel)

In diesem Beispiel wird die Sqr-Funktion verwendet, um die Quadratwurzel einer Zahl zurückzugeben.

Dim Wurzel1

Wurzel1 = Sqr(4)	' Liefert 2.

Wurzel1 = Sqr(23)	' Liefert 4,79583152331272.

Wurzel1 = Sqr(0)	' Liefert 0.

Wurzel1 = Sqr(-4)	' Erzeugt einen Laufzeitfehler.


Tan-Funktion (Beispiel)

In diesem Beispiel wird die Tan-Funktion verwendet, um den Kotangens eines Winkels zurückzugeben.

Dim Winkel1, Kotangens

Winkel1 = 1.3	' Winkel im Bogenmaß definieren.

Kotangens = 1 / Tan(Winkel1)	' Kotangens berechnen.


Mathematische Funktionen

Abs-Funktion

Atn-Funktion

Cos-Funktion

Exp-Funktion

Fix-Funktion

Int-Funktion

Log-Funktion

Rnd-Funktion

Sgn-Funktion

Sin-Funktion

Sqr-Funktion

Tan-Funktion

Abgeleitete mathematische Funktionen


Abs-Funktion

Gibt einen Wert zurück, der den gleichen Typ wie der übergebene Wert hat und den Absolutwert einer Zahl angibt.

Syntax

Abs(Zahl)

Das erforderliche Argument Zahl kann ein beliebiger zulässiger numerischer Ausdruck sein. Wenn Zahl den Wert Null enthält, wird Null zurückgegeben. Wenn die Variable nicht initialisiert ist, wird der Wert Null zurückgegeben.

Bemerkungen

Der Absolutwert einer Zahl ist der Betrag der Zahl ohne Vorzeichen. ABS(-1) und ABS(1) geben beispielsweise beide den Wert 1 zurück.


Atn-Funktion

Gibt einen Wert vom Typ Double zurück, der den Arkustangens einer Zahl angibt.

Syntax

Atn(Zahl)

Das erforderliche Argument Zahl ist ein Wert vom Typ Double oder ein anderer zulässiger numerischer Ausdruck.

Bemerkungen

Die Atn-Funktion berechnet das Verhältnis zweier Seiten eines rechtwinkligen Dreiecks (Zahl) und gibt den zugehörigen Winkel im Bogenmaß zurück. Das Verhältnis ist die Länge der dem Winkel gegenüberliegenden Seite dividiert durch die Länge der Seite, die am Winkel anliegt.

Das Ergebnis für das Bogenmaß liegt im Bereich von -Pi/2 bis Pi/2.

Zur Umrechnung von Grad in das Bogenmaß muß die Gradangabe mit Pi/180 multipliziert werden. Zur Umrechnung von Bogenmaß in Grad muß das Bogenmaß mit 180/Pi multipliziert werden.

Anmerkung   Atn ist die Umkehrfunktion der trigonometrischen Funktion Tan, die einen Winkel als Argument erhält und das Verhältnis der beiden Seiten eines rechtwinkligen Dreieck zurückgibt. Verwechseln Sie Atn nicht mit dem Kotangens, der dem Kehrwert des Tangens (1/Tangens) entspricht.


Cos-Funktion

Gibt einen Wert vom Typ Double zurück, der den Kosinus eines Winkels angibt.

Syntax

Cos(Zahl)

Das erforderliche Argument Zahl ist ein Wert vom Typ Double oder ein beliebiger zulässiger numerischer Ausdruck, der den Winkel im Bogenmaß angibt.

Bemerkungen

Die Cos-Funktion berechnet aus einem Winkel das Verhältnis von zwei Seiten in einem rechtwinkligen Dreieck. Das Verhältnis ist die Länge der Seite, die am Winkel anliegt, dividiert durch die Länge der Hypotenuse.

Das Ergebnis liegt im Bereich von -1 bis 1.

Zur Umrechnung von Grad in das Bogenmaß muß die Gradangabe mit Pi/180 multipliziert werden. Zur Umrechnung von Bogenmaß in Grad muß das Bogenmaß mit 180/Pi multipliziert werden.


Exp-Funktion

Gibt einen Wert vom Typ Double zurück, der e (die Basis des natürlichen Logarithmus) potenziert mit einem Wert angibt.

Syntax

Exp(Zahl)

Das erforderliche Argument Zahl ist ein Wert vom Typ Double oder ein beliebiger zulässiger numerischer Ausdruck.

Bemerkungen

Wenn der Wert von Zahl 709,782712893 überschreitet, tritt ein Fehler auf. Die Konstante e entspricht ungefähr dem Wert 2,718282.

Anmerkung   Die Exp-Funktion stellt die Umkehrfunktion zur Log-Funktion dar und wird manchmal als Antilogarithmus bezeichnet.


Int-, Fix-Funktionen

Gibt den ganzzahligen Anteil einer Zahl zurück.

Syntax

Int(Zahl)

Fix(Zahl)

Das erforderliche Argument Zahl ist ein Wert vom Typ Double oder ein beliebiger zulässiger numerischer Ausdruck. Wenn Zahl den Wert Null enthält, wird Null zurückgegeben.

Bemerkungen

Int und Fix entfernen beide die Nachkommastellen einer Zahl und geben den daraus resultierenden ganzzahligen Wert zurück.

Der Unterschied zwischen Int und Fix besteht darin, daß bei einem negativen Wert von Zahl Int die erste negative ganze Zahl zurückgibt, die kleiner oder gleich Zahl ist, während Fix die erste negative ganze Zahl zurückgibt, die größer oder gleich Zahl ist. Int wandelt zum Beispiel -8,4 in -9 um, während Fix -8,4 in -8 umwandelt.

Fix(Zahl) entspricht dem folgenden Ausdruck:

Sgn(Zahl) * Int(Abs(Zahl))


Log-Funktion

Gibt einen Wert vom Typ Double zurück, der den natürlichen Logarithmus einer Zahl angibt.

Syntax

Log(Zahl)

Das erforderliche Argument Zahl ist ein Wert vom Typ Double oder ein beliebiger zulässiger numerischer Ausdruck mit einem Wert größer als 0.

Bemerkungen

Der natürliche Logarithmus ist der Logarithmus zur Basis e. Die Konstante e entspricht ungefähr dem Wert 2,718282.

Sie können den Logarithmus zur Basis n für jede Zahl x berechnen, indem Sie den natürlichen Logarithmus von x wie folgt durch den natürlichen Logarithmus von n dividieren:

Logn(x) = Log(x) / Log(n)

Das folgende Beispiel veranschaulicht die Verwendung einer Function-Prozedur zur Berechnung von Logarithmen mit der Basis 10:

Static Function Log10(X)

Log10 = Log(X) / Log(10#)

End Function


Randomize-Anweisung

Initialisiert den Zufallszahlengenerator.

Syntax

Randomize [Zahl]

Das optionale Argument Zahl ist ein Wert vom Typ Variant oder ein beliebiger zulässiger numerischer Ausdruck.

Bemerkungen

Randomize verwendet Zahl zum Initialisieren des Zufallszahlengenerators der Rnd-Funktion, indem er ihm einen neuen Startwert gibt. Wenn Sie Zahl nicht angeben, wird der vom Systemzeitgeber zurückgegebene Wert als neuer Startwert verwendet.

Wird Randomize nicht verwendet, dann verwendet die Rnd-Funktion (ohne Argumente) dieselbe Zahl als Startwert, wenn sie das erste Mal aufgerufen wird. Danach verwendet sie die zuletzt erzeugte Zahl als Startwert.

Anmerkung   Wenn Sie Folgen von Zufallszahlen wiederholen möchten, rufen Sie Rnd mit einem negativen Argument auf, unmittelbar bevor Sie Randomize mit einem numerischen Argument verwenden. Durch Verwenden von Randomize mit demselben Wert für Zahl wird die vorherige Folge nicht wiederholt.


Rnd-Funktion

Gibt einen Wert vom Typ Single zurück, der eine Zufallszahl darstellt.

Syntax

Rnd[(Zahl)]

Das optionale Argument Zahl ist ein Wert vom Typ Single oder ein beliebiger zulässiger numerischer Ausdruck.

Rückgabewerte

Wert von Zahl	Generierte Zufallszahl
Kleiner als Null	Immer dieselbe Zahl, die als Startwert Zahl verwendet.
Größer als Null	Die nächste Zufallszahl in der Folge.
Gleich Null	Die zuletzt generierte Zahl.
Nicht angegeben	Die nächste Zufallszahl in der Folge.
Bemerkungen

Die Rnd-Funktion gibt einen Wert zurück, der kleiner als 1, aber größer als oder gleich Null ist.

Der Wert von Zahl bestimmt, wie Rnd eine Zufallszahl generiert:

Für jeden gegebenen Standardwert wird dieselbe Zufallszahlenfolge generiert, weil bei jedem nachfolgenden Aufruf der Rnd-Funktion die vorherige Zahl als Startwert für die nächste Zahl in der Folge dient.

Bevor Sie Rnd aufrufen, verwenden Sie die Randomize-Anweisung ohne Argument, um den Zufallszahlengenerator mit einem Startwert zu initialisieren, der auf dem Systemzeitgeber basiert.

Verwenden Sie die folgende Formel, um ganzzahlige Zufallszahlen innerhalb eines bestimmten Bereichs zu erzeugen:

Int((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)

Obergrenze steht hier für die größte Zahl des Bereichs und Untergrenze für die kleinste Zahl des Bereichs.

Anmerkung   Wenn Sie Folgen von Zufallszahlen wiederholen möchten, rufen Sie Rnd mit einem negativen Argument auf, unmittelbar bevor Sie Randomize mit einem numerischen Argument verwenden. Durch Verwenden von Randomize mit demselben Wert für Zahl wird die vorherige Folge nicht wiederholt.


Sgn-Funktion

Gibt einen Wert vom Typ Variant (Integer) zurück, der das Vorzeichen einer Zahl darstellt.

Syntax

Sgn(Zahl)

Das erforderliche Argument Zahl kann ein beliebiger numerischer Ausdruck sein.

Rückgabewerte

Wert von Zahl	Rückgabewert von Sgn
Größer als Null	1
Gleich Null	0
Kleiner als Null	-1
Bemerkungen

Das Vorzeichen des Arguments Zahl legt den Rückgabewert der Sgn-Funktion fest.


Sin-Funktion

Gibt einen Wert vom Typ Double zurück, der den Sinus eines Winkels enthält.

Syntax

Sin(Zahl)

Das erforderliche Argument Zahl ist ein Wert vom Typ Double oder ein beliebiger zulässiger numerischer Ausdruck, der einen Winkel im Bogenmaß ausdrückt.

Bemerkungen

Die Sin-Funktion berechnet einen Winkel und gibt das Verhältnis von zwei Seiten eines rechtwinkligen Dreiecks zurück. Das Verhältnis entspricht der Länge der dem Winkel gegenüberliegenden Seite dividiert durch die Länge der Hypotenuse.

Das Ergebnis liegt im Bereich von -1 bis 1.

Zur Umrechnung von Grad in Bogenmaß muß die Gradangabe mit Pi/180 multipliziert werden. Zur Umrechnung von Bogenmaß in Grad muß das Bogenmaß mit 180/Pi multipliziert werden.


Sqr-Funktion

Gibt einen Wert vom Typ Double zurück, der die Quadratwurzel einer Zahl angibt.

Syntax

Sqr(Zahl)

Das erforderliche Argument Zahl ist ein Wert vom Typ Double oder ein beliebiger zulässiger numerischer Ausdruck, der größer oder gleich Null ist.


Tan-Funktion

Gibt einen Wert vom Typ Double wieder, der den Tangens eines Winkels angibt.

Syntax

Tan(Zahl)

Das erforderliche Argument Zahl ist ein Wert vom Typ Double oder ein beliebiger zulässiger numerischer Ausdruck, der einen Winkel im Bogenmaß ausdrückt.

Bemerkungen

Tan berechnet einen Winkel und gibt das Verhältnis von zwei Seiten eines rechtwinkligen Dreiecks zurück. Das Verhältnis entspricht der Länge der dem Winkel gegenüberliegenden Seite dividiert durch die Länge der an den Winkel anliegenden Seite.

Zur Umrechnung von Grad in Bogenmaß muß die Gradangabe mit Pi/180 multipliziert werden. Zur Umrechnung von Bogenmaß in Grad muß das Bogenmaß mit 180/Pi multipliziert werden.


Abgeleitete mathematische Funktionen

Die folgende Liste enthält die nicht integrierten mathematischen Funktionen, die aus den integrierten mathematischen Funktionen abgeleitet werden können:

Funktion	Abgeleitete Äquivalenten
Sekans	Sekans(X) = 1 / Cos(X)
Kosekans	Kosekans(X) = 1 / Sin(X)
Kotangens	Kotangens(X) = 1 / Tan(X)
Arkussinus	Arkussinus(X) = Atn(X / Sqr(-X * X + 1))
Arkuskosinus	Arkuskosinus(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
Arkussekans	Arkussekans(X) = Atn(X / Sqr(X * X – 1)) + Sgn((X) – 1) * (2 * Atn(1))
Arkuskosekans	Arkuskosekans(X) = Atn(X / Sqr(X * X - 1)) + (Sgn(X) - 1) * (2 * Atn(1))
Arkuskotangens	Arkuskotangens(X) = Atn(X) + 2 * Atn(1)
Hyperb. Sinus	HSin(X) = (Exp(X) – Exp(-X)) / 2
Hyperb. Kosinus	HCos(X) = (Exp(X) + Exp(-X)) / 2
Hyperb. Tangens	HTan(X) = (Exp(X) – Exp(-X)) / (Exp(X) + Exp(-X))
Hyperb. Sekans	HSekans(X) = 2 / (Exp(X) + Exp(-X))
Hyperb. Kosekans	HKosekans(X) = 2 / (Exp(X) – Exp(-X))
Hyperb. Kotangens	HKotangens(X) = (Exp(X) + Exp(-X)) / (Exp(X) – Exp(-X))
Hyperb. Arkussinus	HArkussinus(X) = Log(X + Sqr(X * X + 1))
Hyperb. Arkuskosinus	HArkuskosinus(X) = Log(X + Sqr(X * X - 1))
Hyperb. Arkustangens	HArkustangens(X) = Log((1 + X) / (1 – X)) / 2
Hyperb. Arkussekans	HArkussekans(X) = Log((Sqr(-X * X + 1) + 1) / X)
Hyperb. Arkuskosekans	HArkuskosekans(X) = Log((Sgn(X) * Sqr(X * X + 1) + 1) / X)
Hyperb. Arkuskotangens	HArkuskotangens(X) = Log((X + 1) / (X – 1)) / 2
Logarithmus zur Basis N	LogN(X) = Log(X) / Log(N)


Add-Methode (Beispiel)

In diesem Beispiel wird die Add-Methode verwendet, um Inst-Objekte (Instanzen einer Klasse mit dem Namen Klasse1, die eine Public-Variable mit dem Namen Instanzname enthalten) zu einer Auflistung mit dem Namen TestClasses hinzuzufügen. Sie probieren dieses Beispiel aus, indem Sie ein Klassenmodul einfügen und eine öffentliche Variable mit dem Namen Instanzname auf der Modulebene von Klasse1 deklarieren (geben Sie Public Instanzname ein), die die Namen der einzelnen Instanzen aufnimmt. Ändern Sie den Standardnamen Klasse1 nicht. Kopieren Sie den folgenden Code, und fügen Sie ihn in die Form_Load-Ereignisprozedur eines Formularmoduls ein.

Dim TestClasses As New Collection	' Collection-Objekt erstellen.

Dim Num As Integer	' Zähler für Namen der einzelnen

' Schlüssel.

Dim Mldg

Dim DerName	' Zum Speichern der eingegebenen

' Namen.

Do

Dim Inst As New Klasse1	' Neue Klasse1-Instanz erstellen.

Num = Num + 1	' Num hochzählen und Namen abrufen.

Mldg = "Welchen Namen soll das Objekt bekommen?" & Chr(13) _

 & "Drücken Sie 'Abbrechen', um die Namen in der Auflistung " & _

 "anzuzeigen."

DerName = InputBox(Mldg, "Namen der Auflistungselemente")

Inst.Instanzname = DerName	' Name in Objektinstanz speichern.

' Wenn Benutzer einen Namen eingegeben hat, Objekt zur Auflistung

' hinzufügen.

If Inst.Instanzname <> "" Then

' Benanntes Objekt zur Auflistung hinzufügen.

TestClasses.Add item := Inst, key := CStr(Num)

End If

' Aktuellen Verweis als Vorbereitung auf den nächsten löschen.

Set Inst = Nothing

Loop Until DerName = ""

 For Each x In TestClasses

MsgBox x.Instanzname, , "Instanzname"

Next


Clear-Methode (Beispiel)

In diesem Beispiel wird die Clear-Methode des Err-Objekts verwendet, um die numerischen Eigenschaften des Err-Objekts auf Null und seine Zeichenfolgeneigenschaften auf Null-Zeichenfolgen zurückzusetzen. Wenn die Clear-Methode im nachfolgenden Code-Beispiel fehlen würde, würde (nach Auftreten eines Fehlers) bei jedem Schleifendurchlauf das Dialogfeld mit der Fehlermeldung angezeigt werden, unabhängig davon, ob eine nachfolgende Berechnung einen Fehler erzeugt hat. Sie können den Code in Einzelschritten durchlaufen, um die Auswirkungen zu verfolgen.

Dim Ergebnis(10) As Integer	' Datenfelder deklarieren dessen Elemente

' schnell einen Überlauf auslösen.

Dim indx

On Error Resume Next	' Fehlerbehandlung zurückstellen.

Do Until indx = 10

' Hin und wieder einen Fehler auslösen oder Ergebnis bei fehlerfreier Berechnung speichern.

Result(indx) = Rnd * indx * 20000

If Err.Number <> 0 Then

MsgBox Err, , "Fehler: ", Err.HelpFile, Err.HelpContext

Err.Clear	' Eigenschaften des Err-Objekts löschen.

End If

indx = indx + 1

Loop


Item-Methode (Beispiel)

In diesem Beispiel wird die Item-Methode verwendet, um einen Verweis auf ein Objekt in einer Auflistung abzurufen. Unter der Annahme, daß Birthdays ein Collection-Objekt ist, ruft der folgende Code aus der Auflistung Verweise auf die Objekte ab, die Christian Schmidts und Alexander Mücks Geburtstage darstellen, wobei die Schlüssel "ChrisSchmidt" und "AlexMück" als Index-Argumente angegeben werden. Der erste Aufruf gibt die Item-Methode explizit an, der zweite nicht. Beide Aufrufe funktionieren, da die Item-Methode die Standardmethode für ein Collection-Objekt ist. Die Verweise, die ChrisSchmidtGeb und AlexMückGeb mit Set zugewiesen werden, können verwendet werden, um auf die Eigenschaften und Methoden der angegebenen Objekte zuzugreifen. Sie starten diesen Code, indem Sie die Auflistung erstellen und mit mindestens den beiden Elementen auffüllen, auf die verwiesen wird.

Dim ChrisSchmidtGeb As Object

Dim AlexMückGeb As Object

Dim Birthdays

Set ChrisSchmidtGeb = Birthdays.Item("ChrisSchmidt")

Set AlexMückGeb = Birthdays("AlexMück")


Print-Methode (Beispiel)

In diesem Beispiel wird unter Verwendung der Print-Methode der Wert der Variablen Var1 im Direktfenster angezeigt. Die Print-Methode kann nur für Objekte verwendet werden, die Text anzeigen können.

Dim Var1

Var1 = "Scott me up, Beamie."

Debug.Print Var1


Raise-Methode (Beispiel)

In diesem Beispiel wird die Raise-Methode des Err-Objekts verwendet, um einen Fehler innerhalb eines Automatisierungsobjekts, das in Visual Basic geschrieben wurde, zu erzeugen. Es enthält die Ressourcenkennzeichnung Proj1.Objekt1. Auf dem MacIntosh ist die Standardlaufwerkbezeichnung "HD", und die Bestandteile eines Pfades werden durch Doppelpunkte statt umgekehrter Schrägstriche voneinander getrennt.

Const Kontext1 = 1010407	' Konstante für Kontextkennung

' definieren.

Function TestName(AktName, NeuName)

If Instr(NeuName, "Rita") Then	' Gültigkeit von NeuName überprüfen.

' Fehlerzustand auslösen

Err.Raise vbObjectError + 513, "Proj1.Objekt1", _

"Name darf ""Rita"" nicht enthalten", "c:\Proj1\Hilfe1.Hlp", _

Kontext1

End If

End Function


Remove-Methode (Beispiel)

In diesem Beispiel wird die Verwendung der Remove-Methode beim Entfernen von Objekten aus einem Collection-Objekt (in diesem Fall TestClasses) veranschaulicht. Dieser Code entfernt bei jedem Schleifendurchlauf das Objekt, dessen Index den Wert 1 hat.

Dim Num, TestClasses

For Num = 1 To TestClasses.Count

TestClasses.Remove 1	' Erstes Objekt bei jedem Schleifen-

' durchlauf entfernen, bis alle

' Objekte der Auflistung gelöscht

' sind.

Next Num


Add-Methode

Fügt einem Collection-Objekt ein Element hinzu.

Syntax

Objekt.Add (item, key, before, after)

Die Syntax der Add-Methode verwendet den folgenden Objektbezeichner und die folgenden benannten Argumente:

Teil	Beschreibung
Objekt	Erforderlich. Ein Objektausdruck, der ein Objekt in der Liste unter Betrifft ergibt.
item	Erforderlich. Ein Ausdruck eines beliebigen Typs, der das Element angibt, das der Auflistung hinzugefügt wird.
key	Optional. Ein eindeutiger Zeichenfolgenausdruck, der eine Schlüsselzeichenfolge angibt, die anstelle eines Positionsindexes verwendet werden kann, um auf ein Element der Auflistung zuzugreifen.
before	Optional. Ein Ausdruck, der eine relative Position in der Auflistung angibt. Das Element, das hinzugefügt werden soll, wird in der Auflistung vor dem Element positioniert, das durch das Argument before gekennzeichnet wird. Wenn es sich um einen numerischen Ausdruck handelt, muß before eine Zahl von 1 bis zum Wert der Count-Eigenschaft der Auflistung sein. Wenn es sich um einen Zeichenfolgenausdruck handelt, muß before mit dem Wert key übereinstimmen, der für das referenzierte Element angegeben wurde, als dieses zur Auflistung hinzugefügt wurde. Sie können als Positionsargument entweder before oder after angeben, aber nicht beides.
after	Optional. Ein Ausdruck, der eine relative Position in der Auflistung angibt. Das Element, das hinzugefügt werden soll, wird in der Auflistung hinter dem Element positioniert, das durch das Argument after angegeben wird. Wenn es sich um einen numerischen Ausdruck handelt, muß after eine Zahl von 1 bis zum Wert Count-Eigenschaft der Auflistung sein. Wenn es sich um einen Zeichenfolgenausdruck handelt, muß after mit dem Wert für key übereinstimmen, der für das referenzierte Element angegeben wurde, als dieses zur Auflistung hinzugefügt wurde. Sie können als Positionsargument entweder before oder after angeben, aber nicht beides.
Bemerkungen

Das Argument before oder after muß sowohl als Zeichenfolgenausdruck als auch als numerischer Ausdruck auf ein existierendes Element der Auflistung verweisen, ansonsten tritt ein Fehler auf.

Ein Fehler tritt auch auf, wenn ein angegebener Wert für key mit dem key-Wert für ein bereits existierendes Element der Auflistung übereinstimmt.


Clear-Methode

Löscht alle Einstellungen der Eigenschaften des Err-Objekts.

Syntax

Objekt.Clear

Das Objekt ist immer das Err-Objekt.

Bemerkungen

Mit Clear löschen Sie das Err-Objekt explizit, nachdem ein Fehler verarbeitet wurde. Dies ist zum Beispiel erforderlich, wenn Sie On Error Resume Next verwenden und die Fehler erst später verarbeiten. Die Clear-Methode wird automatisch aufgerufen, sobald eine der folgenden Anweisungen ausgeführt wird:

•	Alle Arten von Resume-Anweisungen

•	Exit Sub, Exit Function, Exit Property

•	Jede On Error-Anweisung

Anmerkung   Die Konstruktion On Error Resume Next ist möglicherweise besser geeignet als On Error GoTo, wenn Sie Fehler verarbeiten, die beim Zugriff auf andere Objekte ausgelöst wurden. Wenn Sie Err nach jeder Interaktion mit einem Objekt überprüfen, ist jederzeit eindeutig sichergestellt, auf welches Objekt der Code zugegriffen hat, als der Fehler aufgetreten ist. Sie wissen daher, welches Objekt den Fehlercode in Err.Number gespeichert hat und welches Objekt den (in Err.Source angegebenen) Fehler ursprünglich ausgelöst hat.


Item-Methode

Gibt ein bestimmtes Element eines Collection-Objekts über die Position oder den Schlüssel zurück.

Syntax

Objekt.Item(Index)

Die Syntax der Item-Methode besteht aus folgendem Objektbezeichner und folgendem Teil:

Teil	Beschreibung
Objekt	Erforderlich. Ein Objektausdruck, der ein Objekt in der Liste unter Betrifft ergibt.
Index	Erforderlich. Ein Ausdruck, der die Position eines Elements der Auflistung angibt. Wenn es sich um einen numerischen Ausdruck handelt, muß Index eine Zahl von 1 bis zum Wert der Count-Eigenschaft der Auflistung sein. Wenn es sich um einen Zeichenfolgenausdruck handelt, muß Index mit dem Wert des Arguments key übereinstimmen, der angegeben wurde, als das referenzierte Element zur Auflistung hinzugefügt wurde.
Bemerkungen

Wenn der als Index angegebene Wert auf kein bereits existierendes Element der Auflistung verweist, tritt ein Fehler auf.

Die Item-Methode ist die Standardmethode für eine Auflistung. Die folgenden Codezeilen sind daher äquivalent:

Print Auflistung(1)

Print Auflistung.Item(1)


Print-Methode

Gibt Text im Direktfenster aus.

Syntax

Objekt.Print [Ausgabeliste]

Die Syntax der Print-Methode besteht aus folgendem Objektbezeichner und folgendem Teil:

Teil	Beschreibung
Objekt	Optional. Ein Objektausdruck, der ein Objekt in der Liste unter Betrifft ergibt.
Ausgabeliste	Optional. Ein Ausdruck oder eine Liste von Ausdrücken, die ausgegeben werden sollen. Wenn dieser Wert nicht angegeben wird, wird eine Leerzeile ausgegeben.
Das Argument Ausgabeliste verwendet die folgende Syntax und die folgenden Teile:

{Spc(n) | Tab(n)} Ausdruck ZeichPos

Teil	Beschreibung
Spc(n)	Optional. Wird verwendet, um Leerzeichen auszugeben, wobei n die Anzahl der auszugebenden Leerzeichen ist.
Tab(n)	Optional. Wird verwendet, um die Einfügemarke an einer absoluten Spaltennummer zu positionieren, wobei n die Spaltennummer angibt. Verwenden Sie Tab ohne Argument, um die Einfügemarke am Anfang des nächsten Ausgabebereichs zu positionieren.
Ausdruck	Optional. Ein numerischer Ausdruck oder Zeichenfolgenausdruck, der ausgegeben werden soll.
ZeichPos	Optional. Gibt die Einfügemarke für das nächste Zeichen an. Verwenden Sie ein Semikolon (;), um die Einfügemarke unmittelbar hinter das letzte angezeigte Zeichen zu setzen. Verwenden Sie Tab(n), um die Einfügemarke an eine absolute Spaltennummer zu setzen. Verwenden Sie Tab ohne Argument, um die Einfügemarke an den Anfang des nächsten Ausgabebereichs zu setzen. Wenn ZeichPos nicht angegeben wird, wird das nächste Zeichen in der nächsten Zeile ausgegeben.
Bemerkungen

Mehrere Ausdrücke können entweder mit einem Leerzeichen oder mit einem Semikolon getrennt werden.

Alle Daten, die im Direktfenster ausgegeben werden, sind korrekt formatiert, d.h., es wird das Dezimaltrennzeichen verwendet, das in den Gebietsschema-Einstellungen für das System festgelegt ist. Die Schlüsselwörter werden in der entsprechenden Sprache für die Host-Anwendung ausgegeben.

Daten vom Typ Boolean werden entweder als Wahr oder als Falsch ausgegeben. Die Schlüsselwörter True und False werden entsprechend der Einstellung des Gebietsschemas für die Host-Anwendung übersetzt.

Daten vom Typ Date werden mit dem Standardformat für kurze Datumsangaben auf Ihrem System ausgegeben. Wenn entweder die Datums- oder Zeitkomponente fehlt, oder eine Komponente den Wert Null hat, werden nur die angegebenen Informationen ausgegeben.

Keine Ausgabe erfolgt, wenn die Daten für Ausgabeliste den Wert Empty haben. Wenn die Daten für Ausgabeliste jedoch den Wert Null haben, wird Null ausgegeben. Das Schlüsselwort Null wird bei der Ausgabe entsprechend übersetzt.

Bei Fehlerinformationen wird Fehler Fehlercode ausgegeben. Das Schlüsselwort Error wird bei der Ausgabe entsprechend übersetzt.

Das Objekt wird benötigt, wenn die Methode außerhalb eines Moduls verwendet wird, das einen Standardanzeigebereich hat. Beispielsweise tritt ein Fehler auf, wenn die Methode in einem Standardmodul aufgerufen wird, ohne daß ein Objekt angegeben wird. Wenn Sie hingegen in einem Formularmodul aufgerufen wird, wird Ausgabeliste auf dem Formular angezeigt.

Anmerkung   Da die Print-Methode normalerweise Zeichen in einer Proportionalschrift ausgibt, besteht kein Zusammenhang zwischen der Anzahl der ausgegebenen Zeichen und der Anzahl der Spalten mit fester Breite, in denen diese Zeichen ausgegeben werden. Ein breiter Buchstabe wie "W" benötigt zum Beispiel mehr Platz als eine Spalte fester Breite, während ein schmaler Buchstabe wie "i" weniger Platz benötigt. Damit überdurchschnittlich breite Zeichen richtig dargestellt werden, muß der Abstand zwischen Ihren Tabellenspalten groß genug sein. Alternativ können Sie eine Schriftart mit fester Zeichenbreite (wie beispielsweise Courier) verwenden, um sicherzustellen, daß jedes Zeichen nur eine Spalte benötigt.


Raise-Methode

Löst einen Laufzeitfehler aus.

Syntax

Objekt.Raise (number, source, description, helpfile, helpcontext)

Die Syntax der Raise-Methode verwendet die folgenden Objektbezeichner und die folgenden benannten Argumente:

Argument	Beschreibung
Objekt	Erforderlich. Immer das Err-Objekt.
number	Erforderlich. Eine Ganzzahl vom Typ Long, die den Fehlertyp kennzeichnet. Visual Basic-Fehler (sowohl integrierte Visual Basic-Fehler als auch benutzerdefinierte Fehler) liegen im Bereich 0 - 65535. Der Bereich 0–512 ist für Systemfehler reserviert; der Bereich 513–65535 steht für benutzerdefinierte Fehler zur Verfügung. Wenn Sie die Number-Eigenschaft in einem Klassenmodul auf einen eigenen Fehlercode setzen, addieren Sie die Nummer des Fehlercodes zu der Konstanten vbObjectError. Sie erzeugen zum Beispiel die Fehlernummer 1050, indem sie der Number-Eigenschaft vbObjectError + 1050 zuweisen.
source	Optional. Ein Zeichenfolgenausdruck, der das Objekt oder die Anwendung bezeichnet, das oder die ursprünglich den Fehler ausgelöst hat. Wenn Sie diese Eigenschaft für ein Objekt festlegen, verwenden Sie die Form Projekt.Klasse. Wenn Quelle nicht angegeben wird, wird die Ressource-ID des aktuellen Visual Basic-Projekts verwendet.
description	Optional. Ein Zeichenfolgenausdruck, der den Fehler beschreibt. Wenn kein Ausdruck angegeben wird, wird der Wert in Number untersucht. Wenn er dem Code eines Visual Basic-Laufzeitfehlers zugeordnet werden kann, wird die Zeichenfolge, die von der Error-Funktion zurückgegeben wird, für Description verwendet. Wenn kein Visual Basic-Fehler dem Wert von Number entspricht, wird die Mitteilung "Anwendungs- oder objektdefinierter Fehler" verwendet.
helpfile	Optional. Der vollständige Pfad einer Hilfedatei, in der Hilfe zu diesem Fehler gefunden werden kann. Wird kein Pfad angegeben, so verwendet Visual Basic den vollständigen Dateinamen (mit Laufwerk und Pfadangabe) der Visual Basic-Hilfedatei.
helpcontext	Optional. Die Kontextkennung für ein Thema in der durch helpfile angegebenen Hilfedatei, das Hilfe zu dem Fehler enthält. Wird keine Kennung angegeben, so wird die Kontextkennung aus der Visual Basic-Hilfedatei verwendet, die dem Wert der Number-Eigenschaft entspricht (sofern vorhanden).
Bemerkungen

Alle Argumente bis auf number sind optional. Wenn Sie dagegen Raise verwenden, ohne Argumente anzugeben, und wenn die Einstellungen der Eigenschaften des Err-Objekts Werte enthalten, die noch nicht gelöscht wurden, werden diese Werte für Ihren Fehler verwendet.

Raise wird zum Erzeugen von Laufzeitfehlern verwendet und kann anstelle der Error-Anweisung verwendet werden. Raise ist hilfreich beim Erzeugen von Fehlern, wenn Sie Klassenmodule schreiben, da das Err-Objekt mehr Informationen zur Verfügung stellt als die Error-Anweisung. Mit der Raise-Methode kann zum Beispiel der ursprüngliche Auslöser des Fehlers in der Source-Eigenschaft angegeben werden, oder Sie können auf die Hilfe für den Fehler verweisen usw.


Remove-Methode

Entfernt ein Element aus einem Collection-Objekt.

Syntax

Objekt.Remove Index

Die Syntax der Remove-Methode besteht aus folgendem Objektbezeichner und folgendem Teil:

Teil	Beschreibung
Objekt	Erforderlich. Ein Objektausdruck, der ein Objekt in der Liste unter Betrifft angibt.
Index	Erforderlich. Ein Ausdruck, der die Position eines Elements einer Auflistung angibt. Wenn es sich um einen numerischen Ausdruck handelt, muß Index eine Zahl von 1 bis zum Wert der Count-Eigenschaft der Aufzählung sein. Wenn es sich um einen Zeichenfolgenausdruck handelt, muß Index mit dem Wert für das Argument key übereinstimmen, der angegeben wurde, als das referenzierte Element zur Auflistung hinzugefügt wurde.
Bemerkungen

Wenn der als Index angegebene Wert auf kein bereits existierendes Element der Auflistung verweist, tritt ein Fehler auf.


AppActivate-Anweisung (Beispiel)

In diesem Beispiel werden verschiedene Einsatzmöglichkeiten der AppActivate-Anweisung zum Aktivieren eines Anwendungsfensters veranschaulicht. Die Shell-Anweisung setzt voraus, daß sich die Anwendungen in dem angegebenen Pfad befinden.   Auf dem Macintosh ist der Standardlaufwerkname "HD", unt Bestandteile eines Pfades werden durch Doppelpunkte statt durch umgekehrte Schrägstriche voneinander getrennt.

Dim AnwID, Ergebnis

AppActivate "Microsoft Word"	' Microsoft Word

' aktivieren.

' AppActivate kann auch den Rückgabewert der Shell-Funktion verwenden.

AnwID = Shell("C:\WORD\WINWORD.EXE", 1)	' Microsoft Word

' starten.

AppActivate AnwID	' Microsoft Word

' aktivieren.

' Alternativ können Sie den Rückgabewert der Shell-Funktion verwenden.

Ergebnis = Shell("c:\EXCEL\EXCEL.EXE",1)	' Microsoft Excel

' starten.

AppActivate Ergebnis	' Microsoft Excel

' aktivieren.


Beep-Anweisung (Beispiel)

In diesem Beispiel wird die Beep-Anweisung verwendet, um drei aufeinanderfolgende Signaltöne über den Lautsprecher des Computers auszugeben.

Dim I

For I = 1 To 3	' 3 Schleifendurchläufe.

Beep	' Signalton ausgeben.

Next I


Command-Funktion (Beispiel)

In diesem Beispiel wird die Command-Funktion verwendet, um die Befehlszeilenargumente in einer Funktion abzurufen. Sie werden in einem Wert vom Typ Variant, welcher ein Datenfeld enthält, zurückgegeben. Nicht verfügbar in Microsoft Office.

Function BefZeileAbrufen(Optional MaxArgs)

' Variablen deklarieren.

Dim C, BefZl, BefZlLng, InArg, I, ZahlArgs

' Feststellen, ob MaxArgs angegeben wurde.

If IsMissing(MaxArgs) Then MaxArgs = 10

' Datenfeld passender Größe erstellen.

ReDim ArgFeld(MaxArgs)

NumArgs = 0: InArg = False

' Befehlszeilenargumente abrufen.

BefZl = Command()

BefZlLng = Len(BefZl)

' Befehlszeile Zeichen für Zeichen

' durchgehen.

For I = 1 To BefZlLng

C = Mid(BefZl, I, 1)

' Auf Leerzeichen oder Tabulatoren prüfen.

If (C <> " " And C <> vbTab) Then

' Weder Leerzeichen noch Tabulatoren.

' Überprüfen ob bereits in Argument enthalten.

If Not InArg Then

' Anfang des neuen Arguments.

' Überprüfen, ob zu viele Argumente verwendet wurden.

If ZahlArgs = MaxArgs Then Exit For

ZahlArgs = ZahlArgs + 1

InArg = True

End If

' Zeichen an aktuelles Argument anfügen.

ArgFeld(ZahlArgs) = ArgFeld(ZahlArgs) + C

Else

' Tabulator oder Leerzeichen gefunden.

' Das InArg-Attribut auf False festlegen.

InArg = False

End If

Next I

' Größe des Datenfeldes neu bestimmen, so daß es

' gerade alle Argumente aufnehmen kann.

ReDim Preserve ArgFeld(ZahlArgs)

' Datenfeld in Funktionsnamen zurückgeben.

BefZeileAbrufen = ArgFeld()

End Function


InputBox-Funktion (Beispiel)

In diesem Beispiel werden verschiedene Möglichkeiten aufgezeigt, wie der Benutzer mit der InputBox-Funktion zur Eingabe eines Wertes aufgefordert werden kann. Wenn die X- und Y-Positionen nicht angegeben werden, wird der Dialog automatisch auf dem Bildschirm horizontal und vertikal zentriert. Die Variable Wert1 enthält den eingegebenen Wert, wenn der Benutzer auf OK klickt oder die EINGABETASTE drückt. Wenn der Benutzer auf Abbrechen klickt, wird eine Null-Zeichenfolge zurückgegeben.

Dim Mldg, Titel, Voreinstellung, Wert1

Mldg = "Wert von 1 bis 3 eingeben"	' Aufforderung festlegen.

Titel = "InputBox-Demo"	' Titel festlegen.

Voreinstellung = "1"	' Voreinstellung festlegen.

' Meldung, Titel und Standardwert anzeigen.

Wert1 = InputBox(Mldg, Titel, Voreinstellung)

' Hilfedatei und Kontext verwenden. Die Schaltfläche "Hilfe".

' wird automatisch hinzugefügt.

Wert1 = InputBox(Mldg, Titel, , , , "DEMO.HLP", 10)

' Dialog an der Position 100,100 anzeigen.

Wert1 = InputBox(Mldg, Titel, Voreinstellung, 100, 100)


MsgBox-Funktion (Beispiel)

In diesem Beispiel wird die MsgBox-Funktion verwendet, um eine Meldung zu einem schwerwiegenden Fehler in einem Dialogfeld mit den Schaltflächen Ja und Nein anzuzeigen. Nein ist dabei die Voreinstellung. Der von MsgBox gelieferte Wert hängt von der Schaltfläche ab, die der Benutzer wählt. Im Rahmen dieses Beispiels wird angenommen, daß DEMO.HLP eine Hilfedatei ist, in der ein Thema mit der Kontextnummer 1000 vorhanden ist.

Dim Mldg, Stil, Titel, Hilfe, Ktxt, Antwort, Text1

Mldg = "Möchten Sie fortfahren ?"	' Meldung definieren.

Stil = vbYesNo + vbCritical + vbDefaultButton2	' Schaltflächen

' definieren.

Titel = "MsgBox-Demonstration"	' Titel definieren.

Hilfe = "DEMO.HLP"	' Hilfedatei

' definieren.

Ktxt = 1000	' Kontext für Thema

' definieren.

Antwort = MsgBox(Mldg, Stil, Titel, Hilfe, Ktxt)	' Meldung anzeigen.

If Antwort = vbYes Then	' Benutzer hat "Ja"

' gewählt.

Text1 = "Ja"	' Operation ausführen.

Else	' Benutzer hat "Nein"

' gewählt.

Text1 = "Nein"	' Operation ausführen.

End If


SendKeys-Anweisung (Beispiel)

In diesem Beispiel wird die Shell-Funktion verwendet, um die Rechner-Anwendung von Microsoft Windows auszuführen. Anschließend werden mit der SendKeys-Anweisung Tastenanschläge an den Rechner gesendet, um Zahlen zu addieren und den Rechner wieder zu beenden. (Sie probieren das Beispiel aus, indem Sie es in eine Prozedur einfügen und diese anschließend ausführen. Da AppActivate den Fokus auf die Rechner-Anwendung setzt, können Sie den Code nicht mit Einzelschritten ausführen.) Verwenden Sie auf dem Macintosh anstelle des Windows-Rechners eine Macintosh-Anwendung, die Tastatureingabe akzeptiert.

Dim Ergebnis, I

Ergebnis = Shell("CALC.EXE", 1)	' Rechner starten.

AppActivate Ergebnis 	' Rechner aktivieren.

For I = 1 To 100	' Zählschleife beginnen.

SendKeys I & "{+}", True	' Tastenanschläge senden, um die

Next I	' Werte von I zu addieren.

SendKeys "=", True	' Gesamtsumme abrufen.

SendKeys "%{F4}", True	' Rechner mit ALT+F4 beenden.


AppActivate-Anweisung

Aktiviert ein Anwendungsfenster.

Syntax

AppActivate title[, wait]

Die Syntax der AppActivate-Anweisung verwendet die folgenden benannten Argumente:

Teil	Beschreibung
title	Erforderlich. Ein Zeichenfolgenausdruck, der den Titel in der Titelleiste des zu aktivierenden Anwendungsfensters angibt. Die von der Shell-Funktion zurückgegebene Task-ID kann anstelle von title verwendet werden, um eine Anwendung zu aktivieren.
wait	Optional. Ein Wert vom Typ Boolean, der angibt, ob die aufrufende Anwendung den Fokus hat, bevor sie eine andere Anwendung aktiviert. Beim Wert False (Voreinstellung) wird die angegebene Anwendung mit sofortiger Wirkung aktiviert, auch wenn die aufrufende Anwendung nicht den Fokus hat. Beim Wert True wartet die aufrufende Anwendung, bis sie den Fokus erhält, und aktiviert dann die angegebene Anwendung.
Bemerkungen

Die AppActivate-Anweisung setzt den Fokus auf die angegebene Anwendung oder das angegebene Fenster, hat aber keinen Einfluß darauf, ob diese maximiert oder minimiert dargestellt werden. Das aktivierte Anwendungsfenster verliert den Fokus, wenn der Benutzer das Fenster schließt oder den Fokus auf ein anderes Fenster setzt. Verwenden Sie die Shell-Funktion, wenn Sie eine Anwendung starten und den Fensterstil festlegen möchten.

Welche Anwendung aktiviert werden soll, wird bestimmt, indem title mit der Zeichenfolge des Titels jeder einzelnen momentan ausgeführten Anwendung verglichen wird. Wenn es keine genaue Übereinstimmung gibt, wird eine beliebige Anwendung, deren Zeichenfolge mit title beginnt, aktiviert. Wenn mehr als eine Instanz dieser Anwendung mit title bezeichnet ist, wird eine der Instanzen willkürlich aktiviert.


Beep-Anweisung

Spielt einen Signalton über den Lautsprecher des Computers ab.

Syntax

Beep

Bemerkungen

Die Frequenz und Länge des Signaltons ist von der Hardware und der System-Software abhängig und ist je nach Computer verschieden.


Command-Funktion

Gibt den Argument-Abschnitt der Befehlszeile zurück, die verwendet wird, um Microsoft Visual Basic oder ein ausführbares Programm aufzurufen, das mit Visual Basic entwickelt wurde. Die Command-Funktion aus Visual Basic ist in Microsoft Office-Anwendungen nicht verfügbar.

Syntax

Command

Bemerkungen

Wenn Visual Basic von der Befehlszeile, aufgerufen wird, wird jeder Abschnitt, der auf /cmd folgt, als Befehlszeilenargument an das Programm übergeben. Im folgenden Beispiel stellt befzeilarg die Argumentinformationen dar, die durch die Command-Funktion zurückgegeben werden.

VB /cmd befzeilarg

Bei Anwendungen, die mit Visual Basic entwickelt wurden und zur einer ausführbaren Datei kompiliert wurden, gibt Command jedes Argument zurück, das in der Befehlszeile auf den Namen der Anwendung folgt. Beispiel:

TestAnw befzeilarg

Wenn Sie weitere Informationen darüber benötigen, wie Befehlszeilenargumente über die Benutzeroberfläche der von Ihnen verwendeten Anwendung geändert werden können, suchen Sie in der Hilfe nach "Befehlszeilenargumente".


InputBox-Funktion

Zeigt eine Eingabeaufforderung in einem Dialogfeld an, wartet auf die Eingabe eines Textes oder auf das Klicken auf eine Schaltfläche und gibt einen Wert vom Typ String zurück, der den Inhalt des Textfeldes angibt.

Syntax

InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])

Die Syntax der InputBox-Funktion verwendet die folgenden benannten Argumente:

Teil	Beschreibung
prompt	Erforderlich. Ein Zeichenfolgenausdruck, der als Meldung im Dialogfeld erscheint. Die Maximallänge von prompt ist - je nach Breite der verwendeten Zeichen - etwa 1024 Zeichen. Wenn prompt aus mehreren Zeilen besteht, müssen Sie die Zeilen mit einem Wagenrücklaufzeichen (Chr(13)), einem Zeilenvorschubzeichen (Chr(10)) oder einer Kombination aus Wagenrücklaufzeichen und Zeilenvorschubzeichen (Chr(13) & Chr(10)) trennen.
title	Optional. Ein Zeichenfolgenausdruck, der in der Titelleiste des Dialogfeldes angezeigt wird. Wenn Sie title nicht angeben, wird der Anwendungsname in der Titelleiste angezeigt.
default	Optional. Ein Zeichenfolgenausdruck, der als Voreinstellung im Textfeld angezeigt wird, wenn der Benutzer keine Eingabe vorgenommen hat. Wenn Sie default nicht angeben, wird das Textfeld ohne Text angezeigt.
xpos	Optional. Ein numerischer Ausdruck, der den horizontalen Abstand (in Twips) des linken Rands des Dialogfeldes vom linken Rand des Bildschirms festlegt. Wenn Sie xpos nicht angeben, wird das Dialogfeld horizontal zentriert.
ypos	Optional. Ein numerischer Ausdruck, der den vertikalen Abstand (in Twips) des oberen Rands des Dialogfeldes vom oberen Rand des Bildschirms festlegt. Wenn Sie ypos nicht angeben, wird das Dialogfeld etwa ein Drittel unterhalb des oberen Bildschirmrands (bezogen auf die gesamte Bildschirmhöhe) angezeigt.
helpfile	Optional. Ein Zeichenfolgenausdruck, der die Hilfedatei mit der kontextbezogenen Hilfe für das Dialogfeld angibt. Wenn Sie helpfile angeben, müssen Sie auch context angeben.
context	Optional. Ein numerischer Ausdruck mit der Hilfekontextkennung, die der Autor der Hilfe für das entsprechende Hilfethema vergeben hat. Wenn Sie context angeben, müssen Sie auch helpfile angeben.
Bemerkungen

Wenn sowohl helpfile als auch context angegeben werden, kann der Benutzer F1 (Windows) oder HILFE (Macintosh) drücken, um das entsprechende Hilfethema zu context anzusehen. Einige Host-Anwendungen, z.B. Microsoft Excel, fügen dem Dialogfeld automatisch eine Schaltfläche Hilfe hinzu. Wenn der Benutzer auf OK klickt oder die EINGABETASTE drückt, gibt die InputBox-Funktion den Inhalt des Textfeldes zurück. Klickt der Benutzer auf Abbrechen, gibt die Funktion eine Null-Zeichenfolge ("") zurück.

Anmerkung   Wenn Sie außer dem ersten benannten Argument weitere Argumente angeben möchten, müssen Sie InputBox in einem Ausdruck verwenden. Wenn Sie einige Argumente mit einer bestimmten Position nicht angeben möchten, müssen Sie dennoch das entsprechende Komma als Trennzeichen angeben.


MsgBox-Funktion

Zeigt eine Meldung in einem Dialogfeld an und wartet darauf, daß der Benutzer auf eine Schaltfläche klickt. Es wird dann einen Wert vom Typ Integer zurückgegeben, der anzeigt, auf welche Schaltfläche der Benutzer geklickt hat.

Syntax

MsgBox(prompt[, buttons] [, title] [, helpfile, context])

Die Syntax der MsgBox-Funktion verwendet die folgenden benannten Argumente:

Teil	Beschreibung
prompt	Erforderlich. Ein Zeichenfolgenausdruck, der als Meldung im Dialogfeld erscheint. Die Maximallänge von prompt ist - je nach Breite der verwendeten Zeichen - etwa 1024 Zeichen. Wenn prompt aus mehreren Zeilen besteht, müssen Sie die Zeilen mit einem Wagenrücklaufzeichen (Chr(13)), einem Zeilenvorschubzeichen (Chr(10)) oder einer Kombination aus Wagenrücklaufzeichen und Zeilenvorschubzeichen (Chr(13) & Chr(10)) trennen.
buttons	Optional. Ein numerischer Ausdruck, der der Summe der Werte entspricht, die Anzahl und Typ der anzuzeigenden Schaltflächen, die Art des zu verwendenden Symbols sowie die Standardschaltfläche und die Bindung des Dialogfeldes angeben. Wenn Sie buttons nicht angeben, ist der Standardwert 0.
title	Optional. Ein Zeichenfolgenausdruck, der in der Titelleiste des Dialogfeldes angezeigt wird. Wenn Sie title nicht angeben, wird der Anwendungsname in der Titelleiste angezeigt.
helpfile	Ein Zeichenfolgenausdruck, der die Hilfedatei mit der kontextbezogenen Hilfe für das Dialogfeld angibt. Wenn Sie helpfile angeben, müssen Sie auch context angeben.
context	Optional. Ein numerischer Ausdruck mit der Hilfekontextkennung, die der Autor der Hilfe für das entsprechende Hilfethema gegeben hat. Wenn Sie context angeben, müssen Sie auch helpfile angeben.
Einstellungen

Das Argument buttons hat die folgenden Einstellungen:

Konstante	Wert	Beschreibung
vbOKOnly	0	Nur die Schaltfläche OK anzeigen.
VbOKCancel	1	Schaltflächen OK und Abbrechen anzeigen.
VbAbortRetryIgnore	2	Schaltflächen Abbruch, Wiederholen und Ignorieren anzeigen.
VbYesNoCancel	3	Schaltflächen Ja, Nein und Abbrechen anzeigen.
VbYesNo	4	Schaltflächen Ja und Nein anzeigen.
VbRetryCancel	5	Schaltflächen Wiederholen und Abbrechen anzeigen.
VbCritical	16	Meldung mit Stop-Symbol anzeigen.
VbQuestion	32	Meldung mit Fragezeichen-Symbol anzeigen.
VbExclamation	48	Meldung mit Ausrufezeichen-Symbol anzeigen.
VbInformation	64	Meldung mit Info-Symbol anzeigen.
VbDefaultButton1	0	Erste Schaltfläche ist Standardschaltfläche.
VbDefaultButton2	256	Zweite Schaltfläche ist Standardschaltfläche.
VbDefaultButton3	512	Dritte Schaltfläche ist Standardschaltfläche.
VbDefaultButton4	768	Vierte Schaltfläche ist Standardschaltfläche.
VbApplicationModal	0	An die Anwendung gebunden. Der Benutzer muß auf das Meldungsfeld reagieren, bevor er seine Arbeit mit der aktuellen Anwendung fortsetzen kann.
VbSystemModal	4096	An das System gebunden. Alle Anwendungen werden unterbrochen, bis der Benutzer auf das Meldungsfeld reagiert.
vbMsgBoxHelpButton	16384	Adds Help button to the message box
VbMsgBoxSetForeground	65536	Specifies the message box window as the foreground window
vbMsgBoxRight	524288	Text is right aligned
vbMsgBoxRtlReading	1048576	Specifies text should appear as right-to-left reading on Hebrew and Arabic systems
Die erste Gruppe von Werten (0 - 5) beschreibt die Anzahl und den Typ der im Dialogfeld angezeigten Schaltflächen. Die zweite Gruppe (16, 32, 48, 64) beschreibt die Symbolart. Die dritte Gruppe (0, 256, 512) legt die Standardschaltfläche fest. Die vierte Gruppe (0, 4096) legt fest, in welcher Form das Dialogfeld gebunden ist. Verwenden Sie beim Addieren der Zahlen zu einem Gesamtwert für das Argument buttons nur eine Zahl aus jeder Gruppe.

Anmerkung   Diese Konstanten sind durch Visual Basic für Applikationen festgelegt. Daher können die Namen an einer beliebigen Stelle im Code anstelle der tatsächlichen Werte verwendet werden.

Rückgabewerte

Konstante	Wert	Beschreibung
vbOK	1	OK
vbCancel	2	Abbrechen
vbAbort	3	Abbruch
vbRetry	4	Wiederholen
vbIgnore	5	Ignorieren
vbYes	6	Ja
vbNo	7	Nein
Bemerkungen

Wenn sowohl helpfile als auch context angeben werden, kann der Benutzer F1 (Windows) oder HILFE (Macintosh) drücken, um das Hilfethema für context anzuzeigen. Einige Host-Anwendungen, zum Beispiel Microsoft Excel, fügen dem Dialogfeld automatisch die Schaltfläche Hilfe hinzu.

Wenn im Dialogfeld die Schaltfläche Abbrechen angezeigt wird, hat das Drücken von ESC dieselbe Wirkung wie das Klicken auf Abbrechen. Wird im Dialogfeld die Schaltfläche Hilfe angezeigt, wird für das Dialogfeld eine kontextbezogene Hilfe zur Verfügung gestellt. Ein Wert wird aber nur zurückgegeben, wenn auf eine der anderen Schaltflächen geklickt wird.

Anmerkung   Wenn Sie außer dem ersten benannten Argument weitere Argumente angeben möchten, müssen Sie MsgBox in einem Ausdruck verwenden. Wenn Sie einige Argumente mit einer bestimmten Position nicht angeben möchten, müssen Sie dennoch das entsprechende Komma als Trennzeichen angeben.


SendKeys-Anweisung

Sendet eine Tastenfolge (die aus einem oder mehreren Tastenanschlägen bestehen kann) an das aktive Fenster, als ob sie über die Tastatur eingegeben worden wäre.

Syntax

SendKeys string[, wait]

Die Syntax der SendKeys-Anweisung verwendet die folgenden benannten Argumente:

Teil	Beschreibung
string	Erforderlich. Ein Zeichenfolgenausdruck, der die zu sendende Tastenfolge angibt.
wait	Optional. Ein Wert vom Typ Boolean, der den Wartemodus angibt. Wenn der Wert False ist (Voreinstellung), setzt die Prozedur die Ausführung fort, unmittelbar nachdem die Tastenfolge gesendet wurde. Wenn der Wert True ist, muß die Tastenfolge verarbeitet werden, bevor die Prozedur die Ausführung fortsetzen kann.
Bemerkungen

Jede Taste wird durch mindestens ein Zeichen repräsentiert. Ein einzelnes Zeichen auf der Tastatur kann mit dem Zeichen selbst angegeben werden. "A" für das Argument string repräsentiert beispielsweise den Buchstaben A. Sie geben mehrere Zeichen an, indem Sie die Zeichen aneinanderhängen. "ABC" für string repräsentiert zum Beispiel die Buchstaben A, B und C.

Das Pluszeichen (+), Caret-Zeichen (^), Prozentzeichen (%), die Tilde (~) und die Klammern ( ) haben bei der SendKeys-Anweisung eine spezielle Bedeutung. Sie müssen jedes dieser Zeichen in geschweifte Klammern einschließen ({}), um es verwenden zu können. Für das Pluszeichen geben Sie beispielsweise {+}an. Eckige Klammern ([ ]) haben bei der SendKeys-Anweisung zwar keine spezielle Bedeutung, müssen aber auch in geschweifte Klammern eingeschlossen werden, da sie in anderen Anwendungen eine spezielle Bedeutung haben, insbesondere im Zusammenhang mit dynamischem Datenaustausch (DDE). Die Zeichen für die geschweiften Klammern legen Sie unter Verwendung von {{} und {}} fest.

Für Zeichen, die beim Drücken einer Taste nicht angezeigt werden (z.B. die EINGABETASTE oder TAB-TASTE) und für bestimmte Aktionstasten können Sie die folgenden Codes verwenden:

Taste	Code
RÜCKTASTE	{BACKSPACE}, {BS} oder {BKSP}
PAUSE	{BREAK}
FESTSTELLTASTE	{CAPSLOCK}
ENTF	{DELETE} oder {DEL}
NACH-UNTEN	{DOWN}
ENDE	{END}
EINGABETASTE	{ENTER}oder ~
ESC	{ESC}
HILFE	{HELP}
POS 1	{HOME}
EINFG	{INSERT} oder {INS}
NACH-LINKS	{LEFT}
NUM-FESTSTELL	{NUMLOCK}
BILD-AB	{PGDN}
BILD-AUF	{PGUP}
DRUCK	{PRTSC}
NACH-RECHTS	{RIGHT}
ROLLEN-FESTSTELL	{SCROLLLOCK}
TAB	{TAB}
NACH-OBEN	{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}
Sie können Tastenkombinationen mit der UMSCHALTTASTE, STRG-TASTE oder ALT-TASTE angeben, indem Sie vor dem normalen Tasten-Code einen oder mehrere der folgenden Codes angeben:

Taste	Code
UMSCHALT	+
STRG	^
ALT	%
Wenn UMSCHALT, STRG und ALT gleichzeitig mit anderen Tasten gedrückt werden müssen, schließen Sie die Codes für die Tasten in Klammern ein. Wenn zum Beispiel die UMSCHALTTASTE gleichzeitig mit den Tasten E und C gedrückt werden soll, geben Sie "+(EC)" an. Wenn die UMSCHALTTASTE zusammen mit E gedrückt werden soll und im Anschluß daran C ohne UMSCHALTTASTE, geben Sie "+EC" an.

Tastenwiederholungen können Sie in der Form {Taste Zahl} angeben. Das Leerzeichen zwischen Taste und Zahl ist dabei zwingend erforderlich. {LEFT 42} wird zum Beispiel als 42-maliges Drücken der NACH-LINKS-TASTE interpretiert, {h 10} als 10-maliges Drücken der Taste H.

Anmerkung   SendKeys kann keine Tastenanschläge an Anwendungen senden, die nicht unter Microsoft Windows oder auf dem Macintosh ausgeführt werden können. SendKeys kann auch die DRUCK-TASTE {PRTSC} an keine Anwendung senden.


Character Set (0 - 127)
Character Set (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	•
•	These characters aren't supported by Microsoft Windows.

* *	Values 8, 9, 10, and 13 convert to backspace, tab, linefeed, and carriage return characters, respectively. They have no graphical representation but, depending on the application, can affect the visual display of text.


IMEStatus Function

Returns an Integer specifying the current Input Method Editor (IME) mode of Microsoft Windows; available in East Asian versions only.

Syntax

IMEStatus

Return Values

The return values for the Japanese locale are as follows:

Constant	Value	Description
vbIMEModeNoControl	0	Don't control IME (default)
vbIMEModeOn	1	IME on
vbIMEModeOff	2	IME off
vbIMEModeDisable	3	IME disabled
vbIMEModeHiragana	4	Full-width Hiragana mode
vbIMEModeKatakana	5	Full-width Katakana mode
vbIMEModeKatakanaHalf	6	Half-width Katakana mode
vbIMEModeAlphaFull	7	Full-width Alphanumeric mode
vbIMEModeAlpha	8	Half-width Alphanumeric mode
The return values for the Korean locale are as follows:

Constant	Value	Description
vbIMEModeNoControl	0	Don't control IME(default)
vbIMEModeAlphaFull	7	Full-width Alphanumeric mode
vbIMEModeAlpha	8	Half-width Alphanumeric mode
vbIMEModeHangulFull	9	Full-width Hangul mode
vbIMEModeHangul	10	Half-width Hangul mode
The return values for the Chinese locale are as follows:

Constant	Value	Description
vbIMEModeNoControl	0	Don't control IME (default)
vbIMEModeOn	1	IME on
vbIMEModeOff	2	IME off


Code kann im Haltemodus nicht ausgeführt werden

Sie wechseln in den Haltemodus, wenn die Ausführung des Codes ausgesetzt wird. Dieser Fehler hat folgende Ursachen und Lösungen:

•	Sie haben versucht, aus dem Dialogfeld Makro Code auszuführen. Visual Basic hat währenddessen jedoch bereits Code ausgeführt, auch wenn der Code im Haltemodus ausgesetzt war.

Sie haben möglicherweise unwissentlich in den Haltemodus gewechselt, beispielsweise wenn in Ihrem Code ein Syntaxfehler oder ein Laufzeitfehler aufgetreten ist. Fahren Sie mit der Ausführung des angehaltenen Codes fort, oder beenden Sie die Ausführung, bevor Sie Code aus dem Dialogfeld Makro ausführen. Sie können den Fehler beheben und Fortsetzen wählen, oder Sie können zum Dialogfeld Makro zurückkehren und das Makro erneut ausführen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Eine Friend-Prozedur kann nicht auf ein Objekt angewendet werden, das nicht eine Instanz der definierenden Klasse ist (Fehler 97)

Eine Friend-Prozedur kann von einem Modul aufgerufen werden, das sich außerhalb der Klasse befindet, jedoch Teil des Projekts ist, in dem die Klasse definiert ist. Dieser Fehler hat folgende Ursachen und Lösungen:

•	Sie haben versucht, die Friend-Prozedur einer Klasse aufzurufen. Obwohl Ihre Referenzvariable dem korrekten Typ entspricht, verweist die Variable auf eine Instanz, die keine Instanz der Klasse ist.

Dies kann z.B. auftreten, wenn zwei Klassen vorhanden sind, "Klassik" und "Klassiker" (wodurch "Klassiker" implementiert wird), Sie jedoch versehentlich eine Instanz von "Klassiker" einer Instanz von "Klassik" zuweisen.

•	Sie versuchten, auf eine prozessexterne bzw. Thread-externe Friend-Eigenschaft oder –Methode zuzugreifen. Friend-Prozeduren gehören nicht zur öffentlichen Schnittstelle einer Klasse, können also nicht per Marshalling prozessextern bzw. Thread-extern zur Verfügung gestellt werden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Entwurfsmodus kann nicht beendet werden, da das Steuerelement nicht erstellt werden kann

Bevor Sie den Entwurfsmodus beenden können, müssen Instanzen aller Steuerelemente geladen sein. Dieser Fehler hat folgende Ursachen und Lösungen:

•	Das im Dialogfeld für Fehlermeldungen angegebene Steuerelement konnte nicht erstellt werden.

Ein Code kann nur ausgeführt werden, nachdem Instanzen aller Steuerelemente geladen und korrekt verbunden wurden. Stellen Sie sicher, daß jede für das Steuerelement benötigte Datei verfügbar ist, bevor Sie einen erneuten Versuch starten.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Objekt beinhaltet keine Automatisierungsereignisse

Ein Objekt muß eine Standard-Quellschnittstelle zur Verfügung stellen, so daß Sie für die zugehörigen Ereignisse Ereignisprozeduren schreiben können. Dieser Fehler hat folgende Ursachen und Lösungen:

•	Sie haben versucht, eine Ereignisprozedur für ein Ereignis eines Objekt zu schreiben, aber dieses Ereignis ist außerhalb des Objekts nicht verfügbar.

Vorschläge für einen indirekten Weg, das gewünschte Ereignis zu behandeln, finden Sie in der Objektdokumentation.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Operation in einer DLL nicht zulässig

Nicht alle Anweisungen von Visual Basic sind innerhalb einer DLL (Dynamic Link Library). zulässig. Dieser Fehler hat folgende Ursachen und Lösungen:

•	Sie haben versucht, eine DLL aus einer Klasse zu erstellen, die eine Anweisung enthält, die von einer DLL nicht ausgeführt werden kann.

Prüfen Sie Ihre Klasse und entfernen Sie alle Anweisungen, die innerhalb einer DLL nicht ausgeführt werden können, z.B. die End-Anweisung.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Außerhalb von Enum ungültig

Ein Enum ist ein Datentyp, der verwendet werden kann, um Gruppen von miteinander verbundenen Konstanten (auch Aufzählungen genannt) zu erstellen. Dieser Fehler hat folgende Ursachen und Lösungen:

•	Sie haben End Enum an einer Stelle verwendet, an der es nicht Teil der zugehörigen Enum-Definition war. Überprüfen Sie, ob Text zwischen dem Enum-Definitionsrumpf und der End Enum-Anweisung angezeigt wird.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Dieses Dokument wurde geöffnet, während die Option 'Makros aktivieren' deaktiviert war.

Eine Hostanwendung kann Makros deaktivieren oder aktivieren. Dieser Fehler hat folgende Ursachen und Lösungen:

•	Sie haben das Dokument geöffnet, während die Option Makros aktiviert deaktiviert war.

Schließen Sie das Dokument, und öffnen Sie es anschließend erneut mit der Option Makros aktivieren.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Das aktuelle Projekt verweist nicht auf die Bibliothek, die dieses Symbol enthält, so daß das Symbol nicht definiert ist. Möchten Sie jetzt einen Verweis auf die entsprechende Bibliothek hinzufügen?

Typ- und Objektinformationen sind in Bibliotheken enthalten. Dieser Fehler hat folgende Ursachen und Lösungen:

•	Eine Definition für dieses Symbol existiert in einer Klassenbibliothek.

Wenn Sie definieren möchten, daß das Symbol in der Bibliothek enthalten ist, klicken Sie auf OK, um der Bibliothek den Verweis hinzuzufügen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Objekt verfügt nicht über eine Property Let-Prozedur

Sie können einer Eigenschaft keinen Wert zuweisen, solange diese nicht eine Property Let-Prozedur offengelegt hat. Dieser Fehler hat folgende Ursachen und Lösungen:

•	Sie haben versucht, einen Wert einer Eigenschaft zuzuweisen, die keine Property Let-Prozedur offengelegt hat.

Sie können dieser Eigenschaft nicht direkt einen Wert zuweisen. Wenn Sie die Klasse erstellt haben, können Sie die Schnittstelle modifizieren, indem Sie eine Property Let-Prozedur offenlegen. Lesen Sie andernfalls die Dokumentation der Komponente, um zu bestimmen, ob es eine indirekte Methode gibt, um den Wert zuzuweisen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Keine Hilfe verfügbar

Nicht für alle Fehler existiert ein entsprechendes Hilfethema. Dieser Fehler hat folgende Ursachen und Lösungen:

•	Sie haben einen Fehler ausgelöst, für den keine Hilfe existiert.

Lesen Sie die Info-Datei. Hilfe zu erst spät erkannten Fehlern ist meist in der Info-Datei verfügbar.


Es ist nicht möglich, die Ereignisse des Objekts mit dem Objekt zu synchronisieren, da die Anzahl der ausgelösten Ereignisse bereits der Anzahl der maximal unterstützten Ereignisempfänger für dieses Objekt entspricht (Fehler 96)

Jedes Objekt gibt die maximale Anzahl gleichzeitiger Empfänger an, an die es Ereignisse senden kann. Dieser Fehler hat folgende Ursachen und Lösungen:

•	Sie haben versucht, Set für eine WithEvents-Variable für ein Steuerelement in einem Formular zu verwenden.

Wegen der zulässigen Anzahl der Empfänger für diese Ereignisse können Sie Set nicht für eine WithEvents-Variable verwenden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


DLL-Einsprungpunkt in der angegebenen DLL nicht gefunden

Ein Einsprungpunkt ist der Name einer DLL-Prozedur (Windows) or code resource (Macintosh) oder der Ordinalwert, der die Prozedur darstellt. Dieser Fehler hat folgende Ursachen und Lösungen:

•	Eine Klassenbibliothek enthält eine nicht korrekte Beschreibung des Einsprungpunkts, möglicherweise ein Rechtschreibfehler oder eine nicht korrekte Angabe des Ordinalwertes.

Nehmen Sie mit dem Händler Kontakt auf, um eine korrigierte Klassenbibliothek zu erhalten.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Kann <Programm> nicht ausführen

Wenn Sie eine ausführbare Datei mit systemeigenem Code erstellen, müssen einige zusätzliche Programme ausgeführt werden. Dieser Fehler hat folgende Ursachen und Lösungen:

•	Speicher oder Systemressourcen reichten nicht aus, um den Code-Generator oder den Linker auszuführen.

Schließen Sie so viele ausgeführte Anwendungen wie möglich, um Speicher und andere Systemressourcen freizugeben.

•	Visual Basic wurde nicht korrekt installiert.

•	Installieren Sie Visual Basic erneut.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ressourcen mit gleichem Typ und Namen mehrfach vorhanden

Eine Microsoft Windows-Ressourcendatei enthält normalerweise Bitmaps, Textzeichenfolgen und andere ähnliche Daten, die von einer Anwendung verwendet werden. Dieser Fehler hat folgende Ursachen und Lösungen:

•	Die Windows-Ressourcendatei, die Sie in Ihrem Projekt verwenden möchten, enthält zwei oder mehr Ressourcen, die den gleichen Typ und Namen verwenden, oder die Datei enthält eine Ressource, die von Visual Basic automatisch erstellt wird.

Verwenden Sie eine andere Ressourcendatei, oder erstellen Sie die ungültige Ressourcendatei erneut, und löschen Sie eine der doppelt vorhandenen Ressourcen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ein Aufruf für eine Eigenschaft oder Methode darf keinen Verweis auf ein privates Objekt enthalten - weder als Argument, noch als Rückgabewert (Fehler 98)

Private Objekte sollten niemals nach außerhalb eines Projekts übergeben werden. Für diesen Fehler gibt es folgende Ursachen, die ausnahmslos unzulässig sind:

•	Ein Client hat eine Eigenschaft oder Methode einer prozessexternen Komponente verwendet und versucht, einen Verweis auf ein privates Objekt als Argument zu übergeben. Ein Client hat eine Eigenschaft oder Methode einer prozessexternen Komponente verwendet, und die Komponente versuchte, einen Verweis auf ein privates Objekt zurückzugeben oder einen solchen Verweis einem ByRef-Argument zuzuweisen.

•	Eine prozessexterne Komponente hat eine Callback-Methode bei ihrem Client aufgerufen und versucht, einen Verweis auf ein privates Objekt zurückzugeben.

•	Eine prozessexterne Komponente hat versucht, einen Verweis auf ein privates Objekt als Argument eines von ihr hervorgerufenen Ereignisses zu übergeben.

•	Ein Client hat versucht, einen Verweis auf ein privates Objekt einem ByRef-Argument eines Ereignisses zuzuweisen, das von ihm behandelt wurde.

Beachten Sie, daß Visual Basic Sie zwar daran hindert, Verweise auf nichtsichtbare private Objekte zwischen Prozessen zu übergeben, daß aber Visual Basic in manchen Fällen diesen Fehler nicht erkennt und deshalb nicht verhindern kann. Private Objekte sind nicht für die Verwendung außerhalb Ihres Projekts vorgesehen. Wenn Sie solche an einen Client weitergeben, gefährden Sie u.U. die Programmstabilität und verursachen Inkompatibilitäten mit zukünftigen Versionen von Visual Basic. Falls Sie eine eigene private Klasse an einen Client weitergeben müssen, setzen Sie die Instancing-Eigenschaft auf einen anderen Wert als Private.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Zuweisung zu einer Konstanten nicht zulässig

Eine Konstante stellt einen schreibgeschützten Wert dar. Für diesen Fehler gibt es folgende Ursachen und Lösungen:

•	Sie versuchten, einer mit Const deklarierten Variablen oder einer Konstanten aus der Typenbibliothek einen neuen Wert zuzuweisen.

Wenn Sie einen neuen Wert zuweisen müssen, deklarieren Sie eine gewöhnliche Variable vom gewünschten Typ und weisen Sie dieser Ihren Wert zu. Wenn Sie eine Variable mit einem beschränkten Wertebereich benötigen, können Sie mit Hilfe der Enum-Anweisung eine Aufzählung deklarieren.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Paramarray-Felder mit optionalen Argumenten nicht zulässig

Sie können ein ParamArray-Feld verwenden, um Prozeduren zu definieren, die Argumentlisten variabler Länge akzeptieren. Ein optionales Argument ist eines, das der Aufrufer angeben oder weglassen kann, ohne einen Fehler zu verursachen Für diesen Fehler gibt es folgende Ursachen und Lösungen:

•	Sie haben die beiden Schlüsselwörter ParamArray und Optional in derselben Parameterliste verwendet.

Entfernen Sie entweder den Parameter Optional oder ParamArray. Sie dürfen nicht beide Schlüsselwörter in derselben Parameterliste verwenden. Beide Möglichkeiten sind für die von Ihnen gewünschte Art von Parameterliste geeignet.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Angegebene Datei wurde nicht gefunden

Überprüfen Sie den in der Meldung angegebenen Namen der nicht gefundenen Datei. Für diesen Fehler gibt es folgende Ursachen und Lösungen:

•	Die in der Fehlermeldung genannte Datei wurde nicht so gefunden, wie sie angegeben war.

Stellen Sie sicher, daß Laufwerkname und Dateiname korrekt angegeben wurden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültiger optionaler Parametertyp

Nicht alle Typen von Visual Basic sind für optionale Parameter zulässig. Für diesen Fehler gibt es folgende Ursachen und Lösungen:

•	Es wurde ein Parameter mit einem unzulässigen Datentyp definiert.

Sie dürfen beispielsweise keinen optionalen Parameter von benutzerdefiniertem Typ definieren. Möglicherweise können Sie Ihr Ziel mit einem Feld vom Typ Variant erreichen, da die Elemente eines Variant-Feldes Daten von unterschiedlichem Typ aufnehmen können.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültige Vorlage

Eine von einer Vorlage abgeleitete Klasse kann keine Vorlage sein. Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Sie haben versucht, eine Vorlagenkomponente zu erstellen und diese von einer Vorlage abzuleiten.

Sie dürfen eine Vorlagenklasse nicht von einer Vorlage ableiten.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Nur in Objektmodul zulässig

Manche Visual Basic-Anweisungen oder -Konstrukte sind nur in Objektmodulen (Formularen, Klassenmodulen usw.) zulässig. Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Sie haben versucht, eine unzulässige Anweisung bzw. ein unzulässiges Konstrukt (z.B. die Implements-Anweisung, das Schlüsselwort WithEvents oder ein Ereignisziel) in einem Nicht-Klassenmodul zu verwenden.

Bringen Sie Anweisungen, die diesen Fehler hervorrufen, in einem Objektmodul unter.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Angeforderte(r) Klassenbibliothek oder Assistent ist kein VBA-Projekt

Nicht alle in Visual Basic verfügbaren Elemente können sowohl gelesen als auch beschrieben werden. Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Sie haben versucht, aus einem Visual Basic-Projekt heraus in ein Addin oder in eine Typenbibliothek zu schreiben.

Sie dürfen nicht direkt in ein vorgepacktes Addin oder in eine Typenbibliothek als Bestandteil eines Visual Basic-Projekts schreiben.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Nach dieser Änderung ist ein Zurücksetzen erforderlich

In den meisten Fällen können Sie Code bearbeiten und die Ausführung an der geänderten Stelle fortsetzen. Für diesen Fehler gibt es folgende Ursachen und Lösungen:

•	Sie haben an Ihrem Code Änderungen vorgenommen, die einen Neustart des Codes vom Initialisierungspunkt erfordern.

Dies kommt u.U. vor, wenn Sie den Code in einer Prozedur aufgeteilt haben und die aktuell auszuführende Zeile nicht mehr zum selben prozeduralen Kontext gehört wie bei Unterbrechung der Ausführung.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Konvertierung fehlgeschlagen. In der Datei trnslate.log finden Sie weitere Informationen

Aktuelle Versionen von Visual Basic führen die Konvertierung nur aus Gründen der Abwärtskompatibilität durch. Für diesen Fehler gibt es folgende Ursachen und Lösungen:

•	Die Konvertierung ist unerwartet fehlgeschlagen.

Dies liegt normalerweise an einem unaufgelösten Verweis in der Typenbibliothek. Weitere Einzelheiten sind eventuell in dem angegebenen Konvertierungsprotokoll zu finden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Assistenten unterstützen keine Verweise auf Projekte

Ein Assistent kann auf einen anderen Assistenten, aber nicht auf ein Projekt verweisen. Für diesen Fehler gibt es folgende Ursachen und Lösungen:

•	Bei Ausführung des Befehls Assistent erstellen wurde ein Verweis auf ein Projekt gefunden.

Entfernen Sie den Verweis auf das Projekt.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Unvorhergesehener Kompilierungsfehler

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Dieser Fehler tritt auf, wenn bei einer Kompilierung ein unvorhergesehener Fehler auftritt, den der Compiler nicht behandeln kann.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ereignisse für das angegebene Objekt können nicht verarbeitet werden

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Ereignisse für dieses Objekt konnten nicht behandelt werden. Möglicherweise fehlen die Ereignisse im Objekt, oder sie sind vorhanden, funktionieren aber nicht, oder sie wurden absichtlich deaktiviert.

Überprüfen Sie das Objekt und dessen Ereignisse im Objektkatalog, um Informationen darüber zu erhalten.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültige Verwendung eines Basisklassennamens

Sie dürfen den Namen einer Basisklasse nicht ohne Zusatz verwenden. Für diesen Fehler gibt es folgende Ursachen und Lösungen:

•	Sie haben versucht, den Namen einer Basisklasse ohne Zusatz zu verwenden, ohne klarzustellen, daß Sie auf das Standardmitglied der Basisklasse zugreifen wollen.

Schreiben Sie den Namen der Basisklasse in Klammern, um anzuzeigen, daß Sie auf das Standardmitglied zugreifen möchten.

•	Sie haben den Namen einer Basisklasse in einem Ausdruck verwendet, aber das Mitglied, auf das Sie zuzugreifen versuchten, war nicht eindeutig bestimmt.

Verwenden Sie ein Trennzeichen (z.B. ein Ausrufezeichen) zwischen dem Namen der Basisklasse und dem Namen des gewünschten Mitglieds.

•	Sie haben den Namen der Basisklasse in einer Set-Anweisung verwendet, als ob er einen Verweis auf die Klasse enthalten würde.

Verwenden Sie den Namen der Basisklasse, um einen Verweis abzurufen, z.B. mit GetObject.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültiger Ereignisname

Namen von Ereignisprozeduren werden gebildet durch Verbindung des Objektnamens mit dem Ereignisnamen mit einem Unterstrich. Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Sie haben einen Unterstrich im Ereignisnamen verwendet.

Entfernen Sie den Unterstrich aus dem Ereignisnamen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ereignis nicht gefunden

Ein in einer RaiseEvent-Anweisung angegebener Ereignisname muß einem definierten Ereignis entsprechen. Für diesen Fehler gibt es folgende Ursachen und Lösungen:

•	Sie haben in einer RaiseEvent-Anweisung den Namen eines Ereignisses angegeben, aber die Ereignisdefinition kann nicht gefunden werden.

Stellen Sie sicher, daß der Ereignisname richtig geschrieben ist.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Suchzeichenfolge muß angegeben werden

Sie müssen eine Zeichenfolge angeben, wenn Sie im Objektkatalog suchen möchten. Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Sie haben im Objektbrowser eine Suche gestartet, aber keine Suchzeichenfolge angegeben.

Geben Sie eine Suchzeichenfolge ein.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Angegebener Name kann nicht angezeigt werden, weil er verborgen ist

Manche Namen sind in einer Typenbibliothek vorhanden, aber als verborgen markiert. Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Sie haben einen Namen angegeben, der in der Typenbibliothek enthalten, aber als verborgen markiert ist.

Normalerweise können Sie verborgene Elemente der Typenbibliothek nicht sehen. Wählen Sie im Kontextmenü des Objektkatalogs Ausgeblendete Mitglieder anzeigen, um verborgene Elemente sichtbar zu machen. Dann können Sie die Elementinformationen sehen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Sprung zum angegebenen Typ nicht möglich, da in der angegebenen Bibliothek enthalten, auf die zur Zeit nicht verwiesen wird

Für diesen Fehler gibt es folgende Ursache und Lösunge:

•	Sie haben versucht, einen Typ in einer Bibliothek anzugeben, auf die im Projekt nicht verwiesen wird.

Fügen Sie über das Dialogfeld Verweise einen Verweis auf die betreffende Bibliothek ein.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


In Aufzählung ungültig

Nicht alle Typen sind in der Definition einer Aufzählung zulässig. Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Sie haben versucht, eine Zeichenfolge oder einen anderen unzulässigen Typ als Wert einer Aufzählungselements anzugeben.

Der konstante Ausdruck zur Angabe eines Enum-Elements muß einen Typ Long oder einen anderen Enum-Typ ergeben.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Unerwarteter Fehler

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Ein unvorhergesehener Fehler ist aufgetreten. Versuchen Sie, das System zu schließen und es neu zu starten.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HELP (beim Macintosh) drücken.


Das aktuelle Projekt unterstützt keine Dateien dieses des Typs

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Die Datei, die Sie zu öffnen versuchten, ist keine gültige Projektdatei oder eine Projektdatei, die Funktionen enthält, die von dieser Visual Basic-Hostanwendung und Visual Basic-Umgebung nicht unterstützt werden.

Stellen Sie sicher, daß die Projektdatei, die Sie öffnen möchten, zulässig ist (d.h. eine Datei ist, die Sie in der gleichen Visual Basic-Hostanwendung und Visual Basic-Umgebung erstellt und gespeichert haben).

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HELP (beim Macintosh) drücken.


Dieses VBA-Projekt wurde erstellt, während VBA in einer anderen Anwendung ausgeführt wurde. Sie können es nur innerhalb der Anwendung öffnen, in der es erstellt wurde

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Die Datei, die Sie zu öffnen versuchten, ist eine Projektdatei, die in einer anderen Hostanwendung erstellt wurde.

Stellen Sie sicher, daß die Datei, die Sie öffnen möchten, in derselben Visual Basic Hostanwendung erstellt und gespeichert wurde.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Fensterlose Steuerelemente dürfen keine Menüs enthalten

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Sie haben versucht, ein Menü auf ein fensterloses Steuerelement zu plazieren, was nicht zulässig ist.

Sie können ein Menü nur auf ein Steuerelement mit Fenster plazieren.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Dieses Steuerelement kann nur mit 'Element'-Designern verwendet werden

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Das gewählte Steuerelement funktioniert nur mit dem angegebenen Designer.

Sie müssen entweder ein anderes Steuerelement oder einen anderen Designer wählen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Dieses Steuerelement kann nicht mit 'Element'-Designern verwendet werden

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Das gewählte Steuerelement funktioniert nicht mit dem angegebenen Designer.

Sie müssen ein anderes Steuerelement oder einen anderen Designer wählen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Dieser Designer kann nicht verwendet werden, da er Features verwendet, die von dieser Version von Visual Basic nicht unterstützt werden

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Der gewählte Designer wird von dieser Visual Basic-Version nicht unterstützt.

Sie müssen entweder einen anderen Designer verwenden oder einen Designer, der für die angegebene Visual Basic-Version konzipiert wurde.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


'Element' kann nicht hinzugefügt werden, da zwar darauf verwiesen wird, es jedoch von keinem Element im Projekt verwendet wird. Um dieses Problem zu beheben, deaktivieren Sie 'Informationen über nicht verwendete ActiveX-Steuerelemente entfernen' in den Projektoptionen.

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Die angegebene Komponente kann nicht hinzugefügt werden, da sie von keinem Element im Projekt verwendet wird.

Deaktivieren Sie im Dialogfeld Projektoptionen (zu öffnen über das Menü Projekt) die Option Informationen über nicht verwendete ActiveX-Steuerelemente entfernen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Internet Explorer konnte nicht gestartet werden

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Ein unbekanntes Problem verhindert das Ausführen von Internet Explorer.

Versuchen Sie, Internet Explorer alleine zu starten, um die korrekte Funktionsweise sicherzustellen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


'Element'-Designer können nur in DLL-Projekten verwendet werden

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Der angegebene Designer kann nur in ActiveX-DLL-Projekten verwendet werden.

Versuchen Sie, den Designer in einem ActiveX-DLL-Projekt auszuführen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


'Element'-Designer können in ActiveX-EXE-Projekten nicht öffentlich sein

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Die Instancing-Eigenschaft des angegebenen Designers kann in ActiveX-EXE-Projekten nicht auf Public gesetzt werden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


'Element'-Designer müssen öffentlich sein und können in Standard-EXE-Projekten nicht verwendet werden

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Die Instancing-Eigenschaft des angegebenen Designers muß auf Public gesetzt werden.

Der Designer kann in Standard-EXE-Projekten nicht verwendet werden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


'Element'-Designer können nicht privat sein

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Die Instancing-Eigenschaft des angegebenen Designers kann nicht auf Private gesetzt werden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Mindestens eine Instanz des Objekts wird ausgeführt. Entfernen ist zu diesem Zeitpunkt nicht möglich

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Sie haben versucht, ein Objekt zu entfernen, das gerade ausgeführt wird.

Schließen Sie alle Instanzen des Projekts, bevor Sie es aus dem Projekt entfernen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Mindestens eine Instanz des Objekts wird ausgeführt. Entfernen ist zu diesem Zeitpunkt nicht möglich

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Auf das angegebene Projekt, das Sie zu schließen versuchten, wird von einem anderen Projekt verwiesen.

Schließen Sie es, nachdem Sie den Verweis aus dem anderen Projekt entfernt haben.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


MDI-Formulare sind in Projekten, die multi-threaded sind, nicht erlaubt. Jedes MDI-Formular wird aus diesem Projekt entfernt. Um das MDI-Formular in dem Projekt zu lassen, wählen Sie 'Abbrechen' und ändern Sie das Threading-Modell in Thread Pool mit nur einem Thread

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Sie haben versucht, ein MDI-Formular zu einem Projekt, das multi-threaded ist, hinzuzufügen.

Wenn Sie das MDI-Formular in Ihrem Projekt lassen möchten, ändern Sie das Threading-Modell in Thread Pool mit nur einem Thread.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


'Element' hat eine Zugriffsverletzung ausgelöst. Entfernen Sie es aus der Liste der verfügbaren Add-Ins?

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Das angegebene Add-In löst eine Dateizugriffsverletzung aus.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Die Befehlszeilensicherheit des ausgewählten Add-Ins wurde nicht bestätigt. Benutzereingriff (evtl. in Schnittstelle) ist möglicherweise notwendig

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	"Befehlszeilensicherheit" bedeutet, daß das Add-In mit der Information registriert wurde, daß es keine Benutzeroberfläche enthält, die ein Eingreifen des Benutzers erfordert, wenn Visual Basic über eine Befehlszeile aufgerufen wird. Eine Benutzeroberfläche kann das Ausführen von unbeaufsichtigten Prozessen (wie dem Erstellen von Skripts) stören.

Wenn Sie nicht angeben, daß ein Add-In über Befehlszeilensicherheit verfügt (auch, wenn dies tatsächlich der Fall ist), wird der Benutzer einen Warnhinweis erhalten, wenn er im Feld Ladeverhalten zunächst Ihr Add-In und anschließend die Option Befehlszeile auswählt. Dies ist kein ernstes Problem, sondern lediglich eine Warnung an den Benutzer, die besagt, daß das gewählte Add-In möglicherweise Benutzeroberflächenelemente enthält, die unerwartet angezeigt werden können und deren automatische Skripts angehalten werden, weil sie auf eine Benutzereingabe warten.

Um deutlich zu machen, daß ein Add-In über Befehlszeilensicherheit verfügt, kennzeichnen Sie es diesbezüglich (Sie können hierfür den Add-In-Designer verwenden), oder ändern Sie den Wert im Registrierungsschlüssel manuell.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Unzulässiger Parameter. Benutzerdefinierter Typ kann nicht geschrieben werden.

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Sie haben versucht, einen benutzerdefinierten Typ in ein PropertyBag-Objekt zu schreiben, das nicht unterstützt wird.

Um dies zu umgehen, können Sie jedes Element des benutzerdefinierten Typs einzeln in das PropertyBag-Objekt schreiben.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Unzulässiger Parameter. Objekt kann nicht geschrieben werden, da es keine Beständigkeit unterstützt

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Sie haben versucht, ein Objekt in ein PropertyBag-Objekt zu schreiben, aber das Objekt unterstützt eine der ActiveX-Beständigkeitsschnittstellen nicht.

Um dies zu ändern, benötigen Sie den Zugriff auf den Code für das Objekt. Dies sollte ein unter Visual Basic erstelltes Objekt sein, dessen Persistable-Eigenschaft auf True gesetzt wurde. Ferner muß die Klasse entweder Public oder Public Createable sein und Bestandteil eines ActiveX-DLL-, ActiveX-EXE- oder UserControl-Projekts sein.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültiger Eigenschaftsname

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Der eingegebene Name für die Eigenschaft ist ungültig, d.h. wird bereits verwendet, ist für das System reserviert worden oder enthält ungültige Zeichen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Die Komponente 'Element' ist single-threaded und kann nicht in Projekten verwendet werden, die multi-threaded sind. Ändern Sie das Threading-Modell für 'Element', oder erkundigen Sie sich beim Vertreiber der Komponente nach einer neueren Version

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Sie haben versucht, eine Komponente, die single-threaded ist, in einem Projekt zu verwenden, das multi-threaded ist.

Sie können das Threading-Modell für die single-threaded Komponenten ändern oder sich beim Vertreiber nach einer neueren Version erkundigen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Das Steuerelement 'Element1' konnte nicht aus 'Element2' geladen werden. Ihre Version von 'Element2' ist möglicherweise veraltet. Stellen Sie sicher, daß Sie die Version des Steuerelements verwenden, die mit Ihrer Anwendung geliefert wurde.

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Sie verwenden eine veraltete Version.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Das Steuerelement 'Element1'konnte nicht aktiviert werden. Dieses Steuerelement ist möglicherweise nicht mit Ihrer Anwendung kompatibel. Stellen Sie sicher, daß Sie die Version des Steuerelements verwenden, die mit Ihrer Anwendung geliefert wurde.

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Die Anwendung konnte das angegebene Steuerelement nicht aktivieren, da es nicht mit der Anwendung kompatibel war. Dieses Problem kann dann auftreten, wenn das Steuerelement im System und das mit der Anwendung gelieferte nicht übereinstimmen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Die Typinformationen im ActiveX-Designer stimmen nicht mit den gespeicherten Informationen überein. Laden nicht möglich.

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Das Projekt konnte nicht geladen werden, da die Typinformationen im ActiveX-Designer nicht mit den gespeicherten Informationen übereinstimmen. Grund hierfür kann eine beschädigte Datei sein.

Versuchen Sie, eine Sicherungskopie des Projekts zu laden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Diese Interaktion zwischen kompilierten Komponenten und Komponenten der Entwurfsumgebung wird nicht unterstützt

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Dieser Fehler tritt auf, wenn zwei Komponenten zusammen ausgeführt werden, wobei die eine Komponente (beispielsweise ein Formular oder UserControl) zuvor kompiliert wurde, nun ausgeführt wird und dabei die Laufzeitdatei (msvbvm60.dll) nutzt, und die andere Komponente in der integrierten Entwurfsumgebung ausgeführt wird. Hierbei kann es sich z.B. um eine kompilierte UserControl-Komponente, die in einem Formular in der integrierten Entwurfsumgebung ausgeführt wird, handeln.

Das Problem tritt auf, da die interne Speicherstruktur zwischen einem in der integrierten Entwurfsumgebung ausgeführten Element und einem kompilierten Objekt nicht ganz übereinstimmt und nicht immer kompatibel ist. Im allgemeinen sollte dies jedoch kein Problem darstellen, es sei denn, Sie übergeben eine Instanz eines UserControl (Me) an ein Host-Formular oder an eine andere Komponente durch eine Property-oder Sub-Prozedur.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Minimiertes Formularbild kann nicht gedruckt werden

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Das Formularbild kann nicht gedruckt werden, wenn es minimiert ist.

Maximieren Sie das Bild, und versuchen Sie, den Druckvorgang erneut auszuführen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Unerwarteter Fehler im Code-Generator oder Linker aufgetreten

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Der Code-Generator oder der Linker hat einen unerwarteten Fehler verursacht.

Klicken Sie auf Ja, um die Fehler im Texteditor anzuzeigen.

Dieser Fehler wird meistens durch zu geringen Speicherplatz hervorgerufen oder hat andere, mit dem Datenträger zusammenhängende Ursachen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Versionsnummern müssen im Bereich von 0 bis 9999 liegen

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Sie haben versucht, eine negative Zahl, ein nicht-numerisches Zeichen oder eine Zahl, die größer als 9999 ist, als die Haupt-, Neben-, oder Revision-Komponente einer Versionsnummer für ein Projekt in der Registerkarte Erstellen des Dialogfelds Projekteigenschaften zuzuweisen. Verwenden Sie eine Zahl zwischen 0 und 9999 (inklusive).

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungültige Basis-Adresse

Sie haben eine ungültige Basisadresse eingegeben. Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Sie haben im Dialogfeld Projekteigenschaften in der Registerkarte Kompilieren eine ungültige Basisadresse angegeben.

Eine gültige Basisadresse muß ein Mehrfaches von 64K, größer als 64K und kleiner als &H7FFF0000 sein.

Dieser Fehler tritt in ActiveX-DLL- oder in ActiveX-Steuerelement-Projekten auf.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Keine erstellbare öffentliche Komponente vorhanden. Drücken Sie F1, um weitere Informationen zu erhalten.

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Ihr Projekt sollte mindestens über eine erstellbare öffentliche Komponente verfügen.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Die Datei 'Element' konnte nicht als ActiveX-Komponente registriert werden.

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Sie haben versucht, ein Steuerelement oder eine Dynamic-Link Library (DLL), das/die keine gültige ActiveX-Komponente ist, zu registrieren. Stellen Sie sicher, daß Sie das richtige Steuerelement oder die korrekte DLL verwenden. Wenden Sie sich bzgl. weiterer Informationen an den Hersteller der ActiveX-Komponente.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Die Projektdatei 'Element1' enthält einen ungültigen Wert für den Schlüssel 'Element2'

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Die Visual Basic-Projektdatei (.vbp) enthält einen Schlüssel, der von Visual Basic nicht erkannt wird. Die Datei ist möglicherweise beschädigt.

Installieren Sie eine Sicherungskopie der angegebenen Datei, oder verändern Sie die Datei mit Hilfe eines Texteditors, um den Fehler zu beheben.

Achtung   Das Verändern einer Visual Basic-Datei in einem anderen Editor als Visual Basic kann die Datei möglicherweise beschädigen. Die o.g. Lösung ist daher nur für erfahrene Benutzer empfehlenswert.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Hilfe kann nicht angezeigt werden

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Wenn Sie WinHelp ausführen, ist die Hilfeanwendung von Windows nicht verfügbar. Wenn Sie die Datei Winhelp.exe auf Ihrem Computer installiert haben, stellen Sie sicher, daß sie im richtigen Pfad abgelegt wurde. Ist die Datei nicht auf Ihrem Computer, führen Sie das Installationsprogramm von Microsoft Windows 9x oder Microsoft Windows NT aus, um sie zu installieren.

•	Wenn Sie die HTMLHelp ausführen und die Datei HH.exe auf Ihrem Computer installiert wurde, dann stellen Sie sicher, daß sie im richtigen Pfad abgelegt wurde. Ist sie nicht auf Ihrem Computer, müssen Sie sie installieren, bevor Sie die Hilfe aufrufen können.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Klasse ist nicht registriert. 'Element 1'

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Das angezeigte Klassenmodul ist nicht registriert.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Programmatische ID-Zeichenfolge ist zu lang: 'Element'. Die programmatische ID darf nur bis zu 39 Zeichen lang sein.

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Die ProgID-Zeichenfolge der ActiveX-Komponente darf höchstens 39 Zeichen lang sein. Die ProgID wird erstellt, indem der Projektname und der Klassenmodulname miteinander verkettet werden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Das Projekt <Name> wurde verändert. Sollen die Änderungen jetzt gespeichert werden?

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Eine der Eigenschafteneinstellungen oder eine Code-Anweisung wurde für mindestens eine Datei im Projekt geändert. Diese Änderungen wurden noch nicht gespeichert. Dies ist die letzte Möglichkeit, die Änderungen zu speichern, bevor ein anderes Projekt geladen wird.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Das Ladeverhalten für 'Element' konnte wegen der aktuellen Registrierungsberechtigungen nicht aktualisiert werden.

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Visual Basic kann das Add-In, das Sie in der Liste Verfügbare Add-Ins im Dialogfeld Add-In Manager auszuwählen wollten, nicht laden, da es nicht richtig registriert wurde oder nicht mehr in der Systemregistrierung aufgeführt ist.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Komponente nicht richtig registriert

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Die angegebene Komponente wurde nicht richtig registriert.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Komponente an der registrierten Stelle nicht gefunden

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Die angeforderte ausführbare Datei (.exe) oder Dynamic-Link-Library-Datei (.dll) kann nicht gefunden werden.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Komponente konnte das angeforderte Objekt nicht erfolgreich erstellen

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Die ausführbare Datei (.exe) der ActiveX-Komponente wurde nicht erfolgreich ausgeführt.

Möglicherweise gibt es ein Problem mit den Informationen in der Registrierung.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Die Komponente 'Element' oder eine ihrer Abhängigkeiten ist nicht richtig registriert: eine Datei fehlt oder ist ungültig

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Die angegebene Datei wurde verschoben oder entfernt.

•	Die angegebene Datei wurde falsch registriert.

Installieren Sie die angegebene Datei neu, um sie richtig zu registrieren. Wenden Sie sich bzgl. weiterer Informationen an den Objekthersteller.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Dieses Feature benötigt Internet Explorer 'Version' oder höher. Sie finden die neueste Version auf www.microsoft.com

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Sie benötigen die angegebene Version des Internet Explorer, damit diese Funktion richtig ausgeführt wird.

Die aktuellste Version von Internet Explorer finden Sie unter http://www.microsoft.com.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Das Formular kann nicht verschoben oder in der Größe geändert werden, während es minimiert oder maximiert ist

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Sie haben versucht, ein Formular zu verschieben oder seine Größe zu verändern, obwohl es minimiert oder maximiert ist. Dies ist nicht zulässig.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Ungebundenes Formular kann nicht angezeigt werden, während gebundenes Formular angezeigt wird

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Sie haben versucht, ein ungebundenes Formular anzuzeigen, bevor ein gebundenes Formular geschlossen wurde.

Schließen Sie zuerst das gebundene Formular.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


ReDim, Erase oder Zuweisen zu Variant, der Array enthält, dessen Element With-Objekt ist, nicht möglich

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Sie haben versucht ReDim oder Erase durchzuführen oder einem Variant eine Variable zuzuweisen, deren Element ein With-Objekt ist.

Folgender Code verursacht z.B. diesen Fehler:

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

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Projekt kann nicht angezeigt werden

Für diesen Fehler gibt es folgende Ursache und Lösung:

•	Das Projekt, das Sie versucht haben zu öffnen, ist gesperrt.

Informationen darüber, wie Sie das Projekt wieder anzeigen können, finden Sie in der Dokumentation der Hostanwendung.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.


Activate-, Deactivate-Ereignisse (Beispiel)

Im folgenden Code werden zwei UserForm-Objekte verwendet: UserForm1 und UserForm2. Kopieren Sie diese Prozeduren in das Modul UserForm1. Fügen Sie dann UserForm2 hinzu. Der Titel von UserForm1 wird in dessen Activate-Ereignisprozedur erstellt. Wenn der Benutzer innerhalb des Client-Bereichs von UserForm1klickt, wird UserForm2 geladen und angezeigt. Gleichzeitig wird das Deactivate-Ereignis von UserForm1 ausgelöst, wodurch die Titel vertauscht werden.

' Activate-Ereignis für UserForm1

Private Sub UserForm_Activate()

  UserForm1.Caption = "Innerhalb des Client-Bereichs klicken"

End Sub

' Click-Ereignis für UserForm1

Private Sub UserForm_Click()

  Load UserForm2

  UserForm2.StartUpPosition = 3

  UserForm2.Show

End Sub

' Deactivate-Ereignis für UserForm1

Private Sub UserForm_Deactivate()

  UserForm1.Caption = "Ich habe den Fokus verloren."

  UserForm2.Caption = "Und jetzt gehört der Fokus mir"

End Sub


Initialize-Ereignis (Beispiel)

In dem folgenden Beispiel werden zwei UserForm-Objekte in einem Programm verwendet. Im Initialize-Ereignis von UserForm1 wird UserForm2 geladen und angezeigt. Wenn der Benutzer auf UserForm2 klickt, wird es ausgeblendet, und UserForm1 wird angezeigt. Wenn auf UserForm1 geklickt wird, wird UserForm2 wieder angezeigt.

' Dies ist die Initialize-Ereignisprozedur für UserForm1

Private Sub UserForm_Initialize()

Load UserForm2

UserForm2.Show

End Sub

' Dies ist das Click-Ereignis von UserForm2

Private Sub UserForm_Click()

UserForm2.Hide

End Sub

' Dies ist das Click-Ereignis für UserForm1

Private Sub UserForm_Click()

UserForm2.Show

End Sub


QueryClose-Ereignis (Beispiel)

Durch den folgenden Code wird der Benutzer gezwungen, auf den Client-Bereich des UserForm-Objekts zu klicken, um das Formular zu schließen. Wenn der Benutzer versucht, das Schließen-Feld auf der Titelleiste zu verwenden, wird der Parameter Cancel auf einen Wert ungleich Null festgelegt, um das Beenden zu verhindern. Wenn der Benutzer auf den Client-Bereich geklickt hat, erhält CloseMode den Wert 1, und Unload Me ist abgeschlossen.

Private Sub UserForm_Activate()

  UserForm1.Caption = "Zum Löschen hier klicken"

End Sub

Private Sub UserForm_Click()

  Unload Me

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

  'Das Schließen des Formulars mit dem Schließen-Feld verhindern.

  If CloseMode <> 1 Then Cancel = 1

  UserForm1.Caption = "Das Schließen-Feld ist außer Betrieb. Bitte hier klicken"

End Sub


Resize-Ereignis (Beispiel)

Im folgenden Beispiel werden die Ereignisse Activate und Click verwendet, um zu veranschaulichen, wie das Resize-Ereignis des UserForm-Objekts ausgelöst wird. Sobald der Benutzer auf den Client-Bereich des Formulars klickt, wird das Formular vergrößert oder verkleinert, und die neue Höhe wird in der Titelleiste angegeben. Beachten Sie, daß die Tag-Eigenschaft verwendet wird, um die ursprüngliche Höhe des UserForm-Objekts zu speichern.

' Activate-Ereignis für UserForm1

Private Sub UserForm_Activate()

UserForm1.Caption = "Zum Vergrößern auf das Formular klicken"

Tag = Height	' Ursprüngliche Höhe speichern.

End Sub

' Click-Ereignis für UserForm1

Private Sub UserForm_Click()

Dim NewHeight As Single

NewHeight = Height

' Kleines Formular vergrößern.

If NewHeight = Val(Tag) Then

Height = Val(Tag) * 2

Else

' Großes Formular verkleinern.

Height = Val(Tag)

End If

End Sub

' Resize-Ereignis für UserForm1

Private Sub UserForm_Resize()

UserForm1.Caption = "Neue Höhe: " & Height & "  " & " Zum Ändern der Größe auf das Formular klicken"

End Sub


Terminate-Ereignis (Beispiel)

Die folgende Ereignisprozedur führt dazu, daß das UserForm-Objekt ein akustisches Signal auslöst, nachdem der Benutzer auf den Client-Bereich geklickt hat, um das Formular zu löschen.

Private Sub UserForm_Activate()

  UserForm1.Caption = "Zum Löschen auf den Client-Bereich klicken"

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

Das Activate-Ereignis tritt ein, wenn ein Objekt zum aktiven Fenster wird. Das Deactivate-Ereignis tritt ein, wenn ein Objekt nicht länger das aktive Fenster ist.

Syntax

Private Sub Objekt_Activate()

Private Sub Objekt_Deactivate()

Der Platzhalter Objekt stellt einen Objektausdruck dar, der ein Objekt in der Liste unter "Betrifft" ergibt.

Bemerkungen

Ein Objekt kann aktiviert werden, indem im Code die Show-Methode verwendet wird.

Das Activate-Ereignis kann nur dann eintreten, wenn ein Objekt sichtbar ist. Eine mit der Load-Methode geladene UserForm ist so lange nicht sichtbar, bis Sie die Show-Methode verwenden.

Die Ereignisse Activate und Deactivate treten nur ein, wenn Sie den Fokus innerhalb einer Anwendung verschieben. Das Verschieben des Fokus auf oder von einem Objekt in einer anderen Anwendung löst diese Ereignisse nicht aus.

Das Deactivate-Ereignis tritt nicht ein, wenn ein Objekt entladen wird.


Initialize-Ereignis

Tritt ein, nachdem ein Objekt geladen, aber bevor es angezeigt wird.

Syntax

Private Sub Objekt_Initialize()

Der Platzhalter Objekt stellt einen Objektausdruck dar, der ein Objekt in der Liste unter "Betrifft" ergibt.

Bemerkungen

Das Initialize-Ereignis wird gewöhnlich dazu verwendet, eine Anwendung oder eine UserForm für die Verwendung vorzubereiten. Variablen werden Startwerte zugewiesen, und Steuerelemente können verschoben oder in ihrer Größe angepaßt werden, um die Initialisierungsdaten aufnehmen zu können.


QueryClose-Ereignis

Tritt ein, bevor eine UserForm geschlossen wird.

Syntax

Private Sub UserForm_QueryClose(Cancel As Integer, closemode As Integer)

Die Syntax des QueryClose-Ereignisses besteht aus folgenden Teilen:

Teil	Beschreibung
Cancel	Eine Ganzzahl. Das Festlegen dieses Arguments auf einen Wert ungleich 0 beendet das QueryClose-Ereignis in allen geladenen Benutzerformularen und verhindert, daß die UserForm und die Anwendung geschlossen werden.
closemode	Ein Wert oder eine Konstante, der/die den Grund für das QueryClose-Ereignis angibt.
Rückgabewerte

Das Argument closemode gibt folgende Werte zurück:

Konstante	Wert	Beschreibung
vbFormControlMenu	0	Der Benutzer hat auf der UserForm im Systemmenü den Befehl Schließen gewählt.
VbFormCode	1	Die Unload-Anweisung wird durch Code aufgerufen.
VbAppWindows	2	Die aktuelle Windows-Betriebsumgebungssitzung wird beendet.
VbAppTaskManager	3	Die Anwendung wird vom Windows-Task-Manager geschlossen.
Diese Konstanten werden in der Objektbibliothek im Objektkatalog von Visual Basic für Applikationen aufgelistet. Beachten Sie, daß vbFormMDIForm ebenfalls im Objektkatalog angegeben ist, aber noch nicht unterstützt wird.

Bemerkungen

Mit diesem Ereignis wird normalerweise sichergestellt, daß die in einer Anwendung enthaltenen Benutzerformularen keine nichtbeendeten Operationen enthalten, wenn diese Anwendung geschlossen wird. Wenn ein Benutzer z.B. neue Daten noch nicht in einer UserForm gespeichert hat, kann die Anwendung den Benutzer auffordern, die Daten zu speichern.

Wenn eine Anwendung geschlossen wird, können Sie die QueryClose-Ereignisprozedur verwenden, um die Cancel-Eigenschaft auf den Wert True festzulegen, wodurch der Schließvorgang gestoppt wird.


Resize-Ereignis

Tritt ein, wenn die Größe eines Benutzerformulars geändert wird.

Syntax

Private Sub UserForm_Resize()

Bemerkungen

Verwenden Sie eine Resize-Ereignisprozedur, um Steuerelemente zu verschieben oder deren Größe zu verändern, wenn die Größe der übergeordneten UserForm verändert wird. Sie können diese Ereignisprozedur auch verwenden, um Variablen oder Eigenschaften erneut zu berechnen.


Terminate-Ereignis

Tritt ein, wenn alle Verweise auf eine Objektinstanz aus dem Speicher entfernt werden, indem alle auf das Objekt verweisende Variablen auf den Wert Nothing festgelegt werden oder wenn sich der letzte Verweis auf das Objekt außerhalb des Gültigkeitsbereichs befindet.

Syntax

Private Sub Objekt_Terminate( )

Der Platzhalter Objekt stellt einen Objektausdruck dar, der ein Objekt in der Liste unter "Betrifft" ergibt.

Bemerkungen

Das Terminate-Ereignis tritt auf, nachdem das Objekt entladen wurde. Das Terminate-Ereignis wird nicht ausgelöst, wenn die Instanzen der UserForm oder der Klasse aus dem Speicher entfernt werden, weil die Anwendung nicht ordnungsgemäß beendet wurde. Wenn Ihre Anwendung z.B. die End-Anweisung aufruft, bevor alle vorhandenen Instanzen der Klasse oder der UserForm aus dem Speicher entfernt wurden, wird das Terminate-Ereignis für diese Klasse oder dieser UserForm nicht ausgelöst.


Hide-Methode (Beispiel)

Im folgenden Beispiel werden zwei UserForm-Objekte in einem Programm angenommen. Im Initialize-Ereignis von Formular1, wird Formular2 geladen und angezeigt. Wenn der Benutzer auf Formular2 klickt, wird dieses ausgeblendet, und Formular1 wird angezeigt. Wenn auf Formular1 geklickt wird, wird erneut Formular2 angezeigt.

' Dies ist die Initialize-Ereignisprozedur für Formular1

Private Sub UserForm_Initialize()

Load Formular2

Formular2.Show

End Sub

' Dies ist das Click-Ereignis von Formular2

Private Sub UserForm_Click()

Formular2.Hide

End Sub

' Dies ist das Click-Ereignis von Formular1

Private Sub UserForm_Click()

Formular2.Show

End Sub


Load-Anweisung (Beispiel)

Im folgenden Beispiel wird Formular2 während des Initialize-Ereignis  von Formular1 geladen. Durch nachfolgendes Klicken auf Formular2 wird Formular1 freigelegt.

' Dies ist die Initialize-Ereignisprozedur für Formular1

Private Sub UserForm_Initialize()

Load Formular2

Formular2.Show

End Sub

' Dies ist das Click-Ereignis von Formular2

Private Sub UserForm_Click()

Formular2.Hide

End Sub

' Dies ist das Click-Ereignis für Formular1

Private Sub UserForm_Click()

Formular2.Show

End Sub


PrintForm-Methode (Beispiel)

Im folgenden Beispiel wird der Client-Bereich des Formulars ausgegeben, wenn der Benutzer auf das Formular klickt.

' Dies ist das Click-Ereignis für Formular1

Private Sub UserForm_Click()

Formular1.PrintForm

End Sub


Show-Methode (Beispiel)

Im folgenden Beispiel werden zwei UserForm-Objekte in einem Programm angenommen. Im Initialize-Ereignis von Formular1, wird Formular2 geladen und angezeigt. Wenn der Benutzer auf Formular2 klickt, wird dieses ausgeblendet, und Formular1 wird angezeigt. Wenn auf Formular1 geklickt wird, wird erneut Formular2 angezeigt.

' Dies ist die Initialize-Ereignisprozedur für Formular1

Private Sub UserForm_Initialize()

Load Formular2

Formular2.Show

End Sub

' Dies ist das Click-Ereignis für Formular2

Private Sub UserForm_Click()

Formular2.Hide

End Sub

' Dies ist das Click-Ereignis für Formular1

Private Sub UserForm_Click()

Formular2.Show

End Sub


Unload-Anweisung (Beispiel)

Im folgenden Beispiel werden zwei UserForm-Objekte in einem Programm angenommen. Im Initialize-Ereignis von Formular1, wird Formular2 geladen und angezeigt. Wenn der Benutzer auf Formular2 klickt, wird dieses entladen, und Formular1 wird angezeigt. Wenn auf Formular1 geklickt wird, wird dieses wiederum entladen.

' Dies ist die Initialize-Ereignisprozedur für Formular1

Private Sub UserForm_Initialize()

Load Formular2

Formular2.Show

End Sub

' Dies ist das Click-Ereignis für Formular2

Private Sub UserForm_Click()

Unload Formular2

End Sub

' Dies ist das Click-Ereignis für Formular1

Private Sub UserForm_Click()

Unload Formular1

End Sub


WhatsThisMode-Methode (Beispiel)

Im folgenden Beispiel wird der Mauszeiger zum Direkthilfe-Cursor (Fragezeichen), wenn der Benutzer auf das UserForm-Objekt klickt. Wenn weder die WhatsThisHelp-, noch die WhatsThisButton-Eigenschaft im Fenster Eigenschaften auf True festgelegt ist, hat der folgende Aufruf keine Wirkung.

Private Sub UserForm_Click()

' Ändern des Mauszeigers in den Direkthilfe-Cursor (Fragezeichen).

WhatsThisMode

End Sub


Hide-Methode

Blendet ein Objekt aus, aber entlädt es nicht.

Syntax

Objekt.Hide

Der Platzhalter Objekt stellt einen Objektausdruck dar, der ein Objekt in der Liste unter "Betrifft" ergibt. Wenn Objekt nicht angegeben wird, wird das UserForm-Objekt mit dem Fokus als Objekt angenommen.

Bemerkungen

Wenn ein Objekt ausgeblendet ist, wird es vom Bildschirm entfernt und die zugehörige Visible-Eigenschaft wird auf False festgelegt. Auf die Steuerelemente eines ausgeblendeten Objekts kann der Benutzer nicht zugreifen, sie werden jedoch der ausgeführten Anwendung programmseitig zur Verfügung gestellt sowie anderen Prozessen, die mit dieser Anwendung über Automatisierung und (unter Windows) Ereignisse des Timer-Steuerelements kommunizieren.

Wenn ein UserForm-Objekt ausgeblendet ist, kann der Benutzer mit der Anwendung erst wieder interagieren, wenn der Code in der Ereignisprozedur vollständig ausgeführt wurde, durch die das UserForm-Objekt ausgeblendet wurde.

Wenn das UserForm-Objekt nicht geladen ist, während die Hide-Methode aufgerufen wird, lädt die Hide-Methode das UserForm-Objekt, zeigt sie jedoch nicht an.


Load-Anweisung

Lädt ein Objekt, zeigt es jedoch nicht an.

Syntax

Load Objekt

Der Platzhalter Objekt stellt einen Objektausdruck dar, der ein Objekt in der Liste unter "Betrifft" ergibt.

Bemerkungen

Wenn ein Objekt geladen wird, wird es im Speicher abgelegt, es ist jedoch nicht sichtbar. Verwenden Sie die Show-Methode, um das Objekt sichtbar zu machen. Solange ein Objekt nicht sichtbar ist, kann ein Benutzer mit ihm nicht interagieren. Das Objekt kann über den Code in seiner zugehörigen Initialize-Ereignisprozedur beeinflußt werden.


PrintForm-Methode

Sendet eine Abbildung eines UserForm-Objekts als Folge von Bits an den Drucker.

Syntax

Objekt.PrintForm

Der Platzhalter Objekt stellt einen Objektausdruck dar, der ein Objekt in der Liste unter "Betrifft" ergibt. Wenn Objekt nicht angegeben wird, wird das UserForm-Objekt mit dem Fokus als Objekt angenommen.

Bemerkungen

PrintForm druckt alle sichtbaren Objekte und Bitmaps des UserForm-Objekts. PrintForm druckt auch Grafiken, die zu einem UserForm-Objekt hinzugefügt wurden.

Der Drucker, der von PrintForm verwendet wird, wird durch die Einstellungen in der Systemsteuerung des Betriebssystems festgelegt.


Show-Methode

Zeigt ein UserForm-Objekt an.

Syntax

[Objekt.]Show Gebunden

Die syntax der Show-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Optional. Ein object expression, der ein Objekt in der Liste unter Betrifft ergibt. Wenn Objekt nicht angegeben wird, wird angenommen, daß das mit dem aktiven UserForm-Modul verbundene UserForm Objekt entspricht.
Gebunden	Optional. Boolescher Wert, der angibt, ob das UserForm gebunden oder ungebunden ist.
Einstellungen

Die Einstellungen für Gebunden sind:

Konstante	Wert	Beschreibung
vbModal	1	UserForm ist gebunden. Standard.
vbModeless	0	UserForm ist ungebunden
Das optionale Objekt ist ein Objektausdruck, der ein Objekt in der Liste unter Betrifft ergibt. Wenn Objekt nicht angegeben wird, wird das UserForm-Objekt mit dem aktiven UserForm-Modul als Objekt angenommen.

Bemerkungen

Wenn das angegebene Objekt nicht geladen wird, während die Show-Methode aufgerufen wird, lädt Visual Basic es automatisch.

Anmerkung   Wenn ein UserForm-Objekt in Microsoft Office 97 als ungebunden angezeigt werden soll, löst es einen Laufzeitfehler aus.

Wenn ein UserForm ungebunden ist, wird nachfolgender Code dann ausgeführt, wenn er bei der Programmverarbeitung "angetroffen" wird. Ungebundene Formulare werden nicht in der Taskleiste angezeigt und befinden sich nicht in der Aktivierreihenfolge der Fenster.

Anmerkung   Es besteht die Möglichkeit, mit einem ungebundenen UserForm verbundene Daten zu verlieren, wenn Sie eine Änderung am UserForm-Projekt vornehmen, die eine Neukompilierung zur Folge hat, beispielsweise das Entfernen eines Codemoduls.

Wenn ein UserForm-Objekt gebunden ist, muß der Benutzer reagieren, bevor er einen anderen Teil der Anwendung verwenden kann. Es wird kein nachfolgender Code ausgeführt, bis das UserForm-Objekt ausgeblendet oder entladen wird. Obwohl andere Formulare in der Anwendung deaktiviert sind, wenn ein UserForm-Objekt angezeigt wird, sind andere Anwendungen nicht deaktiviert.


Unload-Anweisung

Entfernt ein Objekt aus dem Speicher.

Syntax

Unload Objekt

Der erforderliche Platzhalter Objekt stellt einen Objektausdruck dar, der ein Objekt in der Liste unter "Betrifft" ergibt.

Bemerkungen

Wenn ein Objekt entladen wird, wird es aus dem Speicher entfernt und jeglicher Speicher, der mit diesem Objekt verbunden ist, wird freigegeben. Solange das Objekt nicht erneut mit der Load-Anweisung in den Speicher geladen wird, kann ein Benutzer nicht mit einem Objekt interagieren, und das Objekt kann nicht mittels Code verändert werden.


WhatsThisMode-Methode

Ändert den Mauszeiger in einen Direkthilfe-Zeiger und bereitet die Anwendung so vor, daß die Hilfe für das ausgewählte Objekt angezeigt wird. Diese Methode existiert für den Macintosh, verfügt jedoch nicht über die Zeigerfunktionalität.

Syntax

Objekt.WhatsThisMode

Der Platzhalter Objekt stellt einen Objektausdruck dar, der ein Objekt in der Liste unter "Betrifft" ergibt. Wenn Objekt nicht angegeben wird, wird das UserForm-Objekt mit dem Fokus als Objekt angenommen.

Bemerkungen

Durch das Ausführen der WhatsThisMode-Methode wird die Anwendung in den gleichen Status versetzt wie durch Klicken der Schaltfläche Direkthilfe auf der Symbolleiste. Der Mauszeiger ändert sich zum Direkthilfe-Zeiger. Wenn der Benutzer auf ein Objekt klickt, wird die WhatsThisHelpID-Eigenschaft des Objekts, auf das geklickt wurde, verwendet, um die kontextbezogene Hilfe aufzurufen.


UserForm-Objekt, UserForms-Auflistung

Ein UserForm-Objekt ist ein Fenster oder ein Dialogfeld, das einen Teil einer Benutzeroberfläche einer Anwendung darstellt.

Die UserForms-Auflistung ist eine Auflistung, deren Elemente jedes geladene UserForm in einer Anwendung darstellen. Die UserForms-Auflistung besitzt eine Count-Eigenschaft, eine Item-Eigenschaft und eine Add-Methode. Count gibt die Anzahl der Elemente in der Auflistung an; Item (das Standardelement) gibt ein bestimmtes Element einer Auflistung an; und Add legt ein neues UserForm-Element in der Auflistung ab.

Syntax

UserForm

UserForms[.Item](Index)

Der Platzhalter Index stellt eine Ganzzahl mit einem Bereich von 0 bis UserForms.Count  -1 dar. Item ist das Standardelement der UserForms-Auflistung und muß daher nicht angegeben werden.

Bemerkungen

Sie können die UserForms-Auflistung verwenden, um alle geladenen Benutzerformulare in einer Anwendung zu durchlaufen. Dabei wird eine integrierte globale Variable mit dem Namen UserForms gekennzeichnet. Sie können UserForms(Index) an eine Funktion übergeben, deren Argument als UserForm-Klasse angegeben ist.

Benutzerformulare besitzen Eigenschaften, die die Darstellung, wie z.B. Position, Größe und Farbe; sowie Verhaltensweisen bestimmen.

Benutzerformulare können auch auf Ereignisse reagieren, die durch einen Benutzer initiiert wurden oder vom System ausgelöst wurden. Sie können z.B. Code in die Initialize-Ereignisprozedur des UserForm-Objekts schreiben, um Variablen auf Modulebene zu initialisieren, bevor das UserForm-Objekt angezeigt wird.

Zusätzlich zu den Eigenschaften und Ereignissen können Sie Methoden verwenden, um Benutzerformulare mit Code zu beeinflussen. Sie können z.B. die Move-Methode verwenden, um die Position und die Größe eines UserForm-Objekts zu ändern.

Beim Entwerfen von Benutzerformularen können Sie mit der BorderStyle-Eigenschaft die Ränder festlegen, und Sie können die Caption-Eigenschaft festlegen, um Text in der Titelleiste anzugeben. Im Code können Sie die Methoden Hide und Show verwenden, um ein UserForm-Objekt zur Laufzeit zu verbergen oder sichtbar zu machen.

UserForm hat den Datentyp Object. Sie können Variablen als Typ UserForm deklarieren, bevor Sie sie auf eine Instanz eines Typs von UserForm zur Entwurfszeit festlegen. Genauso können Sie ein Argument als Typ UserForm an eine Prozedur übergeben. Sie können mehrere Instanzen von Benutzerformularen im Code erstellen, indem Sie das Schlüsselwort New in Dim-, Set- und Static-Anweisungen verwenden.

Sie können auf die Auflistung von Steuerelementen in einem UserForm-Objekt mit der Controls-Auflistung zugreifen. Sie können z.B. alle Steuerelemente in einem UserForm-Objekt ausblenden, indem Sie Code verwenden, der dem folgenden ähnelt:

For Each Control in UserForm1.Controls

Control.Visible = False

Next Control


StartUpPosition-Eigenschaft (Beispiel)

In dem folgenden Beispiel wird die Load-Anweisung und die Show-Methode im Click-Ereignis von UserForm1 verwendet, um UserForm2 zu laden. Die StartUpPosition-Eigenschaft von UserForm2 wird dabei auf 3 (Windows-Standardposition) festgelegt. Mit Hilfe der Show-Methode kann UserForm2 dann angezeigt werden.

Private Sub UserForm_Click()

Load UserForm2

UserForm2.StartUpPosition = 3

UserForm2.Show

End Sub


StartUpPosition-Eigenschaft

Gibt einen Wert zurück, der die Position eines UserForm-Objekts angibt, wenn es das erste Mal angezeigt wird, oder legt diesen fest.

Sie können für StartUpPosition eine der vier folgenden Einstellungen verwenden:

Einstellung	Wert	Beschreibung
Manual	0	Keine Anfangseinstellung angegeben.
CenterOwner	1	Auf dem Element zentrieren, zu dem das UserForm-Objekt gehört.
CenterScreen	2	Auf dem ganzen Bildschirm zentrieren.
Windows Default	3	In der oberen linken Ecke des Bildschirms positionieren.
Bemerkungen

Sie können die StartUpPosition-Eigenschaft mittels Code oder in dem Eigenschaftenfenster festlegen.


WhatsThisButton-Eigenschaft

Gibt einen Wert vom Typ Boolean zurück, der bestimmt, ob in der Titelleiste eines UserForm-Objekts die Schaltfläche Direkthilfe angezeigt wird. Diese Eigenschaft ist zur Laufzeit schreibgeschützt. Diese Eigenschaft wird beim Macintosh nicht unterstützt.

Bemerkungen

Die Einstellungen für die WhatsThisHelp-Eigenschaft sind:

Einstellung	Beschreibung
True	Aktiviert die Anzeige der Schaltfläche Direkthilfe.
False	(Voreinstellung) Deaktiviert die Anzeige der Schaltfläche Direkthilfe.
Anmerkungen

Die WhatsThisHelp-Eigenschaft muß den Wert True haben, wenn die WhatsThisButton-Eigenschaft den Wert True haben soll.


WhatsThisHelp-Eigenschaft

Gibt einen Wert vom Typ Boolean zurück, der bestimmt, ob für die kontextbezogene Hilfe das von der Windows 95-Hilfe bereitgestellte Popup-Fenster oder das Hilfe-Hauptfenster verwendet wird. Diese Eigenschaft ist zur Laufzeit schreibgeschützt. Diese Eigenschaft wird beim Macintosh nicht unterstützt.

Bemerkungen

Die Einstellungen für die WhatsThisHelp Eigenschaft sind:

Einstellung	Beschreibung
True	Die Anwendung verwendet eine der Direkthilfe-Zugriffstechniken, um die Windows-Hilfe aufzurufen und ein Thema zu laden, das durch die WhatsThisHelpID-Eigenschaft bezeichnet wird.
False	(Voreinstellung) Die Anwendung verwendet die F1-TASTE, um die Windows-Hilfe aufzurufen und das Thema zu laden, das durch die HelpContextID-Eigenschaft bezeichnet wird.
Bemerkungen

Es gibt zwei Zugriffstechniken für die Bereitstellung von Direkthilfe in einer Anwendung. Die WhatsThisHelp-Eigenschaft muß auf den Wert True festgelegt werden, damit diese Techniken funktionieren.

•	Bereitstellen einer Schaltfläche Direkthilfe in der Titelleiste des UserForm-Objekts mit der WhatsThisButton-Eigenschaft. Der Mauszeiger wechselt in den Direkthilfe-Status (Pfeil mit Fragezeichen). Das angezeigte Thema wird durch die WhatsThisHelpID-Eigenschaft des Steuerelements identifiziert, auf das der Benutzer geklickt hat.

•	Aufrufen der WhatsThisMode-Methode eines UserForm-Objekts. Es wird das gleiche Verhalten ausgelöst, wie durch das Klicken auf die Schaltfläche Direkthilfe, jedoch ohne dabei eine Schaltfläche zu verwenden. Sie können z.B. diese Methode mit einem Menübefehl in der Menüleiste der Anwendung aufrufen.


ShowModal-Eigenschaft

Legt fest, ob ein UserForm gebunden oder ungebunden angezeigt wird. Diese Eigenschaft ist zur Laufzeit schreibgeschützt.

Bemerkungen

Die Einstellungen für die ShowModal-Eigenschaft sind:

Einstellung	Beschreibung
True	(Voreinstellung) Das UserForm ist gebunden.
False	Das UserForm ist ungebunden.
Bemerkungen

Wenn ein UserForm gebunden ist, sollte der Benutzer Informationen liefern oder das UserForm schließen, bevor irgendein Teil der Anwendung verwendet wird. Es wird kein nachfolgender Code ausgeführt, bis das UserForm verborgen oder entladen ist. Obwohl andere Formulare in der Anwendung deaktiviert werden, wenn ein UserForm angezeigt wird, geschieht dies nicht bei anderen Anwendungen.

Wenn das UserForm ungebunden ist, kann der Benutzer andere Formulare oder Fenster anzeigen, ohne das UserForm zu schließen.

Ungebundene Formulare werden nicht in der Taskleiste angezeigt und befinden sich nicht in der Aktivierreihenfolge des Fensters.

Anmerkung   Wenn Sie versuchen, ein UserForm mit einer ShowModal-Eigenschaft in Microsoft Office 97 zu öffnen, erhalten Sie einen Laufzeitfehler, da Office 97 nur gebundene UserForms anzeigt. Office 97 ignoriert die ShowModal-Eigenschaft und zeigt das UserForm gebunden an.


RightToLeft-Eigenschaft

Gibt einen booleschen Wert zurück, der für ein bidirektionales System anzeigt, in welcher Richtung Text und wie ein Steuerelement optisch dargestellt werden soll.

Bemerkungen

Die Einstellungen für die RightToLeft-Eigenschaft sind:

Einstellung	Beschreibung
True	Das Steuerelement wird auf einer bidirektionalen Plattform wie beispielsweise der arabischen oder hebräischen Ausgabe von Windows 95 ausgeführt, und der Text verläuft von rechts nach links. Das Verhalten des Steuerelements muß geändert werden, so müssen die vertikalen Bildlaufleisten an die linke Seite des Textes oder des Listenfelds verschoben oder die Bildlaufleisten auf die rechte Seite des Testfeldes gesetzt werden usw.
False	Das Steuerelement sollte wie auf einer nicht-bidirektionalen Plattform (z.B. der englischen Ausgabe von Windows 95) ausgeführt werden, wobei der Text von links nach rechts verläuft. Wenn der Container diese Ambient-Eigenschaft nicht implementiert, ist False der voreingestellte Wert.
Die RightToLeft-Eigenschaft verfügt über Umgebungsinformationen vom UserForm, die im UserForm enthaltenen Steuerelementen Verhaltensweisen vorschlägt. Dies ist eine boolesche Eigenschaft, die für ein bidirektionales System anzeigt, in welcher Richtung Text und wie ein Steuerelement optisch dargestellt werden soll. Die Voreinstellung ist False.


Schlüsselwort wurde nicht gefunden

Das von Ihnen ausgewählte Schlüsselwort kann in der Visual Basic-Hilfe nicht gefunden werden. Sie haben möglicherweise das Schlüsselwort falsch geschrieben, zu viel oder zu wenig Text ausgewählt oder Hilfe zu einem Schlüsselwort angefordert, das kein gültiges Visual Basic-Schlüsselwort.

Das Schlüsselwort, zu dem Sie Hilfe wünschen, könnte sich innerhalb einer Objektbibliothek befinden, auf die nicht verwiesen wird. Stellen Sie sicher, daß Verweise auf die entsprechenden Objektbibliotheken für alle Objekte in Ihrem Code festgelegt sind.

Die einfachste Möglichkeit, Hilfe zu einem bestimmten Schlüsselwort zu erhalten, ist, die Einfügemarke an einer beliebigen Stelle innerhalb des Schlüsselwortes zu positionieren und anschließend F1 zu drücken. Sie müssen das Schlüsselwort nicht auswählen. Wenn Sie nur einen Teil des Schlüsselworts oder mehr als ein einzelnes Wort auswählen, kann die von Ihnen gewünschte Hilfe nicht gefunden werden.

Das Hilfethema zur Value-Eigenschaft wird angezeigt, wenn Sie F1 drücken, während sich die Einfügemarke zwischen dem "a" und dem "l" im Schlüsselwort Value befindet, wie im folgenden Beispiel gezeigt wird.

Worksheets(1).Range ("A2").value=3.14159

Sie verwenden die integrierte Suche in der Hilfe, indem Sie im Menü ? auf Microsoft Visual Basic-Hilfe klicken.


Collection (Objektkatalog)

Das Modul Collection enthält Prozeduren, die zum Ausführen von Operationen auf dem Collection-Objekt verwendet werden. Diese Konstanten können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Prozedur

1.	Wählen Sie in der Liste Elemente von 'Collection' die Prozedur aus.

2.	Klicken Sie auf die Schaltfläche [image].


ColorConstants (Objektkatalog)

Das Modul ColorConstants enthält vordefinierte Farbkonstanten. Diese Konstanten können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Konstante

1.	Wählen Sie in der Liste Elemente von 'ColorConstants' die Konstante aus.

2.	Klicken Sie auf die Schaltfläche [image].


Constants (Objektkatalog)

Das Modul Constants enthält verschiedene Konstanten. Diese Konstanten können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Konstante

1.	Wählen Sie in der Liste Elemente von 'Constants' die Konstante aus.

2.	Klicken Sie auf die Schaltfläche [image].


Conversion (Objektkatalog)

Das Modul Conversion enthält die Prozeduren, die zur Ausführung verschiedener Konvertierungsoperationen verwendet werden. Diese Konstanten können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Prozedur

1.	Wählen Sie in der Liste Elemente von 'Conversion' die Prozedur aus.

2.	Klicken Sie auf die Schaltfläche [image].

Anmerkung   Wenn Sie Variablen vom Typ Variant verwenden, sind explizite Datentypumwandlungen nicht nötig.


DateTime (Objektkatalog)

Das Modul DateTime enthält die Prozeduren und Eigenschaften, die in Datum- und Zeitoperationen verwendet werden. Diese Konstanten können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Prozedur oder Eigenschaft

1.	Wählen Sie in der Liste Elemente von 'DateTime' die Prozedur aus.

2.	Klicken Sie auf die Schaltfläche [image].


ErrObject (Objektkatalog)

Das Modul ErrObject enthält Eigenschaften und Prozeduren, die zur Identifikation und Behandlung von Laufzeitfehlern mit dem Err-Objekt verwendet werden. Diese Konstanten können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Eigenschaft oder Prozedur

1.	Wählen Sie in der Liste Elemente von 'ErrObject' die Eigenschaft oder Prozedur aus.

2.	Klicken Sie auf die Schaltfläche [image].


FileSystem (Objektkatalog)

Das Modul FileSystem enthält die Prozeduren, die verwendet werden, um Datei-, Verzeichnis- oder Ordner- sowie Systemoperationen durchzuführen. Diese Konstanten können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Prozedur

1.	Wählen Sie in der Liste Elemente von 'FileSystem' die Prozedur aus.

2.	Klicken Sie auf die Schaltfläche [image].


Financial (Objektkatalog)

Das Modul Financial enthält Prozeduren, die zur Durchführung von finanzmathematischen Operationen verwendet werden. Diese Konstanten können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Prozedur

1.	Wählen Sie in der Liste Elemente von 'Financial' die Prozedur aus.

2.	Klicken Sie auf die Schaltfläche [image].


Global (Objektkatalog)

Das Modul Global enthält Prozeduren und Eigenschaften, die verwendet werden, um Operationen auf dem UserForm-Objekt durchzuführen. Diese Konstanten können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Eigenschaft oder Prozedur

1.	Wählen Sie in der Liste Elemente von 'Global' die Prozedur aus.

2.	Klicken Sie auf die Schaltfläche [image].


Information (Objektkatalog)

Das Modul Information enthält die Prozeduren, die verwendet werden, um Informationen zurückzugeben, zu testen oder zu überprüfen. Diese Konstanten können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Prozedur

1.	Wählen Sie in der Liste Elemente von 'Information' die Prozedur aus.

2.	Klicken Sie auf die Schaltfläche [image].


Interaction (Objektkatalog)

Das Modul Interaction enthält Prozeduren, die verwendet werden, um mit Objekten, Anwendungen und Systemen zu zusammenzuarbeiten. Diese Konstanten können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Prozedur

1.	Wählen Sie in der Liste Elemente von 'Interaction' die Prozedur aus.

2.	Klicken Sie auf die Schaltfläche [image].


KeycodeConstants (Objektkatalog)

Das Modul KeyCodeConstants enthält vordefinierte Konstanten für den Tasten-Code, die an beliebiger Position in Ihrem Code verwendet werden können.

So erhalten Sie Hilfe zu einer bestimmten Konstante

1.	Wählen Sie in der Liste Elemente von 'KeyCodeConstants' die Konstante aus.

2.	Klicken Sie auf die Schaltfläche [image].


Math (Objektkatalog)

Das Modul Math enthält Prozeduren, die zur Durchführung mathematischer Operationen verwendet werden. Diese Konstanten können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Prozedur

1.	Wählen Sie in der Liste Elemente von 'Math' die Prozedur aus.

2.	Klicken Sie auf die Schaltfläche [image].


Strings (Objektkatalog)

Das Modul Strings enthält Prozeduren, die zur Durchführung von Zeichenfolgenoperationen verwendet werden. Diese Konstanten können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Prozedur

1.	Wählen Sie in der Liste Elemente von 'Strings' die Prozedur aus.

2.	Klicken Sie auf die Schaltfläche [image].


SystemColorConstants (Objektkatalog)

Das Modul SystemColorConstants enthält Konstanten, die verschiedene Teile der graphischen Benutzeroberfläche bezeichnen. Diese Konstanten können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Konstante

1.	Wählen Sie in der Liste Elemente von 'SystemColorKonstanten' die Konstante aus.

2.	Klicken Sie auf die Schaltfläche [image].


VbAppWinStyle (Objektkatalog)

Die VbAppWinStyle-Aufzählung enthält Konstanten, die von der Shell-Funktion verwendet werden, um die Darstellungsart eines Anwendungsfensters zu steuern. Diese Konstanten können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Konstante

1.	Wählen Sie in der Liste Elemente von 'VbAppWinStyle' die Konstante aus.

2.	Klicken Sie auf die Schaltfläche [image].


VbCalendar (Objektkatalog)

Die VbCalendar-Aufzählung enthält Konstanten, die verwendet werden, um den Kalendertyp zu bestimmen, der von Visual Basic verwendet wird. Diese Konstanten können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Konstante

1.	Wählen Sie in der Liste Elemente von 'VbCalendar' die Konstante aus.

2.	Klicken Sie auf die Schaltfläche [image].


VbCompareMethod (Objektkatalog)

Die VbCompareMethod-Aufzählung enthält Konstanten, die verwendet werden, um die Art des Zeichenfolgendvergleichs zu bestimmen, wenn die Funktionen Instr und StrComp verwendet werden. Diese Konstanten können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Konstante

1.	Wählen Sie in der Liste Elemente von 'VbCompareMethod' die Konstante aus.

2.	Klicken Sie auf die Schaltfläche [image].


VbDayOfWeek (Objektkatalog)

Die VbDayOfWeek-Aufzählung enthält Konstanten, die verwendet werden, um bestimmte Wochentage zu kennzeichnen, wenn die Funktionen DateDiff, DatePart und Weekday verwendet werden. Diese Konstanten können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Konstante

1.	Wählen Sie in der Liste Elemente von 'VbDayOfWeek' die Konstante aus.

2.	Klicken Sie auf die Schaltfläche [image].


VbFileAttribute (Objektkatalog)

Die VbFileAttribute-Aufzählung enthält Konstanten, die verwendet werden, um Dateiattribute zu kennzeichnen, die in den Funktionen Dir, GetAttr und SetAttr verwendet werden. Diese Konstanten können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Konstante

1.	Wählen Sie in der Liste Elemente von 'VbFileAttribute' die Konstante aus.

2.	Klicken Sie auf die Schaltfläche [image].


VbFirstWeekOfYear (Objektkatalog)

Die VbFirstWeekOfYear-Aufzählung enthält Konstanten, mit denen festgelegt werden kann, wie die erste Woche eines Jahres bestimmt wird, wenn die Funktionen DateDiff und DatePart verwendet werden. Diese Konstanten können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Konstante

1.	Wählen Sie in der Liste Elemente von 'VbFirstWeekOfYear' die Konstante aus.

2.	Klicken Sie auf die Schaltfläche [image].


VbIMEStatus (Objektkatalog)

Steht nur in den Fernostversionen zur Verfügung; die VbIMEStatus-Aufzählung enthält Konstanten, die verwendet werden, um den Input Method Editor (IME) zu kennzeichnen, wenn die IMEStatus-Funktion verwendet wird. Diese Konstanten können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Konstante

1.	Wählen Sie in der Liste Elemente von 'VbIMEStatus' die Konstante aus.

2.	Klicken Sie auf die Schaltfläche [image].


VbMsgBoxResult (Objektkatalog)

Die VbMsgBoxResult-Aufzählung enthält Konstanten, mit denen gekennzeichnet werden kann, auf welche Schaltfläche in einem Meldungsfeld geklickt wurde, das mit der MsgBox-Funktion angezeigt wird. Diese Konstanten können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Konstante

1.	Wählen Sie in der Liste Elemente von 'VbMsgBoxResult' die Konstante aus.

2.	Klicken Sie auf die Schaltfläche [image].


VbMsgBoxStyle (Objektkatalog)

Die VbMsgBoxStyle-Aufzählung enthält Konstanten, die verwendet werden, um das Verhalten eines Meldungsfeldes mit den darin angezeigten Symbolen und Schaltflächen anzugeben, wenn dieses mit der MsgBox-Funktion angezeigt wird. Diese Konstanten können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Konstante

1.	Wählen Sie in der Liste Elemente von 'VbMsgBoxStyle' die Konstante aus.

2.	Klicken Sie auf die Schaltfläche [image].


VbQueryClose (Objektkatalog)

Die VbQueryClose-Aufzählung enthält Konstanten, die verwendet werden, um zu kennzeichnen, warum das QueryClose-Ereignis eingetreten ist. Diese Konstanten können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Konstante

1.	Wählen Sie in der Liste Elemente von 'VbQueryClose' die Konstante aus.

2.	Klicken Sie auf die Schaltfläche [image].


VbStrConv (Objektkatalog)

Die VbStrConv-Aufzählung enthält Konstanten, die verwendet werden, um den Typ der Zeichenfolgenumwandlung zu kennzeichnen, der durch die StrConv-Funktion durchgeführt wurde. Diese Konstanten können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Konstante

1.	Wählen Sie in der Liste Elemente von 'VbStrConv' die Konstante aus.

2.	Klicken Sie auf die Schaltfläche [image].


VbVarType (Objektkatalog)

Die VbVarType-Aufzählung enthält Konstanten, die verwendet werden, um die verschiedenen Datentypen zu kennzeichnen, die in einem Wert vom Typ Variant enthalten sein können. Diese Konstanten stimmen mit den Rückgabewerten der VarType-Funktion überein und können an beliebiger Position in Ihrem Code verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Konstante

1.	Wählen Sie in der Liste Elemente von 'VbVarType' die Konstante aus.

2.	Klicken Sie auf die Schaltfläche [image].


VbTriState (Objektkatalog)

Die VbTriState-Aufzählung definiert Konstanten, die verwendet werden, um einen von drei möglichen Zuständen zu kennzeichnen.

So erhalten Sie Hilfe zu einer bestimmten Konstante

1.	Wählen Sie in der Liste Elemente von 'VbTriState' die Konstante aus.

2.	Klicken Sie auf die Schaltfläche [image].


VbDateTimeFormat (Objektkatalog)

Die VbDateTimeFormat-Aufzählung definiert Konstanten, die verwendet werden, um zu kennzeichnen, wie das Datum und die Zeit formatiert werden.

So erhalten Sie Hilfe zu einer bestimmten Konstante

1.	Wählen Sie in der Liste Elemente von 'VbDateTimeFormat' die Konstante aus.

2.	Klicken Sie auf die Schaltfläche [image].


VbCallType (Objektkatalog)

Die VbCallType-Aufzählung definiert Konstanten, die verwendet werden, um den von der CallByName-Funktion verwendeten Aufruftyp zu kennzeichnen.

So erhalten Sie Hilfe zu einer bestimmten Konstante

1.	Wählen Sie in der Liste Elemente von 'VbCallType' die Konstante aus.

2.	Klicken Sie auf die Schaltfläche [image].


FormShowConstants (Objektkatalog)

Das FormShowConstants-Modul enthält vordefinierte UserForm-Konstanten. Diese Konstanten können in Ihrem Code an beliebiger Stelle verwendet werden.

So erhalten Sie Hilfe zu einer bestimmten Konstante

1.	Wählen Sie in der Liste Elemente von 'FormShowConstants' die Konstante aus.

2.	Klicken Sie auf die Schaltfläche [image].


Collection-Objekt (Beispiel)

In diesem Beispiel wird ein Collection-Objekt (TestClasses) erstellt und dann ein Dialogfeld erzeugt, mit dem die Benutzer Objekte zur Auflistung hinzufügen können. Sie können dieses Beispiel verwenden, indem Sie aus dem Menü Einfügen den Befehl Klassenmodul wählen und eine öffentliche Variable mit dem Namen Instanzname auf der Modulebene von Klasse1 deklarieren (geben Sie Public Instanzname ein), die die Namen der einzelnen Instanzen aufnimmt. Ändern Sie den Standardnamen Klasse1 nicht. Kopieren Sie den folgenden Code, und fügen Sie ihn in Abschnitt "Allgemein" eines anderen Moduls ein. Starten Sie dann den Code mit der Anweisung Klassenbezeichnung in einer anderen Prozedur. (Dieses Beispiel kann nur in Host-Anwendungen ausgeführt werden, die Klassen unterstützen.)

Sub Klassenbezeichnung()

Dim TestClasses As New Collection	' Collection-Objekt erstellen.

Dim Num	' Zähler für Namen der

' einzelnen Schlüssel.

Dim Mldg As String	' Variable für Eingabetext.

Dim DerName, Objekt1, Namensliste	' Variant-Werte für

' Informationen.

Do

Dim Inst As New Klasse1	' Neue Klasse1-Instanz erstellen.

Num = Num + 1	' Num hochzählen und Namen abrufen.

Mldg = "Welchen Namen soll das Objekt bekommen?" & Chr(13) _

 & "Drücken Sie 'Abbrechen', um die Namen in der Auflistung " & _

"anzuzeigen".

DerName = InputBox(Mldg, "Namen der Auflistungselemente")

Inst.Instanzname = DerName	' Name in Objektinstanz speichern.

' Wenn Benutzer einen Namen eingegeben hat, Objekt zur Auflistung

' hinzufügen.

If Inst.Instanzname <> "" Then

' Benanntes Objekt zur Auflistung hinzufügen.

TestClasses.Add item := Inst, key := CStr(Num)

End If

' Aktuellen Verweis als Vorbereitung auf den nächsten löschen.

Set Inst = Nothing

Loop Until DerName = ""

For Each Objekt1 In TestClasses	' Namensliste erstellen.

Namensliste = Namensliste & Objekt1.Instanzname & Chr(13)

Next Objekt1

' Namensliste in einem Meldungsfeld anzeigen.

MsgBox Namensliste, , "Instanznamen in TestClasses-Auflistung"

For Num = 1 To TestClasses.Count	' Name aus Auflistung

' entfernen.

TestClasses.Remove 1	' Da Auflistungen automatisch

' neu indiziert werden, jeweils das

' erste Element bei jeder

Next	' Iteration entfernen.

End Sub


Err-Objekt (Beispiel)

In diesem Beispiel werden die Eigenschaften des Err-Objekts zum Erstellen eines Dialogfeldes mit einer Fehlermeldung verwendet. Wenn Sie zuerst die Clear-Methode verwenden, wenn Sie einen Visual Basic-Fehler mit der Raise-Methode auslösen, ist zu beachten, daß die Eigenschaften des Err-Objekts die Standardeinstellungen von Visual Basic annehmen.

Dim Mldg

' Bei Auftreten eines Fehlers Fehlermeldung erstellen

On Error Resume Next	' Fehlerbehandlung zurückstellen.

Err.Clear

Err.Raise 6	' Überlauffehler" auslösen.

' Auf Fehler überprüfen, dann Meldung anzeigen.

If Err.Number <> 0 Then

Mldg = "Fehler # " & Str(Err.Number) & " wurde ausgelöst von " _

& Err.Source & Chr(13) & Err.Description

MsgBox Mldg, , "Fehler", Err.Helpfile, Err.HelpContext

End If


Collection-Objekt

Ein Collection-Objekt ist eine geordnete Folge von Elementen, auf die als Einheit Bezug genommen werden kann.

Bemerkungen

Das Collection-Objekt bietet eine einfache Möglichkeit, um auf eine verwandte Gruppe von Elementen als einzelnes Objekt Bezug zu nehmen. Die Elemente in einer Auflistung müssen nur durch die Tatsache miteinander in Beziehung stehen, daß sie sich in der Auflistung befinden. Es ist nicht erforderlich, daß Elemente einer Auflistung denselben Datentyp haben.

Eine Auflistung kann genauso erstellt werden wie andere Objekte. Beispiel:

Dim X As New Collection

Nachdem die Auflistung erstellt wurde, können ihr mit der Add-Methode Elemente hinzugefügt werden, und mit der Remove-Methode können Elemente entfernt werden. Mit der Item-Methode können bestimmte Elemente aus der Auflistung abgerufen, während die gesamte Auflistung mit der For Each...Next-Anweisung durchlaufen werden kann.


Debug-Objekt

Das Debug-Objekt sendet Ausgaben zur Laufzeit zum Direktfenster.


Err-Objekt

Enthält Informationen zu Laufzeitfehlern.

Bemerkungen

Die Eigenschaften des Err-Objekts werden durch den Auslöser eines Fehlers festgelegt - durch Visual Basic, ein Objekt oder den Programmierer.

Die Standardeigenschaft des Err-Objekt ist Number. Da die Standardeigenschaft durch den Objektnamen Err dargestellt werden kann, muß bereits bestehender Code, der die Err-Funktion oder die Err-Anweisung verwendet, nicht umgeschrieben werden.

Wenn ein Laufzeitfehler auftritt, werden die Eigenschaften des Err-Objekts mit Information gefüllt, die den Fehler sowie die Informationen, die zur Verarbeitung des Fehlers verwendet werden können, eindeutig kennzeichnen. Mit der Raise-Methode können Sie einen Laufzeitfehler in Ihrem Code auslösen.

Die Eigenschaften des Err-Objekts werden auf Null oder Null-Zeichenfolgen ("") zurückgesetzt, nachdem eine Exit Sub-, Exit Function-, Exit Property- oder Resume Next-Anweisung innerhalb einer Fehlerbehandlungsroutine auftritt. Die Verwendung jeglicher Form der Resume-Anweisung außerhalb einer Fehlerbehandlungsroutine setzt die Eigenschaften des Err-Objekts nicht zurück. Die Clear-Methode kann verwendet werden, um Err explizit zurückzusetzen.

Sie sollten die Raise-Methode (anstelle der Error-Anweisung) verwenden, um Laufzeitfehler für Systemfehler und Klassenmodule auszulösen. Ob Sie die Raise-Methode in einem anderen Code verwenden, hängt vom Umfang der Information ab, die Sie zurückgeben möchten.

Das Err-Objekt ist ein integriertes Objekt mit globalem Gültigkeitsbereich. Sie müssen daher keine Instanz dieses Objekts in Ihrem Code erstellen.


^-Operator (Beispiel)

In diesem Beispiel wird der Operator ^ verwendet, um eine Zahl zu potenzieren.

Dim Wert1

Wert1 = 2 ^ 2	' Liefert 4.

Wert1 = 3 ^ 3 ^ 3	' Liefert 19683.

Wert1 = (-5) ^ 3	' Liefert -125.


+-Operator (Beispiel)

In diesem Beispiel wird der Operator + verwendet, um Zahlen zu addieren. Der Operator + kann auch Zeichenfolgen verketten. Um Mehrdeutigkeiten zu vermeiden, sollten Sie jedoch dazu den Operator & verwenden. Wenn die Komponenten eines Ausdrucks, der mit dem Operator + erstellt wurde, sowohl Zeichenfolgen als auch Zahlen umfassen, wird das arithmetische Ergebnis zugewiesen. Wenn die Komponenten ausschließlich Zeichenfolgen sind, werden diese Zeichenfolgen verkettet.

Dim Zahl1, Var1, Var2

Zahl1 = 2 + 2	' Liefert 4.

Zahl1 = 4257.04 + 98112	' Liefert 102369,04.

Var1 = "34": Var2 = 6	' Gemischte Variablen initialisieren.

Zahl1 = Var1 + Var2	' Liefert 40.

Var1 = "34": Var2 = "6"	' Variablen mit Zeichenfolgen

' initialisieren.

Zahl1 = Var1 + Var2	' Liefert "346"

' (Zeichenfolgenverkettung).


- Operator (Beispiel)

In diesem Beispiel wird der Operator - verwendet, um zwei Zahlen zu subtrahieren.

Dim Ergebnis

Ergebnis = 4 - 2	' Liefert 2.

Ergebnis = 459.35 - 334.90	' Liefert 124,45.


*-Operator (Beispiel)

In diesem Beispiel wird der Operator * verwendet, um zwei Zahlen zu multiplizieren.

Dim Wert1

Wert1 = 2 * 2	' Liefert 4.

Wert1 = 459.35 * 334.90 	' Liefert 153836,315.


/-Operator (Beispiel)

In diesem Beispiel wird der Operator / verwendet, um eine Fließkommadivision durchzuführen.

Dim Wert1

Wert1 = 10 / 4	' Liefert 2,5.

Wert1 = 10 / 3	' Liefert 3,333333.


\ Operator (Beispiel)

In diesem Beispiel wird der Operator \ verwendet, um eine Ganzzahldivision durchzuführen.

Dim Wert1

Wert1 = 11 \ 4	' Liefert 2.

Wert1 = 9 \ 3	' Liefert 3.

Wert1 = 100 \ 3	' Liefert 33.


Mod-Operator (Beispiel)

In diesem Beispiel wird der Operator Mod verwendet, um zwei Zahlen zu dividieren und den ganzzahligen Rest zurückzugeben. Fließkommazahlen werden vor der Operation auf einen ganzzahligen Wert gerundet.

Dim Ergebnis

Ergebnis = 10 Mod 5	' Liefert 0.

Ergebnis = 10 Mod 3	' Liefert 1.

Ergebnis = 12 Mod 4.3	' Liefert 0.

Ergebnis = 12.6 Mod 5	' Liefert 3.


&-Operator (Beispiel)

In diesem Beispiel wird der Operator & verwendet, um Zeichenfolgen zu verketten.

Dim Text1

Text1 = "Hallo" & " Welt"	' Liefert "Hallo Welt".

Text1 = "Die Antwort kann nur " & 42 & " sein"	' Liefert "Die Antwort

' kann nur 42 sein".


Vergleichsoperatoren (Beispiel)

In diesem Beispiel werden verschiedene Einsatzmöglichkeiten für Vergleichsoperatoren zum Vergleichen von Ausdrücken aufgezeigt.

Dim Ergebnis, Var1, Var2

Ergebnis = (45 < 35)	' Liefert False.

Ergebnis = (45 = 45)	' Liefert True.

Ergebnis = (4 <> 3)	' Liefert True.

Ergebnis = ("5" > "4")	' Liefert True.

Var1 = "5": Var2 = 4	' Variablen initialisieren.

Ergebnis = (Var1 > Var2)	' Liefert True.

Var1 = 5: Var2 = Empty

Ergebnis = (Var1 > Var2)	' Liefert True.

Var1 = 0: Var2 = Empty

Ergebnis = (Var1 = Var2)	' Liefert True.


And-Operator (Beispiel)

In diesem Beispiel wird der Operator And verwendet, um zwei Ausdrücke mit einer logischen Konjunktion zu verknüpfen.

Dim A, B, C, D, Test1

A = 10: B = 8: C = 6: D = Null	' Variablen initialisieren.

Test1 = A > B And B > C	' Liefert True.

Test1 = B > A And B > C	' Liefert False.

Test1 = A > B And B > D	' Liefert Null.

Test1 = A And B	' Liefert 8 (Bit-weiser Vergleich).


Eqv-Operator (Beispiel)

In diesem Beispiel wird der Operator Eqv verwendet, um zwei Ausdrücke mit einer logischen Äquivalenzoperation zu verknüpfen.

Dim A, B, C, D, Test1

A = 10: B = 8: C = 6: D = Null	' Variablen initialisieren.

Test1 = A > B Eqv B > C	' Liefert True.

Test1 = B > A Eqv B > C	' Liefert False.

Test1 = A > B Eqv B > D	' Liefert Null.

Test1 = A Eqv B	' Liefert -3 (Bit-weiser Vergleich).


Imp-Operator (Beispiel)

In diesem Beispiel wird der Operator Imp verwendet, um zwei Ausdrücke mit einer logischen Implikation zu verknüpfen.

Dim A, B, C, D, Test1

A = 10: B = 8: C = 6: D = Null	' Variablen initialisieren.

Test1 = A > B Imp B > C	' Liefert True.

Test1 = A > B Imp C > B	' Liefert False.

Test1 = B > A Imp C > B	' Liefert True.

Test1 = B > A Imp C > D	' Liefert True.

Test1 = C > D Imp B > A	' Liefert Null.

Test1 = B Imp A	' Liefert -1 (Bit-weiser Vergleich).


Not-Operator (Beispiel)

In diesem Beispiel wird der Operator Not verwendet, um eine logische Negation eines Ausdrucks durchzuführen.

Dim A, B, C, D, Test1

A = 10: B = 8: C = 6: D = Null	' Variablen initialisieren.

Test1 = Not(A > B)	' Liefert False.

Test1 = Not(B > A)	' Liefert True.

Test1 = Not(C > D)	' Liefert Null.

Test1 = Not A	' Liefert -11 (Bit-weiser Vergleich).


Or-Operator (Beispiel)

In diesem Beispiel wird der Operator Or verwendet, um zwei Ausdrücke mit einer logischen Disjunktion zu verknüpfen.

Dim A, B, C, D, Test1

A = 10: B = 8: C = 6: D = Null	' Variablen initialisieren.

Test1 = A > B Or B > C	' Liefert True.

Test1 = B > A Or B > C	' Liefert True.

Test1 = A > B Or B > D	' Liefert True.

Test1 = B > D Or B > A	' Liefert Null.

Test1 = A Or B	' Liefert 10 (Bit-weiser Vergleich).


Xor-Operator (Beispiel)

In diesem Beispiel wird der Operator Xor verwendet, um zwei Ausdrücke mit einer logischen Exklusion zu verknüpfen.

Dim A, B, C, D, Test1

A = 10: B = 8: C = 6: D = Null	' Variablen initialisieren.

Test1 = A > B Xor B > C	' Liefert False.

Test1 = B > A Xor B > C	' Liefert True.

Test1 = B > A Xor C > B	' Liefert False.

Test1 = B > D Xor A > B	' Liefert Null.

Test1 = A Xor B	' Liefert 2 (Bit-weiser Vergleich).


Like-Operator (Beispiel)

In diesem Beispiel wird der Operator Like verwendet, um eine Zeichenfolge mit einem Muster zu vergleichen.

Dim Test1

Test1 = "aBBBa" Like "a*a"	' Liefert True.

Test1 = "F" Like "[A-Z]"	' Liefert True.

Test1 = "F" Like "[!A-Z]"	' Liefert False.

Test1 = "a2a" Like "a#a"	' Liefert True.

Test1 = "aM5b" Like "a[L-P]#[!c-e]"	' Liefert True.

Test1 = "BAT123khg" Like "B?T*"	' Liefert True.

Test1 = "CAT123khg" Like "B?T*"	' Liefert False.


Is-Operator (Beispiel)

In diesem Beispiel wird der Operator Is verwendet, um zwei Objektverweise zu vergleichen. Die Namen der hier verwendeten Objektvariablen sind erfunden und dienen lediglich der Demonstration.

Dim Objekt1, NeuObjekt, Objekt2, Objekt3, Objekt4, Test1

Set NeuObjekt = Objekt1	' Objektverweise zuweisen.

Set Objekt2 = Objekt1

Set Objekt4 = Objekt3

Test1 = NeuObjekt Is Objekt2	' Liefert True.

Test1 = Objekt4 Is Objekt2	' Liefert False.

' Angenommen, daß gilt: Objekt1 <> Objekt3

Test1 = Objekt1 Is Objekt4	' Liefert False.


Operatoren (Zusammenfassung)

Operatoren	Beschreibung
Arithmetische Operatoren	Operatoren zum Durchführen mathematischer Berechnungen.
Vergleichsoperatoren	Operatoren zum Durchführen von Vergleichen.
Verkettungsoperatoren	Operatoren zum Aneinanderhängen von Zeichenfolgen.
Logische Operatoren	Operatoren zum Durchführen logischer Operationen.


Operatorvorrang

Wenn ein Ausdruck mehrere Operationen enthält, werden die einzelnen Teilausdrücke in einer bestimmten Rangfolge ausgewertet und aufgelöst, die als Operatorvorrang bezeichnet wird.

Wenn Ausdrücke Operatoren aus mehreren Kategorien enthalten, werden zunächst die arithmetischen Operatoren, dann die Vergleichsoperatoren und zuletzt die logischen Operatoren ausgewertet. Die Vergleichsoperatoren haben alle dieselbe Priorität und werden daher von links nach rechts in der Reihenfolge ihres Auftretens ausgewertet. Für die arithmetischen und logischen Operatoren gilt die folgende Rangfolge:

Arithmetisch	Vergleich	Logisch
Potenzierung (^)	Gleich (=)	Not
Negation ( - )	Ungleich (<>)	And
Multiplikation und Division (*, /)	Kleiner als (<)	Or
Ganzzahldivision (\)	Größer als (>)	Xor
Restwert (Mod)	Kleiner oder gleich (<=)	Eqv
Addition und Subtraktion (+, –)	Größer oder gleich (>=)	Imp
Zeichenverkettung (&)	Like Is
Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig und werden von links nach rechts in der Reihenfolge ihres Auftretens ausgewertet. Dasselbe gilt für Additionen und Subtraktionen, die zusammen in einem Ausdruck auftreten. Mit Klammern kann diese Rangfolge außer Kraft gesetzt werden, damit bestimmte Teilausdrücke vor anderen Teilausdrücken ausgewertet werden. In Klammern gesetzte Operationen haben grundsätzlich Vorrang. Innerhalb der Klammern gilt jedoch wieder die normale Rangfolge der Operatoren.

Der Zeichenverkettungsoperator (&) ist zwar kein arithmetischer Operator, liegt aber in der Rangfolge zwischen den arithmetischen Operatoren und den Vergleichsoperatoren.

Der Operator Like ist eigentlich ein Operator zum Mustervergleich, wird aber in der Rangfolge den anderen Vergleichsoperatoren gleichgestellt.

Der Operator Is dient zum Vergleichen von Verweisen auf Objekte. Er vergleicht nicht die Objekte oder deren Werte, sondern überprüft lediglich, ob sich zwei Objektverweise auf dasselbe Objekt beziehen.


Arithmetische Operatoren

^ (Operator)

* (Operator)

/ (Operator)

\ (Operator)

Mod (Operator)

+ (Operator)

- (Operator)


Verkettungsoperatoren

& (Operator)

+ (Operator)


Logische Operatoren

And (Operator)

Eqv (Operator)

Imp (Operator)

Not (Operator)

Or (Operator)

Xor (Operator)


^ (Operator)

Dient zum Potenzieren einer Zahl mit einem Exponenten.

Syntax

Ergebnis = Zahl^Exponent

Die Syntax des Operators ^ besteht aus folgenden Teilen:

Teil	Beschreibung
Ergebnis	Erforderlich. Eine beliebige numerische Variable.
Zahl	Erforderlich. Ein beliebiger numerischer Ausdruck.
Exponent	Erforderlich. Ein beliebiger numerischer Ausdruck.
Bemerkungen

Das Argument Zahl darf nur negativ sein, wenn Exponent ein ganzzahliger Wert ist. Werden in einem einzigen Ausdruck mehrere Potenzierungen ausgeführt, so wird der Operator ^ jeweils in der Reihenfolge seines Auftretens von links nach rechts ausgewertet.

Ergebnis hat im allgemeinen den Datentyp Double oder Variant mit dem Untertyp Double. Ist jedoch entweder Zahl oder Exponent ein Ausdruck mit dem Wert Null, so ist Ergebnis ebenfalls Null.


+ (Operator)

Dient zur Addition zweier Zahlen.

Syntax

Ergebnis = Ausdruck1 + Ausdruck2

Die Syntax des Operators + besteht aus folgenden Teilen:

Teil	Beschreibung
Ergebnis	Erforderlich. Eine beliebige numerische Variable.
Ausdruck1	Erforderlich. Ein beliebiger Ausdruck.
Ausdruck2	Erforderlich. Ein beliebiger Ausdruck.
Bemerkungen

Wenn Sie den Operator + verwenden, können Sie nicht immer bestimmen, ob eine Addition oder eine Zeichenverkettung erfolgt. Für die Verkettung zweier Zeichenfolgen sollten Sie den Operator & verwenden, um Mehrdeutigkeiten auszuschließen und Code zu erstellen, der sich selbst dokumentiert.

Ist mindestens ein Operand kein Variant-Wert, gelten die folgenden Regeln:

Fall	Ergebnis
Beide Ausdrücke haben einen numerischen Datentyp (Byte, Boolean, Integer, Long, Single, Double, Date, Currency, oder Decimal).	Addition
Beide Ausdrücke haben den Typ String.	Verkettung
Ein Ausdruck hat einen numerischen Datentyp, und der andere Ausdruck ist ein beliebiger Variant-Wert (außer Null).	Addition
Ein Ausdruck hat den Typ String, und der andere Ausdruck ist ein beliebiger Wert vom Typ Variant (außer Null).	Verkettung
Ein Ausdruck ist ein Variant mit dem Wert Empty.	Der andere Operand wird unverändert als Ergebnis zurückgegeben.
Ein Ausdruck hat einen numerischen Datentyp, und der andere hat den Typ String.	Die folgende Fehlermeldung wird angezeigt: Datentypen unverträglich.
Einer der Ausdrücke ist Null.	Ergebnis ist Null.
Wenn beide Ausdrücke Variant-Ausdrücke sind, gelten die folgenden Regeln:

Fall	Ergebnis
Beide Variant-Ausdrücke sind numerisch.	Addition
Beide Variant-Ausdrücke sind Zeichenfolgen.	Verkettung
Ein Variant-Ausdruck ist numerisch, und der andere ist eine Zeichenfolge.	Addition
Bei einfachen arithmetischen Additionen mit Ausdrücken eines numerischen Datentyps hat Ergebnis im allgemeinen den Datentyp des Ausdrucks mit der größten Genauigkeit. Die Datentypen lassen sich wie folgt nach zunehmender Genauigkeit ordnen: Byte, Integer, Long, Single, Double, Currency, und Decimal. Es gelten außerdem die folgenden Ausnahmen:

Fall	Ergebnis
Ein Wert vom Typ Single und ein Wert vom Typ Long werden addiert.	Ist ein Wert vom Typ Double.
Der Datentyp von Ergebnis ist ein Variant vom Untertyp Long, Single oder Date, dessen zulässiger Bereich überschritten wird.	Wird in einen Variant vom Untertyp Double umgewandelt.
Der Datentyp von Ergebnis ist ein Variant vom Untertyp Byte, dessen zulässiger Bereich überschritten wird.	Wird in einen Variant vom Untertyp Integer umgewandelt.
Der Datentyp von Ergebnis ist ein Variant vom Untertyp Integer, dessen zulässiger Bereich überschritten wird.	Wird in einen Variant vom Untertyp Long umgewandelt.
Ein Wert vom Typ Date wird zu einem beliebigen anderen Datentyp addiert.	Ist ein Wert vom Typ Date.
Wenn mindestens ein Ausdruck ein Null-Ausdruck ist, hat auch Ergebnis den Wert Null. Haben beide Ausdrücke den Wert Empty, so hat Ergebnis den Typ Integer. Hat jedoch nur ein Ausdruck den Typ Empty, so wird der andere Ausdruck ohne Änderung als Ergebnis zurückgegeben.

Anmerkung   Die Reihenfolge der Genauigkeit, die bei Additionen und Subtraktionen verwendet wird, entspricht nicht der Reihenfolge, die bei Multiplikationen verwendet wird.


- (Operator)

Dient zum Bilden der Differenz von zwei Zahlen oder zum Bilden des negativen Werts eines numerischen Ausdrucks.

Syntax 1

Ergebnis = Operand1 - Operand2

Syntax 2

- Zahl

Die Syntax des Operators - besteht aus folgenden Teilen:

Teil	Beschreibung
Ergebnis	Erforderlich. Eine beliebige numerische Variable.
Zahl	Erforderlich. Ein beliebiger numerischer Ausdruck.
Operand1	Erforderlich. Ein beliebiger numerischer Ausdruck.
Operand2	Erforderlich. Ein beliebiger numerischer Ausdruck.
Bemerkungen

In Syntax 1 ist der Operator - der arithmetische Subtraktionsoperator zum Bilden der Differenz von zwei Zahlen. In Syntax 2 dient der Operator - als unärer Negationsoperator, der den negativen Wert eines Ausdrucks bildet.

Ergebnis hat im allgemeinen den Datentyp des Ausdrucks mit der größten Genauigkeit. Die Datentypen lassen sich wie folgt nach zunehmender Genauigkeit ordnen: Byte, Integer, Long, Single, Double, Currency und Decimal. Es gelten außerdem die folgenden Ausnahmen:

Fall	Ergebnis
Die Subtraktion umfaßt einen Wert vom Typ Single und einen Wert vom Typ Long.	Wird in einen Wert vom Typ Double umgewandelt.
Der Datentyp von Ergebnis ist ein Variant vom Untertyp Long, Single oder Date, dessen zulässiger Bereich überschritten wird.	Wird in einen Wert vom Typ Variant mit dem Untertyp Double umgewandelt.
Der Datentyp von Ergebnis ist ein Variant vom Untertyp Byte, dessen zulässiger Bereich überschritten wird.	Wird in einen Variant vom Untertyp Integer umgewandelt.
Der Datentyp von Ergebnis ist ein Variant vom Untertyp Integer, dessen zulässiger Bereich überschritten wird.	Wird in einen Variant vom Untertyp Long umgewandelt.
Die Subtraktion umfaßt einen Wert vom Typ Date und einen anderen beliebigen Datentyp.	Ist ein Wert vom Typ Date.
Die Subtraktion umfaßt zwei Ausdrücke vom Typ Date.	Ist ein Wert vom Typ Double.
Wenn mindestens ein Ausdruck ein Null-Ausdruck ist, enthält Ergebnis ebenfalls Null. Wenn ein Ausdruck den Wert Empty hat, wird er als 0 interpretiert.

Anmerkung   Die Reihenfolge der Genauigkeit, die bei Additionen und Subtraktionen verwendet wird, entspricht nicht der Reihenfolge, die bei Multiplikationen verwendet wird.


* (Operator)

Dient zur Multiplikation zweier Zahlen.

Syntax

Ergebnis = Operand1 * Operand2

Die Syntax des Operators * besteht aus folgenden Teilen:

Teil	Beschreibung
Ergebnis	Erforderlich. Eine beliebige numerische Variable.
Operand1	Erforderlich. Ein beliebiger numerischer Ausdruck.
Operand2	Erforderlich. Ein beliebiger numerischer Ausdruck.
Bemerkungen

Das Argument Ergebnis hat im allgemeinen den Datentyp des Ausdrucks mit der größten Genauigkeit. Die Datentypen lassen sich wie folgt nach zunehmender Genauigkeit ordnen: Byte, Integer, Long, Single, Currency, Double und Decimal. Es gelten aber die folgenden Ausnahmen:

Fall	Ergebnis
Die Multiplikation umfaßt einen Wert vom Typ Single und einen Wert vom Typ Long.	Wird in eine Wert vom Typ Double umgewandelt.
Der Datentyp von Ergebnis ist ein Variant vom Untertyp Long, Single oder Date, dessen zulässiger Bereich überschritten wird.	Wird in einen Wert vom Typ Variant mit dem Untertyp Double umgewandelt.
Der Datentyp von Ergebnis ist ein Variant vom Untertyp Byte, dessen zulässiger Bereich überschritten wird.	Wird in einen Variant vom Untertyp Integer umgewandelt.
Der Datentyp von Ergebnis ist ein Variant vom Untertyp Integer ist, dessen zulässiger Bereich überschritten wird.	Wird in einen Variant vom Untertyp Long umgewandelt.
Wenn mindestens ein Ausdruck ein Null-Ausdruck ist, enthält Ergebnis ebenfalls Null. Wenn ein Ausdruck den Wert Empty hat, wird er als 0 interpretiert.

Anmerkung   Die Reihenfolge der Genauigkeit, die bei Multiplikationen verwendet wird, entspricht nicht der Reihenfolge, die bei Additionen und Subtraktionen verwendet wird.


/ (Operator)

Dient zur Division zweier Zahlen und gibt ein Fließkomma-Ergebnis zurück.

Syntax

Ergebnis = Operand1 / Operand2

Die Syntax des Operators / besteht aus folgenden Teilen:

Teil	Beschreibung
Ergebnis	Erforderlich. Eine beliebige numerische Variable.
Operand1	Erforderlich. Ein beliebiger numerischer Ausdruck.
Operand2	Erforderlich. Ein beliebiger numerischer Ausdruck.
Bemerkungen

Das Ergebnis hat im allgemeinen den Datentyp Double oder ist ein Variant mit dem Untertyp Double. Es gelten aber die folgenden Ausnahmen:

Fall	Ergebnis
Beide Ausdrücke sind Werte vom Typ Byte, Integer oder Single.	Ist ein Wert vom Typ Single, solange nicht dessen Bereichsgrenzen überschritten werden. In diesem Fall tritt ein Fehler auf.
Beide Ausdrücke sind Variant-Werte mit dem Untertyp Byte, Integer oder Single.	Ist ein Variant vom Untertyp Single, solange nicht dessen Bereichsgrenzen überschritten werden. In diesem Fall ist Ergebnis ein Wert vom Typ Variant mit dem Untertyp Double.
Die Division enthält einen Variant-Wert vom Typ Decimal und einen beliebigen anderen Datentyp.	Ist ein Wert vom Typ Decimal.
Wenn mindestens ein Ausdruck ein Null-Ausdruck ist, enthält Ergebnis ebenfalls Null. Wenn ein Ausdruck den Wert Empty hat, wird er als 0 interpretiert.


\ (Operator)

Dient zur Division zweier Zahlen und gibt ein ganzzahliges Ergebnis zurück.

Syntax

Ergebnis = Operand1 \ Operand2

Die Syntax des Operators \ besteht aus folgenden Teilen:

Teil	Beschreibung
Ergebnis	Erforderlich. Eine beliebige numerische Variable.
Operand1	Erforderlich. Ein beliebiger numerischer Ausdruck.
Operand2	Erforderlich. Ein beliebiger numerischer Ausdruck.
Bemerkungen

Vor der Division werden die numerischen Ausdrücke in Ausdrücke der Typen Byte, Integer oder Long gerundet.

Ergebnis hat im allgemeinen den Datentyp Byte, Integer oder Long bzw. bei einem Variant den Untertyp Byte, Integer oder Long, auch wenn Ergebnis keine ganze Zahl ist. Alle Nachkommastellen werden abgeschnitten. Wenn jedoch mindestens ein Ausdruck ein Null-Ausdruck ist, enthält Ergebnis ebenfalls Null. Wenn ein Ausdruck den Wert Empty hat, wird er als 0 interpretiert.


Mod (Operator)

Gibt den Rest einer ganzzahligen Division zweier Zahlen zurück.

Syntax

Ergebnis = Operand1 Mod Operand2

Die Syntax des Operators Mod besteht aus folgenden Teilen:

Teil	Beschreibung
Ergebnis	Erforderlich. Eine beliebige numerische Variable.
Operand1	Erforderlich. Ein beliebiger numerischer Ausdruck.
Operand2	Erforderlich. Ein beliebiger numerischer Ausdruck.
Bemerkungen

Der Modulo-Operator (oder Rest-Operator) dividiert Operand1 durch Operand2, rundet dabei Fließkommawerte zu ganzen Zahlen und gibt nur den Rest als Ergebnis zurück. Das Ergebnis des folgenden Ausdrucks A () ist zum Beispiel 5.

A = 19 Mod 6.7

Ergebnis hat im allgemeinen den Datentyp Byte, Integer oder Long bzw. den Typ Variant mit dem Untertyp Byte, Integer oder Long, auch wenn Ergebnis keine ganze Zahl ist. Alle Nachkommastellen werden abgeschnitten. Wenn jedoch mindestens ein Ausdruck ein Null-Ausdruck ist, enthält Ergebnis ebenfalls Null. Wenn ein Ausdruck den Wert Empty hat, wird er als 0 interpretiert.


& (Operator)

Dient zur Verkettung von Zeichenfolgen zweier Ausdrücke.

Syntax

Ergebnis = Ausdruck1 & Ausdruck2

Die Syntax des Operators & besteht aus folgenden Teilen:

Teil	Beschreibung
Ergebnis	Erforderlich. Eine beliebige String- oder Variant-Variable.
Ausdruck1	Erforderlich. Ein beliebiger Ausdruck.
Ausdruck2	Erforderlich. Ein beliebiger Ausdruck.
Bemerkungen

Alle Ausdrücke, die keine Zeichenfolge darstellen, werden in den Variant-Typ String umgewandelt. Ergebnis hat den Datentyp String, wenn beide Ausdrücke Zeichenfolgenausdrücke sind; ansonsten ist Ergebnis ein Variant vom Typ String. Wenn beide Ausdrücke Null sind, ist das Ergebnis ebenfalls Null. Wenn jedoch nur ein Ausdruck Null ist, wird dieser Ausdruck bei der Verkettung mit einem anderen Ausdruck als Null-Zeichenfolge ("") interpretiert. Wenn ein Ausdruck den Wert Empty hat, wird er als Null-Zeichenfolge interpretiert.


Vergleichsoperatoren

Dienen zum Vergleich von Ausdrücken.

Syntax

Ergebnis = Ausdruck1 VergleichsOperator Ausdruck2

Ergebnis = Objekt1 Is Objekt2

Ergebnis = Zeichenfolge Like Muster

Vergleichsoperatoren bestehen aus folgenden Teilen:

Teil	Beschreibung
Ergebnis	Erforderlich. Eine beliebige numerische Variable.
Ausdruck	Erforderlich. Ein beliebiger Ausdruck.
VergleichsOperator	Erforderlich. Ein beliebiger Vergleichsoperator.
Objekt	Erforderlich. Ein beliebiger Objektname.
Zeichenfolge	Erforderlich. Ein beliebiger Zeichenfolgenausdruck.
Muster	Erforderlich. Ein beliebiger Zeichenfolgenausdruck oder Zeichenbereich.
Bemerkungen

Die folgende Tabelle enthält eine Liste der Vergleichsoperatoren und die Bedingungen, unter denen Ergebnis True, False oder Null wird:

Operator	True, wenn	False, wenn	Null, wenn
< (Kleiner als)	Ausdruck1 < Ausdruck2	Ausdruck1 >= Ausdruck2	Ausdruck1 oder Ausdruck2 = Null
<= (Kleiner oder gleich)	Ausdruck1 <= Ausdruck2	Ausdruck1 > Ausdruck2	Ausdruck1 oder Ausdruck2 = Null
> (Größer als)	Ausdruck1 > Ausdruck2	Ausdruck1 <= Ausdruck2	Ausdruck1 oder Ausdruck2 = Null
>= (Größer oder gleich)	Ausdruck1 >= Ausdruck2	Ausdruck1 < Ausdruck2	Ausdruck1 oder Ausdruck2 = Null
= (Gleich)	Ausdruck1 = Ausdruck2	Ausdruck1 <> Ausdruck2	Ausdruck1 oder Ausdruck2 = Null
<> (Ungleich)	Ausdruck1 <> Ausdruck2	Ausdruck1 = Ausdruck2	Ausdruck1 oder Ausdruck2 = Null
Anmerkung   Die Operatoren Is und Like haben eine spezielle vergleichende Funktion, die sich von den Operatoren in der Tabelle unterscheidet.

Beim Vergleich zweier Ausdrücke ist nicht immer offensichtlich, ob die Ausdrücke als Zahlen oder als Zeichenfolgen verglichen werden. Aus der folgenden Tabelle können Sie ersehen, wie Ausdrücke verglichen werden bzw. wie das Ergebnis aussieht, wenn einer der beiden Ausdrücke kein Wert vom Typ Variant ist.

Fall	Ergebnis
Beide Ausdrücke haben einen numerischen Datentyp (Byte, Boolean, Integer, Long, Single, Double, Date, Currency oder Decimal).	Numerischer Vergleich
Beide Ausdrücke sind Werte vom Typ String.	Zeichenfolgenvergleich.
Ein Ausdruck hat einen numerischen Datentyp, der andere hat den Typ Variant, der eine Zahl darstellt (oder darstellen kann).	Numerischer Vergleich
Ein Ausdruck hat einen numerischen Datentyp, der andere hat eine Variant-Zeichenfolge, die nicht in eine Zahl umgewandelt werden kann.	Es wird folgende Fehlermeldung angezeigt: Datentypen unverträglich.
Ein Ausdruck hat den Typ String, der andere ist ein beliebiger Variant (außer Null).	Zeichenfolgenvergleich
Ein Ausdruck hat den Wert Empty, der andere ist ein numerischer Datentyp.	Numerischer Vergleich, wobei 0 für den Empty-Ausdruck verwendet wird.
Ein Ausdruck hat den Wert Empty, der andere ist vom Typ String.	Zeichenfolgenvergleich, wobei eine Null-Zeichenfolge ("") für den Empty-Ausdruck verwendet wird.
Sind sowohl Ausdruck1 und auch Ausdruck2 Ausdrücke vom Typ Variant, so wird der Vergleichsmodus durch den jeweiligen Untertyp bestimmt. Die folgende Tabelle zeigt, wie die Ausdrücke verglichen werden bzw. welches Ergebnis bei den verschiedenen Kombinationen der jeweiligen Variant-Untertypen entsteht:

Fall	Ergebnis
Beide Variant-Ausdrücke sind numerisch.	Numerischer Vergleich
Beide Variant-Ausdrücke sind Zeichenfolgen.	Zeichenfolgenvergleich
Ein Variant-Ausdruck ist numerisch, der andere ist eine Zeichenfolge.	Der numerische Ausdruck ist kleiner als der Zeichenfolgenausdruck.
Ein Variant-Ausdruck hat den Wert Empty, der andere ist numerisch.	Numerischer Vergleich, wobei 0 für den Empty-Ausdruck verwendet wird.
Ein Variant-Ausdruck hat den Wert Empty, der andere ist eine Zeichenfolge.	Zeichenfolgenvergleich, wobei eine Null-Zeichenfolge ("") für den Empty-Ausdruck verwendet wird.
Beide Variant-Ausdrücke haben den Wert Empty.	Die Ausdrücke sind gleich.
Beim Vergleich eines Werts vom Typ Single mit einem Wert vom Typ Double wird der letztere auf die Genauigkeit des Typs Single gerundet.

Wenn ein Wert vom Typ Currency mit einem Wert vom Typ Single oder Double verglichen wird, wird der Typ Single oder Double in den Typ Currency umgewandelt. Entsprechend wird, wenn ein Wert vom Typ Decimal mit einem Wert vom Typ Single oder Double verglichen wird, der Typ Single oder Double in den Typ Decimal umgewandelt. Bei einem Wert vom Typ Currency können unter Umständen Nachkommastellen, die kleiner als .0001 sind, verlorengehen, bei einem Wert vom Typ Decimal können Nachkommastellen, die kleiner als 1E-28 sind, verloren gehen, oder es kann ein Überlauffehler auftreten. Ein solcher Verlust der Nachkommastellen kann unter Umständen dazu führen, daß zwei Werte im Vergleich als gleich interpretiert werden, obwohl sie es nicht sind.


And (Operator)

Dient zum Durchführen einer logischen Konjunktion zwischen zwei Ausdrücken.

Syntax

Ergebnis = Ausdruck1 And Ausdruck2

Die Syntax des Operators And besteht aus folgenden Teilen:

Teil	Beschreibung
Ergebnis	Erforderlich. Eine beliebige numerische Variable.
Ausdruck1	Erforderlich. Ein beliebiger Ausdruck.
Ausdruck2	Erforderlich. Ein beliebiger Ausdruck.
Bemerkungen

Das Argument Ergebnis ist nur dann True, wenn beide Ausdrücke True sind. Sobald einer der beiden Ausdrücke False ist, ist Ergebnis ebenfalls False. Das jeweilige Ergebnis ist folgender Tabelle zu entnehmen:

Ausdruck1	Ausdruck2	Ergebnis
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
Der Operator And führt darüber hinaus einen bitweisen Vergleich gleich positionierter Bits in zwei numerischen Ausdrücken durch und legt das zugehörige Bit in Ergebnis gemäß der folgenden Tabelle fest:

Bit in Ausdruck1	Bit in Ausdruck2	Ergebnis
0	0	0
0	1	0
1	0	0
1	1	1


Eqv (Operator)

Dient zum Bestimmen einer logischen Äquivalenz zwischen zwei Ausdrücken.

Syntax

Ergebnis = Ausdruck1 Eqv Ausdruck2

Die Syntax des Operators Eqv besteht aus folgenden Teilen:

Teil	Beschreibung
Ergebnis	Erforderlich. Eine beliebige numerische Variable.
Ausdruck1	Erforderlich. Ein beliebiger Ausdruck.
Ausdruck2	Erforderlich. Ein beliebiger Ausdruck.
Bemerkungen

Hat einer der beiden Ausdrücke den Wert Null, so ist Ergebnis ebenfalls Null. Hat keiner der beiden Ausdrücke den Wert Null, so ergibt sich Ergebnis aus folgender Tabelle:

Ausdruck1	Ausdruck2	Ergebnis
True	True	True
True	False	False
False	True	False
False	False	True
Der Operator Eqv führt einen bitweisen Vergleich gleich positionierter Bits in zwei numerischen Ausdrücken durch und legt das zugehörige Bit in Ergebnis gemäß der folgenden Tabelle fest:

Bit in Ausdruck1	Bit in Ausdruck2	Ergebnis
0	0	1
0	1	0
1	0	0
1	1	1


Imp (Operator)

Dient zum Durchführen einer logischen Implikation zwischen zwei Ausdrücken.

Syntax

Ergebnis = Ausdruck1 Imp Ausdruck2

Die Syntax des Operators Imp besteht aus folgenden Teilen:

Teil	Beschreibung
Ergebnis	Erforderlich. Eine beliebige numerische Variable.
Ausdruck1	Erforderlich. Ein beliebiger Ausdruck.
Ausdruck2	Erforderlich. Ein beliebiger Ausdruck.
Bemerkungen

Das jeweilige Ergebnis ist folgender Tabelle zu entnehmen:

Ausdruck1	Ausdruck2	Ergebnis
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
Der Operator Imp führt einen bitweisen Vergleich gleich positionierter Bits in zwei numerischen Ausdrücken durch und legt das zugehörige Bit in Ergebnis gemäß der folgenden Tabelle fest:

Bit in Ausdruck1	Bit in Ausdruck2	Ergebnis
0	0	1
0	1	1
1	0	0
1	1	1


Not (Operator)

Führt eine logische Negation eines Ausdrucks durch.

Syntax

Ergebnis = Not Ausdruck

Die Syntax des Operators Not besteht aus folgenden Teilen:

Teil	Beschreibung
Ergebnis	Erforderlich. Eine beliebige numerische Variable.
Ausdruck	Erforderlich. Ein beliebiger Ausdruck.
Bemerkungen

Das jeweilige Ergebnis ist folgender Tabelle zu entnehmen:

Ausdruck	Ergebnis
True	False
False	True
Null	Null
Darüber hinaus invertiert der Operator Not die Bit-Werte einer beliebigen Variablen und legt das zugehörige Bit in Ergebnis gemäß der folgenden Tabelle fest:

Bit in Ausdruck	Bit in Ergebnis
0	1
1	0


Or (Operator)

Dient zum Durchführen einer logischen Disjunktion von zwei Ausdrücken.

Syntax

Ergebnis = Ausdruck1 Or Ausdruck2

Die Syntax des Operators Or besteht aus folgenden Teilen:

Teil	Beschreibung
Ergebnis	Erforderlich. Eine beliebige numerische Variable.
Ausdruck1	Erforderlich. Ein beliebiger Ausdruck.
Ausdruck2	Erforderlich. Ein beliebiger Ausdruck.
Bemerkungen

Sobald einer der beiden Ausdrücke True ist, ist Ergebnis ebenfalls True. Das jeweilige Ergebnis ist folgender Tabelle zu entnehmen:

Ausdruck1	Ausdruck2	Ergebnis
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
Der Operator Or führt darüber hinaus einen bitweisen Vergleich gleich positionierter Bits in zwei numerischen Ausdrücken durch und legt das zugehörige Bit in Ergebnis gemäß der folgenden Tabelle fest:

Bit in Ausdruck1	Bit in Ausdruck2	Ergebnis
0	0	0
0	1	1
1	0	1
1	1	1


Xor (Operator)

Dient zum Durchführen einer logischen Exklusion zwischen zwei Ausdrücken.

Syntax

[Ergebnis =] Ausdruck1 Xor Ausdruck2

Die Syntax des Operator Xor besteht aus folgenden Teilen:

Teil	Beschreibung
Ergebnis	Optional. Ein beliebige numerische Variable.
Ausdruck1	Erforderlich. Ein beliebiger Ausdruck.
Ausdruck2	Erforderlich. Ein beliebiger Ausdruck.
Bemerkungen

Wenn genau ein Ausdruck True ist, so ist Ergebnis ebenfalls True. Ist einer der beiden Ausdrücke allerdings Null, so ist Ergebnis ebenfalls Null. Ist keiner der Ausdrücke Null, so wird Ergebnis gemäß der folgenden Tabelle festgelegt:

Ausdruck1	Ausdruck2	Ergebnis
True	True	False
True	False	True
False	True	True
False	False	False
Der Operator Xor führt sowohl als logischer als auch als bitweiser Operator einen bitweisen Vergleich zweier Ausdrücke durch und verwendet dabei die Exklusives-ODER-Logik, um das Ergebnis, wie in der folgenden Tabelle dargestellt, zu bestimmen:

Bit in Ausdruck1	Bit in Ausdruck2	Ergebnis
0	0	0
0	1	1
1	0	1
1	1	0


Is (Operator)

Dient zum Vergleich zweier Variablen mit Verweisen auf Objekte.

Syntax

Ergebnis = Objekt1 Is Objekt2

Die Syntax des Operators Is besteht aus folgenden Teilen:

Teil	Beschreibung
Ergebnis	Erforderlich. Eine beliebige numerische Variable.
Objekt1	Erforderlich. Ein beliebiger Objektname.
Objekt2	Erforderlich. Ein beliebiger Objektname.
Bemerkungen

Wenn sowohl Objekt1 als auch Objekt2 auf dasselbe Objekt verweisen, ist Ergebnis True; andernfalls ist Ergebnis False. Zwei Variablen können auf unterschiedliche Weise auf dasselbe Objekt verweisen.

Im folgenden Beispiel verweist A nach der Zuweisung auf dasselbe Objekt wie B:

Set A = B

Nach den folgenden Zuweisungen verweisen A und B auf dasselbe Objekt wie C:

Set A = C

Set B = C


Like (Operator)

Dient zum Vergleichen zweier Zeichenfolgen.

Syntax

Ergebnis = Zeichenfolge Like Muster

Die Syntax des Operators Like besteht aus folgenden Teilen:

Teil	Beschreibung
Ergebnis	Erforderlich. Eine beliebige numerische Variable.
Zeichenfolge	Erforderlich. Ein beliebiger Zeichenfolgenausdruck.
Muster	Erforderlich. Ein beliebiger Zeichenfolgenausdruck mit einem gültigen Vergleichsmuster (wie unter Bemerkungen beschrieben).
Bemerkungen

Wenn Zeichenfolge und Muster übereinstimmen, ist Ergebnis True. Bei fehlender Übereinstimmung ist Ergebnis False. Hat entweder Zeichenfolge oder Muster den Wert Null, so ist Ergebnis ebenfalls Null.

Das Verhalten des Operators Like hängt von der Option Compare-Anweisung ab. Die Standardmethode für den Zeichenfolgenvergleich in allen Modulen ist Option Compare Binary.

Bei Option Compare Binary basieren Zeichenfolgenvergleiche auf einer Sortierreihenfolge, die durch die interne binäre Darstellung der Zeichen festgelegt ist. Die Sortierreihenfolge wird durch die Code-Seite festgelegt. Das folgende Beispiel zeigt eine typische binäre Sortierreihenfolge:

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

Option Compare Text führt zu Zeichenfolgenvergleichen, die die im Gebietsschema des Systems gewählte Sortierreihenfolge für Zeichen verwenden (wobei keine Unterschiede in der Groß- und Kleinschreibung berücksichtigt werden). Die oben dargestellten Zeichen würden beim Sortieren mit Option Compare Text folgende Reihenfolge erhalten:

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

Der integrierte Mustervergleich stellt ein vielseitiges Hilfsmittel für Zeichenfolgenvergleiche dar. Mit den Mustervergleichsfunktionen können Sie Platzhalterzeichen, Zeichenlisten oder Zeichenbereiche in einer beliebigen Kombination verwenden, um Zeichenfolgen zu vergleichen. Welche Platzhalterzeichen für Muster verwendet werden können und wofür diese jeweils stehen, ist der folgenden Tabelle zu entnehmen:

Zeichen in Muster	Steht in Zeichenfolge für
?	Ein beliebiges einzelnes Zeichen.
*	Kein oder mehrere Zeichen.
#	Eine beliebige einzelne Ziffer (0 - 9).
[ZeichenListe]	Ein beliebiges einzelnes Zeichen in ZeichenListe.
[!ZeichenListe]	Ein beliebiges einzelnes Zeichen, das nicht in ZeichenListe enthalten ist.
Eine in eckige Klammern ([ ]) gesetzte Gruppe mit einem oder mehreren Zeichen (ZeichenListe) kann zum Vergleich für jedes beliebige Zeichen in Zeichenfolge verwendet werden und kann nahezu alle Zeichen-Codes (auch Ziffern) enthalten.

Anmerkung   Die Sonderzeichen linke Klammer ([), Fragezeichen (?), das Zeichen # und das Sternchen (*) müssen in eckige Klammern gesetzt werden, um für einen Vergleich herangezogen werden zu können. Die rechte eckige Klammer (]) kann nicht innerhalb einer Gruppe zu vergleichender Zeichen verwendet werden. Sie kann jedoch außerhalb einer Gruppe als einzelnes Zeichen angegeben werden.

Sie können in ZeichenListe auch einen Bereich von Zeichen angeben, indem Sie den größten und den kleinsten Wert des Bereichs getrennt durch einen Bindestrich (-) angeben. [A-Z] führt zum Beispiel zu einer Übereinstimmung, wenn die entsprechende Zeichenposition in Zeichenfolge einen Großbuchstaben im Bereich von A bis Z enthält. Mehrere Bereiche können Sie ohne weitere Trennzeichen nacheinander in einem Klammernpaar angeben.

Die Bedeutung des angegebenen Bereichs hängt von der zur Laufzeit geltenden Zeichenreihenfolge ab (die durch Option Compare und das Gebietsschema auf dem ausführenden System festgelegt wird). Im beschriebenen Beispiel für Option Compare Binary [A-E] ist A, B und E im Bereich [A–E] enthalten. Bei Option Compare Text] sind die Zeichen A, a, À, à, B, b, E, e im Bereich [A–E] enthalten. Ê oder ê sind nicht enthalten, weil Zeichen mit einem Akzent in der Sortierreihenfolge hinter den entsprechenden Zeichen ohne Akzent liegen.

Nachfolgend weitere wichtige Regeln zum Mustervergleich:

•	Ein Ausrufezeichen (!) am Anfang von ZeichenListe bedeutet, daß sich eine Übereinstimmung ergibt, wenn in Zeichenfolge ein beliebiges Zeichen außer den Zeichen in ZeichenListe gefunden wird. Wird das Ausrufezeichen außerhalb der eckigen Klammern verwendet, so dient es als Platzhalterzeichen für sich selbst.

•	Ein Bindestrich (-) kann entweder am Anfang (nach einem Ausrufezeichen, sofern vorhanden) oder am Ende von ZeichenListe erscheinen, um als Platzhalterzeichen für sich selbst zu dienen. In jeder anderen Position dient der Bindestrich zur Kennzeichnung eines Zeichenbereichs.

•	Wenn ein Zeichenbereich festgelegt wird, müssen die Zeichen in aufsteigender Sortierreihenfolge (vom niedrigsten zum höchsten) angegeben werden. [A-Z] ist demnach ein zulässiges Muster, [Z-A] dagegen nicht.

•	Die Zeichenfolge [] wird als Null-Zeichenfolge ("") interpretiert.

In einigen Sprachen gibt es bestimmte Zeichen im Alphabet, die eigentlich zwei separate Zeichen darstellen. In verschiedenen Sprachen wird zum Beispiel das Zeichen "æ" verwendet, um die Zeichen "a" und "e" darzustellen, wenn Sie nebeneinander erscheinen. Der Operator Like erkennt, daß das einzelne Sonderzeichen und die beiden einzelnen Zeichen gleichwertig sind.

Wenn eine Sprache, in der eines dieser Sonderzeichen verwendet wird, in den Ländereinstellungen des Systems angegeben ist, wird eine Übereinstimmung des einzelnen Sonderzeichens entweder in Muster oder in Zeichenfolge mit der entsprechenden Folge aus zwei Zeichen in der anderen Zeichenfolge erkannt. Genauso wird eine Übereinstimmung zwischen einem einzelnen Sonderzeichen in Muster, das in eckige Klammern eingeschlossen ist (als einzelnes Zeichen, in einer Liste oder in einem Bereich), und der entsprechenden Folge aus zwei Zeichen in Zeichenfolge erkannt.


Count-Eigenschaft (Beispiel)

In diesem Beispiel wird die Count-Eigenschaft des Collection-Objekts verwendet, um anzugeben, wie viele Durchläufe erforderlich sind, um alle Elemente der Auflistung Klassen1 zu entfernen. Wenn Auflistungen numerisch indiziert werden, ist die Basis standardmäßig 1. Da Auflistungen automatisch neu indiziert werden, wenn ein Löschvorgang durchgeführt wurde, wird durch den folgenden Code in jedem Durchlauf das erste Element entfernt.

Dim Num, Klassen1

For Num = 1 To Klassen1.Count ' Entfernen des Namens aus der Auflistung.

Klassen1.Remove 1	' Standardauflistung, numerische Indizes

Next	' bei 1 beginnen.


Description-Eigenschaft (Beispiel)

In diesem Beispiel wird der Description-Eigenschaft des Err-Objekts eine benutzerdefinierte Meldung zugewiesen.

Err.Description = "Es war nicht möglich, auf ein für diese Operation notwendiges " _

& "Objekt zuzugreifen."


HelpContext-Eigenschaft (Beispiel)

In diesem Beispiel wird die HelpContext-Eigenschaft des Err-Objekts verwendet, um das Visual Basic-Hilfethema für den Fehler Überlauf anzuzeigen.

Dim Mldg

Err.Clear

On Error Resume Next

Err.Raise 6 ' Auslösen des Fehlers "Überlauf".

If Err.Number <> 0 Then

Mldg = "Drücken Sie F1 oder HILFE, oder klicken Sie auf 'Hilfe', " & _

"um das Hilfethema " & Err.HelpFile & " für den " & _

" Hilfekontext " & Err.HelpContext & " anzuzeigen."

MsgBox Mldg, , "Fehler: " & Err.Description, Err.HelpFile, _

Err.HelpContext

End If


HelpFile-Eigenschaft (Beispiel)

In diesem Beispiel wird die HelpFile-Eigenschaft des Err-Objekts verwendet, um das Hilfesystem zu starten. Standardmäßig enthält die HelpFile-Eigenschaft den Namen der Visual Basic-Hilfedatei.

Dim Mldg

Err.Clear

On Error Resume Next	' Fehler zu Demonstrationszwecken unterdrücken.

Err.Raise 6	' Auslösen des Fehlers "Überlauf".

Mldg = " Drücken Sie F1 oder HILFE oder klicken Sie auf Hilfe, um das Hilfethema " & Err.HelpFile & " für diesen Fehler anzuzeigen"

MsgBox Mldg, , "Fehler: " & Err.Description,Err.HelpFile, Err.HelpContext


LastDLLError-Eigenschaft (Beispiel)

Der folgende Code versucht, eine DLL-Funktion aufzurufen, wenn er in ein UserForm-Modul eingefügt wird. Der Aufruf schlägt fehl, da das übergebene Argument (ein Nullzeiger) einen Fehler auslöst; SQL kann nicht abgebrochen werden, wenn es nicht ausgeführt wird. Der Code, der dem Aufruf folgt, überprüft, ob der Aufruf zurückgegeben wurde, und gibt anschließend die LastDLLError-Eigenschaft des Err-Objekts aus, um den Fehler-Code anzuzeigen. Auf Systemen ohne DLLs gibt LastDLLError immer den Wert Null zurück.

 Private Declare Function SQLCancel Lib "ODBC32.dll" _

 (ByVal hstmt As Long) As Integer

Private Sub UserForm_Click()

Dim RückWert

' Aufruf mit einem ungültigen Argument.

RückWert = SQLCancel(TestHandle1&)

' Prüfen auf SQL-Fehler-Code.

If RückWert = -2 Then

' Anzeigen des Informations-Codes.

MsgBox "Der Fehler-Code lautet:" & Err.LastDllError

  End If

End Sub


Number-Eigenschaft (Beispiel)

Im ersten Beispiel wird die typische Verwendung der Number-Eigenschaft in einer Fehlerbehandlungsroutine dargestellt. Im zweiten Beispiel wird die Number-Eigenschaft des Err-Objekts untersucht, um zu bestimmen, ob ein Fehler, der von einem Automatisierungsobjekt zurückgegeben wurde, durch das Objekt definiert wurde oder ob der Fehler einem Fehler zugeordnet wurde, der von Visual Basic definiert wurde. Beachten Sie, daß die Konstante vbObjectError eine sehr große negative Zahl ist, die von einem Objekt zum zugehörigen Fehler-Code addiert wird, um anzugeben, daß der Fehler durch den Server definiert ist. Die Konstante wird deshalb durch Subtraktion von Err.Number aus dem Ergebnis ausgeschlossen. Wenn der Fehler objektdefiniert ist, ist die Basiszahl in Fehler1 gespeichert, der in einem Meldungsfeld zusätzlich zum Ursprung des Fehlers angezeigt wird. Wenn Err.Number einen Visual Basic-Fehler darstellt, wird die Visual Basic-Fehlernummer in dem Meldungsfeld angezeigt.

' Typische Verwendung der Number-Eigenschaft

Sub test()

On Error GoTo out

Dim x, y

x = 1 / y	' Erzeugen eines Fehlers "Division durch Null"

Exit Sub

out:

MsgBox Err.Number

MsgBox Err.Description

' Prüfen auf den Fehler "Division durch Null"

If Err.Number = 11 Then

y = y + 1

End If

Resume

End Sub

' Verwenden der Number-Eigenschaft mit einem Fehler von

' einem Automatisierungsobjekt

Dim Fehler1, Mldg

' Zuerst Konstante abziehen, die von dem

' Objekt addiert wurde, um einen dem Objekt zugehörigen Fehler

' anzugeben.

Fehler1 = Err.Number - vbObjectError

' Wenn Sie die vbObjectError-Konstante subtrahieren und

' die Nummer liegt immer noch im Bereich von 0-65.535,

' handelt es sich um einen objektdefinierten Fehler-

' Code.

If Fehler1 > 0 And Fehler1 < 65535 Then

Mldg = "Das Objekt, auf das Sie zugegriffen haben, hat diese " & _

"Nummer dem folgenden Fehler zugewiesen: " _

 	& Fehler & ". Der Ursprung des Fehlers war: " _

& Err.Source & ". Drücken Sie F1, um das Hilfethema des Ursprungs anzuzeigen."

' Andernfalls handelt es sich um eine Visual Basic-Fehlernummer.

Else

Mldg = "Dieser Fehler (" & Err.Number & ") ist eine Visual Basic-Fehlernummer." & _

"Drücken Sie F1 oder HILFE, oder klicken Sie auf die Hilfe-Schaltfläche, " _

& "um das Visual Basic-Hilfethema für diesen Fehler anzuzeigen."

End If

MsgBox Mldg, , "Objektfehler", Err.HelpFile, Err.HelpContext


Source-Eigenschaft (Beispiel)

In diesem Beispiel wird die Ressource-ID eines Automatisierungsobjekts, das in Visual Basic erstellt wurde, der Variablen Objekt1ID zugewiesen. Anschließend wird diese der Source-Eigenschaft des Err-Objekts zugewiesen, wenn durch dieses mit der Raise-Methode ein Fehler erzeugt wurde. Bei der Behandlung von Fehlern sollten Sie die Source-Eigenschaft (oder andere Err-Eigenschaften, sofern es sich nicht um Number handelt) nicht im Programm verwenden. Diese Eigenschaften sind nur in Fällen zulässig, in denen Sie einen Fehler nicht behandeln können und dem Endbenutzer umfangreiche Informationen zur Verfügung stellen möchten. In dem Beispiel wird davon ausgegangen, daß es sich bei App und Klasse1 um gültige Verweise handelt.

Dim Klasse1, Objekt1ID, HilfeDatei1, HilfeKontext1

' Ein Objekt vom Typ Klasse1 erzeugt einen Fehler und

' trägt Werte in alle Err-Objekt-Eigenschaften ein,

' einschließlich Source, welches Objekt1ID erhält.

' ObjektID ist eine Kombination der Title-Eigenschaft

' des App-Objekts und der Name-Eigenschaft des

' Klasse1-Objekts.

Objekt1ID = App.Title & "." & Klasse1.Name

Err.Raise	Number := vbObjectError + 894, Source := ObjektID, _

Description := "Vorgang konnte nicht beendet werden", _

HelpFile := HilfeDatei1, HelpContext := HilfeKontext1


Calendar-Eigenschaft

Gibt einen Wert zurück, der den mit Ihrem Projekt zu verwendenden Kalendertyp festlegt, oder legt ihn fest.

Sie können eine von zwei Einstellungen für Calendar verwenden:

Einstellung	Wert	Beschreibung
vbCalGreg	0	Gregorianischen Kalendar verwenden (Standardeinstellung).
vbCalHijri	1	Hijri-Kalendar verwenden.
Bemerkungen

Die Calendar-Eigenschaft kann nur programmgesteuert eingestellt werden. Um z. B. den Hijri-Kalendar zu verwenden, müssen Sie folgendes schreiben:

Calendar = vbCalHijri


Count-Eigenschaft

Gibt eine Ganzzahl vom Typ Long zurück, die die Anzahl der Objekte in einer Auflistung enthält. Schreibgeschützt.


Description-Eigenschaft

Gibt einen Zeichenfolgenausdruck zurück oder legt ihn fest. Dieser enthält eine beschreibende Zeichenfolge, die mit einem Objekt verbunden ist. Lese-/Schreibzugriff.

Für das Err-Objekt wird eine Zeichenfolge mit einer Beschreibung für einen Fehler zurückgegeben oder die Zeichenfolge festgelegt.

Bemerkungen

Die Einstellung für die Description-Eigenschaft enthält eine kurze Beschreibung des Fehlers. Mit dieser Eigenschaft können Sie für Benutzer eine Warnmeldung zu einem Fehler ausgeben, den sie nicht verarbeiten können oder wollen. Wenn Sie einen benutzerdefinierten Fehler auslösen, können Sie der Description-Eigenschaft eine kurze Beschreibung des Fehlers zuweisen. Wenn Description keine Zeichenfolge enthält und der Wert von Number einem Visual Basic-Laufzeitfehler entspricht, wird die von der Error-Funktion zurückgegebene Zeichenfolge in Description abgelegt, wenn der Fehler ausgelöst wird.


HelpContext-Eigenschaft

Gibt eine Zeichenfolgenausdruck zurück oder legt ihn fest, der die Kontextkennung für ein Thema in einer Microsoft Windows-Hilfedatei enthält. Lese-/Schreibzugriff.

Bemerkungen

Die HelpContext-Eigenschaft wird verwendet, um automatisch das Hilfethema anzuzeigen, das in der HelpFile-Eigenschaft angegeben ist. Wenn sowohl HelpFile als auch HelpContext keinen Wert enthalten, wird der Wert von Number überprüft. Wenn der Wert von Number dem Wert eines Visual Basic-Laufzeitfehlers entspricht, wird die Kontextkennung der Visual Basic-Hilfe für diesen Fehler verwendet. Wenn der Wert von Number keinem Visual Basic-Fehler entspricht, wird die Inhaltsübersicht für die Visual Basic-Hilfedatei angezeigt.

Anmerkung   Sie sollten in Ihrer Anwendung Routinen schreiben, die typische Fehler verarbeiten. Bei der Programmierung eines Objekts können Sie die Hilfedatei des Objekts verwenden, um die Fehlerbehandlung zu verbessern oder dem Benutzer eine hilfreiche Meldung anzuzeigen, wenn die Fehlerursache nicht behoben werden kann.


HelpFile-Eigenschaft

Gibt einen Zeichenfolgenausdruck zurück oder legt ihn fest, der einen vollständigen Pfad zu einer Microsoft Windows-Hilfedatei enthält. Lese-/Schreibzugriff.

Bemerkungen

Wenn eine Microsoft Windows-Hilfedatei in HelpFile angegeben ist, wird sie automatisch aufgerufen, wenn der Benutzer im Dialogfeld mit der Fehlermeldung die Schaltfläche Hilfe wählt (oder die F1-Taste  in Windows oder die HILFE-TASTE auf dem Macintosh drückt). Wenn die HelpContext-Eigenschaft eine gültige Kontextkennung für die angegebene Datei enthält, wird das entsprechende Thema automatisch angezeigt. Wenn HelpFile nicht angegeben wird, wird die Visual Basic-Hilfedatei angezeigt.

Anmerkung   Sie sollten in Ihrer Anwendung Routinen schreiben, die typische Fehler verarbeiten. Bei der Programmierung eines Objekts können Sie die Hilfedatei des Objekts verwenden, um die Fehlerbehandlung zu verbessern oder dem Benutzer eine hilfreiche Meldung anzuzeigen, wenn die Fehlerursache nicht behoben werden kann.


LastDLLError-Eigenschaft

Gibt einen Systemfehler-Code zurück, der von einem Aufruf an eine Dynamic Link Library (DLL) erzeugt wurde. Schreibgeschützt. Auf dem Macintosh gibt LastDLLError immer Null zurück.

Bemerkungen

Die LastDLLError-Eigenschaft betrifft nur von Visual Basic-Code ausgeführte DLL-Aufrufe. Bei einem solchen Aufruf gibt die aufgerufene Funktion normalerweise einen Wert zurück, der einen erfolgreichen Versuch oder einen Fehlschlag anzeigt, und die LastDLLError-Eigenschaft wird gesetzt. In der Dokumentation zu den DLL-Funktionen können Sie erfahren, welche Rückgabewerte Erfolg oder Fehlschlag anzeigen. Sobald ein Wert zurückgegeben wird, der einen Fehlschlag signalisiert, sollte die Visual Basic-Anwendung sofort die LastDLLError-Eigenschaft überprüfen. Es tritt keine Ausnahme (Exception) auf, wenn die LastDLLError-Eigenschaft gesetzt wird.


Number-Eigenschaft

Gibt einen numerischen Wert zurück oder legt einen numerischen Wert fest, der einen Fehler angibt. Number ist die Standardeigenschaft des Err-Objekts. Lese-/Schreibzugriff.

Bemerkungen

Beim Zurückgeben eines benutzerdefinierten Fehlers von einem Objekt legen Sie Err.Number fest, indem Sie die Zahl, die Sie als Fehler-Code gewählt haben, zur Konstanten vbObjectError addieren. Verwenden Sie zum Beispiel den folgenden Code, um die Zahl 1051 als Fehler-Code zurückzugeben:

Err.Raise Number := vbObjectError + 1051, Source:= "EineKlasse"


Source-Eigenschaft

Gibt einen Zeichenfolgenausdruck zurück oder legt ihn fest, der den Namen des Objekts oder der Anwendung angibt, das/die ursprünglich den Fehler ausgelöst hat. Lese-/Schreibzugriff.

Bemerkungen

Die Source-Eigenschaft gibt einen Zeichenfolgenausdruck an, der das Objekt darstellt, das den Fehler ursprünglich ausgelöst hat. Der Ausdruck ist normalerweise der Name der Klasse des Objekts oder die Ressource-ID. Mit Source stellen Sie den Benutzern Informationen zur Verfügung, wenn der Code den Fehler nicht verarbeiten kann, der in einem Objekt ausgelöst wurde, auf das der Code zugegriffen hat. Wenn Sie zum Beispiel auf Microsoft Excel zugreifen und der Fehler Division durch Null ausgelöst wird, setzt Microsoft Excel Err.Number auf den internen Fehler-Code für diesen Fehler und Source auf Excel.Application.

Wenn Sie einen Fehler aus dem Code auslösen, ist Source die Ressourcenkennzeichnung Ihrer Anwendung. Bei Klassenmodulen sollte Source einen Namen in der Form Projekt.Klasse enthalten. Wenn ein unerwarteter Fehler in Ihrem Code auftritt, wird die Source-Eigenschaft automatisch gesetzt. Bei Fehlern in einem Standardmodul enthält Source den Namen des Projekts. Bei Fehlern in einem Klassenmodul enthält Source einen Namen mit der Form Projekt.Klasse.


DeleteSetting-Anweisung (Beispiel)

In dem folgenden Beispiel wird zunächst die SaveSetting-Anweisung verwendet, um Einträge in der Windows-Registrierung (oder in der .INI-Datei auf 16-Bit Windows-Plattformen) für die Anwendung Anw1 vorzunehmen. Anschließend wird die DeleteSetting-Anweisung verwendet, um die Einträge zu entfernen. Da das Argument key nicht angegeben wird, wird der gesamte Abschnitt (mit Abschnittsnamen und allen Schlüsseln) gelöscht.

' Einträge in der Registrierung vornehmen.

SaveSetting(appname := "Anw1", section := "Startup", _

    key := "Top", setting := 75

SaveSetting "Anw1","Startup", "Left", 50

' Abschnitt und alle zugehörigen Einstellungen aus der

' Registrierung entfernen.

DeleteSetting "Anw1", "Startup"


GetAllSettings-Funktion (Beispiel)

In diesem Beispiel wird zunächst die SaveSetting-Anweisung verwendet, um Einträge in der Windows-Registrierung (oder in der .INI-Datei auf 16-Bit Windows-Plattformen) für die als appname angegebene Anwendung vorzunehmen. Anschließend wird die GetAllSettings-Funktion verwendet, um die Einstellungen anzuzeigen. Namen von Anwendungen und Abschnitten (section) können mit GetAllSettings nicht abgerufen werden. Abschließend entfernt die DeleteSetting-Anweisung alle Einträge der Anwendung.

' Variant für zweidimensionales Datenfeld, das von GetAllSettings

' zurückgegeben wird.

' Ganzzahl für den Zähler.

Dim Einstellungen As Variant, intSettings As Integer

' Einträge in der Registrierung vornehmen.

SaveSetting appname := "Anw1", section := "Startup", _

key := "Top", setting := 75

SaveSetting "Anw1","Startup", "Left", 50

' Einstellungen abrufen.

Einstellungen = GetAllSettings(appname := "Anw1", section := "Startup")

For intSettings = LBound(Einstellungen, 1) To UBound(Einstellungen, 1)

Debug.Print Einstellungen(intSettings, 0), Einstellungen(intSettings, 1)

Next intSettings

DeleteSetting "Anw1", "Startup"


GetSetting-Funktion (Beispiel)

In diesem Beispiel wird zunächst die SaveSetting-Anweisung verwendet, um Einträge in der Windows-Registrierung (oder in der .INI-Datei auf 16-Bit Windows-Plattformen) für die als appname angegebene Anwendung vorzunehmen. Anschließend wird die GetSetting-Funktion verwendet, um eine der Einstellungen anzuzeigen. Da das Argument default angegeben wird, wird auf jeden Fall ein Wert zurückgegeben. Namen von Abschnitten (section) können mit GetSetting nicht abgerufen werden. Abschließend entfernt die DeleteSetting-Anweisung alle Einträge der Anwendung.

' Variant für zweidimensionales Datenfeld, das von GetSetting.

' zurückgegeben wird.

Dim Einstellungen As Variant

' Einträge in der Registrierung vornehmen.

SaveSetting "Anw1","Startup", "Top", 75

SaveSetting "Anw1","Startup", "Left", 50

Debug.Print GetSetting(appname := "Anw1", section := "Startup", _

         key := "Left", default := "25")

DeleteSetting "Anw1", "Startup"


SaveSetting-Anweisung (Beispiel)

Im folgenden Beispiel wird zunächst die SaveSetting-Anweisung verwendet, um Einträge in der Windows-Registrierung (oder in der .INI-Datei auf 16-Bit Windows-Plattformen) für die Anwendung Anw1 vorzunehmen. Anschließend wird die DeleteSetting-Anweisung verwendet, um die Einträge zu entfernen.

' Einträge in der Registrierung vornehmen.

SaveSetting(appname := "Anw1", section := "Startup", _

    key := "Top", setting := 75)

SaveSetting "Anw1","Startup", "Left", 50

' Abschnitt und alle zugehörigen Einstellungen aus der

' Registrierung entfernen.

DeleteSetting "Anw1", "Startup"


DeleteSetting-Anweisung

Löscht einen Abschnitt oder eine Schlüsseleinstellung aus einem Eintrag einer Anwendung in der Windows-Registrierung oder, auf dem Macintosh, die entsprechenden Informationen in der Initialisierungsdatei der Anwendung.

Syntax

DeleteSetting appname, section[, key]

Die Syntax der DeleteSetting-Anweisung verwendet die folgenden benannten Argumente:

Teil	Beschreibung
appname	Erforderlich. Zeichenfolgenausdruck mit dem Namen der Anwendung oder des Projekts, auf die/das sich der Abschnitt oder die Schlüsseleinstellung bezieht. Auf dem Macintosh ist dies der Name der Initialisierungsdatei im Ordner Preferences aus dem Systemordner.
section	Erforderlich. Zeichenfolgenausdruck mit dem Namen des Abschnitts, in dem die Schlüsseleinstellung gelöscht wird. Wenn nur appname und section angegeben werden, wird der angegebene Abschnitt zusammen mit allen dazugehörigen Schlüsseleinstellungen gelöscht.
key	Optional. Zeichenfolgenausdruck mit dem Namen der Schlüsseleinstellung, die gelöscht wird.
Bemerkungen

Wenn alle Argumente angegeben werden, wird die angegebene Schlüsseleinstellung gelöscht. Ein Laufzeitfehler tritt auf, wenn Sie versuchen, die DeleteSetting-Anweisung auf einem nicht vorhandenen Abschnitt oder einer nicht vorhandenen Schlüsseleinstellung anzuwenden.


GetAllSettings-Funktion

Gibt eine Liste von Schlüsseleinstellungen zusammen mit den zugehörigen Werten (die ursprünglich mit SaveSetting erstellt wurden) für den Eintrag einer Anwendung in der Windows-Registrierung oder, auf dem Macintosh, die entsprechenden Informationen aus der Initialisierungsdatei der Anwendung zurück.

Syntax

GetAllSettings(appname, section)

Die Syntax der GetAllSettings-Funktion verwendet die folgenden benannten Argumente:

Teil	Beschreibung
appname	Erforderlich. Zeichenfolgenausdruck mit dem Namen der Anwendung oder des Projekts, deren/dessen Schlüsseleinstellungen angefordert werden. Auf dem Macintosh ist dies der Name der Initialisierungsdatei im Ordner Preferences aus dem Systemordner.
section	Erforderlich. Zeichenfolgenausdruck mit dem Namen des Abschnitts, dessen Schlüsseleinstellungen angefordert werden. GetAllSettings gibt einen Wert vom Typ Variant zurück, der aus einem zweidimensionalen Datenfeld von Zeichenfolgen besteht, in denen alle Schlüsseleinstellungen des angegebenen Abschnitts und die zugehörigen Werte enthalten sind.
Bemerkungen

GetAllSettings gibt einen nichtinitialisierten Variant-Wert zurück, wenn entweder appname oder section nicht angegeben werden.


GetSetting-Funktion

Gibt einen Wert einer Schlüsseleinstellung aus dem Eintrag einer Anwendung in der Windows-Registrierung oder, auf dem Macintosh, die entsprechenden Informationen aus der Initialisierungsdatei der Anwendung zurück.

Syntax

GetSetting(appname, section, key[, default])

Die Syntax der GetSetting-Funktion verwendet die folgenden benannten Argumente:

Teil	Beschreibung
appname	Erforderlich. Zeichenfolgenausdruck mit dem Namen der Anwendung oder des Projekts, deren/dessen Schlüsseleinstellung angefordert wird. Auf dem Macintosh ist dies der Name der Initialisierungsdatei im Ordner Preferences aus dem Systemordner.
section	Erforderlich. Zeichenfolgenausdruck mit dem Namen des Abschnitts, in dem die Schlüsseleinstellung gefunden wurde.
key	Erforderlich. Zeichenfolgenausdruck mit dem Namen der zurückzugebenden Schlüsseleinstellung.
default	Optional. Ausdruck mit dem Wert, der zurückgegeben werden soll, wenn kein Wert in der Schlüsseleinstellung festgelegt ist. Erfolgt keine Angabe, so wird für default eine Zeichenfolge der Länge Null ("") angenommen.
Bemerkungen

Wenn eines der in den GetSetting-Argumenten angegebenen Elemente nicht existiert, gibt GetSetting den Wert von default zurück.


SaveSetting-Anweisung

Speichert oder erstellt einen Eintrag einer Anwendung in der Windows-Registrierung oder, auf dem Macintosh, die entsprechenden Informationen in der Initialisierungsdatei der Anwendung.

Syntax

SaveSetting appname, section, key, setting

Die Syntax der SaveSetting-Anweisung verwendet die folgenden benannten Argumente:

Teil	Beschreibung
appname	Erforderlich. Zeichenfolge mit dem Namen der Anwendung oder des Projekts, auf die/das sich die Einstellung bezieht. Auf dem Macintosh ist dies der Name der Initialisierungsdatei im Ordner Preferences aus dem Systemordner.
section	Erforderlich. Zeichenfolge mit dem Namen des Abschnitts, in dem die Schlüsseleinstellung gespeichert wird.
key	Erforderlich. Zeichenfolge mit dem Namen der gespeicherten Schlüsseleinstellung.
setting	Erforderlich. Ausdruck mit dem Wert, auf den key gesetzt wird.
Bemerkungen

Wenn die Schlüsseleinstellung aus irgendeinem Grund nicht gespeichert werden konnte, tritt ein Fehler auf.


Chr-Funktion (Beispiel)

In diesem Beispiel wird die Chr-Funktion verwendet, um das Zeichen zum angegebenen Zeichencode zurückzugeben.

Dim Zeichen1

Zeichen1 = Chr(65)	' Liefert A.

Zeichen1 = Chr(97)	' Liefert a.

Zeichen1 = Chr(62)	' Liefert >.

Zeichen1 = Chr(37)	' Liefert %.


Format-Funktion (Beispiel)

In diesem Beispiel werden verschiedene Einsatzmöglichkeiten der Format-Funktion zur Formatierung von Werten unter Verwendung von integrierten und benutzerdefinierten Formaten dargestellt. Die tatsächliche Ausgabe bei der Verwendung des Datum-Trennzeichens (/), Zeit-Trennzeichens (:) und der AM-/PM-Zeichenfolge hängt von dem aktuellen Gebietsschema Ihres Systems ab. Wenn Datums- oder Zeitangaben in der Entwicklungsumgebung gemacht werden, dann wird das kurze Datums- oder Zeitformat des Code-Gebietsschemas verwendet. Werden diese Angaben zur Laufzeit dargestellt, wird das kurze Datums- oder Zeitformat des System-Gebietsschemas verwendet. Dieses kann sich von dem Code-Gebietsschema unterscheiden. Hier wird "Deutschland" und "Deutsch" angenommen.

Zeit1 und Datum1 werden in der Entwicklungsumgebung mit den aktuellen Systemeinstellungen für das kurze Datums- und Zeitformat angezeigt.

Dim Zeit1, Datum1, ZF1

Zeit1 = #17:04:23#

Datum1 = #January 27, 1993#

' Aktuelle Systemzeit im langen Zeitformat des Systems bestimmen.

ZF1 = Format(Time, "Long Time")

' Aktuelles Systemdatum im langen Datumsformat des Systems bestimmen.

ZF1 = Format(Date, "Long Date")

ZF1 = Format(Zeit1, "h:m:s")	' Liefert "17:4:23".

ZF1 = Format(Zeit1, "hh:mm:ss AMPM")	' Liefert "17:04:23".

ZF1 = Format(Datum1, "dddd, mmm d yyyy")	' Liefert "Mittwoch,

' 27. Januar 1993".

' Wird kein Format angegeben, so wird eine Zeichenfolge geliefert.

ZF1 = Format(23)	' Liefert "23".

' Benutzerdefinierte Formate.

ZF1 = Format(5459.4, "##,##0.00")	' Liefert "5.459,40".

ZF1 = Format(334.9, "###0.00")	' Liefert "334,90".

ZF1 = Format(5, "0.00%")	' Liefert "500,00%".

ZF1 = Format("BANANE", "<")	' Liefert "banane".

ZF1 = Format("birne", ">")	' Liefert "BIRNE".


Hex-Funktion (Beispiel)

In diesem Beispiel wird die Hex-Funktion verwendet, um den hexadezimalen Wert einer Zahl zurückzugeben.

Dim Hex1

Hex1 = Hex(5)	' Liefert 5.

Hex1 = Hex(10)	' Liefert A.

Hex1 = Hex(459)	' Liefert 1CB.


InStr-Funktion (Beispiel)

In diesem Beispiel wird die InStr-Funktion verwendet, um die Position des ersten Auftretens einer Zeichenfolge innerhalb einer anderen Zeichenfolge zurückzugeben.

Dim SuchText, SuchZeichen, Pos1

Suchtext ="XXpXXpXXPXXP"	' Zu durchsuchende

' Zeichenfolge.

SuchZeichen = "P"	' Nach "P" suchen.

' Reiner Textvergleich ab Position 4. Das Ergebnis ist 6.

Pos1 = Instr(4, Suchtext, SuchZeichen, 1)

' Binärer Vergleich ab Position 1. Das Ergebnis ist 9.

Pos1 = Instr(1, Suchtext, SuchZeichen, 0)

' Standardmäßig wird der Vergleich binär durchgeführt

' (wenn das letzte Argument nicht angegeben wird).

Pos1 = Instr(Suchtext, SuchZeichen)	' Liefert 9.

Pos1 = Instr(1, Suchtext, "W")	' Liefert 0.


LCase-Funktion (Beispiel)

In diesem Beispiel wird die LCase-Funktion verwendet, um die Buchstaben einer Zeichenfolge in Kleinbuchstaben umzuwandeln.

Dim Groß, Klein

Groß = "Die Antwort ist 42"	' Umzuwandelnde Zeichenfolge.

Klein = Lcase(Groß)	' Liefert "die antwort ist 42".


Left-Funktion (Beispiel)

In diesem Beispiel wird die Left-Funktion verwendet, um eine bestimmte Anzahl von Zeichen von der linken Seite einer Zeichenfolge zurückzugeben.

Dim EinText, ZF1

EinText = "Hallo Welt"	' Zeichenfolge definieren.

ZF1 = Left(EinText, 1)	' Liefert "H".

ZF1 = Left(EinText, 7)	' Liefert "Hallo W".

ZF1 = Left(EinText, 20)	' Liefert "Hallo Welt".


Len-Funktion (Beispiel)

In dem ersten Beispiel wird Len verwendet, um die Anzahl der Zeichen in einer Zeichenfolge oder die zum Speichern einer Variablen erforderlichen Bytes zurückzugeben. Dem Type...End Type-Block, der "Kundensatz" definiert, muß das Schlüsselwort Private vorangestellt sein, wenn es sich in einem Klassenmodul befindet. In einem Standardmodul kann eine Type-Anweisung das Attribut Public haben.

Type Kundensatz	' Benutzerdefinierten Typ

ID As Integer	' definieren und Definition in

Name As String * 10	' Standardmodul ablegen.

Adresse As String * 30

End Type

Dim Kunde As Kundensatz	' Variablen deklarieren.

Dim Int1 As Integer, Cur1 As Currency

Dim Text1, Länge1

Text1 = "Hallo Welt"	' Variable initialisieren.

Länge1 = Len(Int1)	' Liefert 2.

Länge1 = Len(Kunde)	' Liefert 42.

Länge1 = Len(Text1)	' Liefert 11.

Länge1 = Len(Cur1)	' Liefert 8.

Im zweiten Beispiel wird LenB und eine benutzerdefinierte Funktion (LenMbcs) verwendet, um die Anzahl der Byte-Zeichen in einer Zeichenfolge zurückzugeben, wenn ANSI zur Darstellung der Zeichenfolge verwendet wird.

Function LenMbcs (ByVal str as String)

LenMbcs = LenB(StrConv(str, vbFromUnicode))

End Function

Dim MyString, MyLen

MyString = "ABc"

' Wobei "A" und "B" DBCS sind und "c" SBCS ist.

MyLen = Len(MyString)

' Gibt 3 zurück - 3 Zeichen in der Zeichenfolge.

MyLen = LenB(MyString)

' Gibt 6 zurück - 6 Bytes für Unicode verwendet.

MyLen = LenMbcs(MyString)

' Gibt 5 zurück - 5 Bytes für ANSI verwendet.


LSet-Anweisung (Beispiel)

In diesem Beispiel wird die LSet-Anweisung verwendet, um eine Zeichenfolge innerhalb einer Zeichenfolgenvariablen links auszurichten. Mit der LSet-Anweisung können Sie auch eine Variable eines bestimmten benutzerdefinierten Datentyps in eine Variable eines anderen, jedoch kompatiblen, benutzerdefinierten Datentyps kopieren, dies wird jedoch nicht empfohlen. Aufgrund der verschiedenen Implementierungen von Datenstrukturen auf unterschiedlichen Plattformen kann bei einer solchen Verwendung von LSet keine Portabilität gewährleistet werden.

Dim Text1

Text1 = "0123456789"	' Zeichenfolge initialisieren.

Lset Text1 = "<-Links"	' Text1 enthält "<-Links ".


LTrim-, RTrim- und Trim-Funktionen (Beispiel)

In diesem Beispiel wird die LTrim-Funktion verwendet, um führende Leerzeichen aus einer Zeichenfolgenvariablen zu entfernen; die RTrim-Funktion wird verwendet, um nachgestellte Leerzeichen aus einer Zeichenfolgenvariablen zu entfernen. Die Trim-Funktion entfernt führende und nachgestellte Leerzeichen mit einem Funktionsaufruf.

Dim Text1, TrimText

Text1 = "  <-Kürze->  "	' Zeichenfolge initialisieren.

TrimText = LTrim(Text1)	' TrimText = "<-Kürze->  ".

TrimText = RTrim(Text1)	' TrimText = "  <-Kürze->".

TrimText = LTrim(RTrim(Text1))	' TrimText = "<-Kürze->".

' Die Trim-Funktion allein liefert dasselbe Ergebnis.

TrimText = Trim(Text1)	' TrimText = "<-Kürze->".


Mid-Funktion (Beispiel)

In dem ersten Beispiel wird die Mid-Funktion verwendet, um eine bestimmte Anzahl von Zeichen aus einer Zeichenfolge zu liefern.

Dim Text1, ErstesWort, LetztesWort, Mitte

Text1 = "Mid-Funktion Demo"	' Zeichenfolge erstellen.

ErstesWort = Mid(Text1, 1, 3)	' Liefert "Mid".

LetztesWort = Mid(Text1, 14, 4)	' Liefert "Demo".

Mitte = Mid(Text1, 5)	' Liefert "Funktion Demo".

Im zweiten Beispiel wird MidB und eine benutzerdefinierte Funktion (MidMbcs) verwendet, um ebenfalls Zeichen aus einer Zeichenfolge zu liefern. Der unterschied besteht darin, daß die Eingabezeichenfolge ANSI ist und die Länge in Byte angegeben wird.

Function MidMbcs(ByVal str as String, start, length)

MidMbcs = StrConv(MidB(StrConv(str, vbFromUnicode), start, length), vbUnicode)

End Function

Dim MyString

MyString = "AbCdEfG"

' Wobei "A", "C", "E" und "G" DBCS sind und "b", "d"

' und "f" SBCS sind.

MyNewString = Mid(MyString, 3, 4)

' Liefert ""CdEf"

MyNewString = MidB(MyString, 3, 4)

' Liefert ""bC"

MyNewString = MidMbcs(MyString, 3, 4)

' Liefert "bCd"


Mid-Anweisung (Beispiel)

In diesem Beispiel wird die Mid-Anweisung verwendet, um eine bestimmte Anzahl von Zeichen in einer Zeichenfolgenvariable mit Zeichen einer anderen Zeichenfolge zu ersetzen.

Dim Text1

Text1 = "Der Hahn springt"	' Zeichenfolge initialisieren.

Mid(Text1, 5, 4) = "Eber"	' Text1 = "Der Eber springt".

Mid(Text1, 5) = "Hund"	' Text1 = "Der Hund springt".

Mid(Text1, 5) = "Hahn sprang über"	' Text1 = "Der Hahn sprang ".

Mid(Text1, 5, 4) = "Maulwurf"	' Text1 = "Der Maul sprang ".


OctFunktion (Beispiel)

In diesem Beispiel wird die Oct-Funktion verwendet, um eine Zeichenfolge mit der Oktaldarstellung einer Zahl zurückzugeben.

Dim Okt1

Okt1 = Oct(4) 	' Liefert 4.

Okt1 = Oct(8)	' Liefert 10.

Okt1 = Oct(459)	' Liefert 713.


Right-Funktion (Beispiel)

In diesem Beispiel wird die Right-Funktion verwendet, um eine bestimmte Anzahl von Zeichen vom rechten Teil (dem Ende) einer Zeichenfolge zurückzugeben.

Dim EinText, ZF1

EinText = "Hallo Welt"	' Zeichenfolge definieren.

ZF1 = Right(EinText, 1)	' Liefert "t".

ZF1 = Right(EinText, 5)	' Liefert " Welt".

ZF1 = Right(EinText, 20)	' Liefert "Hallo Welt".


RSet-Anweisung (Beispiel)

In diesem Beispiel wird die RSet-Anweisung verwendet, um eine Zeichenfolge innerhalb einer Zeichenfolgenvariablen rechts auszurichten.

Dim Text1

Text1 = "0123456789"	' Zeichenfolge initialisieren.

RSet Text1 = "Rechts->"	' Text1 enthält "  Rechts->".


Space-Funktion (Beispiel)

In diesem Beispiel wird die Space-Funktion verwendet, um eine Zeichenfolge mit einer bestimmten Anzahl an Leerzeichen zurückzugeben.

Dim Text1

' Liefert eine Zeichenfolge mit 10 Leerzeichen.

Text1 = Space(10)

' Fügt 10 Leerzeichen zwischen zwei Zeichenfolgen ein.

Text1 = "Hallo" & Space(10) & "Welt"


Str-Funktion (Beispiel)

In diesem Beispiel wird die Str-Funktion verwendet, um eine Zeichenfolgendarstellung einer Zahl zurückzugeben. Beim Umwandeln einer Zahl in eine Zeichenfolge wird immer ein führendes Leerzeichen für das Vorzeichen reserviert.

Dim Text1

Text1 = Str(459)	' Liefert " 459".

Text1 = Str(-459.65)	' Liefert "-459.65".

Text1 = Str(459.001)	' Liefert " 459.001".


StrComp-Funktion (Beispiel)

In diesem Beispiel wird die StrComp-Funktion verwendet, um das Ergebnis eines Zeichenfolgenvergleichs anzugeben. Ist das dritte Argument 1, so wird ein textueller Vergleich durchgeführt. Ist es gleich 0, oder wird es nicht angegeben, so wird ein binärer Vergleich durchgeführt.

Dim Text1, Text2, Vergl

Text1 = "ABCD": Text2 = "abcd"	' Variablen definieren.

Verg1 = StrComp(Text1, Text2, 1)	' Liefert 0.

Verg1 = StrComp(Text1, Text2, 0)	' Liefert -1.

Verg1 = StrComp(Text2, Text1)	' Liefert 1.


String-Funktion (Beispiel)

In diesem Beispiel wird die String-Funktion verwendet, um eine Zeichenfolge einer bestimmten Länge mit einem sich wiederholenden Zeichen zurückzugeben.

Dim Text1

Text1 = String(5, "*")	' Liefert "*****".

Text1 = String(5, 42)	' Liefert "*****".

Text1 = String(10, "ABC")	' Liefert "AAAAAAAAAA".


UCase-Funktion (Beispiel)

In diesem Beispiel wird die UCase-Funktion verwendet, um eine Zeichenfolge zurückzugeben, die in Großbuchstaben umgewandelt wurde.

Dim Klein, Groß

Klein = "Die Antwort ist 42"	' Umzuwandelnde Zeichenfolge.

Groß = UCase(Klein)	' Liefert "DIE ANTWORT IST 42".


StrConv-Funktion (Beispiel)

In diesem Beispiel wird die StrConv-Funktion verwendet, um eine Unicode-Zeichenfolge in eine ANSI-Zeichenfolge umzuwandeln.

Dim i As Long

Dim x() As Byte

x = StrConv("ABCDEFG", vbFromUnicode)	' Zeichenfolge umwandeln.

For i = 0 To UBound(x)

Debug.Print x(i)

Next


Chr-Funktion

Gibt einen Wert vom Typ String zurück, der das Zeichen enthält, das dem angegebenen Zeichen-Code zugeordnet ist.

Syntax

Chr(Zeichencode)

Das erforderliche Argument Zeichencode ist ein Wert vom Typ Long, der ein Zeichen festlegt.

Bemerkungen

Die Zahlen von 0 bis 31 entsprechen den nicht darstellbaren Standard-ASCII-Codes. Chr(10) gibt zum Beispiel ein Zeilenvorschubzeichen zurück. Der normale Bereich für Zeichencode ist 0 bis 255. Auf DBCS-Systemen entspricht der tatsächliche Bereich für Zeichencode jedoch -32768 bis 65535.

Anmerkung   Die ChrB-Funktion wird mit Byte-Daten verwendet, die in einem Wert vom Typ String enthalten sind. Anstelle eines Zeichens, das aus einem oder zwei Bytes bestehen könnte, gibt ChrB immer ein einzelnes Byte zurück. Die ChrW-Funktion gibt einen Wert vom Typ String zurück, der das Unicode-Zeichen enthält. Dies gilt nicht für Plattformen, auf denen Unicode nicht unterstützt wird. In diesem Fall entspricht das Verhalten der Chr-Funktion.

Anmerkung   Visual Basic für den Macintosh unterstützt keine Unicode-Zeichenfolgen. Deshalb kann ChrW(n) nicht wie in der Windows-Umgebung alle Unicode-Zeichen für n Werte im Bereich von 128 bis 65.535 zurückgeben. Statt dessen versucht ChrW(n), für Unicode-Werte, bei denen n größer als 127 ist, den Wert zu "erraten". Sie sollten ChrW daher nicht in der Macintosh-Umgebung verwenden.


Format-Funktion

Gibt einen Wert vom Typ Variant (String) zurück, der einen entsprechend den Anweisungen in einem Formatausdruck formatierten Ausdruck enthält.

Syntax

Format(Ausdruck[, Format[, firstdayofweek[, firstweekofyear]]])

Die Syntax der Format-Funktion besteht aus folgenden Teilen:

Teil	Beschreibung
Ausdruck	Erforderlich. Ein gültiger Ausdruck.
Format	Optional. Ein gültiger benannter oder benutzerdefinierter Formatausdruck.
firstdayofweek	Optional. Eine Konstante, die den ersten Wochentag angibt.
firstweekofyear	Optional. Eine Konstante, die die erste Woche im Jahr angibt.
Einstellungen

Die Einstellungen für das Argument firstdayofweek sind:

Konstante	Wert	Beschreibung
vbUseSystem	0	NLS API-Einstellung verwenden.
VbSunday	1	Sonntag (Voreinstellung)
vbMonday	2	Montag
vbTuesday	3	Dienstag
vbWednesday	4	Mittwoch
vbThursday	5	Donnerstag
vbFriday	6	Freitag
vbSaturday	7	Samstag
Die Einstellungen für das Argument firstweekofyear sind:

Konstante	Wert	Beschreibung
vbUseSystem	0	NLS API-Einstellung verwenden.
VbFirstJan1	1	Mit der Woche beginnen, in die der 1. Januar fällt (Voreinstellung).
VbFirstFourDays	2	Mit der ersten Woche im Jahr beginnen, die mindestens 4 Tage hat.
VbFirstFullWeek	3	Mit der ersten vollständigen Woche im Jahr beginnen.
Bemerkungen

Formatieren von	Aktion
Zahlen	Verwenden Sie vordefinierte benannte numerische Formate, oder erstellen Sie benutzerdefinierte numerische Formate.
Datum/Zeit	Verwenden Sie vordefinierte benannte Datums- und Zeitformate, oder erstellen Sie benutzerdefinierte Datums- und Zeitformate.
Fortlaufende Nr. für Datum/Zeit	Verwenden Sie Datums- und Zeitformate oder numerische Formate.
Zeichenfolgen	Erstellen Sie eigene benutzerdefinierte Zeichenfolgenformate.
Beim Formatieren einer Zahl ohne die Angabe von Format liefert Format dasselbe Ergebnis wie die Str-Funktion, obwohl es auf die jeweilige Gebietsschemaeinstellung reagiert. Allerdings fehlt bei positiven Zahlen, die mit Format als Zeichenfolgen formatiert wurden, das für Vorzeichen reservierte führende Leerzeichen. Die mit Str umgewandelten Zahlen behalten das führende Leerzeichen.

Wenn Sie eine nicht-lokalisierte numerische Zeichenfolge formatieren, sollten Sie ein benutzerdefiniertes numerisches Format verwenden, um sicherzustellen, daß Sie das gewünschte Ergebnis erhalten.

Anmerkung   Wenn die Einstellung der Calendar-Eigenschaft auf gregorianisch steht und Format die Datumsformatierung festlegt, muß der angegebene Ausdruck gregorianisch sein. Wenn die Einstellung der Visual Basic Calendar-Eigenschaft auf Hijri steht, muß der angegebene Ausdruck Hijri sein.

Wenn der Kalender gregorianisch ist, ändert sich die Bedeutung des Symbols für den Format-Ausdruck nicht. Wenn der Kalender Hijri ist, haben zwar alle Symbole des Datumformats (z.B. dddd, mmmm, yyyy) dieselbe Bedeutung, gelten aber für den Hijri-Kalender. Formatsymbole bleiben englisch; Symbole, die als Text angezeigt werden (z.B. AM und PM), zeigen die diesem Symbol zugeordnete Zeichenfolge (englisch oder arabisch) an. Der Bereich der folgenden Symbole ändert sich, wenn der Kalender Hijri ist:

Symbol	Bereich
d	1-30
dd	1-30
ww	1-51
mmm	Zeigt die vollständigen Monatsnamen an (Hijri-Monatsnamen haben keine Abkürzungen).
y	1-355
yyyy	100-9666


Benannte numerische Formate (Format-Funktion)

Die folgende Tabelle beschreibt die vordefinierten numerischen Formate:

Format	Beschreibung
General Number	Zeigt die Zahl ohne Tausendertrennzeichen an.
Currency	Zeigt die Zahl ggf. mit Tausendertrennzeichen an. Die Zahl hat zwei Nachkommastellen. Die Ausgabe hängt von den Systemeinstellungen für das Gebietsschema ab.
Fixed	Zeigt mindestens eine Stelle links und zwei Stellen rechts des Dezimalzeichens an.
Standard	Zeigt die Zahl mit Tausendertrennzeichen sowie mit mindestens einer Stelle links und zwei Stellen rechts des Dezimalzeichens an.
Percent	Zeigt die Zahl multipliziert mit 100 und einem rechts angehängten Prozentzeichen (%) an. Die Zahl hat immer zwei Nachkommastellen.
Scientific	Verwendet das wissenschaftliche Standardformat.
Yes/No	Zeigt "Nein" an, wenn die Zahl 0 ist, und andernfalls "Ja".
True/False	Zeigt False an, wenn die Zahl 0 ist, und andernfalls True.
On/Off	Zeigt "Aus" an, wenn die Zahl 0 ist, und andernfalls "Ein".


Benutzerdefinierte numerische Formate (Format-Funktion)

Die folgende Tabelle enthält die Zeichen, mit denen Sie benutzerdefinierte Zahlenformate erstellen können:

Zeichen	Beschreibung
Kein Zeichen	Zeigt die Zahl ohne Formatierung an.
(0)	Platzhalter für eine Ziffer. Zeigt eine Ziffer oder eine Null an. Wenn sich im Ausdruck eine Ziffer an der Position befindet, an der sich in der Formatzeichenfolge 0 befindet, wird die Ziffer angezeigt, ansonsten wird eine Null ausgegeben. Hat die Zahl weniger Ziffern als der Formatausdruck Nullen (auf beiden Seiten des Dezimalzeichens), so werden führende oder nachgestellte Nullen angezeigt. Hat die Zahl mehr Nachkommastellen als der Formatausdruck Nullen hinter dem Dezimalzeichen, so werden die Nachkommastellen auf die Anzahl der Nullen gerundet. Hat die Zahl mehr Stellen vor dem Dezimalzeichen als der Formatausdruck Nullen, so werden die zusätzlichen Stellen ohne Änderung angezeigt.
(#)	Platzhalter für eine Ziffer. Zeigt eine Ziffer an oder keine Ausgabe. Wenn der Ausdruck eine Ziffer an der Position des #-Platzhalters in der Formatzeichenfolge enthält, wird die Ziffer angezeigt. Andernfalls wird an dieser Position nichts angezeigt. Dieses Symbol verhält sich wie der Platzhalter 0, führende oder nachgestellte Nullen werden jedoch nicht angezeigt, wenn sich im Formatausdruck mehr #-Platzhalter vor oder nach dem Dezimalzeichen befinden, als Ziffern in der Zahl enthalten sind.
(.)	Platzhalter für Dezimalzeichen. In manchen Gebietsschemata wird ein Komma in anderen ein Punkt als Dezimalzeichen verwendet. Der Platzhalter für das Dezimalzeichen bestimmt, wie viele Stellen links und rechts des Dezimalzeichen angezeigt werden. Wenn der Formatausdruck nur #-Platzhalter links von diesem Symbol enthält, beginnen Zahlen, die kleiner als 1 sind, mit einem Dezimalzeichen. Sollen Dezimalzahlen immer mit einer führenden Null angezeigt werden, so müssen Sie 0 als Platzhalter für die erste Ziffer links vom Dezimalzeichen angeben. Das tatsächlich als Dezimalzeichen ausgegebene Zeichen hängt von den Systemeinstellungen für das Zahlenformat ab.
(%)	Platzhalter für Prozent. Der Ausdruck wird mit 100 multipliziert. Das Prozentzeichen (%) wird an der Stelle eingefügt, an der es in der Formatzeichenfolge erscheint.
(,)	Tausendertrennzeichen. In manchen Gebietsschemata wird ein Punkt, in anderen ein Komma als Tausendertrennzeichen verwendet. Das Tausendertrennzeichen trennt Tausender- von Hunderterstellen in einer mindestens vierstelligen Zahl. Das Tausendertrennzeichen wird ausgegeben, wenn der Formatausdruck den entsprechenden Platzhalter enthält und dieser von Ziffern-Platzhaltern (0 oder #) umgeben ist. Zwei aufeinanderfolgende Tausendertrennzeichen oder ein Tausendertrennzeichen unmittelbar links vom Dezimalzeichen (auch wenn keine Nachkommastellen angegeben werden) führen dazu, daß die Zahl durch 1000 dividiert und entsprechend gerundet wird. Sie können beispielsweise die Formatzeichenfolge "##0,," verwenden, um "100 Millionen" als "100" auszugeben. Zahlen kleiner als 1 Million werden dann als 0 dargestellt. Zwei aufeinanderfolgende Platzhalter für das Tausendertrennzeichen, die nicht unmittelbar links vom Dezimalzeichen stehen, werden als gewöhnliches Tausendertrennzeichen interpretiert (und als solche ausgegeben). Das tatsächlich ausgegebene Zeichen zum Trennen der Tausenderstellen hängt von den Systemeinstellungen für das Zahlenformat ab.
(:)	Zeit-Trennzeichen. Das gebräuchlichste Zeit-Trennzeichen ist der Doppelpunkt, in manchen Gebietsschemata werden jedoch andere Zeichen zum Trennen von Zeitangaben verwendet. Das Zeit-Trennzeichen trennt Stunden, Minuten und Sekunden beim Formatieren von Zeitangaben voneinander. Das jeweils ausgegebene Zeit-Trennzeichen hängt von den Systemeinstellungen ab.
(/)	Datumstrennzeichen. In bestimmten Gebietsschemata können andere Zeichen zum Darstellen des Datum-Trennzeichens verwendet werden. Das Datum-Trennzeichen trennt Tag, Monat und Jahr beim Formatieren von Datumsangaben voneinander. Das jeweils ausgegebene Datum-Trennzeichen hängt von den Systemeinstellungen ab.
(E- E+ e- e+)	Wissenschaftliches Format. Wenn der Formatausdruck mindestens einen Ziffern-Platzhalter (0 oder #) rechts von dem Symbol E-, E+, e- oder e+ enthält, wird die Zahl im wissenschaftlichen Format oder Exponentialformat angezeigt, und der Buchstabe E oder e wird zwischen der Zahl und dem Exponenten eingefügt. Die Anzahl der Ziffern-Platzhalter rechts neben dem Symbol bestimmt die Anzahl der Stellen im Exponenten. Beim Symbol E- oder e- wird ein Minuszeichen unmittelbar neben einem negativen Exponenten ausgegeben. Bei E+ oder e+ wird ebenfalls ein Minuszeichen neben einem negativen Exponenten ausgegeben, aber neben positiven Exponenten wird außerdem ein Pluszeichen ausgegeben.
- + $ ( )	Anzeigen eines Literalzeichens. Wenn Sie andere als die hier angegebenen Zeichen ausgeben möchten, müssen Sie einen umgekehrten Schrägstrich (\) vor das entsprechende Zeichen setzen oder das Zeichen in Anführungszeichen (" ") setzen.
(\)	Anzeigen des nächsten Zeichens in der Formatzeichenfolge. Viele Zeichen im Formatausdruck haben eine besondere Bedeutung und können nur dann als Literalzeichen angezeigt werden, wenn ihnen ein umgekehrter Schrägstrich (\) vorangestellt wird. Der umgekehrte Schrägstrich selbst wird nicht angezeigt. Der umgekehrte Schrägstrich entspricht dem Einschließen des darauffolgenden Zeichens in Anführungszeichen. Einen umgekehrten Schrägstrich selbst zeigen Sie durch zwei umgekehrte Schrägstriche (\\) an. Beispiele von Zeichen, die nicht als Literalzeichen angezeigt werden können, sind die Buchstaben zur Formatierung von Datums- und Zeitangaben (a, c, d, h, m, n, p, q, s, t, w, y, / und :) sowie die Zeichen zur Formatierung von Zahlen (#, 0, %, E, e, Komma und Punkt) und Zeichenfolgen (@, &, <, > und !).
("ABC")	Zeigt die Zeichenfolge in Anführungszeichen (" ") an. Bevor Sie Text aus dem Code in die Formatzeichenfolge Format eintragen können, müssen Sie ihn mit Chr(34) in Anführungszeichen einschließen (34 ist der Zeichen-Code für ein Anführungszeichen (")).


Verschiedene Formate für verschiedene numerische Werte (Format-Funktion)

Ein benutzerdefinierter Formatausdruck für Zahlen kann aus bis zu vier Abschnitten bestehen, die durch Semikolons voneinander getrennt sind. Wenn das Argument Format eines der benannten numerischen Formate enthält, ist nur ein Abschnitt zulässig.

Verwendung	Ergebnis
Ein Abschnitt	Der Formatausdruck bezieht sich auf alle Werte.
Zwei Abschnitte	Der erste Abschnitt bezieht sich auf positive Werte und Nullen, der zweite auf negative Werte.
Drei Abschnitte	Der erste Abschnitt bezieht sich auf positive Werte, der zweite auf negative Werte und der dritte auf Nullen.
Vier Abschnitte	Der erste Abschnitt bezieht sich auf positive Werte, der zweite auf negative Werte, der dritte auf Nullen und der vierte auf Null-Werte.
Das folgende Beispiel enthält zwei Abschnitte: Der erste definiert das Format für positive Werte und Nullen, der zweite das Format für negative Werte.

"$#,##0;($#,##0)"

Wenn Sie Semikolons einfügen, zwischen denen keine Zeichen stehen, erscheint der fehlende Abschnitt im Format für positive Werte. Das folgende Format zeigt beispielsweise positive und negative Werte mit dem Format im ersten Abschnitt an und zeigt "Null" an, wenn der Wert 0 ist.

"$#,##0;;\N\u\l\l"


Benutzerdefinierte numerische Formatausdrücke (Beispiel)

Einige Formatausdrücke für Zahlen sind nachfolgend aufgeführt. (Bei allen Beispielen wird angenommen, daß Sie als Gebietsschema für Ihr System "Deutschland" gewählt haben.) Die erste Spalte enthält die Formatzeichenfolgen. Die anderen Spalten enthalten die entsprechende Ausgabe für den Fall, das die formatierten Daten die Werte haben, die jeweils in den Spaltenüberschriften angegeben sind.

Format (Format)	Plus 5	Minus 5	Dezimal 0,5	Null
Null-Zeichenfolge ("")	5	-5	0,5
0	5	-5	1
0,00	5,00	-5,00	0,50
#.##0	5	-5	1
#.##0,00;;;Null	5,00	-5,00	0,50	Null
#.##0 \D\M; (#.##0 \D\M)	5 DM	(5 DM)	1 DM
#.##0,00 \D\M; (#.##0,00 \D\M)	5,00 DM	(5,00 DM)	0,50 DM
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


Benannte Datums- und Zeitformate (Format-Funktion)

Die folgende Tabelle enthält die Namen der vordefinierten Datums- und Zeitformate:

Format	Beschreibung
General Date	Zeigt ein Datum und/oder eine Zeit an. Bei reellen Zahlen werden Datum und Uhrzeit angezeigt (zum Beispiel 4.3.93 05:34). Werden keine Nachkommastellen angegeben, so wird nur ein Datum (zum Beispiel 4.3.93) angezeigt. Enthält der Wert ausschließlich Nachkommastellen, so wird nur eine Uhrzeit ausgegeben (zum Beispiel 05:34). Die Anzeige von Datum und Zeit wird durch die Systemeinstellungen festgelegt.
Long Date	Zeigt ein Datum im langen Datumsformat entsprechend den Systemeinstellungen an.
Medium Date	Zeigt ein Datum im mittleren Datumsformat an, das von der Sprachversion der Host-Anwendung bestimmt wird.
Short Date	Zeigt ein Datum im kurzen Datumsformat entsprechend den Systemeinstellungen an.
Long Time	Zeigt eine Zeit entsprechend der Einstellung für das lange Zeitformat an, einschließlich Stunden, Minuten und Sekunden.
Medium Time	Zeigt eine Zeit im 12-Stunden-Format mit Stunden, Minuten und einer AM/PM-Kennung an.
Short Time	Zeigt eine Zeit im 24-Stunden-Format an (zum Beispiel 17:45).


Benutzerdefinierte Datums- und Zeitformate (Format-Funktion)

Die folgende Tabelle enthält die Zeichen zum Erstellen von benutzerdefinierten Datums- und Zeitformaten:

Zeichen	Beschreibung
(:)	Zeit-Trennzeichen. Das gebräuchlichste Zeit-Trennzeichen ist der Doppelpunkt, aber in manchen Gebietsschemata werden andere Zeichen zum Trennen von Zeitangaben verwendet. Das Zeit-Trennzeichen trennt Stunden, Minuten und Sekunden beim Formatieren von Zeitangaben voneinander. Das tatsächliche Zeit-Trennzeichen in der formatierten Ausgabe hängt von den Systemeinstellungen ab.
(/)	Datumstrennzeichen. In manchen Gebietsschemata können andere Zeichen zum Darstellen des Datum-Trennzeichens verwendet werden. Das Datum-Trennzeichen trennt Tag, Monat und Jahr beim Formatieren von Datumsangaben voneinander. Das tatsächliche Datum-Trennzeichen in der formatierten Ausgabe hängt von den Systemeinstellungen ab.
C	Zeigt das Datums in der Form ddddd und die Zeit in der Form ttttt an, und zwar in dieser Reihenfolge. Hat die fortlaufende Zahl für das Datum keine Nachkommastellen, so wird nur das Datum angezeigt. Hat sie ausschließlich Nachkommastellen, so wird lediglich die Uhrzeit angezeigt.
d	Zeigt den Tag als Zahl ohne führende Null (1 – 31) an.
dd	Zeigt den Tag als Zahl mit führender Null (01 – 31)an.
ddd	Zeigt den Tag als Abkürzung (So – Sa) an.
dddd	Zeigt den Tag mit vollständigem Namen (Sonntag – Samstag) an.
ddddd	Zeigt ein vollständiges Datum (einschließlich Tag, Monat und Jahr) an, das entsprechend der Systemeinstellung für das kurze Datumsformat formatiert ist. Die Voreinstellung für das kurze Datumsformat ist dd.mm.yy.
dddddd	Zeigt ein vollständiges Datum (einschließlich Tag, Monat und Jahr) an, das entsprechend der Systemeinstellung für das lange Datumsformat formatiert ist. Die Voreinstellung für das lange Datumsformat ist dd.mmmm.yyyy.
aaaa	Das gleiche wie dddd, allerdings die lokalisierte Version der Zeichenfolge.
w	Zeigt den Wochentag als Zahl (1 für Sonntag bis 7 für Samstag) an.
ww	Zeigt die Kalenderwoche als Zahl (1 – 54) an.
m	Zeigt den Monat als Zahl ohne führende Null (1 – 12) an. Wenn m unmittelbar auf h oder hh folgt, wird nicht der Monat, sondern die Minute angezeigt.
mm	Zeigt den Monat als Zahl mit führender Null (01 – 12) an. Wenn m unmittelbar auf h oder hh folgt, wird nicht der Monat, sondern die Minute angezeigt.
mmm	Zeigt den Monat als Abkürzung (Jan – Dez) an.
mmmm	Zeigt den Monat mit vollständigem Namen (Januar – Dezember) an.
oooo	Das gleiche wie mmmm, allerdings die lokalisierte Version der Zeichenfolge.
q	Zeigt das Jahresquartal als Zahl (1 – 4) an.
y	Zeigt den Kalendertag als Zahl (1 – 366) an.
yy	Zeigt das Jahr als zweistellige Zahl (00 – 99) an.
yyyy	Zeigt das Jahr als vierstellige Zahl (100 – 9999) an.
h	Zeigt die Stunde als Zahl ohne führende Nullen (0 – 23) an.
hh	Zeigt die Stunde als Zahl mit führender Nullen (00 – 23) an.
n	Zeigt die Minute als Zahl ohne führende Nullen (0 – 59) an.
nn	Zeigt die Minute als Zahl mit führender Nullen (00 – 59) an.
s	Zeigt die Sekunde als Zahl ohne führende Nullen (0 – 59) an.
ss	Zeigt die Sekunde als Zahl mit führender Nullen (00 – 59) an.
t t t t t	Zeigt eine vollständige Zeitangabe (einschließlich Stunden, Minuten und Sekunden) an, die mit dem Zeit-Trennzeichen formatiert ist, das in der Systemeinstellung für das Zeitformat festgelegt ist. Eine führende Null wird angezeigt, wenn die entsprechende Option ausgewählt wurde und die Zeit vor 10:00 liegt. Die Voreinstellung für das Zeitformat ist h:mm:ss.
AM/PM	12-Stunden-Format mit Anzeige von AM (groß geschrieben) vor 12 Uhr mittags und PM (großgeschrieben) ab 12 Uhr mittags und vor 24:00 Uhr.
am/pm	12-Stunden-Format mit Anzeige von am (klein geschrieben) vor 12 Uhr mittags und pm (klein geschrieben) ab 12 Uhr mittags und vor 24:00 Uhr.
A/P	12-Stunden-Format mit Anzeige von A (groß geschrieben) vor 12 Uhr mittags und P (großgeschrieben) ab 12 Uhr mittags und vor 24:00 Uhr.
A/p	12-Stunden-Format mit Anzeige von a (klein geschrieben) vor 12 Uhr mittags und p (klein geschrieben) ab 12 Uhr mittags und vor 24:00 Uhr.
AMPM	12-Stunden-Format mit Anzeige des AM-Zeichenfolgenliterals, das von Ihrem System festgelegt ist. Vor 12 Uhr mittags wird die AM-Zeichenfolge, und ab 12 Uhr mittags bis 24:00 Uhr die PM-Zeichenfolge angezeigt. AMPM kann klein oder groß geschrieben werden, die tatsächlich verwendete Schreibweise hängt von den Systemeinstellungen ab. Die Voreinstellung ist AM/PM.


Benutzerdefiniertes Datums-/Zeitformat (Beispiel)

Die folgenden Beispiele zeigen benutzerdefinierte Datums- und Zeitformate für das Datum 7. Dezember 1958:

Format	Anzeige
d/m/yy	7.12.58
d-mmm	7-Dez
d-mmmm-yy	7-Dezember-58
d. mmmm	7. Dezember
mmmm yy	Dezember 58
hh:mm AM/PM	08:50
h:mm:ss a/p	8:50:35 p
h:mm	20:50
h:mm:ss	20:50:35
d/m/yy h:mm	7.12.58 20:50


Benutzerdefinierte Zeichenfolgenformate (Format-Funktion)

Mit jedem der in der folgenden Tabelle aufgeführten Symbolen können Sie einen Formatausdruck für Zeichenfolgen erstellen:

Zeichen	Beschreibung
@	Platzhalter für ein Zeichen. Zeigt ein Zeichen oder ein Leerzeichen an. Wenn sich in der zu formatierenden Zeichenfolge ein Zeichen an der Stelle befindet, an der in der Formatzeichenfolge der @-Platzhalter steht, wird das Zeichen ausgegeben. Andernfalls wird an dieser Stelle ein Leerzeichen angezeigt. Platzhalter werden von rechts nach links ausgefüllt, solange sich in der Formatzeichenfolge kein Ausrufezeichen (!) befindet.
&	Platzhalter für ein Zeichen. Zeigt ein Zeichen an oder keine Ausgabe. Wenn sich in der zu formatierenden Zeichenfolge ein Zeichen an der Stelle befindet, an der sich in der Formatzeichenfolge der &-Platzhalter befindet, wird das Zeichen ausgegeben. Andernfalls wird an dieser Stelle nichts ausgegeben. Platzhalter werden von rechts nach links aufgefüllt, solange sich in der Formatzeichenfolge kein Ausrufezeichen (!) befindet.
<	Anzeigen als Kleinbuchstaben. Alle Zeichen werden als Kleinbuchstaben angezeigt.
>	Anzeigen als Großbuchstaben. Alle Zeichen werden als Großbuchstaben angezeigt.
!	Auffüllen aller Platzhalter von links nach rechts. Umkehrung der Voreinstellung, nach der Platzhalter von rechts nach links aufgefüllt werden.


Verschiedene Formate für verschiedene Zeichenfolgenwerte (Format-Funktion)

Ein Formatausdruck für Zeichenfolgen kann aus einem oder zwei (durch ein Semikolon getrennten) Abschnitten bestehen.

Verwendung	Ergebnis
Ein Abschnitt	Das Format bezieht sich auf alle Daten der Zeichenfolge.
Zwei Abschnitte	Der erste Abschnitt bezieht sich auf die Daten der Zeichenfolge, der zweite auf Null-Werte und Null-Zeichenfolgen ("").


Hex-Funktion

Gibt einen Wert vom Typ String zurück, der den Hexadezimalwert einer Zahl angibt.

Syntax

Hex(Zahl)

Das erforderliche Argument Zahl ist ein beliebiger gültiger numerischer Ausdruck oder Zeichenfolgenausdruck.

Bemerkungen

Wenn Zahl keine ganze Zahl ist, rundet die Funktion den Wert vor der Auswertung auf die nächste ganze Zahl.

Zahl	Rückgabewert von Hex
Null	Null
Empty	Null (0)
Andere Zahl	Bis zu acht hexadezimale Zeichen
Sie können Hexadezimalzahlen direkt angeben, indem Sie vor eine Zahl im zulässigen Bereich die Zeichen &H setzen. &H10 entspricht zum Beispiel der Dezimalzahl 16 in Hexadezimaldarstellung.


InStr-Funktion

Gibt einen Wert vom Typ Variant (Long) zurück, der die Position des ersten Auftretens einer Zeichenfolge innerhalb einer anderen Zeichenfolge angibt.

Syntax

InStr([Start, ]Zeichenfolge1, Zeichenfolge2[, Vergleich])

Die Syntax der InStr-Funktion verwendet die folgenden Argumente:

Teil	Beschreibung
Start	Optional. Numerischer Ausdruck, der die Startposition für die Suche festlegt. Wird Start nicht angegeben, so beginnt die Suche mit dem ersten Zeichen in der Zeichenfolge. Wenn Start den Wert Null enthält, tritt ein Fehler auf. Bei Angabe von Vergleich muß auch das Argument Start angegeben werden.
Zeichenfolge1	Erforderlich. Durchsuchter Zeichenfolgenausdruck.
Zeichenfolge2	Erforderlich. Gesuchter Zeichenfolgenausdruck.
Vergleich	Optional. Legt die Art des Zeichenfolgenvergleichs fest. Der Wert Null für Vergleich führt zu einem Fehler. Wird Vergleich nicht angegeben, so legt die Einstellung von Option Compare die Art des Vergleichs fest.
Einstellungen

Die Einstellungen für das Argument Vergleich sind:

Konstante	Wert	Beschreibung
vbUseCompareOption	-1	Führt einen Vergleich mit Hilfe der Option Compare-Anweisung durch.
vbBinaryCompare	0	Führt einen binären Vergleich durch.
vbTextCompare	1	Führt einen textbasierten Vergleich durch.
vbDatabaseCompare	2	Nur Microsoft Access. Führt einen Vergleich durch, der auf Informationen in Ihrer Datenbank basiert.
Rückgabewerte

Fall	Rückgabewerte von InStr
Zeichenfolge1 hat die Länge Null	0
Zeichenfolge1 ist Null	Null
Zeichenfolge2 hat die Länge Null	start
Zeichenfolge2 ist Null	Null
Zeichenfolge2 ist nicht vorhanden	0
Zeichenfolge2 ist in Zeichenfolge1 enthalten	Position, an der Übereinstimmung beginnt
Start > Zeichenfolge2	0
Bemerkungen

Die InStrB-Funktion wird für Byte-Daten verwendet, die in einer Zeichenfolge enthalten sind. InStrB gibt nicht die Zeichenposition des ersten Auftretens einer Zeichenfolge innerhalb einer anderen Zeichenfolge zurück, sondern die Byte-Position.


LCase-Funktion

Gibt einen Wert vom Typ String zurück, in dem alle Buchstaben in Kleinbuchstaben umgewandelt worden sind.

Syntax

LCase(Zeichenfolge)

Das erforderliche Argument Zeichenfolge ist ein beliebiger gültiger Zeichenfolgenausdruck. Wenn Zeichenfolge den Wert Null enthält, wird Null zurückgegeben.

Bemerkungen

Lediglich Großbuchstaben werden in Kleinbuchstaben umgewandelt. Alle Kleinbuchstaben und sonstigen Zeichen bleiben unverändert.


Left-Funktion

Gibt einen Wert vom Typ Variant (String) zurück, der eine bestimmte Anzahl von Zeichen ab dem ersten (linken) Zeichen einer Zeichenfolge enthält.

Syntax

Left(string, length)

Die Left-Funktion verwendet die folgenden benannten Argumente:

Teil	Beschreibung
string	Erforderlich. Zeichenfolgenausdruck, aus dem die ersten (linken) Zeichen zurückgegeben werden. Wenn string den Wert Null enthält, wird Null zurückgegeben.
length	Erforderlich; Wert vom Typ Variant (Long). Numerischer Ausdruck, der die Anzahl der zurückzugebenden Zeichen angibt. Der Wert 0 führt zur Rückgabe einer Null-Zeichenfolge (""). Ist length größer oder gleich der Zeichenanzahl in string, so wird die gesamte Zeichenfolge zurückgegeben.
Bemerkungen

Mit der Len-Funktion können Sie die Zeichenanzahl in string bestimmen.

Anmerkung   Die LeftB-Funktion wird für Byte-Daten verwendet, die in einer Zeichenfolge enthalten sind. Mit length wird nicht die Anzahl der zurückzugebenden Zeichen angegeben, sondern die Anzahl der Bytes.


Len-Funktion

Gibt einen Wert vom Typ Long zurück, der die Anzahl der Zeichen in einer Zeichenfolge oder die zum Speichern einer Variablen erforderlichen Bytes enthält.

Syntax

Len(Zeichenfolge | Variablenname)

Die Syntax der Len-Funktion besteht aus folgenden Teilen:

Teil	Beschreibung
Zeichenfolge	Beliebiger gültiger Zeichenfolgenausdruck. Wenn Zeichenfolge den Wert Null enthält, wird Null zurückgegeben.
Variablenname	Beliebiger gültiger Name für eine Variable. Wenn Variablenname den Wert Null enthält, wird Null zurückgegeben. Wenn Variablenname ein Wert vom Typ Variant ist, wird er von Len genauso behandelt wie ein Wert vom Typ String, und es wird immer die Anzahl der darin enthaltenen Zeichen zurückgegeben.
Bemerkungen

Eins (und nur eins) der zwei möglichen Argumente muß angegeben werden. Mit benutzerdefinierten Typen gibt Len die Größe so zurück, wie sie in die Datei geschrieben wird.

Anmerkung   Die LenB-Funktion wird für die Byte-Daten verwendet, die in einer Zeichenfolge enthalten sind, wie in Sprachen mit Doppelbyte-Zeichensatz (DBCS = double-byte character set). LenB gibt nicht die Anzahl der Zeichen in einer Zeichenfolge zurück, sondern die Anzahl der Bytes, die zur Darstellung dieser Zeichenfolge verwendet werden. Mit benutzerdefinierten Typen gibt LenB die Größe im Speicher zurück, einschließlich aller Polster zwischen Elementen. Beispiel-Code, der LenB verwendet, finden Sie im zweiten Beispiels im Beispielthema.

Anmerkung   Die Len-Funktion gibt nicht immer die tatsächlich zum Speichern benötigten Bytes zurück, wenn sie mit Zeichenfolgen variabler Länge in benutzerdefinierten Datentypen verwendet wird.


LSet-Anweisung

Richtet eine Zeichenfolge innerhalb einer Zeichenfolgenvariablen links aus oder kopiert eine Variable eines benutzerdefinierten Datentyps in eine Variable eines anderen benutzerdefinierten Datentyps.

Syntax

LSet ZnFVariable = Zeichenfolge

LSet VariablenName1 = VariablenName2

Die Syntax der LSet-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
ZnFVariable	Erforderlich. Name einer Zeichenfolgenvariablen.
Zeichenfolge	Erforderlich. Zeichenfolgenausdruck, der innerhalb von ZnFVariable links ausgerichtet werden soll.
VariablenName1	Erforderlich. Name einer Variablen des benutzerdefinierten Datentyps, die die Zielvariable für den Kopiervorgang darstellt.
VariablenName2	Erforderlich. Name einer Variablen des benutzerdefinierten Datentyps, die die Quellvariable für den Kopiervorgang darstellt.
Bemerkungen

Die LSet-Anweisung ersetzt alle überschüssigen Zeichen in ZnFVariable durch Leerzeichen.

Ist Zeichenfolge länger als ZnFVariable, so speichert LSet in ZnFVariable nur die ersten Zeichen bis zur Länge von ZnFVariable.

Achtung   Das Kopieren einer Variablen eines benutzerdefinierten Typs mit LSet in eine Variable eines anderen benutzerdefinierten Typs wird nicht empfohlen. Beachten Sie, daß das Kopieren von Daten eines Datentyps in Speicher, der für einen anderen Datentyp reserviert ist, zu unvorhersehbaren Ergebnissen führen kann.

Wenn Sie Variablen eines benutzerdefinierten Typs in einen anderen benutzerdefinierten Typ kopieren, werden einfach die Binärdaten aus der einen Variablen in den Speicherbereich der anderen kopiert, ohne Berücksichtigung der Datentypen, die für die darin enthaltenen Elemente angegeben werden.


LTrim-, Rtrim- und Trim-Funktionen

Gibt einen Wert vom Typ Variant (String) zurück, der eine Kopie einer bestimmten Zeichenfolge enthält, die keine führenden Leerzeichen (LTrim), keine nachgestellten Leerzeichen (RTrim) sowie keine Kombination aus führenden und nachgestellten Leerzeichen (Trim) enthält.

Syntax

LTrim(Zeichenfolge)

RTrim(Zeichenfolge)

Trim(Zeichenfolge)

Das erforderliche Argument Zeichenfolge ist ein beliebiger gültiger Zeichenfolgenausdruck. Wenn Zeichenfolge den Wert Null enthält, wird Null zurückgegeben.


Mid-Funktion

Gibt einen Wert vom Typ Variant (String) zurück, der eine bestimmte Anzahl von Zeichen aus einer Zeichenfolge enthält.

Syntax

Mid(string, start[, length])

Die Syntax der Mid-Funktion verwendet die folgenden benannten Argumente:

Teil	Beschreibung
string	Erforderlich. Zeichenfolgenausdruck, aus dem Zeichen zurückgegeben werden. Wenn string den Wert Null enthält, wird Null zurückgegeben.
start	Erforderlich; Wert vom Typ Long. Position in string, an der die zurückzugebende Zeichenfolge beginnt. Ist start größer als die Anzahl der Zeichen in string, so gibt Mid eine leere Zeichenfolge ("") zurück.
length	Optional; Wert vom Typ Variant (Long). Anzahl der zurückzugebenden Zeichen. Wird length nicht angegeben oder befinden sich weniger Zeichen im Text (das Zeichen an der Stelle start eingeschlossen), als durch length angegeben, so werden alle Zeichen ab start bis zum Ende der Zeichenfolge zurückgegeben.
Bemerkungen

Mit der Len-Funktion können Sie die Anzahl der Zeichen in string bestimmen.

Anmerkung   Die MidB-Funktion wird für die Byte-Daten verwendet, die in einer Zeichenfolge enthalten sind, wie in Sprachen mit Doppelbyte-Zeichensatz (DBCS = double-byte character set). Die Argumente geben nicht die Anzahl der Zeichen an, sondern die Anzahl der Bytes. Beispiel-Code, der MidB verwendet, finden Sie im zweiten Beispiel im Beispielthema.


Mid-Anweisung

Ersetzt eine bestimmte Anzahl von Zeichen in einer Zeichenfolgenvariablen vom Typ Variant (String) durch Zeichen aus einer anderen Zeichenfolge.

Syntax

Mid(ZnFVariable, Anfang[, Länge]) = Zeichenfolge

Die Syntax der Mid-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
ZnFVariable	Erforderlich. Name der zu verändernden Zeichenfolgenvariablen.
Anfang	Erforderlich; Wert vom Typ Variant (Long). Position in ZnFVariable, an der der Ersetzungsvorgang beginnt.
Länge	Optional; Wert vom Typ Variant (Long). Anzahl der zu ersetzenden Zeichen. Wenn Sie Länge nicht angeben, wird die gesamte Zeichenfolge verwendet.
Zeichenfolge	Erforderlich. Zeichenfolgenausdruck, der den angegebenen Teil aus ZnFVariable ersetzt.
Bemerkungen

Die Anzahl der ersetzten Zeichen ist niemals größer als die Anzahl der Zeichen in ZnFVariable.

Anmerkung   Die MidB-Anweisung wird für die Byte-Daten verwendet, die in einer Zeichenfolge enthalten sind. In der MidB-Anweisung gibt Anfang die Position des Bytes innerhalb ZnFVariable an, an der der Ersetzungsvorgang beginnt, und Länge gibt die Anzahl der zu ersetzenden Bytes an.


Oct-Funktion

Gibt eine Zeichenfolge vom Typ Variant (String) zurück, die den Oktalwert einer Zahl darstellt.

Syntax

Oct(Zahl)

Das erforderliche Argument Zahl ist ein beliebiger gültiger numerischer Ausdruck oder Zeichenfolgenausdruck.

Bemerkungen

Wenn Zahl keine ganze Zahl ist, rundet die Funktion den Wert vor der Auswertung auf die nächste ganze Zahl.

Zahl	Rückgabewert von Oct
Null	Null
Empty	Null (0)
Andere Zahl	Bis zu 11 oktale Zeichen
Sie können Oktalzahlen direkt angeben, indem Sie &O vor eine Zahl im zulässigen Bereich setzen. &O10 entspricht zum Beispiel der Dezimalzahl 8 in Oktaldarstellung.


Right-Funktion

Gibt einen Wert vom Typ Variant (String) zurück, der eine bestimmte Anzahl von Zeichen von der rechten Seite (dem Ende) einer Zeichenfolge enthält.

Syntax

Right(string, length)

Die Syntax der Right-Funktion verwendet die folgenden benannten Argumente:

Teil	Beschreibung
string	Erforderlich. Zeichenfolgenausdruck, von dem die letzten (rechtsstehenden) Zeichen zurückgegeben werden. Wenn string den Wert Null enthält, wird Null zurückgegeben.
length	Erforderlich; Wert vom Typ Variant (Long). Numerischer Ausdruck, der die Anzahl der zurückzugebenden Zeichen angibt. Der Wert 0 führt zur Rückgabe einer Null-Zeichenfolge (""). Ist length größer oder gleich der Zeichenanzahl in string, so wird die gesamte Zeichenfolge zurückgegeben.
Bemerkungen

Sie können die Anzahl der Zeichen in string mit der Len-Funktion ermitteln.

Anmerkung   Die RightB-Funktion wird für die Byte-Daten verwendet, die in einer Zeichenfolge enthalten sind. length gibt nicht die Anzahl der zurückzugebenden Zeichen zurück, sondern die Anzahl der Bytes.


RSet-Anweisung

Richtet eine Zeichenfolge innerhalb einer Zeichenfolgenvariablen rechts aus.

Syntax

RSet ZnFVariable = Zeichenfolge

Die Syntax der RSet-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
ZnFVariable	Erforderlich. Name einer Zeichenfolgenvariablen.
Zeichenfolge	Erforderlich. Zeichenfolgenausdruck, der innerhalb von ZnFVariable rechts ausgerichtet werden soll.
Bemerkungen

Ist ZnFVariable länger als Zeichenfolge, so ersetzt RSet alle überschüssigen Zeichen in ZnFVariable bis an den Anfang der Zeichenfolge durch Leerzeichen.

Anmerkung   RSet kann nicht mit benutzerdefinierten Typen verwendet werden.


Space-Funktion

Gibt eine Zeichenfolge vom Typ Variant (String) zurück, die aus einer angegebenen Anzahl von Leerzeichen besteht.

Syntax

Space(Zahl)

Das erforderliche Argument Zahl entspricht der Anzahl der gewünschten Leerzeichen in der Zeichenfolge.

Bemerkungen

Die Space-Funktion bietet sich beim Formatieren von Ausgaben und beim Löschen von Daten in Zeichenfolgen fester Länge an.


Str-Funktion

Gibt einen Wert vom Typ Variant (String) zurück, der eine Zahl darstellt.

Syntax

Str(Zahl)

Das erforderliche Argument Zahl ist ein Wert vom Typ Long, der einen beliebigen numerischen Ausdruck enthält.

Bemerkungen

Beim Umwandeln von Zahlen in Zeichenfolgen wird immer ein führendes Leerzeichen für das Vorzeichen von Zahl reserviert. Ist Zahl positiv, so enthält die zurückgegebene Zeichenfolge ein führendes Leerzeichen (das positive Vorzeichen ist implizit).

Mit der Format-Funktion können Sie numerische Werte umwandeln, die als Datum, Uhrzeit, Währung oder in anderen benutzerdefinierten Formaten angezeigt werden sollen. Im Gegensatz zu Str fügt die Format-Funktion kein führendes Leerzeichen für das Vorzeichen von Zahl ein.

Anmerkung   Die Str-Funktion erkennt nur den Punkt (.) als zulässiges Dezimalzeichen. Wenn die Möglichkeit zur Verwendung eines anderen Dezimalzeichens bestehen muß (zum Beispiel in internationalen Anwendungen), sollten Sie Zahlen mit der CStr-Funktion in eine Zeichenfolge umwandeln.


StrComp-Funktion

Gibt einen Wert vom Typ Variant (Integer) zurück, der das Ergebnis eines Zeichenfolgenvergleichs anzeigt.

Syntax

StrComp(string1, string2[, compare])

Die Syntax der StrComp-Funktion besteht aus folgenden benannten Argumenten:

Teil	Beschreibung
string1	Erforderlich. Ein beliebiger gültiger Zeichenfolgenausdruck.
string2	Erforderlich. Ein beliebiger gültiger Zeichenfolgenausdruck.
compare	Optional. Legt die Art des Zeichenfolgenvergleichs fest.  Der Wert Null für compare führt zu einem Fehler. Wird das Argument compare nicht angegeben, so legt die Einstellung von Option Compare die Art des Vergleichs fest.
Einstellungen

Die Einstellungen für das Argument compare sind:

Konstante	Wert	Beschreibung
vbUseCompareOption	-1	Führt einen Vergleich mit Hilfe der Option Compare-Anweisung durch.
vbBinaryCompare	0	Führt einen binären Vergleich durch.
vbTextCompare	1	Führt einen textbasierten Vergleich durch.
vbDatabaseCompare	2	Nur Microsoft Access. Führt einen Vergleich durch, der auf Informationen in Ihrer Datenbank basiert.
Rückgabewerte

Die StrComp-Funktion hat folgende Rückgabewerte: :

Fall	Rückgabewert von StrComp
string1 liegt im Alphabet vor string2	-1
string1 entspricht string2	0
string1 liegt im Alphabet hinter string2	1
string1 oder string2 ist Null	Null


StrConv-Funktion

Gibt einen Wert vom Typ Variant (String) zurück, der wie angegeben umgewandelt wurde.

Syntax

StrConv(string, conversion, LCID)

Die Syntax der StrConv-Funktion besteht aus folgenden benannten Argumenten:

Teil	Beschreibung
string	Erforderlich. Zeichenfolgenausdruck, der umgewandelt werden soll.
conversion	Erforderlich. Wert vom Typ Integer. Die Summe der Werte, die den Typ der auszuführenden Umwandlung angibt.
LCID	Optional. Die Gebietsschema-ID, wenn diese sich von der des Systems unterscheidet. (Die Gebietsschema-ID des Systems ist die Voreinstellung.)
Einstellungen

Die Einstellungen für das Argument conversion sind:

Konstante	Wert	Beschreibung
vbUpperCase	1	Wandelt die Zeichenfolge in Großbuchstaben um.
VbLowerCase	2	Wandelt die Zeichenfolge in Kleinbuchstaben um.
VbProperCase	3	Wandelt den ersten Buchstaben jedes Wortes innerhalb der Zeichenfolge in einen Großbuchstaben um.
vbWide*	4*	Wandelt schmale (Einzel-Byte) Zeichen innerhalb der Zeichenfolge in breite (Doppel-Byte) Zeichen um.
vbNarrow*	8*	Wandelt breite (Doppel-Byte) Zeichen innerhalb der Zeichenfolge in schmale (Einzel-Byte) Zeichen um.
vbKatakana**	16**	Wandelt Hiragana-Zeichen innerhalb der Zeichenfolge in Katakana-Zeichen um.
vbHiragana**	32**	Wandelt Katakana-Zeichen innerhalb der Zeichenfolge in Hiragana-Zeichen um.
vbUnicode	64	Wandelt die Zeichenfolge in Unicode um und verwendet dabei die Voreinstellungen aus der Zeichenumsetzungstabelle des Systems. (Nicht verfügbar auf dem Macintosh.)
vbFromUnicode	128	Wandelt die Zeichenfolge von Unicode in die Voreinstellungen aus der Zeichenumsetzungstabelle des Systems um. (Nicht verfügbar auf dem Macintosh.)
*	Betrifft Gebietsschema Fernost.

**	Betrifft nur Japan.

Anmerkung   Diese Konstanten wurden von Visual Basic für Applikationen festgelegt. Aus diesem Grund können sie überall in Ihrem Code anstelle der tatsächlichen Werte verwendet werden. Die meisten können kombiniert werden, beispielsweise vbUpperCase + vbWide, es sei denn, sie schließen sich gegenseitig aus, wie z.B. vbUnicode + vbFromUnicode. Die Konstanten vbWide, vbNarrow, vbKatakana und vbHiragana bewirken Laufzeitfehler, wenn sie in Gebietsschemata verwendet werden, auf die sie nicht zutreffen.

Im folgenden finden Sie einige gültige Worttrennzeichen: Null (Chr$(0)), horizontaler Tabulator (Chr$(9)), Zeilenvorschub (Chr$(10)), vertikaler Tabulator (Chr$(11)), Seitenvorschub (Chr$(12)), Wagenrücklaufzeichen (Chr$(13)), Leerzeichen (SBCS) (Chr$(32)). Der tatsächliche Wert für ein Leerzeichen ist je nach Land für DBCS unterschiedlich.

Bemerkungen

Wenn Sie von einem Byte-Datenfeld in ANSI-Format in eine Zeichenfolge konvertieren, sollten Sie die Funktion StrConv verwenden. Wenn Sie von einem solchen Datenfeld in Unicode-Format umwandeln, verwenden Sie eine Zuweisungsanweisung.


String-Funktion

Gibt eine Zeichenfolge vom Typ Variant (String) zurück, die ein sich wiederholendes Zeichen der angegebenen Länge enthält.

Syntax

String(number, character)

Die Syntax der String-Funktion besteht aus folgenden benannten Argumenten:

Teil	Beschreibung
number	Erforderlich; Wert vom Typ Long. Länge der zurückgegebenen Zeichenfolge. Wenn number den Wert Null enthält, wird Null zurückgegeben.
character	Erforderlich; Wert vom Typ Variant. Ein Zeichen-Code, der ein Zeichen oder einen Zeichenfolgenausdruck, angibt, dessen erstes Zeichen verwendet wird, um die zurückzugebende Zeichenfolge zu erstellen. Wenn character den Wert Null enthält, wird Null zurückgegeben.
Bemerkungen

Wenn Sie für character eine Zahl größer als 255 angeben, wandelt String die Zahl mit der folgenden Formel in einen gültigen Zeichen-Code um:

character Mod 256


UCase-Funktion

Gibt einen Wert vom Typ Variant (String) zurück, der eine bestimmte, in Großbuchstaben umgewandelte Zeichenfolge enthält.

Syntax

UCase(Zeichenfolge)

Das erforderliche Argument Zeichenfolge ist ein beliebiger gültiger Zeichenfolgenausdruck. Wenn Zeichenfolge den Wert Null enthält, wird Null zurückgegeben.

Bemerkungen

Lediglich Kleinbuchstaben werden in Großbuchstaben umgewandelt. Alle Großbuchstaben und sonstigen Zeichen bleiben unverändert.


Schlüsselwörter nach Aufgabenbereichen

Kategorie	Beschreibung
Ablaufsteuerung	Ausführen von Schleifen und Steuerung im Prozedurablauf.
Compiler-Anweisungen	Steuern des Compiler-Verhaltens.
Datenfelder	Erstellen, Definieren und Verwenden von Datenfeldern.
Datentypen	Datentypen und Variant-Untertypen.
Datum und Uhrzeit	Umwandeln und Verwenden von Datum/Zeit-Ausdrücken.
Eingabe und Ausgabe	Empfangen von Eingaben und Anzeigen oder Drucken von Ausgaben.
Fehler	Auffangen und Zurückgeben von Fehlernummer.
Finanzmathematik	Durchführen von finanzmathematischen Berechnungen.
Mathematik	Durchführen von trigonometrischen und anderen mathematischen Berechnungen.
Operatoren	Vergleichen von Ausdrücken und andere Operationen.
Umwandlung	Umwandeln von Zahlen und Datentypen.
Variablen und Konstanten	Deklarieren und Definieren von Variablen und Konstanten.
Verschiedenes	Starten anderer Anwendungen und Verarbeiten von Ereignissen.
Verzeichnisse und Dateien	Steuern des Dateisystems und Verarbeiten von Dateien.
Zeichenfolgenverarbeitung	Verarbeiten von Zeichenfolgen und von Daten vom Typ String.


Datenfeld-Schlüsselwörter (Zusammenfassung)

Aktion	Schlüsselwörter
Ändern der Standarduntergrenze.	Option Base
Deklarieren und Initialisieren eines Datenfeldes.	Dim, Private, Public, ReDim, Static
Erneutes Initialisieren eines Datenfeldes.	Erase, ReDim
Erstellen eines Datenfeldes.	Array
Suchen der Grenzen eines Datenfeldes.	LBound, UBound
Überprüfen eines Datenfeldes.	IsArray


Collection-Objekt-Schlüsselwörter (Zusammenfassung)

Aktion	Schlüsselwörter
Entfernen eines Objekts aus einer Auflistung.	Remove
Erstellen eines Collection-Objekts.	Collection
Hinzufügen eines Objekts zu einer Auflistung.	Add
Verweisen auf ein Element in einer Auflistung.	Item


Compiler-Anweisung-Schlüsselwörter (Zusammenfassung)

Aktion	Schlüsselwörter
Definieren einer Compiler-Konstante.	#Const
Kompilieren ausgewählter Code-Blöcke.	#If...Then...#Else


Ablaufsteuerung-Schlüsselwörter (Zusammenfassung)

Aktion	Schlüsselwörter
Ausführen einer Schleife	Do...Loop, For...Next, For Each...Next, While...Wend, With
Beenden oder Anhalten des Programms.	DoEvents, End, Exit, Stop
Entscheidungen treffen.	Choose, If...Then...Else, Select Case, Switch
Verwenden von Prozeduren.	Call, Function, Property Get, Property Let, Property Set, Sub
Verzweigen	GoSub...Return, GoTo, On Error, On...GoSub, On...GoTo


Umwandlung-Schlüsselwörter (Zusammenfassung)

Aktion	Schlüsselwörter
ANSI-Wert in Zeichenfolge.	Chr
Zeichenfolge in Groß- oder Kleinbuchstaben.	Format, LCase, UCase
Datum in Seriennummer.	DateSerial, DateValue
Dezimalzahl in andere Basen.	Hex, Oct
Zahl in Zeichenfolge.	Format, Str
Ein Datentyp in einen anderen.	CBool, CByte, CCur, CDate, CDbl, CDec, Cint, CLng, CSng, CStr, CVar, CVErr, Fix, Int
Datum in Tag, Monat, Wochentag oder Jahr.	Day, Month, Weekday, Year
Zeit in Stunde, Minute oder Sekunde.	Hour, Minute, Second
Zeichenfolge in ASCII-Wert.	Asc
Zeichenfolge in Zahl.	Val
Zeit in Seriennummer.	TimeSerial, TimeValue


Datentypen-Schlüsselwörter (Zusammenfassung)

Aktion	Schlüsselwörter
Festlegen integrierter Datentypen.	Boolean, Byte, Currency, Date, Double, Integer, Long, Object, Single, String, Variant (Voreinstellung)
Konvertieren zwischen Datentypen.	CBool, CByte, CCur, CDate, CDbl, CDec, CInt, CLng, CSng, CStr, CVar, CVErr, Fix, Int
Überprüfen von Datentypen.	IsArray, IsDate, IsEmpty, IsError, IsMissing, IsNull, IsNumeric, IsObject


Datum- und Uhrzeit-Schlüsselwörter (Zusammenfassung)

Aktion	Schlüsselwörter
Abrufen des aktuellen Datums oder der Zeit.	Date, Now, Time
Durchführen von Datumsberechnungen.	DateAdd, DateDiff, DatePart
Festlegen des Datums oder der Zeit.	Date, Time
Verwenden eines Zeitgebers in einem Prozeß.	Timer
Zurückgeben einer Zeit.	TimeSerial, TimeValue
Zurückgeben eines Datums.	DateSerial, DateValue


Verzeichnis- und Datei-Schlüsselwörter (Zusammenfassung)

Aktion	Schlüsselwörter
Ändern des Laufwerks.	ChDrive
Ändern des Verzeichnisses oder Ordners.	ChDir
Entfernen eines Verzeichnisses oder Ordners.	RmDir
Erstellen eines Verzeichnisses oder Ordners.	MkDir
Festlegen von Attributinformationen für eine Datei.	SetAttr
Kopieren einer Datei.	FileCopy
Umbenennen einer Datei, eines Verzeichnisses oder eines Ordners.	Name
Zurückgeben der Dateilänge.	FileLen
Zurückgeben der Datums-/Zeitangabe einer Datei.	FileDateTime
Zurückgeben des aktuellen Pfads.	CurDir
Zurückgeben des Dateinamens oder der Datenträgerbezeichnung.	Dir
Zurückgeben von Datei-, Verzeichnis- oder Bezeichnungsattributen.	GetAttr


Fehler-Schlüsselwörter (Zusammenfassung)

Aktion	Schlüsselwörter
Abrufen von Fehlermeldungen.	Error
Auffangen von Fehlern zur Laufzeit.	On Error, Resume
Erzeugen von Laufzeitfehlern.	Clear, Error, Raise
Stellt Fehlerinformationen zur Verfügung.	Err
Typüberprüfung.	IsError
Zurückgeben eines Error-Variants.	CVErr


Finanzmathematische Schlüsselwörter (Zusammenfassung)

Aktion	Schlüsselwörter
Berechnen der Abschreibung.	DDB, SLN, SYD
Berechnen der Anzahl der Zeiträume.	Nper
Berechnen des aktuellen Werts.	NPV, PV
Berechnen des internen Zinsflusses.	IRR, MIRR
Berechnen des Zinssatzes.	Rate
Berechnen des zukünftigen Werts.	FV
Berechnen von Zahlungen.	Ipmt, Pmt, Ppmt


Eingabe- und Ausgabe-Schlüsselwörter (Zusammenfassung)

Aktion	Schlüsselwörter
Abrufen von Informationen über eine Datei.	EOF, FileAttr, FileDateTime, FileLen, FreeFile, GetAttr, Loc, LOF, Seek
Festlegen der Schreib-/Leseposition in einer Datei.	Seek
Festlegen oder Abrufen von Dateiattributen.	FileAttr, GetAttr, SetAttr
Kopieren einer Datei.	FileCopy
Lesen aus einer Datei.	Get, Input, Input #, Line Input #
Schließen von Dateien.	Close, Reset
Schreiben in eine Datei.	Print #, Put, Write #
Steuern des Darstellung der Ausgabe.	Format, Print, Print #, Spc, Tab, Width #
Verwalten von Dateien.	Dir, Kill, Lock, Unlock, Name
Zugreifen auf eine Datei oder Erstellen einer Datei.	Open
Zurückgeben der Dateilänge.	FileLen


Mathematik-Schlüsselwörter (Zusammenfassung)

Aktion	Schlüsselwörter
Ableiten trigonometrischer Funktionen.	Atn, Cos, Sin, Tan
Abrufen des Absolutwertes.	Abs
Abrufen des Vorzeichens eines Ausdrucks.	Sgn
Allgemeine Berechnungen.	Exp, Log, Sqr
Durchführen von numerischen Umwandlungen.	Fix, Int
Erzeugen von Zufallszahlen.	Randomize, Rnd


Schlüsselwörter zu verschiedenen Bereichen (Zusammenfassung)

Aktion	Schlüsselwörter
Abspielen eines Klangs vom Computer.	Beep
Ausführen anderer Programme.	AppActivate, Shell
Automatisierung	CreateObject, GetObject
Farbe	QBColor, RGB
Senden von Tastenanschlägen an eine Anwendung.	SendKeys
Stellt eine Befehlszeilenzeichenfolge zur Verfügung	Command
System	Environ
Verarbeiten ausstehender Ereignisse.	DoEvents


Operatoren-Schlüsselwörter (Zusammenfassung)

Aktion	Schlüsselwörter
Arithmetische Operatoren.	^, – , *,  /, \, Mod, +, &, =
Logische Operationen.	Not, And, Or, Xor, Eqv, Imp
Vergleich	=, <>, <, >, <=, >=, Like, Is


Registrierung-Schlüsselwörter (Zusammenfassung)

Aktion	Schlüsselwörter
Lesen von Programmeinstellungen.	GetSetting, GetAllSettings
Löschen von Programmeinstellungen.	DeleteSetting
Speichern von Programmeinstellungen.	SaveSetting


Zeichenfolgenverarbeitung-Schlüsselwörter (Zusammenfassung)

Aktion	Schlüsselwörter
Arbeiten mit ASCII- und ANSI-Werten.	Asc, Chr
Ausrichten einer Zeichenfolge.	LSet, RSet
Bearbeiten von Zeichenfolgen.	InStr, Left, LTrim, Mid, Right, RTrim, Trim
Bestimmen der Länge einer Zeichenfolge.	Len
Erstellen einer Zeichenfolge mit sich wiederholenden Zeichen.	Space, String
Festlegen von Vergleichsregeln für Zeichenfolgen.	Option Compare
Formatieren einer Zeichenfolge.	Format
Umwandeln in Groß- oder Kleinschreibung.	Format, LCase, UCase
Umwandeln von Zeichenfolgen.	StrConv
Vergleichen zweier Zeichenfolgen.	StrComp


Variablen- und Konstanten-Schlüsselwörter (Zusammenfassung)

Aktion	Schlüsselwörter
Abrufen von Informationen über einen Variant-Wert.	IsArray, IsDate, IsEmpty, IsError, IsMissing, IsNull, IsNumeric, IsObject, TypeName, VarType
Anfordern expliziter Variablendeklarationen.	Option Explicit
Deklarieren eines Moduls als privat.	Option Private Module
Deklarieren von Variablen oder Konstanten.	Const, Dim, Private, Public, New, Static
Festlegen des Standarddatentyps.	DefTyp
Verweisen auf das aktuelle Objekt.	Me
Zuweisen eines Wertes.	Let


Auffangbare Fehler

Auffangbare Fehler können während der Ausführung einer Anwendung auftreten. Einige auffangbare Fehler können zudem zur Entwurfs- oder auch zur Kompilierungszeit auftreten. Mit Hilfe der On Error-Anweisung und des Err-Objekts können Sie auffangbare Fehler testen und darauf reagieren. Die nicht verwendeten Fehlernummern im Bereich von 1 - 1000 sind von Visual Basic für die zukünftige Verwendung reserviert.

Code	Meldung
3	Return ohne GoSub
5	Unzulässiger Prozeduraufruf
6	Überlauf
7	Nicht genügend Speicher
9	Index außerhalb des gültigen Bereichs
10	Datenfeld ist unveränderlich oder momentan gesperrt
11	Division durch Null
13	Typen unverträglich
14	Nicht genügend Zeichenfolgenspeicher
16	Ausdruck zu komplex
17	Angeforderte Operation nicht durchführbar
18	Unterbrechung durch Benutzer
20	Resume ohne Fehler
28	Nicht genügend Stapelspeicher
35	Sub, Function oder Property nicht definiert
47	Zu viele Clients für Code-Ressource oder DLL-Anwendung
48	Fehler beim Laden einer Code-Ressource oder DLL
49	Falsche Code-Ressource oder DLL-Aufrufkonvention
51	Interner Fehler
52	Dateiname oder -nummer falsch
53	Datei nicht gefunden
54	Falscher Dateimodus
55	Datei bereits geöffnet
57	Fehler beim Lesen von/Schreiben auf Gerät
58	Datei existiert bereits
59	Falsche Datensatzlänge
61	Datenträger voll
62	Einlesen hinter Dateiende
63	Falsche Datensatznummer
67	Zu viele Dateien
68	Gerät nicht verfügbar
70	Zugriff verweigert
71	Datenträger nicht bereit
74	Umbenennen bei Angabe unterschiedlicher Laufwerke nicht möglich
75	Fehler beim Zugriff auf Pfad/Datei
76	Pfad nicht gefunden
91	Objektvariable oder With-Blockvariable nicht festgelegt
92	For-Schleife nicht initialisiert
93	Ungültige Zeichenfolge für Mustervergleich
94	Ungültige Verwendung von Null
97	Eine Friend-Funktion kann nicht auf ein Objekt angewendet werden, das nicht eine Instanz der definierenden Klasse ist
98	Ein Eigenschafts- oder Methodenaufruf kann keinen Verweis auf ein privates Objekt enthalten, weder als Argument noch als Rückgabewert
298	Systemressource oder -DLL kann nicht geladen werden
320	Namen zeichenorientierter Geräte in Dateinamen unzulässig
321	Ungültiges Dateiformat
322	Erforderliche temporäre Datei kann nicht angelegt werden
325	Ungültiges Format in Ressourcendatei
327	Datenwert <Name> nicht gefunden
328	Ungültiger Parameter. Datenfelder können nicht geschrieben werden
335	Zugriff auf Systemregistrierung nicht möglich
336	Komponente nicht richtig registriert
337	Komponenten nicht gefunden
338	Komponente wurde nicht richtig ausgeführt
360	Objekt bereits geladen
361	Objekt kann weder ge- noch entladen werden
363	Angegebenes Steuerelement nicht gefunden
364	Objekt wurde entladen
365	Entladen in diesem Kontext nicht möglich
368	Datei <Datei> ist nicht mehr aktuell. Diese Programm benötigt eine neuere Version
371	Das angegebene Objekt kann nicht als aufrufendes Formular für Show() benutzt werden
380	Unzulässiger Eigenschaftswert
381	Ungültiger Index des Eigenschaftsfelds
382	Set wird zur Laufzeit nicht unterstützt
383	Set wird nicht unterstützt (schreibgeschützte Eigenschaft)
385	Index des Eigenschaftsfelds erforderlich
387	Set nicht zulässig
393	Get wird zur Laufzeit nicht unterstützt
394	Get wird nicht unterstützt (schreibgeschützte Eigenschaft)
400	Formular wird bereits angezeigt und kann daher nicht gebunden dargestellt werden
402	Das oberste gebundene Formular muß zuerst geschlossen oder ausgeblendet werden
419	Zugriff auf dieses Objekt verweigert
422	Eigenschaft nicht gefunden
423	Eigenschaft oder Methode nicht gefunden
424	Objekt erforderlich
425	Unzulässige Verwendung eines Objekts
429	Objekterstellung durch Komponente nicht möglich
430	Klasse unterstützt keine Automatisierung
432	Datei- oder Klassenname während Automatisierungsoperation nicht gefunden
438	Objekt unterstützt diese Eigenschaft oder Methode nicht
440	Automatisierungsfehler
442	Klassen- oder Objektbibliothek wurde getrennt
443	Automatisierungsobjekt hat keinen Standardwert
445	Objekt unterstützt diese Aktion nicht
446	Objekt unterstützt keine benannten Argumente
447	Objekt unterstützt die aktuelle Ländereinstellung nicht
448	Benanntes Argument nicht gefunden
449	Argument ist nicht optional
450	Falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft
451	Objekt ist keine Auflistung
452	Ungültiger Ordinalwert
453	Angegebene Code-Ressource nicht gefunden
454	Code-Ressource nicht gefunden
455	Fehler durch gesperrte Code-Ressource
457	Dieser Schlüssel ist bereits einem Element dieser Auflistung zugeordnet
458	Variable verwendet einen in Visual Basic nicht unterstützten Typ
459	Diese Gruppe von Ereignissen wird von diesem Objekt oder der Klasse nicht unterstützt
460	Zwischenablageformat ungültig
461	Methode oder Mitgliedsdaten nicht gefunden
462	Der Remote-Server-Computer existiert nicht oder ist nicht verfügbar
463	Klasse ist auf lokalem Computer nicht registriert
480	AutoRedraw-Bild kann nicht erstellt werden
481	Ungültiges Bild
482	Druckerfehler
483	Angegebene Eigenschaft wird vom Druckertreiber nicht unterstützt
484	Druckerinformationen können nicht vom System abgerufen werden. Stellen Sie sicher, daß der Drucker richtig installiert ist
485	Unzulässiger Bildtyp
486	Formular kann auf diesem Druckertyp nicht ausgedruckt werden
520	Zwischenablage kann nicht geleert werden
521	Zwischenablage kann nicht geöffnet werden
735	Datei kann nicht in TEMP-Verzeichnis gespeichert werden
744	Suchtext nicht gefunden
746	Begriff zum Ersetzen zu lang
31001	Nicht genügend Speicher
31004	Kein Objekt
31018	Klasse ist nicht festgelegt
31027	Objekt kann nicht aktiviert werden
31032	Eingebettetes Objekt kann nicht erstellt werden
31036	Fehler beim Speichern einer Datei
31037	Fehler beim Laden einer Datei


AddressOf-Operator

Ein unärer Operator, der bewirkt, daß die Adresse der Prozedur, der er vorangestellt ist, an eine API-Prozedur übergeben wird, die an dieser Stelle in der Liste der Argumente einen Funktionszeiger sucht.

Syntax

AddressOf Prozedurname

Der erforderliche Prozedurname gibt die Prozedur an, deren Adresse übergeben werden soll. Er muß für eine Prozedur in einem Standardmodul in dem Projekt stehen, in dem der Aufruf erfolgt.

Anmerkungen

Tritt ein Prozedurname in einer Argumentliste auf, wird normalerweise die Prozedur ausgewertet, und die Adresse des Rückgabewerts der Prozedur wird übergeben. AddressOf ermöglicht, daß die Adresse der Prozedur an eine Windows-API-Funktion in einer Dynamic Link Library (DLL) übergeben wird und nicht der Rückgabewert der Prozedur. Die API-Funktion kann dann die Adresse für den Aufruf der Basic-Prozedur verwenden. Dieser Vorgang wird als Rückruf bezeichnet. Der AddressOf-Operator tritt nur im Aufruf an die API-Prozedur auf.

Sie können zwar AddressOf verwenden, um Prozedurzeiger zwischen Basic-Prozeduren zu übergeben, Sie können mit Hilfe eines solchen Zeigers jedoch keine Funktion innerhalb von Basic aufrufen. Das bedeutet, daß z.B. eine in Basic geschriebene Klasse mit einem derartigen Zeiger keinen Rückruf an den zugehörigen Controller durchführen kann. Wird AddressOf für das Übergeben eines Prozedurzeigers zwischen Prozeduren innerhalb von Basic verwendet, muß der Parameter der aufgerufenen Prozedur als As Long eingegeben werden.

Achtung   Das Verwenden von AddressOf kann nicht vorhersehbare Ergebnisse liefern, wenn Sie mit dem Konzept von Funktionsrückrufen nicht vollständig vertraut sind. Zur Verwendung dieses Operators muß Ihnen bekannt sein, wie der Basic-Teil des Rückrufs und der Code der DLL funktioniert, an die Sie die Funktionsadresse übergeben. Das Debuggen solcher Interaktionen ist häufig schwierig, da das Programm im selben Prozess ausgeführt wird, wie die Entwicklungsumgebung. In manchen Fällen ist ein systematisches Debuggen unter Umständen nicht möglich.

Anmerkung   Sie können eigene Prototypen für Rückruffunktionen in DLLs erstellen, die mit Microsoft Visual C++ (oder ähnlichen Programmen) kompiliert werden. Damit AddressOf mit dem Prototyp eingesetzt werden kann, muß dieser die Aufrufkonvention __stdcall verwenden. Die Standardaufrufkonvention (__cdecl) kann mit AddressOf nicht verwendet werden.

Da sich der Aufrufer eines Rückrufs nicht innerhalb des Programms befindet, ist es wichtig, daß ein Fehler in der Rückrufprozedur nicht an den Aufrufer zurückgeleitet wird. Fügen Sie hierzu die On Error Resume Next-Anweisung am Anfang der Rückrufprozedur ein.


Assert-Methode

Unterbricht in bestimmten Fällen die Ausführung in der Zeile, in der die Methode auftritt.

Syntax

Objekt.Assert boolescher Ausdruck

Die Syntax der Assert-Methode verfügt über den Objektbezeichner und das Argument, die in der nachstehenden Tabelle angegeben sind:

Teil	Beschreibung
Objekt	Erforderlich. Immer das Debug-Objekt.
boolescher Ausdruck	Erforderlich. Ein Ausdruck, der den Wert True oder False ergibt.
Anmerkungen

Assert-Aufrufe können nur innerhalb der Entwicklungsumgebung verwendet werden. Wenn das Modul in eine ausführbare Datei kompiliert wird, werden die Methodenaufrufe auf das Debug-Objekt ausgelassen.

Boolescher Ausdruck wird immer vollständig ausgewertet. Selbst wenn z.B. der erste Teile eines And-Ausdrucks den Wert False ergibt, wird der gesamte Ausdruck ausgewertet.


Friend-Schlüsselwort

Ändert die Definition einer Prozedur in einem Formularmodul oder Klassenmodul, damit die Prozedur von Modulen aufgerufen werden kann, die sich außerhalb der Klasse befinden, jedoch Teil des Projekts sind, in dem die Klasse definiert ist. Friend-Prozeduren können nicht in Standardmodulen verwendet werden.

Syntax

[Private | Friend | Public] [Static] [Sub | Function | Property] Prozedurname

Der erforderliche Prozedurname ist der Name der Prozedur, die im ganzen Projekt sichtbar gemacht werden soll, für Controller der Klasse jedoch nicht sichtbar sein soll.

Anmerkungen

Public-Prozeduren in einer Klasse können von einer beliebigen Stelle aus aufgerufen werden, selbst von Controllern der Instanzen der Klasse. Durch Deklarieren einer Prozedur als Private wird verhindert, daß Controller des Objekts die Prozedur aufrufen und daß die Prozedur von dem Projekt aus aufgerufen wird, in dem die eigentliche Klasse definiert ist. Friend macht die Prozedur im ganzen Projekt sichtbar, nicht jedoch für den Controller einer Instanz des Objekts. Friend kann nur in Formularmodulen und Klassenmodulen verwendet werden und kann nur Prozedurnamen, nicht Variablen oder Typen ändern. Die Prozeduren in einer Klasse können auf die Friend-Prozeduren aller anderen Klassen in einem Projekt zugreifen. Friend-Prozeduren werden nicht in der Klassenbibliothek ihrer eigenen Klasse angezeigt. Eine Friend-Prozedur kann nicht zur Laufzeit auflösbar sein.


RaiseEvent-Anweisung

Löst ein Ereignis aus, das auf Modulebene innerhalb einer Klasse, eines Formulars oder eines Dokuments deklariert wurde.

Syntax

RaiseEvent Ereignisname [(Argumentliste)]

Bei dem erforderlichen Ereignisnamen handelt es sich um den Namen eines Ereignisses, das innerhalb des Moduls deklariert wurde. Der Name muß den Benennungsvereinbarungen für Basic-Variablen entsprechen.

Die Syntax der RaiseEvent-Anweisung besteht aus folgenden Teilen:

Teil	Beschreibung
Ereignisname	Erforderlich. Name des auszulösenden Ereignisses.
Argumentliste	Optional. Liste der Variablen, Arrays oder Ausdrücke, die durch Kommas voneinander getrennt sind. Die Argumentliste muß in runde Klammern eingeschlossen sein. Sind keine Argumente vorhanden, müssen die runden Klammern ausgelassen werden.
Anmerkungen

Wurde das Ereignis nicht innerhalb des Moduls deklariert, in dem es ausgelöst wird, tritt ein Fehler auf. Der folgende Beispielcode zeigt eine Ereignisdeklaration und die Prozedur, in der das Ereignis ausgelöst wird.

' Declare an event at module level of a class module

Event LogonCompleted (UserName as String)

Sub

' Raise the event.

RaiseEvent LogonCompleted ("AntoineJan")

End Sub

Verfügt das Ereignis nicht über Argumente (bzw. über leere runde Klammern) in RaiseEvent, verursacht das Aufrufen des Ereignisses einen Fehler. Sie können mit RaiseEvent keine Ereignisse auslösen, die nicht explizit im Modul deklariert wurden. Verfügt ein Formular z.B. über ein Click-Ereignis, kann dieses Click-Ereignis nicht mit RaiseEvent ausgelöst werden. Deklarieren Sie ein Click-Ereignis im Formularmodul, verdeckt dieses das eigene Click-Ereignis des Formulars. Sie können das Click-Ereignis des Formulars zwar mit der üblicherweise für dieses Ereignis verwendeten Syntax aufrufen, nicht jedoch mit der RaiseEvent-Anweisung.

Das Auslösen von Ereignissen erfolgt in der Reihenfolge, in der Verbindungen hergestellt werden. Da Ereignisse über ByRef-Parameter verfügen können, empfängt ein Prozess, der zu einem späteren Zeitpunkt zugeschaltet wird, möglicherweise Parameter, die von einer früheren Ereignisbehandlungsroutine geändert wurden.


AddressOf-Operator (Beispiel)

Mit Hilfe des folgenden Beispielcodes wird ein Formular mit einem Listenfeld erstellt, das eine alphabetisch sortierte Liste der Schriften im System enthält.

Um diesen Beispielcode auszuführen, erstellen Sie ein Formular mit einem Listenfeld:

Option Explicit

Private Sub Form_Load()

    Module1.FillListWithFonts List1

End Sub

Fügen Sie den folgenden Code in ein Modul ein. Das dritte Argument in der Definition der EnumFontFamilies-Funktion ist ein Long-Argument, das eine Prozedur darstellt. Das Argument muss die Adresse der Prozedur und nicht den Wert enthalten, den die Prozedur zurückgibt. Im Aufruf von EnumFontFamilies benötigt das dritte Argument den AddressOf-Operator, um die Adresse der EnumFontFamProc-Prozedur zurückzugeben, wobei es sich um den Namen der Rückrufprozedur handelt, den Sie beim Aufruf der Windows-API-Funktion EnumFontFamilies angeben. Windows ruft EnumFontFamProc einmal für jede Schriftartenfamilie im System auf, wenn AddressOf EnumFontFamProc an EnumFontFamilies übergeben wird. Das letzte an EnumFontFamilies übergebene Argument definiert das Listenfeld, in dem die Informationen angezeigt werden.

'Font enumeration types

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

' ntmFlags field flags

Public Const NTM_REGULAR = &H40&

Public Const NTM_BOLD = &H20&

Public Const NTM_ITALIC = &H1&

'  tmPitchAndFamily flags

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 Masks

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


Assert-Methode (Beispiel)

Am folgenden Beispiel wird die Verwendung der Assert-Methode erläutert. Für das Beispiel wird ein Formular mit zwei Schaltflächensteuerelementen benötigt. Die Standardschaltflächennamen lauten Command1 und Command2.

Wird der Beispielcode ausgeführt, wechselt beim Klicken auf die Schaltfläche Command1 der Schaltflächentext zwischen 0 und 1. Beim Klicken auf Command2 erfolgt, abhängig von dem auf Command1 angezeigten Wert, entweder keine Aktion oder eine Bestätigung. Durch die Bestätigung wird die Ausführung mit der letzten ausgeführten Anweisung (der weiter unten hervorgehobenen Debug.Assert-Zeile) beendet.

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 = "Assert Tester"

End Sub


Friend-Schlüsselwort (Beispiel)

Durch Einfügen des folgenden Codes in ein Klassenmodul erhalten alle Benutzer der Klasse innerhalb des Projekts Zugriff auf die Mitgliedsvariable dblBalance. Der Wert ist für jeden Benutzer verfügbar; nur Code innerhalb des Projekts kann dieser Variablen einen Wert zuweisen.

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


RaiseEvent-Anweisung (Beispiel)

Im folgenden Beispiel werden Ereignisse verwendet, um während einer Demonstration des schnellsten 100-Meter-Laufs die Sekunden zu zählen. Der Code enthält alle ereignisbezogenen Methoden, Eigenschaften und Anweisungen einschließlich der RaiseEvent-Anweisung.

Die Klasse, die ein Ereignis auslöst, ist die Ereignisquelle; die Klassen, die das Ereignis implementieren, werden als Ereignisziele (Sinks) bezeichnet. Eine Ereignisquelle kann über mehrere Ereignisziele für die ausgelösten Ereignisse verfügen. Löst die Klasse das Ereignis aus, wird dieses Ereignis auf jede Klasse angewendet, die als Ereignisziel für diese Instanz des Objekts festgelegt wurde.

Darüber hinaus werden in dem Beispiel ein Formular (Form1) mit einer Schaltfläche (Command1), ein Bezeichnungsfeld (Label1) und zwei Textfelder (Text1 und Text2) verwendet. Beim Klicken auf die Schaltfläche wird im ersten Textfeld "From Now" angezeigt, und im zweiten startet das Zählen der Sekunden. Ist die gesamte Zeit (9,84 Sekunden) verstrichen, wird im ersten Textfeld "Until Now" und im zweiten "9.84" angezeigt.

Der Code für Form1 legt den Anfangs- und den Endstatus des Formulars fest. Er enthält außerdem den Code, der beim Auslösen von Ereignissen ausgeführt wird.

Option Explicit

Private WithEvents mText As TimerState

Private Sub Command1_Click()

    Text1.Text = "From Now"

    Text1.Refresh

    Text2.Text = "0"

    Text2.Refresh

    Call mText.TimerTask(9.84)

End Sub

Private Sub Form_Load()

    Command1.Caption = "Click to Start Timer"

    Text1.Text = ""

    Text2.Text = ""

    Label1.Caption = "The fastest 100 meters ever run took this long:"

    Set mText = New TimerState

    End Sub

Private Sub mText_ChangeText()

    Text1.Text = "Until Now"

    Text2.Text = "9.84"

End Sub

Private Sub mText_UpdateTime(ByVal dblJump As Double)

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

    DoEvents

End Sub

Der übrige Code befindet sich in dem Klassenmodul TimerState. In den Befehlen dieses Moduls sind die Raise Event-Anweisungen enthalten.

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


Character Set (128 - 255)
Character Set (128 – 255)

128	•	160	[space]	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	ÿ
•	These characters aren't supported by Microsoft Windows.

The values in the table are the Windows default. However, values in the ANSI character set above 127 are determined by the code page specific to your operating system.


Date Format-Konstanten

Diese Konstanten sind nur verfügbar, wenn es in Ihrem Projekt einen ausdrücklichen Bezug auf die entsprechende Klassenbibliothek, die diese Konstantendefinitionen enthält, gibt.

Konstante	Wert	Beschreibung
vbGeneralDate	0	Zum Anzeigen eines Datums und/oder einer Uhrzeit. Bei echten Zahlen wird ein Datum und eine Uhrzeit angezeigt. Wenn es keinen Bruchteil gibt, wird nur das Datum angezeigt. Wenn es keine Ganzzahl gibt, wird nur die Zeit angezeigt. Die Anzeige von Datum und Uhrzeit wird von den Systemeinstellungen bestimmt.
vbLongDate	1	Zum Anzeigen eines Datums im langen Datumsformat, das in den Ländereinstellungen Ihres Computers festgelegt ist.
vbShortDate	2	Zum Anzeigen eines Datums im kurzen Datumsformat, das in den Ländereinstellungen Ihres Computers festgelegt ist.
vbLongTime	3	Zum Anzeigen einer Uhrzeit im langen Zeitformat, das in den Ländereinstellungen Ihres Computers festgelegt ist.
vbShortTime	4	Zum Anzeigen einer Uhrzeit im kurzen Zeitformat, das in den Ländereinstellungen Ihres Computers festgelegt ist.


DriveType-Konstanten

Diese Konstanten sind nur verfügbar, wenn es in Ihrem Projekt einen ausdrücklichen Bezug auf die entsprechende Klassenbibliothek, die diese Konstantendefinitionen enthält, gibt.

Konstante	Wert	Beschreibung
Unknown	0	Der Laufwerkstyp kann nicht festgestellt werden.
Removable	1	Das Laufwerk enthält austauschbare Medien. Dazu gehören alle Diskettenlaufwerke sowie eine Vielzahl weiterer Speichergeräte.
Fixed	2	Das Laufwerk enthält feste (nicht austauschbare) Medien. Dazu gehören alle Festplattenlaufwerke, einschließlich Wechselplatten.
Remote	3	Netzwerklaufwerke. Dazu gehören Laufwerke, die an einer beliebigen Stelle des Netzwerks gemeinsam benutzt werden.
CDROM	4	Beim Laufwerk handelt es sich um ein CD-ROM-Laufwerk. Es wird kein Unterschied zwischen CD-ROM-Laufwerken, von denen nur gelesen und solchen von denen gelesen und auf die geschrieben werden kann, gemacht.
RAMDisk	5	Das Laufwerk ist ein Block von nichtlüchtigem Speicher (RAM) auf dem lokalen Computer, der sich wie ein Plattenlaufwerk verhält.


File Attribute-Konstanten

Diese Konstanten sind nur verfügbar, wenn es in Ihrem Projekt einen ausdrücklichen Bezug auf die entsprechende Klassenbibliothek, die diese Konstantendefinitionen enthält, gibt.

Konstante	Wert	Beschreibung
Normal	0	Normale Datei. Es sind keine Attribute festgelegt.
ReadOnly	1	Schreibgeschützte Datei. Das Attribut lautet lesen/schreiben.
Hidden	2	Verborgene Datei. Das Attribut lautet lesen/schreiben.
System	4	Systemdatei. Das Attribut lautet lesen/schreiben.
Volume	8	Datenträgerbezeichnung des Laufwerks. Das Attribut ist schreibgeschützt.
Directory	16	Ordner oder Verzeichnis. Das Attribut ist schreibgeschützt.
Archive	32	Die Datei hat sich seit der letzten Sicherung geändert. Das Attribut lautet lesen/schreiben.
Alias	64	Verknüpfung. Das Attribut ist schreibgeschützt.
Compressed	128	Komprimierte Datei. Das Attribut ist schreibgeschützt.


File Input/Output-Konstanten

Diese Konstanten sind nur verfügbar, wenn es in Ihrem Projekt einen ausdrücklichen Bezug auf die entsprechende Klassenbibliothek, die diese Konstantendefinitionen enthält, gibt.

Konstante	Wert	Beschreibung
ForReading	1	Öffnet eine Datei, die nur gelesen werden kann. Sie können nicht in diese Datei schreiben.
ForWriting	2	Öffnet eine Datei zum Schreiben. Wenn es eine Datei mit dem gleichen Namen gibt, wird der frühere Inhalt überschrieben.
ForAppending	8	Öffnet eine Datei und schreibt an das Ende dieser.


SpecialFolder-Konstanten

Diese Konstanten sind nur verfügbar, wenn es in Ihrem Projekt einen ausdrücklichen Bezug auf die entsprechende Klassenbibliothek, die diese Konstantendefinitionen enthält, gibt.

Konstante	Wert	Beschreibung
WindowsFolder	0	Der Windows-Ordner enthält die vom Betriebssystem Windows installierten Dateien.
SystemFolder	1	Der Systemordner enthält Bibliotheken, Schriften und Gerätetreiber.
TemporaryFolder	2	Im Temp-Ordner werden die temporären Dateien gespeichert. Sein Pfad ist in der TMP-Umgebungsvariablen enthalten.


Tristate-Konstanten

Diese Konstanten sind nur verfügbar, wenn es in Ihrem Projekt einen ausdrücklichen Bezug auf die entsprechende Klassenbibliothek, die diese Konstantendefinitionen enthält, gibt.

Konstante	Wert	Beschreibung
vbTrue	–1	Wahr
vbFalse	0	Falsch
vbUseDefault	–2	Verwendung der Standardeinstellung


Filter-Funktion

Beschreibung

Gibt ein nullbasiertes Datenfeld zurück, das eine Untermenge eines Zeichenfolgen-Datenfelds basierend auf festgelegten Filterkriterien enthält.

Syntax

Filter(sourcearray, match[,include [,compare]])

Die Syntax der Filter-Funktion besteht aus folgenden benannten Argumenten:

Teil	Beschreibung
sourcearray	Erforderlich. Eindimensionales Zeichenfolgen-Datenfeld, das durchsucht werden soll.
match	Erforderlich. Die Zeichenfolge, nach der gesucht werden soll.
include	Optional. Boolescher Wert, der angibt, ob untergeordnete Zeichenfolgen, die match aufnehmen oder ausschließen, zurückgegeben werden sollen. Wenn include True ist, gibt Filter eine Untermenge des Datenfeldes zurück, das match als untergeordnete Zeichenfolge enthält. Wenn include False ist, gibt Filter eine Untermenge des Datenfeldes zurück, das match nicht als untergeordnete Zeichenfolge enthält.
compare	Optional. Numerischer Wert, der angibt, welche Art des Zeichenfolgenvergleichs verwendet werden soll. Werte finden Sie im Abschnitt Einstellungen.
Einstellungen

Das Argument compare kann folgende Werte haben:

Konstante	Wert	Beschreibung
vbUseCompareOption	–1	Führt einen Vergleich unter Verwendung der Option Compare-Anweisung durch.
vbBinaryCompare	0	Führt einen binären Vergleich durch.
vbTextCompare	1	Führt einen Textvergleich durch.
vbDatabaseCompare	2	Nur Microsoft Access. Führt einen Vergleich anhand der Informationen in Ihrer Datenbank durch.
Anmerkungen

Wenn in sourcearray keine Übereinstimmungen für match gefunden werden, gibt Filter ein leeres Datenfeld zurück. Es kommt zu einem Fehler, wenn sourcearray Null oder kein eindimensionales Datenfeld ist.

Das von der Filter-Funktion zurückgegebene Datenfeld enthält lediglich genügend Elemente, um die Anzahl der übereinstimmenden Elemente aufzunehmen.


FormatCurrency-Funktion

Beschreibung

Gibt unter Verwendung der in der Systemsteuerung definierten Währung einen als Währungswert formatierten Ausdruck zurück.

Syntax

FormatCurrency(Ausdruck[,AnzahlZiffernNachDezimalpunkt [,FührendeZifferAufnehmen [,ÜbergeordneteAlsNegativeZahlenVerwenden [,ZiffernGruppieren]]]])

Die Syntax der FormatCurrency-Funktion besteht aus folgenden Teilen:

Teil	Beschreibung
Ausdruck	Erforderlich. Zu formatierender Ausdruck.
AnzahlZiffernNachDezimalpunkt	Optional. Numerischer Wert, der angibt, wie viele Stellen rechts vom Dezimalpunkt angezeigt werden. Der Standardwert ist –1, d. h. die Ländereinstellungen des Computers werden verwendet.
FührendeZifferAufnehmen	Optional. Tristate-Konstante, die angibt, ob bei Bruchzahlen eine führende Null angezeigt wird oder nicht. Werte finden Sie im Abschnitt Einstellungen.
ÜbergeordneteAlsNegativeZahlenVerwenden	Optional. Tristate-Konstante, die angibt, ob negative Werte in Klammern gesetzt werden oder nicht. Werte finden Sie im Abschnitt Einstellungen.
ZiffernGruppieren	Optional. Tristate-Konstante, die angibt, ob Zahlen mit Hilfe des Trennzeichens zwischen Gruppen, das in den Ländereinstellungen des Computers festgelegt ist, getrennt werden oder nicht. Werte finden Sie im Abschnitt Einstellungen.
Einstellungen

Die Argumente FührendeZifferAufnehmen, ÜbergeordneteAlsNegativeZahlenVerwenden und ZiffernGruppieren haben folgende Einstellungen:

Konstante	Wert	Beschreibung
vbTrue	–1	Wahr
vbFalse	0	Falsch
vbUseDefault	–2	Verwenden Sie die Einstellungen in den Ländereinstellungen des Computers.
Anmerkungen

Wenn ein oder mehrere optionale Argumente ausgelassen werden, werden die Werte für ausgelassene Argumente von den Ländereinstellungen des Computers bereitgestellt.

Die Position des Währungssymbols im Verhältnis zum Währungswert ergibt sich aus den Ländereinstellungen des Systems.

Hinweis   Alle Einstellungsinformationen stammen von der Registerkarte Währung des Dialogfeldes Eigenschaften von Ländereinstellungen, mit Ausnahme der führenden Null, die von der Registerkarte Zahlen stammt.


FormatDateTime-Funktion

Beschreibung

Gibt einen als Datum oder Uhrzeit formatierten Ausdruck zurück.

Syntax

FormatDateTime(Datum[,BenanntesFormat])

Die Syntax der FormatDateTime-Funktion besteht aus folgenden Teilen:

Teil	Beschreibung
Datum	Erforderlich. Der zu formatierende Datenausdruck.
BenanntesFormat	Optional. Numerischer Wert, der das verwendete Datums-/Zeitformat angibt. Wird dieser Wert ausgelassen, wird vbGeneralDate verwendet.
Einstellungen

Das Argument BenanntesFormat hat folgende Einstellungen:

Konstante	Wert	Beschreibung
vbGeneralDate	0	Zeigt ein Datum und/oder eine Uhrzeit an. Wenn es ein Datum gibt, wird es in Kurzform angezeigt. Wenn es eine Uhrzeit gibt, wird sie im langen Format angezeigt. Falls vorhanden werden beide Teile angezeigt.
vbLongDate	1	Zeigt ein Datum im langen Datumsformat an, das in den Ländereinstellungen des Computers festgelegt ist.
vbShortDate	2	Zeigt ein Datum im kurzen Datumsformat an, das in den Ländereinstellungen des Computers festgelegt ist.
vbLongTime	3	Zeigt eine Uhrzeit in dem Zeitformat an, das in den Ländereinstellungen des Computers festgelegt ist.
vbShortTime	4	Zeigt eine Uhrzeit im 24-Stundenformat (hh:mm) an.


FormatNumber-Funktion

Beschreibung

Gibt einen als Zahl formatierten Ausdruck zurück.

Syntax

FormatNumber(Ausdruck[,AnzahlZiffernNachDezimalpunkt [,FührendeZifferAufnehmen [,ÜbergeordneteAlsNegativeZahlenVerwenden [,ZiffernGruppieren]]]])

Die Syntax der FormatNumber-Funktion besteht aus folgenden Teilen:

Teil	Beschreibung
Ausdruck	Erforderlich. Der zu formatierende Ausdruck.
AnzahlZiffernNachDezimalpunkt	Optional. Numerischer Wert, der angibt, wie viele Stellen rechts vom Dezimalpunkt angezeigt werden. Der Standardwert ist –1, d. h. die Ländereinstellungen des Computers werden verwendet.
FührendeZifferAufnehmen	Optional. Tristate-Konstante, die angibt, ob bei Bruchzahlen eine führende Null angezeigt wird oder nicht. Werte finden Sie im Abschnitt Einstellungen.
ÜbergeordneteAlsNegativeZahlenVerwenden	Optional. Tristate-Konstante, die angibt, ob negative Werte in Klammern gesetzt werden oder nicht. Werte finden Sie im Abschnitt Einstellungen.
ZiffernGruppieren	Optional. Tristate-Konstante, die angibt, ob Zahlen mit Hilfe des Trennzeichens zwischen Gruppen, das in den Ländereinstellungen des Computers festgelegt ist, getrennt werden oder nicht. Werte finden Sie im Abschnitt Einstellungen.
Einstellungen

Die Argumente FührendeZifferAufnehmen, ÜbergeordneteAlsNegativeZahlenVerwenden und ZiffernGruppieren haben folgende Einstellungen:

Konstante	Wert	Beschreibung
vbTrue	–1	Wahr
vbFalse	0	Falsch
vbUseDefault	–2	Verwenden Sie die Einstellungen in den Ländereinstellungen des Computers.
Anmerkungen

Wenn ein oder mehrere optionale Argumente ausgelassen werden, werden die Werte für ausgelassene Argumente von den Ländereinstellungen des Computers bereitgestellt.

Hinweis   Alle Einstellungsinformationen stammen von der Registerkarte Zahlen des Dialogfeldes Eigenschaften von Ländereinstellungen.


FormatPercent-Funktion

Beschreibung

Gibt einen als Prozentsatz formatierten Wert (mit 100 multipliziert) gefolgt von dem %-Zeichen zurück.

Syntax

FormatPercent(Ausdruck[,AnzahlZiffernNachDezimalpunkt [,FührendeZifferAufnehmen [,ÜbergeordneteAlsNegativeZahlenVerwenden [,ZiffernGruppieren]]]])

Die Syntax der FormatPercent-Funktion besteht aus folgenden Teilen:

Teil	Beschreibung
Ausdruck	Erforderlich. Der zu formatierende Ausdruck.
AnzahlZiffernNachDezimalpunkt	Optional. Numerischer Wert, der angibt, wie viele Stellen rechts vom Dezimalpunkt angezeigt werden. Der Standardwert ist –1, d. h. die Ländereinstellungen des Computers werden verwendet.
FührendeZifferAufnehmen	Optional. Tristate-Konstante, die angibt, ob bei Bruchzahlen eine führende Null angezeigt wird oder nicht. Werte finden Sie im Abschnitt Einstellungen.
ÜbergeordneteAlsNegativeZahlenVerwenden	Optional. Tristate-Konstante, die angibt, ob negative Werte in Klammern gesetzt werden oder nicht. Werte finden Sie im Abschnitt Einstellungen.
ZiffernGruppieren	Optional. Tristate-Konstante, die angibt, ob Zahlen mit Hilfe des Trennzeichens zwischen Gruppen, das in den Ländereinstellungen des Computers festgelegt ist, getrennt werden oder nicht. Werte finden Sie im Abschnitt Einstellungen.
Einstellungen

Die Argumente FührendeZifferAufnehmen, ÜbergeordneteAlsNegativeZahlenVerwenden und ZiffernGruppieren haben folgende Einstellungen:

Konstante	Wert	Beschreibung
vbTrue	–1	Wahr
vbFalse	0	Falsch
vbUseDefault	–2	Verwenden Sie die Einstellungen in den Ländereinstellungen des Computers.
Anmerkungen

Wenn ein oder mehrere optionale Argumente ausgelassen werden, werden die Werte für ausgelassene Argumente von den Ländereinstellungen des Computers bereitgestellt.

Hinweis   Alle Einstellungsinformationen stammen von der Registerkarte Zahlen des Dialogfeldes Eigenschaften von Ländereinstellungen.


InStrRev-Funktion

Beschreibung

Gibt die Position eines Vorkommnisses einer Zeichenfolge in einer anderen Zeichenfolge vom Ende der Zeichenfolge gesehen an.

Syntax

InstrRev(stringcheck, stringmatch [, start[, compare]])

Die Syntax der InstrRev-Funktion besteht aus folgenden benannten Argumenten:

Teil	Beschreibung
stringcheck	Erforderlich. Der zu durchsuchende Zeichenfolgenausdruck.
stringmatch	Erforderlich. Zeichenfolgenausdruck, nach dem gesucht wird.
start	Optional. Numerischer Ausdruck, der die Anfangsposition für jede Suche festlegt. Wird er ausgelassen, wird –1 verwendet, d. h. die Suche beginnt an der letzten Zeichenposition. Wenn starten Null enthält, kommt es zu einem Fehler.
compare	Optional. Numerischer Wert, der die Art des Vergleichs angibt, der beim Beurteilen von untergeordneten Zeichenfolgen verwendet werden soll. Wird er ausgelassen, wird ein binärer Vergleich ausgeführt. Werte finden Sie im Abschnitt Einstellungen.
Einstellungen

Das Argument vergleichen kann folgende Werte haben:

Konstante	Wert	Beschreibung
vbUseCompareOption	–1	Führt einen Vergleich unter Verwendung der Option Compare-Anweisung durch.
vbBinaryCompare	0	Führt einen binären Vergleich durch.
vbTextCompare	1	Führt einen Textvergleich durch.
vbDatabaseCompare	2	Nur Microsoft Access. Führt einen Vergleich anhand der Informationen in Ihrer Datenbank durch.
Rückgabewerte

InStrRev gibt folgende Werte zurück:

Wenn	gibt InStrRev folgendes zurück
stringcheck die Länge Null hat	0
stringcheck Null ist	Null
stringmatch die Länge Null hat	starten
stringmatch Null ist	Null
stringmatch nicht gefunden wird	0
stringmatch nicht in stringcheck gefunden wird	Die Position, an der die Übereinstimmung gefunden wurde
starten > Len(stringmatch)	0
Anmerkungen

Beachten Sie, daß die Syntax der InstrRev-Funktion nicht mit der Syntax der Instr-Funktion übereinstimmt.


Join-Funktion

Beschreibung

Gibt eine Zeichenfolge zurück, die sich aus der Kombination einer Reihe von untergeordneten Zeichenfolgen, die in einem Datenfeld enthalten sind, ergibt.

Syntax

Join(sourcearray [, delimiter])

Die Syntax der Join-Funktion besteht aus folgenden benannten Argumenten:

Teil	Beschreibung
sourcearray	Erforderlich. Eindimensionales Datenfeld, das die zu kombinierenden, untergeordneten Zeichenfolgen enthält.
delimiter	Optional. Zeichen einer Zeichenfolge, mit dem die untergeordneten Zeichenfolgen in der zurückgegebenen Zeichenfolge getrennt werden. Wird es ausgelassen, wird das Leerstellenzeichen (" ") verwendet. Wenn delimiter eine Zeichenfolge der Länge Null ("") ist, werden alle Elemente in der Liste ohne Trennzeichen verkettet.


MonthName-Funktion

Beschreibung

Gibt eine Zeichenfolge zurück, die den festgelegten Monat angibt.

Syntax

MonthName(Monat[, abkürzen])

Die Syntax der MonthName-Funktion besteht aus folgenden Teilen:

Teil	Beschreibung
Monat	Erforderlich. Die numerische Bezeichnung des Monats, z. B. 1 für Januar, 2 für Februar usw.
abkürzen	Optional. Boolescher Wert, der angibt, ob der Monatsname abgekürzt wird. Wird er ausgelassen, ist die Standardeinstellung False, d. h. der Monatsname wird nicht abgekürzt.


Replace-Funktion

Beschreibung

Gibt eine Zeichenfolge zurück, in der eine festgelegte, untergeordnete Zeichenfolge mit einer festgelegten Häufigkeit durch eine andere untergeordnete Zeichenfolge ersetzt wurde.

Syntax

Replace(expression, find, replace[, start[, count[, compare]]])

Die Syntax der Replace-Funktion besteht aus folgenden Teilen:

Teil	Beschreibung
expression	Erforderlich. Zeichenfolgenausdruck, der die zu ersetzende, untergeordnete Zeichenfolge enthält.
find	Erforderlich. Die untergeordnete Zeichenfolge, nach der gesucht wird.
replace	Erforderlich. Die untergeordnete Ersatzzeichenfolge.
start	Optional. Position in expression, an der die Suche nach der untergeordneten Zeichenfolge beginnt. Wird diese Angabe ausgelassen, wird bei 1 begonnen.
count	Optional. Anzahl der durchzuführenden Ersetzungen der untergeordneten Zeichenfolge. Wird diese Angabe ausgelassen, ist die Standardeinstellung –1, d.h. alle möglichen Zeichenfolgen werden ersetzt.
compare	Optional. Numerischer Wert, der die Art des Vergleichs angibt, der beim Beurteilen von untergeordneten Zeichenketten verwendet werden soll. Werte finden Sie im Abschnitt Einstellungen.
Einstellungen

Das Argument compare kann folgende Werte haben:

Konstante	Wert	Beschreibung
vbUseCompareOption	–1	Führt einen Vergleich unter Verwendung der Option Compare-Anweisung durch.
vbBinaryCompare	0	Führt einen binären Vergleich durch.
vbTextCompare	1	Führt einen Textvergleich durch.
vbDatabaseCompare	2	Nur Microsoft Access. Führt einen Vergleich anhand der Informationen in Ihrer Datenbank durch.
Rückgabewerte

Replace gibt folgende Werte zurück:

Wenn	gibt Replace folgendes zurück
expression die Länge Null hat	Eine Zeichenfolge der Länge Null ("")
expression Null ist	Einen Fehler.
find die Länge Null hat	Eine Kopie von expression.
replace die Länge Null hat	Eine Kopie von expression, aus dem alle Vorkommnisse von suchen entfernt wurden.
start > Len(expression)	Eine Zeichenfolge der Länge Null.
count 0 ist	Eine Kopie von expression.
Anmerkungen

Der Rückgabewert der Replace-Funktion ist eine Zeichenfolge, bei der Ersetzungen durchgeführt wurde, die an der von start festgelegten Position beginnt, und die am Ende der Zeichenfolge expression endet. Er stellt von Anfang bis Ende keine Kopie der Originalzeichenfolge dar.


Round-Funktion

Beschreibung

Gibt eine Zahl zurück, die auf eine festgelegte Anzahl an Dezimalpunkten gerundet wurde.

Syntax

Round(Ausdruck [,AnzahlAnDezimalpunktn])

Die Syntax der Round-Funktion besteht aus folgenden Teilen:

Teil	Beschreibung
Ausdruck	Erforderlich. Numerischer Ausdruck, der gerundet wird.
AnzahlAnDezimalpunkten	Optional. Zahl, die angibt, wie viele Stellen rechts vom Dezimalpunkt beim Runden berücksichtigt werden. Wird dieser Wert ausgelassen, gibt die Round-Funktion Ganzzahlen zurück.


Split-Funktion

Beschreibung

Gibt ein nullbasiertes, eindimensionales Datenfeld zurück, das eine festgelegte Anzahl an untergeordneten Zeichenfolgen enthält.

Syntax

Split(expression[, delimiter[, limit[, compare]]])

Die Syntax der Split-Funktion besteht aus folgenden benannten Argumenten:

Teil	Beschreibung
expression	Erforderlich. Zeichenfolgenausdruck, der untergeordnete Zeichenfolgen und Trennzeichen enthält. Wenn expression eine Zeichenfolge der Länge Null ("") ist, gibt Split ein leeres Datenfeld zurück, d. h. ein Datenfeld ohne Elemente und ohne Daten.
delimiter	Optional. Zeichen einer Zeichenfolge, mit der die Grenzen von untergeordneten Zeichenfolgen identifiziert werden. Wird es ausgelassen, wird das Leerstellenzeichen (" ") als Trennzeichen verwendet. Wenn delimiter eine Zeichenfolge der Länge Null ist, wird ein aus einem Element bestehendes Datenfeld, das die gesamte Zeichenfolge von expression enthält, zurückgegeben.
Limit	Optional. Anzahl der zurückzugebenden untergeordneten Zeichenfolgen; –1 gibt an, daß alle untergeordneten Zeichenfolgen zurückgegeben werden.
compare	Optional. Numerischer Wert, der die Art des Vergleichs angibt, der beim Beurteilen von untergeordneten Zeichenketten verwendet werden soll. Werte finden Sie im Abschnitt Einstellungen.
Einstellungen

Das Argument compare kann folgende Werte haben:

Konstante	Wert	Beschreibung
vbUseCompareOption	–1	Führt einen Vergleich unter Verwendung der Option Compare-Anweisung durch.
vbBinaryCompare	0	Führt einen binären Vergleich durch.
vbTextCompare	1	Führt einen Textvergleich durch.
vbDatabaseCompare	2	Nur Microsoft Access. Führt einen Vergleich anhand der Informationen in Ihrer Datenbank durch.


StrReverse-Funktion

Beschreibung

Gibt eine Zeichenfolge zurück, in der die Reihenfolge der Zeichen einer bestimmten Zeichenfolge umgekehrt wurde.

Syntax

StrReverse(expression)

Das Argument expression ist die Zeichenfolge, deren Zeichen umgekehrt werden sollen. Wenn es sich bei expression um eine Zeichenfolge der Länge Null ("") handelt, wird eine Zeichenfolge der Länge Null zurückgegeben. Wenn expression Null ist, kommt es zu einem Fehler.


WeekdayName-Funktion

Beschreibung

Gibt eine Zeichenfolge zurück, die den festgelegten Wochentag angibt.

Syntax

WeekdayName(Wochentag, abkürzen, ErsterWochentag)

Die Syntax der WeekdayName-Funktion besteht aus folgenden Teilen:

Teil	Beschreibung
Wochentag	Erforderlich. Die numerische Bezeichnung des Wochentages. Der numerische Wert der einzelnen Tage hängt von der Einstellung für ErsterWochentag ab.
abkürzen	Optional. Boolescher Wert, dar angibt, ob der Name des Wochentages abgekürzt wird. Wird er ausgelassen, ist die Standardeinstellung False, d. h. der Name des Wochentages wird nicht abgekürzt.
ErsterWochentag	Optional. Numerischer Wert, der den ersten Tag der Woche angibt. Werte finden Sie im Abschnitt Einstellungen.
Einstellungen

Das Argument ErsterWochentag kann folgende Werte haben:

Konstante	Wert	Beschreibung
vbUseSystem	0	Einstellung für National Language Support (NLS) API verwenden.
vbSunday	1	Sonntag (Standardeinstellung)
vbMonday	2	Montag
vbTuesday	3	Dienstag
vbWednesday	4	Mittwoch
vbThursday	5	Donnerstag
vbFriday	6	Freitag
vbSaturday	7	Samstag


Add-Methode (Dictionary)

Beschreibung

Fügt einem Dictionary-Objekt ein Schlüssel-Element-Paar hinzu.

Syntax

Objekt.Add Schlüssel, Element

Die Syntax der Add-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines Dictionary-Objekts.
Schlüssel	Erforderlich. Der mit dem hinzuzufügenden Element verknüpfte Schlüssel.
Element	Erforderlich. Das mit dem hinzuzufügenden Schlüssel verknüpfte Element.
Anmerkungen

Wenn der Schlüssel bereits existiert, kommt es zu einem Fehler.


Add-Methode (Folders)

Beschreibung

Fügt einer Folders-Auflistung ein neues Folder-Objekt hinzu.

Syntax

Objekt.Add Ordnername

Die Syntax der Add-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name einer Folders-Auflistung.
Ordnername	Erforderlich. Der Name des neuen, hinzuzufügenden Folder-Objekts.
Anmerkungen

Wenn der Ordnername bereits existiert, kommt es zu einem Fehler.


BuildPath-Methode

Beschreibung

Fügt einem vorhandenen Pfad einen Namen hinzu.

Syntax

Objekt.BuildPath(Pfad, Name)

Die Syntax der BuildPath-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines FileSystemObject.
Pfad	Erforderlich. Vorhandener Pfad, an den Name angehängt wird. Der Pfad kann absolut oder relativ sein und muß keinen vorhandenen Ordner angeben.
Name	Erforderlich. Der an den vorhandenen Pfad angehängte Name.
Anmerkungen

Die BuildPath-Methode fügt zwischen dem vorhandenen Pfad und dem Namen nur dann ein weiteres Trennzeichen hinzu, wenn es absolut notwendig ist.


Close-Methode

Beschreibung

Schließt eine geöffnete TextStream-Datei.

Syntax

Objekt.Close

Das Objekt ist immer der Name eines TextStream-Objekts.


Copy-Methode

Beschreibung

Kopiert eine angegebene Datei oder einen angegebenen Ordner von einem Ort an einen anderen.

Syntax

Objekt.Copy Ziel[, überschreiben]

Die Syntax der Copy-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines File- oder Folder-Objekts.
Ziel	Erforderlich. Das Ziel, an das die Datei oder der Ordner kopiert werden. Platzhalterzeichen sind nicht zulässig.
überschreiben	Optional. Boolescher Wert, der True ist (Voreinstellung), wenn vorhandene Dateien oder Ordner überschrieben werden sollen, bzw. der False ist, wenn sie nicht überschrieben werden sollen.
Anmerkungen

Die Ergebnisse der Copy-Methode für ein File- oder Folder-Objekt sind mit den Operationen identisch, die bei der Verwendung von FileSystemObject.CopyFile oder FileSystemObject.CopyFolder durchgeführt werden, bei denen die Datei oder der Ordner, auf die/den durch Objekt verwiesen wird, als Argument weitergegeben werden. Sie müssen allerdings beachten, daß die alternativen Methoden in der Lage sind, mehrere Dateien oder Ordner zu kopieren.


CopyFile-Methode

Beschreibung

Kopiert eine oder mehrere Dateien von einem Ort an einen anderen.

Syntax

Objekt.CopyFile Quelle, Ziel[, überschreiben]

Die Syntax der CopyFile-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Das Objekt ist immer der Name eines FileSystemObject.
Quelle	Erforderlich. Zeichenfolge für die Dateispezifikation für eine oder mehrere zu kopierende Dateien, die Platzhalterzeichen enthalten kann.
Ziel	Erforderlich. Zeichenfolge für das Ziel, an das die Datei(en) aus Quelle kopiert werden soll(en). Platzhalterzeichen sind nicht zulässig.
überschreiben	Optional. Boolescher Wert, der angibt, ob vorhandene Dateien überschrieben werden sollen. Wenn er True ist, werden die Dateien überschrieben; ist er False, werden sie nicht überschrieben. Die Voreinstellung ist True. Beachten Sie, daß CopyFile unabhängig vom Wert für überschreiben fehlschlägt, wenn für Ziel das schreibgeschützte Attribut festgelegt wurde.
Anmerkungen

Platzhalterzeichen können nur in der letzten Pfadkomponente des Arguments Quelle verwendet werden. Sie können z.B. folgendes verwenden:

FileSystemObject.CopyFile "c:\mydocuments\letters\*.doc", "c:\tempfolder\"

Nicht aber:

FileSystemObject.CopyFile "c:\mydocuments\*\R1???97.xls", "c:\tempfolder"

Wenn Quelle Platzhalterzeichen enthält oder Ziel mit einem Pfadtrennzeichen (\) endet, wird angenommen, daß Ziel ein vorhandener Ordner ist, in den übereinstimmende Dateien kopiert werden sollen. Andernfalls wird angenommen, daß Ziel der Name einer zu erstellenden Datei ist. In beiden Fällen können beim Kopieren einer einzelnen Datei drei Dinge auftreten.

•	Wenn es das Ziel nicht gibt, wird Quelle kopiert. Dies ist normalerweise der Fall.

•	Wenn das Ziel sich in einer vorhandenen Datei befindet, kommt es zu einem Fehler, wenn überschreiben False ist. Andernfalls wird der Versuch unternommen, die Quelle über die vorhandene Datei zu kopieren.

•	Wenn es sich beim Ziel um ein Verzeichnis handelt, kommt es zu einem Fehler.

Es kommt außerdem zu einem Fehler, wenn eine Quelle, die Platzhalterzeichen verwendet, mit keiner der Dateien übereinstimmt. Die CopyFile-Methode hält beim ersten aufgetretenen Fehler an. Es wird nicht versucht, Änderungen zurückzusetzen oder aufzuheben, die vor dem Auftreten eines Fehlers durchgeführt wurden.


CopyFolder-Methode

Beschreibung

Kopiert einen Ordner von einem Ort an einen anderen.

Syntax

Objekt.CopyFolder Quelle, Ziel[, überschreiben]

Die Syntax der CopyFolder-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines FileSystemObject.
Quelle	Erforderlich. Zeichenfolge für die Ordnerspezifikation für einen oder mehrere zu kopierende Ordner, die Platzhalterzeichen enthalten kann.
Ziel	Erforderlich. Zeichenfolge für das Ziel, an das die Ordner und Unterordner aus Quelle kopiert werden sollen. Platzhalterzeichen sind nicht zulässig.
überschreiben	Optional. Boolescher Wert, der angibt, ob vorhandene Ordner überschrieben werden. Wenn er True ist, werden die Ordner überschrieben; ist er False, werden sie nicht überschrieben. Die Voreinstellung ist True.
Anmerkungen

Platzhalterzeichen können nur in der letzten Pfadkomponente des Arguments Quelle verwendet werden. Sie können z.B. folgendes verwenden:

FileSystemObject.CopyFolder "c:\mydocuments\letters\*", "c:\tempfolder\"

Nicht aber:

FileSystemObject.CopyFolder "c:\mydocuments\*\*", "c:\tempfolder\"

Wenn Quelle Platzhalterzeichen enthält oder Ziel mit einem Pfadtrennzeichen (\) endet, wird angenommen, daß Ziel ein vorhandener Ordner ist, in den übereinstimmende Ordner und Unterordner kopiert werden sollen. Andernfalls wird angenommen, daß Ziel der Name eines zu erstellenden Ordners ist. In beiden Fällen können beim Kopieren eines einzelnen Ordners vier Dinge passieren.

•	Wenn es Ziel nicht gibt, wird der Quellordner und sein gesamter Inhalt kopiert. Dies ist normalerweise der Fall.

•	Wenn Ziel eine vorhandene Datei ist, kommt es zu einem Fehler.

•	Wenn es sich bei Ziel um ein Verzeichnis handelt, wird versucht, den Ordner und seinen gesamten Inhalt zu kopieren. Wenn eine in Quelle enthaltene Datei bereits in Ziel vorhanden ist, kommt es zu einem Fehler, wenn überschreiben False ist. Andernfalls wird versucht, die Datei über die vorhandene Datei zu kopieren.

•	Wenn es sich bei Ziel um ein schreibgeschütztes Verzeichnis handelt, kommt es zu einem Fehler, wenn Sie versuchen, eine vorhandene schreibgeschützte Datei in dieses Verzeichnis zu kopieren und überschreiben False ist.

Es kommt außerdem zu einem Fehler, wenn eine Quelle, die Platzhalterzeichen verwendet, mit keinem der Ordner übereinstimmt.

Die CopyFolder-Methode hält beim ersten aufgetretenen Fehler an. Es wird nicht versucht, Änderungen zurückzusetzen oder aufzuheben, die vor dem Auftreten eines Fehlers durchgeführt wurden.


CreateFolder-Methode

Beschreibung

Erstellt einen Ordner.

Syntax

Objekt.CreateFolder(Ordnername)

Die Syntax der CreateFolder-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines FileSystemObject.
Ordnername	Erforderlich. Zeichenfolgenausdruck, der den zu erstellenden Ordner identifiziert.
Anmerkungen

Wenn der angegebene Ordner bereits existiert, kommt es zu einem Fehler.


CreateTextFile-Methode

Beschreibung

Erstellt einen angegebenen Dateinamen und gibt ein TextStream-Objekt zurück, das zum Lesen aus und Schreiben in die Datei verwendet werden kann.

Syntax

Objekt.CreateTextFile(Dateiname[, überschreiben[, Unicode]])

Die Syntax der CreateTextFile-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines FileSystemObject oder Folder-Objekts.
Dateiname	Erforderlich. Zeichenfolgendausdruck , der die zu erstellende Datei identifiziert.
überschreiben	Optional. Boolescher Wert, der angibt, ob eine vorhandene Datei überschrieben werden kann. Wenn er True ist, kann die Datei überschrieben werden; ist er False, kann sie nicht überschrieben werden. Wenn er ausgelassen wird, werden vorhandene Dateien nicht überschrieben.
Unicode	Optional. Boolescher Wert, der angibt, ob die Datei als Unicode- oder ASCII-Datei erstellt wird. Der Wert ist True, wenn die Datei als Unicode-Datei erstellt wird, bzw. False, wenn sie als ASCII-Datei erstellt wird. Wird für den Wert keine Angabe gemacht, wird von einer ASCII-Datei ausgegangen.
Anmerkungen

Der folgende Code veranschaulicht, wie Sie mit der CreateTextFile-Methode eine Textdatei erstellen und öffnen:

Sub CreateAfile

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set a = fs.CreateTextFile("c:\testfile.txt", True)

    a.WriteLine("Dies ist ein Test.")

    a.Close

End Sub

Wenn das Argument überschreiben für einen bereits vorhandenen Dateinamen False oder nicht angegebenen ist, kommt es zu einem Fehler.


Delete-Methode

Beschreibung

Löscht eine angegebene Datei oder einen angegebenen Ordner.

Syntax

Objekt.Delete erzwingen

Die Syntax der Delete-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines File- oder Folder-Objekts.
erzwingen	Optional. Boolescher Wert, der True ist, wenn Dateien oder Ordner im schreibgeschützten Attributsatz gelöscht werden sollen, bzw. der False ist (Voreinstellung), wenn sie nicht gelöscht werden sollen.
Anmerkungen

Wenn die angegebene Datei oder der angegebene Ordner nicht existiert, kommt es zu einem Fehler.

Die Ergebnisse der Delete-Methode bei einem File- oder Folder-Objekt sind mit den Operationen identisch, die bei der Verwendung von FileSystemObject.DeleteFile oder FileSystemObject.DeleteFolder ausgeführt werden.

Die Delete-Methode macht keinen Unterschied zwischen Ordnern mit und solchen ohne Inhalt. Der angegebene Ordner wird unabhängig von seinem Inhalt gelöscht.


DeleteFile-Methode

Beschreibung

Löscht eine angegebene Datei.

Syntax

Objekt.DeleteFile Dateispez[, erzwingen]

Die Syntax der DeleteFile-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines FileSystemObject.
Dateispez	Erforderlich. Der Name der zu löschenden Datei. Die Dateispez kann in der letzten Pfadkomponente Platzhalterzeichen enthalten.
erzwingen	Optional. Boolescher Wert, der True ist, wenn Dateien mit Schreibschutzattribut gelöscht werden sollen, bzw. der False ist (Voreinstellung), wenn sie nicht gelöscht werden sollen.
Anmerkungen

Es kommt zu einem Fehler, wenn keine übereinstimmenden Dateien gefunden werden. Die DeleteFile-Methode hält beim ersten aufgetretenen Fehler an. Es wird nicht versucht, Änderungen zurückzusetzen oder aufzuheben, die vor dem Auftreten eines Fehlers durchgeführt wurden.


DeleteFolder-Methode

Beschreibung

Löscht einen angegebenen Ordner und seinen Inhalt.

Syntax

Objekt.DeleteFolder Ordnerspez[, erzwingen]

Die Syntax der DeleteFolder-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines FileSystemObject.
Ordnerspez	Erforderlich. Der Name des zu löschenden Ordners. Die Ordnerspez kann in der letzten Pfadkomponente Platzhalterzeichen enthalten.
erzwingen	Optional. Boolescher Wert, der True ist, wenn Ordner mit Schreibschutzattribut gelöscht werden sollen, bzw. der False ist (Voreinstellung), wenn sie nicht gelöscht werden sollen.
Anmerkungen

Die DeleteFolder-Methode macht keinen Unterschied zwischen Ordnern mit und solchen ohne Inhalt. Der angegebene Ordner wird unabhängig von seinem Inhalt gelöscht.

Es kommt zu einem Fehler, wenn keine übereinstimmenden Ordner gefunden werden. Die DeleteFolder-Methode hält beim ersten aufgetretenen Fehler an. Es wird nicht versucht, Änderungen zurückzusetzen oder aufzuheben, die vor dem Auftreten eines Fehlers durchgeführt wurden.


DriveExists-Methode

Beschreibung

Gibt True zurück, wenn es das angegebene Laufwerk gibt, bzw. False, wenn es dieses nicht gibt.

Syntax

Objekt.DriveExists(Laufwerkspez)

Die Syntax der DriveExists-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines FileSystemObject.
Laufwerkspez	Erforderlich. Ein Laufwerkbuchstabe oder eine vollständige Pfadangabe.
Anmerkungen

Bei Laufwerken mit austauschbaren Medien, gibt die DriveExists-Methode True zurück, auch wenn es keine Medien gibt. Verwenden Sie die IsReady-Eigenschaft des Drive-Objekts, um herauszufinden, ob ein Laufwerk verfügbar ist.


Exists-Methode

Beschreibung

Gibt True zurück, wenn es einen angegebenen Schlüssel im Dictionary-Objekt gibt, bzw. False, wenn dies nicht der Fall ist.

Syntax

Objekt.Exists(Schlüssel)

Die Syntax der Exists-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines Dictionary-Objekts.
Schlüssel	Erforderlich. Der Wert für Schlüssel, nach dem im Dictionary-Objekt gesucht wird.


FileExists-Methode

Beschreibung

Gibt True zurück, wenn eine angegebene Datei vorhanden ist, bzw. False, wenn dies nicht der Fall ist.

Syntax

Objekt.FileExists(Dateispez)

Die Syntax der FileExists-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines FileSystemObject.
Dateispez	Erforderlich. Der Name der Datei, von der Sie wissen möchten, ob sie existiert. Sie müssen eine (entweder absolute oder relative) vollständige Pfadangabe machen, wenn Sie davon ausgehen, daß die Datei nicht im aktuellen Ordner vorhanden ist.


FolderExists-Methode

Beschreibung

Gibt True zurück, wenn ein angegebener Ordner vorhanden ist, bzw. False, wenn dies nicht der Fall ist.

Syntax

Objekt.FolderExists(Ordnerspez)

Die Syntax der FolderExists-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines FileSystemObject.
Ordnerspez	Erforderlich. Der Name des Ordners, von dem Sie wissen möchten, ob er existiert. Sie müssen eine (entweder absolute oder relative) vollständige Pfadangabe machen, wenn Sie davon ausgehen, daß der Ordner nicht im aktuellen Ordner vorhanden ist.


GetAbsolutePathName-Methode

Beschreibung

Gibt einen vollständigen und eindeutigen Pfad aus einer angegebenen Pfadspezifikation zurück.

Syntax

Objekt.GetAbsolutePathName(Pfadspez)

Die Syntax der GetAbsolutePathName-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines FileSystemObject.
Pfadspez	Erforderlich. Pfadangabe, die in einen vollständigen und eindeutigen Pfad geändert werden soll.
Anmerkungen

Ein Pfad ist vollständig und eindeutig, wenn er einen vollständigen Verweis auf den Stamm des angegebenen Laufwerks enthält. Ein vollständiger Pfad kann nur mit einem Pfadtrennzeichen enden (\), wenn er den Stammordner eines zugeordneten Laufwerks definiert.

Angenommen, das aktuelle Verzeichnis ist c:\mydocuments\reports, dann veranschaulicht die folgende Tabelle das Verhalten der GetAbsolutePathName-Methode.

Pfadspez	Zurückgegebener Pfad
"c:"	"c:\mydocuments\reports"
"c:.."	"c:\mydocuments"
"c:\\\"	"c:\"
"c:*.*\may97"	"c:\mydocuments\reports\*.*\may97"
"region1"	"c:\mydocuments\reports\region1"
"c:\..\..\mydocuments"	"c:\mydocuments"


GetBaseName-Methode

Beschreibung

Gibt eine Zeichenfolge zurück, die den Stammnamen der letzten Komponente in einem Pfad ohne Dateinamenerweiterung enthält.

Syntax

Objekt.GetBaseName(Pfad)

Die Syntax der GetBaseName-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines FileSystemObject.
Pfad	Erforderlich. Die Pfadangabe für die Komponente, deren Stammname zurückgegeben werden soll.
Anmerkungen

Die GetBaseName-Methode gibt eine Zeichenfolge mit der Länge Null ("") zurück, wenn keine Komponente dem Argument Pfad entspricht.

Hinweis   Die GetBaseName-Methode wird nur mit der für Pfad angegebenen Zeichenfolge ausgeführt. Sie versucht nicht, den Pfad aufzulösen und prüft auch die Existenz des angegebenen Pfads nicht.


GetDrive-Methode

Beschreibung

Gibt ein Drive-Objekt zurück, das mit dem Laufwerk in einem angegebenen Pfad übereinstimmt.

Syntax

Objekt.GetDrive Laufwerkspez

Die Syntax der GetDrive-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines FileSystemObject.
Laufwerkspez	Erforderlich. Das Argument Laufwerkspez kann ein Laufwerkbuchstabe (c), ein Laufwerkbuchstabe mit einem Doppelpunkt (c:), ein Laufwerkbuchstabe mit einem Doppelpunkt und einem Pfadtrennzeichen (c:\) oder eine beliebige Netzwerkressourcenspezifikation (\\computer2\share1) sein.
Anmerkungen

Bei Netzwerkressourcen wird eine Prüfung durchgeführt, um sicherzustellen, daß die Ressource vorhanden ist.

Es kommt zu einem Fehler, wenn Laufwerkspez nicht einer der akzeptierten Formen entspricht oder wenn es sie nicht gibt.

Um die GetDrive-Methode für eine normale Pfadzeichenfolge aufzurufen, verwenden Sie die folgende Sequenz, um eine Zeichenfolge zu erhalten, die für die Verwendung als Laufwerkspez geeignet ist:

Laufwerkspez = GetDriveName(GetAbsolutePathName(Path))


GetDriveName-Methode

Beschreibung

Gibt eine Zeichenfolge zurück, die den Namen des Laufwerks für einen angegebenen Pfad enthält.

Syntax

Objekt.GetDriveName(Pfad)

Die Syntax der GetDriveName-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines FileSystemObject.
Pfad	Erforderlich. Die Pfadangabe für die Komponente, deren Laufwerkname zurückgegeben werden soll.
Anmerkungen

Die GetDriveName-Methode gibt eine Zeichenfolge der Länge Null ("") zurück, wenn das Laufwerk nicht bestimmt werden kann.

Hinweis   Die GetDriveName-Methode wird nur mit der für den Pfad angegebenen Zeichenfolge ausgeführt. Sie versucht nicht, den Pfad aufzulösen und prüft auch die Existenz des angegebenen Pfads nicht.


GetExtensionName-Methode

Beschreibung

Gibt eine Zeichenfolge zurück, die die Dateierweiterung der letzten Komponente in einem Pfad enthält.

Syntax

Objekt.GetExtensionName(Pfad)

Die Syntax der GetExtensionName-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines FileSystemObject.
Pfad	Erforderlich. Die Pfadangabe für die Komponente, deren Dateierweiterung zurückgegeben werden soll.
Anmerkungen

Bei Netzwerklaufwerken wird das Stammverzeichnis (\) als Komponente angesehen.

Die GetExtensionName-Methode gibt eine Zeichenfolge der Länge Null ("") zurück, wenn keine Komponente dem Argument Pfad entspricht.


GetFile-Methode

Beschreibung

Gibt ein File-Objekt zurück, das der Datei in einem angegebenen Pfad entspricht.

Syntax

Objekt.GetFile(Dateispez)

Die Syntax der GetFile-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines FileSystemObject.
Dateispez	Erforderlich. Die Dateispez ist der (absolute oder relative) Pfad zu einer spezifischen Datei.
Anmerkungen

Wenn es die angegebene Datei nicht gibt, kommt es zu einem Fehler.


GetFileName-Methode

Beschreibung

Gibt die letzte Komponente eines angegebenen Pfads zurück, der nicht zur Laufwerkspezifikation gehört.

Syntax

Objekt.GetFileName(Pfadspez)

Die Syntax der GetFileName-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines FileSystemObject.
Pfadspez	Erforderlich. Der (absolute oder relative) Pfad zu einer spezifischen Datei.
Anmerkungen

Die GetFileName-Methode gibt eine Zeichenfolge der Länge Null ("") zurück, wenn Pfadspez nicht mit der genannten Komponente übereinstimmt.

Hinweis   Die GetFileName-Methode wird nur mit der für Pfad angegebenen Zeichenfolge ausgeführt. Sie versucht nicht, den Pfad aufzulösen und prüft auch die Existenz des angegebenen Pfads nicht.


GetFolder-Methode

Beschreibung

Gibt ein Folder-Objekt zurück, das dem Ordner in einem angegebenen Pfad entspricht.

Syntax

Objekt.GetFolder(Ordnerspez)

Die Syntax der GetFolder-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines FileSystemObject.
Ordnerspez	Erforderlich. Die Ordnerspez ist der (absolute oder relative) Pfad zu einem spezifischen Ordner.
Anmerkungen

Wenn der angegebene Ordner nicht existiert, kommt es zu einem Fehler.


GetParentFolderName-Methode

Beschreibung

Gibt eine Zeichenfolge zurück, die den Namen des übergeordneten Ordners der letzten Komponente in einem angegebenen Pfad enthält.

Syntax

Objekt.GetParentFolderName(Pfad)

Die Syntax der GetParentFolderName-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines FileSystemObject.
Pfad	Erforderlich. Die Pfadangabe für die Komponente, für die der Name des übergeordneten Ordners zurückgegeben werden soll.
Anmerkungen

Die GetParentFolderName-Methode gibt eine Zeichenfolge der Länge Null ("") zurück, wenn es für die im Argument Pfad angegebene Komponente keinen übergeordneten Ordner gibt.

Hinweis   Die GetParentFolderName-Methode wird nur mit der für Pfad angegebenen Zeichenfolge ausgeführt. Sie versucht nicht, den Pfad aufzulösen und prüft auch die Existenz des angegebenen Pfads nicht.


GetSpecialFolder-Methode

Beschreibung

Gibt den angegebenen Spezialordner zurück.

Syntax

Objekt.GetSpecialFolder(Ordnerspez)

Die Syntax der GetSpecialFolder-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines FileSystemObject.
Ordnerspez	Erforderlich. Der Name des Spezialordners, der zurückgegeben werden soll. Hierbei kann es sich um eine beliebige, im Abschnitt Einstellungen angegebene Konstante handeln.
Einstellungen

Das Argument Ordnerspez kann einen der folgenden Werte haben:

Konstante	Wert	Beschreibung
WindowsFolder	0	Der Windows-Ordner enthält die vom Betriebssystem Windows installierten Dateien.
SystemFolder	1	Der Systemordner enthält Bibliotheken, Schriften und Gerätetreiber.
TemporaryFolder	2	Der Temp-Ordner wird zum Speichern temporärer Dateien verwendet. Sein Pfad ist in der TMP-Umgebungsvariablen enthalten.


GetTempName-Methode

Beschreibung

Gibt einen willkürlich generierten Namen einer temporären Datei oder eines temporären Ordners zurück, der beim Ausführen von Operationen, bei denen eine temporäre Datei oder ein temporärer Ordner benötigt werden, nützlich ist.

Syntax

Objekt.GetTempName

Das optionale Objekt ist immer der Name eines FileSystemObject.

Anmerkungen

Die GetTempName-Methode erstellt keine Datei. Sie stellt lediglich einen temporären Dateinamen bereit, der mit CreateTextFile zum Erstellen einer Datei verwendet werden kann.


Items-Methode

Beschreibung

Gibt ein Datenfeld zurück, das alle Elemente in einem Dictionary-Objekt enthält.

Syntax

Objekt.Items

Das Objekt ist immer der Name eines Dictionary-Objekts.

Anmerkungen

Der folgende Code veranschaulicht die Verwendung der Items-Methode:

Dim a, d, i             'Einige Variablen erstellen

Set d = CreateObject("Scripting.Dictionary")

d.Add "a", "Athen"     'Einige Schlüssel und Elemente hinzufügen

d.Add "b", "Belgrad"

d.Add "c", "Kairo"

a = d.Items             'Die Elemente holen

For i = 0 To d.Count -1 'Datenfeld wiederholen

    Print a(i)          'Element drucken

Next

...


Keys-Methode

Beschreibung

Gibt ein Datenfeld mit allen vorhandenen Schlüsseln in einem Dictionary-Objekt zurück.

Syntax

Objekt.Keys

Das Objekt ist immer der Name eines Dictionary-Objekts.

Anmerkungen

Der folgende Code veranschaulicht die Verwendung der Keys-Methode:

Dim a, d, i             'Einige Variablen erstellen

Set d = CreateObject("Scripting.Dictionary")

d.Add "a", "Athen"     'Einige Schlüssel und Elemente hinzufügen.

d.Add "b", "Belgrad"

d.Add "c", "Kairo"

a = d.keys              'Die Schlüssel holen

For i = 0 To d.Count -1 'Datenfeld wiederholen

    Print a(i)          'Schlüssel drucken

Next

...


Move-Methode

Beschreibung

Verschiebt eine angegebene Datei oder einen angegebenen Ordner von einem Ort an einen anderen.

Syntax

Objekt.Move Ziel

Die Syntax der Move-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines File- oder Folder-Objekts.
Ziel	Erforderlich. Das Ziel, an das die Datei oder der Ordner verschoben werden soll. Platzhalterzeichen sind nicht zulässig.
Anmerkungen

Die Ergebnisse der Move-Methode bei einem File- oder Folder-Objekt sind mit den Operationen identisch, die bei der Verwendung von FileSystemObject.MoveFile oder FileSystemObject.MoveFolder durchgeführt werden. Beachten Sie aber, daß die alternativen Methoden zum Kopieren mehrerer Dateien oder Ordner in der Lage sind.


MoveFile-Methode

Beschreibung

Verschiebt eine oder mehrere Dateien von einem Ort an einen anderen.

Syntax

Objekt.MoveFile Quelle, Ziel

Die Syntax der MoveFile-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines FileSystemObject.
Quelle	Erforderlich. Der Pfad der zu verschiebenden Datei(en). Die Zeichenfolge des Arguments Quelle kann nur in der letzten Pfadkomponente Platzhalterzeichen enthalten.
Ziel	Erforderlich. Der Pfad zu dem Ort, an den die Datei(en) verschoben werden soll(en). Das Argument Ziel kann keine Platzhalterzeichen enthalten.
Anmerkungen

Wenn Quelle Platzhalterzeichen enthält oder Ziel mit einem Pfadtrennzeichen (\) endet, wird angenommen, daß Ziel einen vorhandenen Ordner angibt, in den die übereinstimmenden Dateien verschoben werden sollen. Andernfalls wird angenommen, daß Ziel der Name der zu erstellenden Zieldatei ist. In beiden Fällen können beim Kopieren einer einzelnen Datei drei Dinge passieren:

•	Wenn das Ziel nicht vorhanden ist, wird die Datei verschoben. Dies ist normalerweise der Fall.

•	Wenn Ziel eine bereits vorhandene Datei darstellt, kommt es zu einem Fehler.

•	Wenn es sich beim Ziel um ein Verzeichnis handelt, kommt es zu einem Fehler.

Es kommt außerdem zu einem Fehler, wenn ein in Quelle verwendetes Platzhalterzeichen mit keiner der Dateien übereinstimmt. Die MoveFile-Methode hält beim ersten aufgetretenen Fehler an. Es wird nicht versucht, Änderungen zurückzusetzen, die vor dem Auftreten eines Fehlers durchgeführt wurden.

Wichtig   Mit dieser Methode können Dateien nur zwischen Datenträgern verschoben werden, wenn dies vom Betriebssystem unterstützt wird.


MoveFolder-Methode

Beschreibung

Verschiebt einen oder mehrere Ordner von einem Ort an einen anderen.

Syntax

Objekt.MoveFolder Quelle, Ziel

Die Syntax der MoveFolder-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines FileSystemObject.
Quelle	Erforderlich. Der Pfad zu dem Ordner/den Ordnern, die verschoben werden sollen. Die Zeichenfolge des Arguments Quelle kann nur in der letzten Pfadkomponente Platzhalterzeichen enthalten.
Ziel	Erforderlich. Der Pfad des Ortes, an den der/die Ordner verschoben werden soll(en). Das Argument Ziel kann keine Platzhalterzeichen enthalten.
Anmerkungen

Wenn Quelle Platzhalterzeichen enthält oder Ziel mit einem Pfadtrennzeichen (\) endet, wird angenommen, daß Ziel einen vorhandenen Ordner angibt, in den die übereinstimmenden Dateien verschoben werden sollen. Andernfalls wird angenommen, daß Ziel der Name des zu erstellenden Zielordners ist. In beiden Fällen können beim Kopieren einer einzelnen Datei drei Dinge auftreten:

•	Wenn Ziel nicht existiert, wird der Ordner verschoben. Dies ist normalerweise der Fall.

•	Wenn Ziel eine vorhandene Datei darstellt, kommt es zu einem Fehler.

•	Wenn es sich bei Ziel um ein Verzeichnis handelt, kommt es zu einem Fehler.

Es kommt außerdem zu einem Fehler, wenn ein in Quelle verwendetes Platzhalterzeichen mit keinem der Ordner übereinstimmt. Die MoveFolder-Methode hält beim ersten aufgetretenen Fehler an. Es wird nicht versucht, Änderungen zurückzusetzen, die vor dem Auftreten eines Fehlers durchgeführt wurden.

Wichtig   Mit dieser Methode können Ordner nur zwischen Datenträgern verschoben werden, wenn dies vom Betriebssystem unterstützt wird.


OpenAsTextStream-Methode

Beschreibung

Öffnet eine angegebene Datei und gibt ein TextStream-Objekt zurück, das zum Lesen aus, zum Schreiben in und zum Anhängen an die Datei verwendet werden kann.

Syntax

Objekt.OpenAsTextStream([E/A-Modus, [Format]])

Die Syntax der OpenAsTextStream-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines File-Objekts.
E/A-Modus	Optional. Gibt den Ein-/Ausgabemodus an. Dieser kann eine von drei Konstanten sein: ForReading, ForWriting oder ForAppending.
Format	Optional. Einer der drei Tristate-Werte, mit dem das Format der geöffneten Datei angegeben wird. Wird für den Wert keine Angabe gemacht, wird die Datei im ASCII-Format geöffnet.
Einstellungen

Das Argument E/A-Modus kann eine der folgenden Einstellungen haben:

Konstante	Wert	Beschreibung
ForReading	1	Öffnet eine Datei nur zum Lesen. Sie können nicht in diese Datei schreiben.
ForWriting	2	Öffnet eine Datei zum Schreiben. Wenn es bereits eine Datei mit dem gleichen Namen gibt, wird der Inhalt der früheren Datei überschrieben.
ForAppending	8	Öffnet eine Datei und schreibt am Ende dieser.
Das Argument Format kann eine der folgenden Einstellungen haben:

Konstante	Wert	Beschreibung
TristateUseDefault	–2	Öffnet die Datei mit den Systemvorgaben.
TristateTrue	–1	Öffnet die Datei als Unicode-Datei.
TristateFalse	0	Öffnet die Datei als ASCII-Datei.
Anmerkungen

Die OpenAsTextStream-Methode bietet die gleichen Funktionsmerkmale wie die OpenTextFile-Methode des FileSystemObject. Darüber hinaus kann mit der OpenAsTextStream-Methode in eine Datei geschrieben werden.

Der folgende Code veranschaulicht die Verwendung der OpenAsTextStream-Methode:

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"            'Erstellen einer Datei

    Set f = fs.GetFile("test1.txt")

    Set ts = f.OpenAsTextStream(ForWriting, TristateUseDefault)

    ts.Write "Hallo Welt"

    ts.Close

    Set ts = f.OpenAsTextStream(ForReading, TristateUseDefault)

    s = ts.ReadLine

    MsgBox s

    ts.Close

End Sub


OpenTextFile-Methode

Beschreibung

Öffnet eine angegebene Datei und gibt ein TextStream-Objekt zurück, das zum Lesen aus oder Anhängen an die Datei verwendet werden kann.

Syntax

Objekt.OpenTextFile(Dateiname[, E/A-Modus[, erstellen[, Format]]])

Die Syntax der OpenTextFile-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines FileSystemObject.
Dateiname	Erforderlich. Zeichenfolgendausdruck, der die zu öffnende Datei kennzeichnet.
E/A-Modus	Optional. Gibt den Ein-/Ausgabemodus an. Dieser kann eine von zwei Konstanten sein: ForReading oder ForAppending.
erstellen	Optional. Boolescher Wert, der angibt, ob eine neue Datei erstellt werden kann, wenn es den angegebenen Dateinamen nicht gibt. Der Wert ist True, wenn eine neue Datei erstellt wird, bzw. False, wenn sie nicht erstellt wird. Die Voreinstellung ist False.
Format	Optional. Einer der drei Tristate-Werte, mit dem das Format der geöffneten Datei angegeben wird. Wird für den Wert keine Angabe gemacht, wird die Datei im ASCII-Format geöffnet.
Einstellungen

Das Argument E/A-Modus kann eine der folgenden Einstellungen haben:

Konstante	Wert	Beschreibung
ForReading	1	Öffnet eine Datei nur zum Lesen. Sie können nicht in diese Datei schreiben.
ForAppending	8	Öffnet eine Datei und schreibt am Ende dieser.
Das Argument Format kann eine der folgenden Einstellungen haben:

Konstante	Wert	Beschreibung
TristateUseDefault	–2	Öffnet die Datei mit den Systemvorgaben.
TristateTrue	–1	Öffnet die Datei als Unicode-Datei.
TristateFalse	0	Öffnet die Datei als ASCII-Datei.
Anmerkungen

Der folgende Code veranschaulicht die Verwendung der OpenTextFile-Methode zum Öffnen einer Datei, um ihr Text anzufügen:

Sub OpenTextFileTest

    Const ForReading = 1, ForWriting = 2, ForAppending = 3

    Dim fs, f

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.OpenTextFile("c:\testfile.txt", ForAppending,TristateFalse)

    f.Write "Hallo Welt!"

    f.Close

End Sub


Read-Methode

Beschreibung

Liest eine bestimmte Anzahl von Zeichen aus einer TextStream-Datei und gibt die resultierende Zeichenfolge zurück.

Syntax

Objekt.Read(Zeichen)

Die Syntax der Read-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines TextStream-Objekts.
Zeichen	Erforderlich. Anzahl der Zeichen, die Sie aus der Datei lesen möchten.


ReadAll-Methode

Beschreibung

Liest eine ganze TextStream-Datei und gibt die resultierende Zeichenfolge zurück.

Syntax

Objekt.ReadAll

Das Objekt ist immer der Name eines TextStream-Objekts.

Anmerkungen

Bei großen Dateien werden mit der ReadAll-Methode Systemressourcen verschwendet. Verwenden Sie zur Dateieingabe andere Methoden, z.B. das zeilenweise Lesen einer Datei.


ReadLine-Methode

Beschreibung

Liest eine ganze Zeile (bis zum Zeilenumbruchzeichen, aber nicht einschließlich) aus einer TextStream-Datei und gibt die resultierende Zeichenfolge zurück.

Syntax

Objekt.ReadLine

Das Argument Objekt ist immer der Name eines TextStream-Objekts.


Remove-Methode

Beschreibung

Entfernt ein Schlüssel-Element-Paar aus einem Dictionary-Objekt.

Syntax

Objekt.Remove(Schlüssel)

Die Syntax der Remove-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines Dictionary-Objekts.
Schlüssel	Erforderlich. Das mit dem Schlüssel-Element-Paar, das aus dem Dictionary-Objekt entfernt werden soll, verknüpfte Argument Schlüssel.
Anmerkungen

Wenn es das angegebene Schlüssel-Element-Paar nicht gibt, kommt es zu einem Fehler.

Der folgende Code veranschaulicht die Verwendung der Remove-Methode:

Dim a, d, i             'Einige Variablen erstellen

Set d = CreateObject("Scripting.Dictionary")

d.Add "a", "Athen"     'Einige Schlüssel und Elemente hinzufügen

d.Add "b", "Belgrad"

d.Add "c", "Kairo"

...

a = d.Remove()          'Zweites Paar entfernen


RemoveAll-Methode

Beschreibung

Die RemoveAll-Methode entfernt alle Schlüssel-Element-Paare aus einem Dictionary-Objekt.

Syntax

Objekt.RemoveAll

Das Objekt ist immer der Name eines Dictionary-Objekts.

Anmerkungen

Der folgende Code veranschaulicht die Verwendung der RemoveAll-Methode:

Dim a, d, i             'Einige Variablen erstellen

Set d = CreateObject("Scripting.Dictionary")

d.Add "a", "Athen"     'Einige Schlüssel und Elemente hinzufügen

d.Add "b", "Belgrad"

d.Add "c", "Kairo"

...

a = d.RemoveAll         'Inhalt des Wörterbuchs löschen


Skip-Methode

Beschreibung

Überspringt beim Lesen einer TextStream-Datei eine angegebene Anzahl von Zeichen.

Syntax

Objekt.Skip(Zeichen)

Die Syntax der Skip-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines TextStream-Objekts.
Zeichen	Erforderlich. Anzahl der Zeichen, die beim Lesen einer Datei übersprungen werden sollen.
Anmerkungen

Übersprungene Zeichen werden verworfen.


SkipLine-Methode

Beschreibung

Überspringt die nächste Zeile beim Lesen einer TextStream-Datei.

Syntax

Objekt.SkipLine

Das Objekt ist immer der Name eines TextStream-Objekts.

Anmerkungen

Beim Überspringen einer Zeile werden alle Zeichen in einer Zeile bis zum Zeilenumbruchzeichen, und einschließlich dieses, gelesen und verworfen.

Es kommt zu einem Fehler, wenn die Datei nicht zum Lesen geöffnet ist.


Write-Methode

Beschreibung

Schreibt eine angegebene Zeichenfolge in eine TextStream-Datei.

Syntax

Objekt.Write(Zeichenfolge)

Die Syntax der Write-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines TextStream-Objekts.
Zeichenfolge	Erforderlich. Der Text, den Sie in die Datei schreiben möchten.
Anmerkungen

Festgelegte Zeichenfolgen werden ohne Leerstellen oder Zeichen zwischen den Zeichenfolgen in die Datei geschrieben. Verwenden Sie die WriteLine-Methode, um ein Zeilenumbruchzeichen oder eine Zeichenfolge, die mit einem Zeilenumbruchzeichen endet, zu schreiben.


WriteBlankLines-Methode

Beschreibung

Schreibt eine angegebene Anzahl von Zeilenumbruchzeichen in eine TextStream-Datei.

Syntax

Objekt.WriteBlankLines(Zeilen)

Die Syntax der WriteBlankLines-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines TextStream-Objekts.
Zeilen	Erforderlich. Anzahl der Zeilenumbruchzeichen, die Sie in die Datei schreiben möchten.


WriteLine-Methode

Beschreibung

Schreibt eine angegebene Zeilenfolge und ein angegebenes Zeilenumbruchzeichen in eine TextStream-Datei.

Syntax

Objekt.WriteLine([Zeichenfolge])

Die Syntax der WriteLine-Methode besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines TextStream-Objekts.
Zeichenfolge	Optional. Der Text, den Sie in die Datei schreiben möchten. Wird er ausgelassen, wird ein Zeilenumbruchzeichen in die Datei geschrieben.


Dictionary-Objekt

Beschreibung

Ein Objekt, das Datenschlüssel-Element-Paare speichert.

Syntax

Scripting.Dictionary

Anmerkungen

Ein Dictionary-Objekt entspricht einem PERL-Verknüpfungsdatenfeld. Elemente, bei denen es sich um eine beliebige Form von Daten handeln kann, werden im Datenfeld gespeichert. Jedes Element ist mit einem eindeutigen Schlüssel verknüpft. Mit diesem Schlüssel wird ein individuelles Element abgerufen; er stellt normalerweise eine Ganzzahl oder eine Zeichenfolge dar, kann aber eine beliebige Form, mit Ausnahme eines Datenfeldes, haben.

Der folgende Code zeigt, wie Sie ein Dictionary-Objekt erstellen:

Dim d                   'Eine Variable erstellen

Set d = CreateObject(Scripting.Dictionary)

d.Add "a", "Athens"     Einige Schlüssel und Elemente hinzufügen

d.Add "b", "Belgrad"

d.Add "c", "Kairo"

...


Drive-Objekt

Beschreibung

Gibt Zugriff auf die Eigenschaften eines bestimmten Laufwerks oder einer bestimmten Netzwerkressource.

Anmerkungen

Der folgende Code zeigt die Verwendung des Drive-Objekts zum Zugreifen auf die Laufwerkeigenschaften:

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 & "Free Space: " & FormatNumber(d.FreeSpace/1024, 0)

    s = s & " Kbytes"

    MsgBox s

End Sub


Drives-Auflistung

Beschreibung

Schreibgeschützte Auflistung aller verfügbaren Laufwerke.

Anmerkungen

In Laufwerken mit austauschbaren Medien müssen keine Medien eingelegt sein, damit sie in der Drives-Auflistung angezeigt werden.

Der folgende Code zeigt, wie Sie die Drives-Auflistung erhalten und sie mit der For Each...Next-Anweisung wiederholen:

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

Beschreibung

Gibt Zugriff auf alle Eigenschaften einer Datei.

Anmerkungen

Der folgende Code zeigt, wie Sie ein File-Objekt erhalten, und wie Sie eine seiner Eigenschaften anzeigen.

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

Beschreibung

Auflistung aller File-Objekte in einem Ordner.

Anmerkungen

Der folgende Code zeigt, wie Sie eine Files-Auflistung erhalten und die Auflistung mit der For Each...Next-Anweisung wiederholen:

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

Beschreibung

Gibt Zugriff auf das Dateisystem eines Computers.

Syntax

Scripting.FileSystemObject

Anmerkungen

Der folgende Code zeigt, wie Sie das FileSystemObject zur Rückgabe eines TextStream-Objekts verwenden, von dem gelesen und in das geschrieben werden kann:

Set fs = CreateObject("Scripting.FileSystemObject")

Set a = fs.CreateTextFile("c:\testfile.txt", True)

a.WriteLine("Dies ist ein Test.")

a.Close

Im vorstehenden Code gibt die CreateObject-Funktion FileSystemObject (fs) zurück. Dann erstellt die CreateTextFile-Methode die Datei als TextStream-Objekt (a), und die WriteLine-Methode schreibt eine Textzeile in die erstellte Textdatei. Die Close-Methode leert den Puffer und schließt die Datei.


Folder-Objekt

Beschreibung

Gibt Zugriff auf alle Eigenschaften eines Ordners.

Anmerkungen

Der folgende Code zeigt, wie Sie ein Folder-Objekt erhalten, und wie Sie eine seiner Eigenschaften zurückgeben:

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

Beschreibung

Auflistung aller in einem Folder-Objekt enthaltenen Folder-Objekte.

Anmerkungen

Der folgende Code zeigt, wie Sie eine Folders-Auflistung erhalten, und wie Sie die Auflistung mit der For Each...Next-Anweisung wiederholen:

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

Beschreibung

Vereinfacht den sequentiellen Dateizugriff.

Syntax

TextStream.{Eigenschaft | Methode}

Bei den Argumenten Eigenschaft und Methode kann es sich um beliebige mit dem TextStream-Objekt verknüpfte Eigenschaften und Methoden handeln. Beachten Sie, daß TextStream bei der tatsächlichen Verwendung durch einen Variablenplatzhalter ersetzt wird, der das vom FileSystemObject zurückgegebene TextStream-Objekt repräsentiert.

Anmerkungen

Im folgenden Code stellt a ein von der CreateTextFile-Methode im FileSystemObject zurückgegebenes TextStream-Objekt dar:

Set fs = CreateObject("Scripting.FileSystemObject")

Set a = fs.CreateTextFile("c:\testfile.txt", True)

a.WriteLine("Dies ist ein Test.")

a.Close

WriteLine und Close sind zwei Methoden des TextStream-Objekts.


= (Operator)

Beschreibung

Mit diesem wird einer Variablen oder Eigenschaft ein Wert zugewiesen.

Syntax

Variable = Wert

Die Syntax des =-Operators besteht aus folgenden Teilen:

Teil	Beschreibung
Variable	Eine beliebige Variable oder eine Eigenschaft, die geschrieben werden kann.
Wert	Eine numerische Literale oder Zeichenfolgenliterale, eine Konstante oder ein Ausdruck.
Anmerkungen

Der Name auf der linken Seite des Gleichheitszeichens kann eine einfache Skalarvariable oder ein Element eines Datenfeldes sein. Eigenschaften auf der linken Seite des Gleichheitszeichens können nur die Eigenschaften sein, die zur Laufzeit geschrieben werden können.


AtEndOfLine-Eigenschaft

Beschreibung

Schreibgeschützte Eigenschaft, die True zurückgibt, wenn in einer TextStream-Datei der Dateizeiger unmittelbar der Zeilenendemarke vorausgeht; andernfalls gibt sie False zurück.

Syntax

Objekt.AtEndOfLine

Das Objekt ist immer der Name eines TextStream-Objekts.

Anmerkungen

Die AtEndOfLine-Eigenschaft gilt nur für TextStream-Dateien, die zum Lesen geöffnet wurden; andernfalls kommt es zu einem Fehler.

Der folgende Code veranschaulicht die Verwendung der AtEndOfLine-Eigenschaft:

Dim fs, a, retstring

Set fs = CreateObject("Scripting.FileSystemObject")

Set a = fs.OpenTextFile("c:\testfile.txt", ForReading, False)

Do While a.AtEndOfLine <> True

    retstring = a.Read(1)

    ...

Loop

a.Close


AtEndOfStream-Eigenschaft

Beschreibung

Schreibgeschützte Eigenschaft, die True zurückgibt, wenn der Dateizeiger sich am Ende einer TextStream-Datei befindet; andernfalls ist sie False.

Syntax

Objekt.AtEndOfStream

Das Objekt ist immer der Name eines TextStream-Objekts.

Anmerkungen

Die AtEndOfStream-Eigenschaft gilt nur für TextStream-Dateien, die zum Lesen geöffnet wurden; andernfalls kommt es zu einem Fehler.

Der folgende Code veranschaulicht die Verwendung der AtEndOfStream-Eigenschaft:

Dim fs, a, retstring

Set fs = CreateObject("Scripting.FileSystemObject")

Set a = fs.OpenTextFile("c:\testfile.txt", ForReading, False)

Do While a.AtEndOfStream <> True

    retstring = a.ReadLine

    ...

Loop

a.Close


Attributes-Eigenschaft

Beschreibung

Legt die Attribute von Dateien oder Ordnern fest bzw. gibt diese zurück. Je nach Attribut kann aus den Dateien/Ordnern gelesen und in sie geschrieben werden bzw. sind sie schreibgeschützt.

Syntax

Objekt.Attributes [= neueAttribute]

Die Attributes-Eigenschaft besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines File- oder Folder-Objekts.
neueAttribute	Optional. Wenn angegeben, ist neueAttribute der neue Wert für die Attribute des angegebenen Objekts.
Einstellungen

Das Argument neueAttribute kann einen beliebigen der folgenden Werte oder eine beliebige logische Kombination der folgenden Werte haben:

Konstante	Wert	Beschreibung
Normal	0	Normale Datei. Es wurden keine Attribute festgelegt.
ReadOnly	1	Schreibgeschützte Datei. Attribut mit Lese-/Schreibzugriff.
Hidden	2	Verborgene Datei. Attribut mit Lese-/Schreibzugriff.
System	4	Systemdatei. Attribut mit Lese-/Schreibzugriff.
Volume	8	Datenträgerbezeichnung des Laufwerks. Attribut mit Schreibschutz.
Directory	16	Ordner oder Verzeichnis. Das Attribut ist schreibgeschützt.
Archive	32	Die Datei hat sich seit der letzten Sicherung geändert. Attribut mit Lese-/Schreibzugriff.
Alias	64	Verknüpfung. Attribut mit Schreibschutz.
Compressed	128	Komprimierte Datei. Attribut mit Schreibschutz.
Anmerkungen

Der folgende Code veranschaulicht die Verwendung der Attributes-Eigenschaft mit einer Datei:

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("Das Archiv-Bit ist aktiviert, möchten Sie dies aufheben?", vbYesNo, "Archiv-Bit aktivieren/deaktivieren")

        If r = vbYes Then

            f.attributes = f.attributes - 32

            MsgBox "Archiv-Bit ist deaktiviert."

        Else

            MsgBox "Archiv-Bit bleibt aktiviert."

        End If

    Else

        r = MsgBox("Das Archiv-Bit ist nicht aktiviert. Möchten Sie es aktivieren?", vbYesNo, "Archiv-Bit aktivieren/deaktivieren")

        If r = vbYes Then

            f.attributes = f.attributes + 32

            MsgBox "Archiv-Bit ist aktiviert."

        Else

            MsgBox "Archiv-Bit bleibt deaktiviert."

        End If

    End If

End Sub


AvailableSpace-Eigenschaft

Beschreibung

Gibt den Speicherplatz zurück, der einem Benutzer auf dem angegebenen Laufwerk oder der angegebenen Netzwerkressource zur Verfügung steht.

Syntax

Objekt.AvailableSpace

Das Objekt ist immer ein Drive-Objekt.

Anmerkungen

Der von der AvailableSpace-Eigenschaft zurückgegebene Wert ist in der Regel mit dem von der FreeSpace-Eigenschaft zurückgegebenen identisch. Unterschiede zwischen den beiden Werten können bei Computern auftreten, die Quoten unterstützen.

Der folgende Code veranschaulicht die Verwendung der AvailableSpace-Eigenschaft:

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 & "Available Space: " & FormatNumber(d.AvailableSpace/1024, 0)

    s = s & " Kbytes"

    MsgBox s

End Sub


Column-Eigenschaft

Beschreibung

Schreibgeschützte Eigenschaft, die die Spaltennummer der aktuellen Zeichenposition in einer TextStream-Datei zurückgibt.

Syntax

Objekt.Column

Das Objekt ist immer der Name eines TextStream-Objekts.

Anmerkungen

Nachdem ein Zeilenumbruchzeichen geschrieben wurde, aber bevor ein anderes Zeichen geschrieben wird, ist Column gleich 1.


CompareMode-Eigenschaft

Beschreibung

Legt den Vergleichsmodus zum Vergleichen von Zeichenfolgenschlüsseln in einem Dictionary-Objekt fest bzw. gibt diesen zurück.

Syntax

Objekt.CompareMode[ = vergleichen]

Die CompareMode-Eigenschaft besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines Dictionary-Objekts.
vergleichen	Optional. Wenn angegeben, ist vergleichen ein Wert, der den von Funktionen, wie z.B. StrComp, verwendeten Vergleichsmodus repräsentiert.
Einstellungen

Das Argument vergleichen kann folgende Werte haben:

Konstante	Wert	Beschreibung
vbUseCompareOption	–1	Führt einen Vergleich unter Verwendung der Einstellungen der Option Compare-Anweisung durch.
vbBinaryCompare	0	Führt einen binären Vergleich durch.
vbTextCompare	1	Führt einen Textvergleich durch.
vbDatabaseCompare	2	Nur Microsoft Access. Führt einen Vergleich anhand der Informationen in Ihrer Datenbank durch.
Anmerkungen

Es kommt zu einem Fehler, wenn Sie versuchen, den Vergleichsmodus eines Dictionary-Objekts zu ändern, das bereits Daten enthält.

Die CompareMode-Eigenschaft verwendet die gleichen Werte wie das Argument vergleichen für die StrComp-Funktion. Mit Werten, die größer als 2 sind, kann unter Verwendung spezieller Locale-IDs (LCID) auf Vergleiche verwiesen werden.


Count-Eigenschaft

Beschreibung

Gibt die Anzahl der Elemente in einer Auflistung oder einem Dictionary-Objekt zurück. Schreibgeschützt.

Syntax

Objekt.Count

Das Objekt ist immer der Name eines der Elemente in der Liste unter Betrifft.

Anmerkungen

Der folgende Code veranschaulicht die Verwendung der Count-Eigenschaft:

Dim a, d, i             'Einige Variablen erstellen

Set d = CreateObject("Scripting.Dictionary")

d.Add "a", "Athens"     'Einige Schlüssel und Elemente hinzufügen.

d.Add "b", "Belgrade"

d.Add "c", "Cairo"

a = d.Keys              'Die Schlüssel holen

For i = 0 To d.Count -1 'Das Datenfeld wiederholen

    Print a(i)          'Schlüssel drucken

Next

...


DateCreated-Eigenschaft

Beschreibung

Gibt das Datum und die Uhrzeit der Erstellung einer bestimmten Datei bzw. eines bestimmten Ordners zurück. Schreibgeschützt.

Syntax

Objekt.DateCreated

Das Objekt ist immer ein File- oder Folder-Objekt.

Anmerkungen

Der folgende Code veranschaulicht die Verwendung der DateCreated-Eigenschaft mit einer Datei:

Sub ShowFileInfo(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(filespec)

    s = "Created: " & f.DateCreated

    MsgBox s

End Sub


DateLastAccessed-Eigenschaft

Beschreibung

Gibt das Datum und die Uhrzeit des letzten Zugriffs auf die angegebene Datei bzw. den angegebenen Ordner zurück. Schreibgeschützt.

Syntax

Objekt.DateLastAccessed

Das Objekt ist immer ein File- oder Folder-Objekt.

Anmerkungen

Der folgende Code veranschaulicht die Verwendung der DateLastAccessed-Eigenschaft mit einer Datei:

Sub ShowFileAccessInfo(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(filespec)

    s = UCase(filespec) & vbCrLf

    s = s & "Created: " & f.DateCreated & vbCrLf

    s = s & "Last Accessed: " & f.DateLastAccessed & vbCrLf

    s = s & "Last Modified: " & f.DateLastModified

    MsgBox s, 0, "File Access Info"

End Sub

Wichtig   Das Verhalten dieser Methode hängt vom Betriebssystem ab. Wenn das Betriebssystem die Angabe von Zeitinformationen nicht unterstützt, werden keine zurückgegeben.


DateLastModified-Eigenschaft

Beschreibung

Gibt das Datum und die Uhrzeit der letzten Änderung der angegebenen Datei oder des angegebenen Ordners zurück. Schreibgeschützt.

Syntax

Objekt.DateLastModified

Das Objekt ist immer ein File- oder Folder-Objekt.

Anmerkungen

Der folgende Code veranschaulicht die Verwendung der DateLastModified-Eigenschaft mit einer Datei:

Sub ShowFileAccessInfo(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(filespec)

    s = UCase(filespec) & vbCrLf

    s = s & "Created: " & f.DateCreated & vbCrLf

    s = s & "Last Accessed: " & f.DateLastAccessed & vbCrLf

    s = s & "Last Modified: " & f.DateLastModified

    MsgBox s, 0, "File Access Info"

End Sub


Drive-Eigenschaft

Beschreibung

Gibt den Laufwerkbuchstaben des Laufwerks zurück, auf dem sich die angegebene Datei bzw. der angegebene Ordner befindet. Schreibgeschützt.

Syntax

Objekt.Drive

Das Objekt ist immer ein File- oder Folder-Objekt.

Anmerkungen

Der folgende Code veranschaulicht die Verwendung der Drive-Eigenschaft:

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 & "Created: " & f.DateCreated & vbCrLf

    s = s & "Last Accessed: " & f.DateLastAccessed & vbCrLf

    s = s & "Last Modified: " & f.DateLastModified

    MsgBox s, 0, "File Access Info"

End Sub


DriveLetter-Eigenschaft

Beschreibung

Gibt den Laufwerkbuchstaben eines physischen lokalen Laufwerks oder einer Netzwerkressouce zurück. Schreibgeschützt.

Syntax

Objekt.DriveLetter

Das Objekt ist immer ein Drive-Objekt.

Anmerkungen

Die DriveLetter-Eigenschaft gibt eine Zeichenfolge der Länge Null ("") zurück, wenn das angegebene Laufwerk keinen Laufwerkbuchstabe hat, z.B. eine Netzwerkressource, der kein Laufwerkbuchstabe zugeordnet wurde.

Der folgende Code veranschaulicht die Verwendung der DriveLetter-Eigenschaft:

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 & "Free Space: " & FormatNumber(d.FreeSpace/1024, 0)

    s = s & " Kbytes"

    MsgBox s

End Sub


Drives-Eigenschaft

Beschreibung

Gibt eine Drives-Auflistung zurück, die aus allen auf dem lokalen Computer verfügbaren Drive-Objekten besteht.

Syntax

Objekt.Drives

Das Objekt ist immer ein FileSystemObject.

Anmerkungen

Laufwerke mit austauschbaren Medien müssen keine Medien enthalten, damit diese in der Drives-Auflistung angezeigt werden.

Sie können die Elemente der Drives-Auflistung durch die Verwendung einer For Each...Next-Komponente wiederholen; dies ist im folgenden Code veranschaulicht:

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

Beschreibung

Gibt einen Wert zurück, der den Typ des angegebenen Laufwerks angibt.

Syntax

Objekt.DriveType

Das Objekt ist immer ein Drive-Objekt.

Anmerkungen

Der folgende Code veranschaulicht die Verwendung der DriveType-Eigenschaft:

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

        Case 1: t = "Removable"

        Case 2: t = "Fixed"

        Case 3: t = "Network"

        Case 4: t = "CD-ROM"

        Case 5: t = "RAM Disk"

    End Select

    s = "Drive " & d.DriveLetter & ": - " & t

    MsgBox s

End Sub


Files-Eigenschaft

Beschreibung

Gibt eine Files-Auflistung zurück, die aus allen in dem angegebenen Ordner enthaltenen File-Objekten besteht, einschließlich derer, für die verborgene Attribute und Systemdateiattribute festgelegt wurden.

Syntax

Objekt.Files

Das Objekt ist immer ein Folder-Objekt.

Anmerkungen

Der folgende Code veranschaulicht die Verwendung der Files-Eigenschaft:

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

Beschreibung

Gibt die Art des für das angegebene Laufwerk verwendete Dateisystem zurück.

Syntax

Objekt.FileSystem

Das Objekt ist immer ein Drive-Objekt.

Anmerkungen

Zu den verfügbaren Rückgabetypen gehören folgende: FAT, NTFS und CDFS.

Der folgende Code veranschaulicht die Verwendung der FileSystem-Eigenschaft:

Sub ShowFileSystemType

    Dim fs,d, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive("e:")

    s = d.FileSystem

    MsgBox s

End Sub


FreeSpace-Eigenschaft

Beschreibung

Gibt den freien Speicherplatz zurück, der einem Benutzer auf dem angegebenen Laufwerk oder der angegebenen Netzwerkressource zur Verfügung steht. Schreibgeschützt.

Syntax

Objekt.FreeSpace

Das Objekt ist immer ein Drive-Objekt.

Anmerkungen

Der von der FreeSpace-Eigenschaft zurückgegebene Wert ist in der Regel mit dem von der AvailableSpace-Eigenschaft zurückgegebenen identisch. Unterschiede zwischen den beiden Werten können bei Computern auftreten, die Quoten unterstützen.

Der folgende Code veranschaulicht die Verwendung der FreeSpace-Eigenschaft:

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 & "Free Space: " & FormatNumber(d.FreeSpace/1024, 0)

    s = s & " Kbytes"

    MsgBox s

End Sub


IsReady-Eigenschaft

Beschreibung

Gibt True zurück, wenn das angegebene Laufwerk verfügbar ist; andernfalls wird False zurückgegeben.

Syntax

Objekt.IsReady

Das Objekt ist immer ein Drive-Objekt.

Anmerkungen

Bei Laufwerken mit austauschbaren Medien und bei CD-ROM-Laufwerken gibt IsReady nur dann True zurück, wenn die entsprechenden Medien eingelegt sind und auf diese zugegriffen werden kann.

Der folgende Code veranschaulicht die Verwendung der IsReady-Eigenschaft:

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

        Case 1: t = "Removable"

        Case 2: t = "Fixed"

        Case 3: t = "Network"

        Case 4: t = "CD-ROM"

        Case 5: t = "RAM Disk"

    End Select

    s = "Drive " & d.DriveLetter & ": - " & t

    If d.IsReady Then

        s = s & vbCrLf & "Drive is Ready."

    Else

        s = s & vbCrLf & "Drive is not Ready."

    End If

    MsgBox s

End Sub


IsRootFolder-Eigenschaft

Beschreibung

Gibt True zurück, wenn es sich beim angegebenen Ordner um den Stammordner handelt; andernfalls wird False zurückgegeben.

Syntax

Objekt.IsRootFolder

Das Objekt ist immer ein Folder-Objekt.

Anmerkungen

Der folgende Code veranschaulicht die Verwendung der IsRootFolder-Eigenschaft:

Dim fs

Set fs = CreateObject("Scripting.FileSystemObject")

Sub DisplayLevelDepth(pathspec)

    Dim f, n

    Set f = fs.GetFolder(pathspec)

    If f.IsRootFolder Then

        MsgBox "The specified folder is the root folder."

    Else

        Do Until f.IsRootFolder

            Set f = f.ParentFolder

            n = n + 1

        Loop

        MsgBox "The specified folder is nested " & n & " levels deep."

    End If

End Sub


Item-Eigenschaft

Beschreibung

Legt ein Element für einen angegebenen Schlüssel in einem Dictionary-Objekt fest bzw. gibt eines zurück. Bei Auflistungen gibt diese Eigenschaft ein Element basierend auf ddem angegebenen Schlüssel zurück. Lese-/Schreibzugriff.

Syntax

Objekt.Item(Schlüssel) [= neuesElement]

Die Item-Eigenschaft besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name einer Auflistung oder eines Dictionary-Objekts.
Schlüssel	Erforderlich. Der mit dem abgerufenen oder hinzugefügten Element verknüpfte Schlüssel.
neuesElement	Optional. Nur bei Dictionary-Objekten; keine Anwendung bei Auflistungen. Wenn angegeben, ist neuesElement der neue mit dem angegebenen Schlüssel verknüpfte Wert.
Anmerkungen

Wenn beim Ändern eines Elements kein Schlüssel gefunden wird, wird mit dem angegebenen neuenElement ein neuer Schlüssel erstellt. Wenn der Schlüssel bei dem Versuch, ein vorhandenes Element zurückzugeben, nicht gefunden wird, wird ein neuer Schlüssel erstellt, und das zugehörige Element bleibt leer.


Key-Eigenschaft

Beschreibung

Legt einen Schlüssel in einem Dictionary-Objekt fest.

Syntax

Objekt.Key(Schlüssel) = neuerSchlüssel

Die Key-Eigenschaft besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines Dictionary-Objekts.
Schlüssel	Erforderlich. Der zu ändernde Wert von Schlüssel.
neuerSchlüssel	Erforderlich. Der neue Wert, der den angegebenen Schlüssel ersetzt.
Anmerkungen

Wenn der Schlüssel beim Ändern eines Schlüssels nicht gefunden wird, kommt es zu einem Laufzeitfehler.


Line-Eigenschaft

Beschreibung

Schreibgeschützte Eigenschaft, die in einer TextStream-Datei die aktuelle Zeilennummer zurückgibt.

Syntax

Objekt.Line

Das Objekt ist immer der Name eines TextStream-Objekts.

Anmerkungen

Gleich nach dem Öffnen der Datei, und bevor eine Eingabe erfolgt, ist Line gleich 1.


Name-Eigenschaft

Beschreibung

Legt den Namen der angegebenen Datei oder des angegebenen Ordners fest bzw. gibt diesen zurück. Lese-/Schreibzugriff.

Syntax

Objekt.Name [= neuerName]

Die Name-Eigenschaft besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines File- oder Folder-Objekts.
neuerName	Optional. Wenn angegeben, ist neuerName der neue Name des angegebenen Objekts.
Anmerkungen

Der folgende Code veranschaulicht die Verwendung der Name-Eigenschaft:

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 & "Created: " & f.DateCreated & vbCrLf

    s = s & "Last Accessed: " & f.DateLastAccessed & vbCrLf

    s = s & "Last Modified: " & f.DateLastModified

    MsgBox s, 0, "File Access Info"

End Sub


ParentFolder-Eigenschaft

Beschreibung

Gibt das Ordnerobjekt des übergeordneten Ordners der angegebenen Datei bzw. des angegebenen Ordners zurück. Schreibgeschützt.

Syntax

Objekt.ParentFolder

Das Objekt ist immer ein File- oder Folder-Objekt.

Anmerkungen

Der folgende Code veranschaulicht die Verwendung der ParentFolder-Eigenschaft mit einer Datei:

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 & "Created: " & f.DateCreated & vbCrLf

    s = s & "Last Accessed: " & f.DateLastAccessed & vbCrLf

    s = s & "Last Modified: " & f.DateLastModified

    MsgBox s, 0, "File Access Info"

End Sub


Path-Eigenschaft

Beschreibung

Gibt den Pfad einer angegebenen Datei, eines angegebenen Ordners oder Laufwerks zurück.

Syntax

Objekt.Path

Das Objekt ist immer ein File-, Folder- oder Drive-Objekt.

Anmerkungen

Bei Laufwerkbuchstaben ist das Stammlaufwerk nicht enthalten. Der Pfad für das Laufwerk C lautet z.B. C:, und nicht C:\.

Der folgende Code veranschaulicht die Verwendung der Path-Eigenschaft mit einem File-Objekt:

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 & "Created: " & f.DateCreated & vbCrLf

    s = s & "Last Accessed: " & f.DateLastAccessed & vbCrLf

    s = s & "Last Modified: " & f.DateLastModified

    MsgBox s, 0, "File Access Info"

End Sub


RootFolder-Eigenschaft

Beschreibung

Gibt ein Folder-Objekt zurück, das den Stammordner eines angegebenen Laufwerks repräsentiert. Schreibgeschützt.

Syntax

Objekt.RootFolder

Das Objekt ist immer ein Drive-Objekt.

Anmerkungen

Der Zugriff auf alle auf dem Laufwerk befindlichen Dateien und Ordner ist mit dem zurückgegebenen Folder-Objekt möglich.


SerialNumber-Eigenschaft

Beschreibung

Gibt die dezimale Seriennummer zurück, mit der eine Festplatte eindeutig gekennzeichnet wird.

Syntax

Objekt.SerialNumber

Das Objekt ist immer ein Drive-Objekt.

Anmerkungen

Mit der SerialNumber-Eigenschaft können Sie sicherstellen, daß der richtige Datenträger in ein Laufwerk mit austauschbaren Medien eingelegt wurde.

Der folgende Code veranschaulicht die Verwendung der SerialNumber-Eigenschaft:

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

        Case 1: t = "Removable"

        Case 2: t = "Fixed"

        Case 3: t = "Network"

        Case 4: t = "CD-ROM"

        Case 5: t = "RAM Disk"

    End Select

    s = "Drive " & d.DriveLetter & ": - " & t

    s = s & vbCrLf & "SN: " & d.SerialNumber

    MsgBox s

End Sub


ShareName-Eigenschaft

Beschreibung

Gibt den Namen der Netzwerkressource eines bestimmten Laufwerks zurück.

Syntax

Objekt.ShareName

Das Objekt ist immer ein Drive-Objekt.

Anmerkungen

Wenn Objekt kein Netzwerklaufwerk ist, gibt die ShareName-Eigenschaft eine Zeichenfolge der Länge Null ("") zurück.

Der folgende Code veranschaulicht die Verwendung der ShareName-Eigenschaft:

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

Beschreibung

Gibt den von Programmen, für die die frühere Benennungskonvention aus acht Zeichen für den Namen und einer Erweiterung von drei Zeichen notwendig ist, verwendeten Kurznamen zurück.

Syntax

Objekt.ShortName

Das Objekt ist immer ein File- oder Folder-Objekt.

Anmerkungen

Der folgende Code veranschaulicht die Verwendung der ShortName-Eigenschaft mit einem File-Objekt:

Sub ShowShortName(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(filespec)

    s = "The short name for " & "" & UCase(f.Name)

    s = s & "" & vbCrLf

    s = s & "is: " & "" & f.ShortName & ""

    MsgBox s, 0, "Short Name Info"

End Sub


ShortPath-Eigenschaft

Beschreibung

Gibt den von Programmen, für die die frühere Benennungskonvention aus acht Zeichen für den Namen und einer Erweiterung von drei Zeichen notwendig ist, verwendeten Kurzpfad zurück.

Syntax

Objekt.ShortPath

Das Objekt ist immer ein File- oder Folder-Objekt.

Anmerkungen

Der folgende Code veranschaulicht die Verwendung der ShortName-Eigenschaft mit einem File-Objekt:

Sub ShowShortPath(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(filespec)

    s = "The short path for " & "" & UCase(f.Name)

    s = s & "" & vbCrLf

    s = s & "is: " & "" & f.ShortPath & ""

    MsgBox s, 0, "Short Path Info"

End Sub


Size-Eigenschaft

Beschreibung

Bei Dateien gibt diese Eigenschaft die Größe der angegebenen Datei in Byte zurück. Bei Ordnern gibt sie die Größe aller im Ordner enthaltenen Dateien und Unterordner in Byte zurück.

Syntax

Objekt.Size

Das Objekt ist immer ein File- oder Folder-Objekt.

Anmerkungen

Der folgende Code veranschaulicht die Verwendung der Size-Eigenschaft mit einem Folder-Objekt:

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, "Folder Size Info"

End Sub


SubFolders-Eigenschaft

Beschreibung

Gibt eine Folders-Auflistung zurück, die aus allen in einem bestimmten Ordner enthaltenen Ordnern, einschließlich derer mit dem Attribut "Verborgen" und "Systemdatei", besteht.

Syntax

Objekt.SubFolders

Das Objekt ist immer ein Folder-Objekt.

Anmerkungen

Der folgende Code veranschaulicht die Verwendung der SubFolders-Eigenschaft:

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

Beschreibung

Gibt den Gesamtspeicher eines Laufwerks oder einer Netzwerkressource in Byte zurück.

Syntax

Objekt.TotalSize

Das Objekt ist immer ein Drive-Objekt.

Anmerkungen

Der folgende Code veranschaulicht die Verwendung der TotalSize-Eigenschaft:

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 & "Total Size: " & FormatNumber(d.TotalSize/1024, 0) & " Kbytes"

    s = s & vbCrLf

    s = s & "Available: " & FormatNumber(d.AvailableSpace/1024, 0) & " Kbytes"

    MsgBox s

End Sub


Type-Eigenschaft

Beschreibung

Gibt Informationen über den Datei- oder Ordnertyp zurück. Bei Dateien mit der Erweiterung .TXT, wird z.B. "Textdokument" zurückgegeben.

Syntax

Objekt.Type

Das Objekt ist immer ein File- oder Folder-Objekt.

Anmerkungen

Der folgende Code veranschaulicht die Verwendung der Type-Eigenschaft zur Rückgabe eines Ordnertyps. Versuchen Sie in diesem Beispiel, den Pfad des Papierkorbs oder eines eindeutigen Ordners in der Prozedur anzugeben.

Sub ShowFileSize(filespec)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFolder(filespec)

    s = UCase(f.Name) & " is a " & f.Type

    MsgBox s, 0, "File Size Info"

End Sub


VolumeName-Eigenschaft

Beschreibung

Legt den Datenträgernamen des angegebenen Laufwerks fest bzw. gibt diesen zurück. Lese-/Schreibzugriff.

Syntax

Objekt.VolumeName [= neuerName]

Die VolumeName-Eigenschaft besteht aus folgenden Teilen:

Teil	Beschreibung
Objekt	Erforderlich. Immer der Name eines Drive-Objekts.
neuerName	Optional. Wenn angegeben, ist neuerName der neue Name des angegebenen Objekts.
Anmerkungen

Der folgende Code veranschaulicht die Verwendung der VolumeName-Eigenschaft:

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


Nicht eindeutige Auswahl

Sie haben entweder kein Schlüsselwort ausgewählt, oder Hilfe zu einer Komponente  der integrierten Entwicklungsumgebung angefordert. Falls Sie versucht haben, ein Schlüsselwort auszuwählen, versuchen Sie es erneut, indem Sie ein einzelnes Schlüsselwort auswählen. Falls Sie versucht haben, Informationen zur integrierten Entwicklungsumgebung abzurufen, klicken Sie auf einen der folgenden Sprünge:

Code- oder Modulfenster

Direktfenster oder -bereich

Lokal-Fenster oder -bereich

Objektkatalog

Überwachungsfenster oder -bereich