VBA-Programmierung in Microsoft Excel

Tutorial: Excel-Beispiele

VBA-Begriff: 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.