In VBA ist Prozedur der Oberbegriff für Funktionen und Sub's.
Die Deklaration der Prozeduren kann erfolgen als:
Die Voreinstellung ist Public.
Die Festlegung der Parameter kann erfolgen als:
Weitere Informationen: VBA_in_Excel - Grundlagen: Funktionen
Funktionen werden mit oder ohne Parameter aufgerufen und geben Werte zurück. Der Aufruf kann sowohl über andere Funktionen oder Prozeduren als auch über die Eingabe im Arbeitsblatt erfolgen. Sie kann Excel- und VBA-Funktionen integrieren.
Beispiel für eine Funktion:
Function Ostern(iYear As Integer)
Dim iDay As Integer
iDay = (((255 - 11 * (iYear Mod 19)) - 21) Mod 30) + 21
Ostern = DateSerial(iYear, 3, 1) + iDay + (iDay > 48) + _
6 - ((iYear + iYear \ 4 + iDay + (iDay > 48) + 1) Mod 7)
End Function
Beispiel für den Aufruf aus einer Prozedur:
Sub WannIstOstern()
MsgBox "Ostersonntag: " & Ostern(2007)
End Sub
Im Arbeitsblatt kann die Funktion durch folgende Eingabe verwendet werden (Jahreszahl in Zelle A1):
=ostern(A1)
Prozeduren werden mit oder ohne Parameter aufgerufen und geben keine Werte zurück, können aber übergebene Variablenwerte verändern. Der Aufruf erfolgt über andere Prozeduren, nicht jedoch über eine Eingabe im Arbeitsblatt. Sie können Excel- und VBA-Funktionen integrieren.
Beispiel einer Prozedur mit dem Aufruf eines Unterprogramms:
Sub WertEintragen()
Dim datStart As Date, datEnd As Date
Dim iTage As Integer
datStart = DateSerial(Year(Date), 2, 15)
datEnd = DateSerial(Year(Date), 12, 11)
Call WertErmitteln(datStart, datEnd, iTage)
Range("A1").Value = iTage
End Sub
Sub WertErmitteln(ByVal datBeginn, ByVal datEnde, ByRef iDiff As Integer)
iDiff = datEnde - datBeginn
End Sub
Informationen über ByRef/ByVal: VBA_in_Excel - Grundlagen: ByRef und ByVal
Verwenden Sie Funktionen immer dann, wenn Sie diese im Tabellenblättern als Formel einsetzen möchten oder wenn Sie aus einer Sub heraus Rückgabewerte anfordern möchten. In allen anderen Fällen sollten Sie sich für Sub's entscheiden.