|
Die Untergrenze und die Obergrenze eines Arrays können Sie mit
Hilfe der Visual Basic-eigenen Funktionen LBound
und UBound
ermitteln - sofern das Array bereits dimensioniert ist. Ist ein
dynamisches Array (noch) nicht dimensioniert, wird ein
Laufzeitfehler erzeugt. Zur Information darüber, ob ein Array
bereits dimensioniert ist, bietet VB allerdings keine gesonderte
Funktion an. Sie können jedoch den beim Zugriff auf ein nicht
dimensioniertes Array per LBound oder UBound ausgelösten
Laufzeitfehler abfangen und so die gesuchte Information erhalten.
In der Hilfsfunktion IsDim wird nach Einschalten einer
Fehlerbehandlung durch "On Error Resume Next"
versuchsweise auf die Untergrenze des Arrays zugegriffen. Ist das
der Funktion übergebene Array nicht dimensioniert, wird die
Fehlernummer ( Err.Number)
des Err-Objekts
in den Bool'schen Wert True konvertiert. Da der Bool'sche
Rückgabewert der Funktion jedoch nur dann True zurückgeben soll,
wenn das Array dimensioniert ist, negieren wir den Wert mit
"Not" und gebe in diesem Fall False zurück. Ist das Array
hingegen bereits dimensioniert, wird beim Zugriff auf die
Untergrenze des Arrays kein Fehler ausgelöst. Der Wert der
Fehlernummer ist 0 - nach der Bool'schen Konvertierung
False. Die Negation zum Rückgabewert lautet somit True.
Public Function IsDim(Arr As Variant) As Boolean
Dim nLBound As Long
On Error Resume Next
nLBound = LBound(Arr)
IsDim = Not CBool(Err.Number)
End Function

|