Access Anfänger: Sub oder Function

Aus DBWiki
Wechseln zu: Navigation, Suche

Argumente

Eine Prozedur (Sub), eine Funktion (Function) und eine Eigenschaftsprozedur (Property) kann die ihr in Form von Konstanten, Variablen, Ausdrücken oder Objekten übergebenen Argumente (Parameter) verwenden und weiterverarbeiten. Die Übergabe dieser Argumente kann als ByRef (Referenz, Zeiger) oder als ByVal (Wert) erfolgen. Wird die Art der Übergabe nicht angegeben, wird in VBA als Standard ByRef verwendet (siehe auch VBA in Excel/ ByRef und ByVal). Ergebnisse können bei Bedarf über ByRef-Argumente zurüchgegeben werden.

Das Schlüsselwort Optional gibt an, ob ein Argument beim Aufruf anzugeben ist oder nicht. Alle Argumente, die auf ein optionales Argument folgen, müssen auch optional sein.

Prozedur (Sub)

Eine Prozedur (Sub) wird in einem Modul gespeichert, und umfasst eine Reihe von Visual Basic-Anweisungen, die zwischen dem Prozedurkopf, beginnend mit [Public|Private|Friend][ Static] Sub NameDerMethode([Argumenteliste]), und der Endzeile End Sub stehen müssen. Diese Anweisungen führen Aktionen durch.

Beispiele für eine Private Sub-Prozedur:

Private Sub TuEtwas(Optional Text As String)
 
   ' öffne ein Formular
   DoCmd.OpenForm "EinFormularname"
 
   ' oder drucke einen Bericht
   DoCmd.OpenReport "EinBerichtsname"
 
   ' oder gib den Inhalt des Arguments "Text" als Meldung aus
   MsgBox Text
 
End Sub

Beispiele für den Aufruf der Prozedur innerhalb einer anderen Prozedur:

   ' Die Prozedur wird einfach mit ihrem Namen aufgerufen
   TuEtwas
 
   ' Aufruf mit einem (optionalen) Argument
   TuEtwas "Hallo Welt"
 
   ' Aufruf alternativ mit dem Schlüsselwort Call (Call-Anweisung)
   Call TuEtwas
 
   ' Aufruf mit Call-Anweisung und mit Argument
   Call TuEtwas("Hallo Welt")

Funktion (Function)

Eine Funktion (Function) kann im Unterschied zu einer Prozedur zusätzlich einen Wert zurückgeben. Der Funktionskopf besteht aus [Public|Private|Friend][ Static] Function Funktionsname([Argumenteliste])[ AS Datentyp]. Ohne Angabe eines Datentyps für das Funktionsergebnis wird Variant als Datentyp verwendet.

Funktionen können auch in SQL-Abragen eingesetzt werden, sofern sie in einem VBA-Modul gespeichert vorliegen, und sowohl in der Argumenteliste als auch im Rückgabewert nur Basis-Datentypen verwenden.


Beispiele für eine Public Funktion:

Public Function LiefereEtwas(Zahl As Long) As Long
 
   ' Das Argument Zahl wird mit 2 multipliziert
   LiefereEtwas = Zahl * 2
 
End Function
 
Public Function OeffneProgramm(Pfad As String) As Long
 
   ' Öffnet ein externes Programm, und gibt das Handle des Programmfensters zurück
   OeffneProgramm = Shell(Pfad, vbNormalFocus)
 
End Function

Beispiele für den Aufruf der Funktion innerhalb einer anderen Prozedur (oder Funktion):

   ' Beispiel 1:
   ' Der Rückgabewert der Funktion "LiefereEtwas" wird an eine 
   ' MsgBox (Message-Box) übergeben, und als Meldung angezeigt
   MsgBox LiefereEtwas(5)
 
 
   ' Beispiel 2:
   ' Den Windows-Rechner mithilfe der Access-internen Shell-Funktion aufrufen.
 
   Dim lngHWnd As Long
   Dim strPfad As String
 
   strPfad = "calc.exe"
 
   ' 1. Der Rückgabewert der Funktion "OeffneProgramm" wird nicht verwendet.
   ' entweder
   OeffneProgramm strPfad
   ' oder
   Call OeffneProgramm(strPfad)
 
   ' 2. Der Rückgabewert der Funktion "OeffneProgramm" wird in die Variable 
   ' "lngHWnd" eingelesen, und kann anschließend weiterverwendet werden.
   lngHWnd = OeffneProgramm(strPfad)

Umgewandelte Makros

Makros, die im Zuge ihrer Konvertierung zu VBA-Code umgewandelt werden, werden als Function in einem, durch Access automatisch angelegten, allgemeinen VBA-Modul gespeichert. Da diese Funktionen keine Rückgabewerte ausgeben, können sie vor ihrer Weiterverwendung in entsprechende Prozeduren umgewandelt, oder der in ihnen enthaltene Code kann in eine andere Prozedur verschoben werden.

Eigenschaftsprozedur

Noch nicht geschrieben

Property Get

Noch nicht geschrieben

Property Let

Noch nicht geschrieben

Property Set

Noch nicht geschrieben

Wikilinks

Weblinks