VBA Tipp: Feststellen, ob ein Array dimensioniert ist

Aus DBWiki
Wechseln zu: Navigation, Suche

Anforderung

Ich möchte feststellen, ob ein Array (Datenfeld) dimensioniert ist, oder umgangssprachlich ausgedrückt: Ich möchte prüfen, ob ein Array leer ist oder nicht.

Lösung 1

Das geht mit folgender Funktion, die in einem allgemeinen (globalen) Modul gespeichert wird.

Die Funktion gibt True zurück, wenn das Array dimensioniert ist, und False, wenn es nicht dimensioniert (leer) ist.

Public Function IstDimensioniert(arr As Variant) As Boolean
 
   ' Quelle: http://www.dbwiki.net/
 
   If IsArray(arr) Then
      On Error Resume Next
      IstDimensioniert = UBound(arr) >= LBound(arr)
   Else
      Err.Raise 13
   End If
 
End Function

Aufruf

   ' Beispiele:
   Dim strarr() As String
 
   ' Leeres Array
   MsgBox IstDimensioniert(strarr())  'ergibt Falsch
   MsgBox IstDimensioniert(strarr)    'ergibt Falsch
 
   ' Dimensioniertes Array
   ReDim strarr(0)
   MsgBox IstDimensioniert(strarr)    'ergibt Wahr
 
   ' Array leeren
   Erase strarr()
   MsgBox IstDimensioniert(strarr())  'ergibt Falsch
 
   ' Kein Array
   MsgBox IstDimensioniert("Text")    'erzeugt Laufzeitfehler 13

Lösung 2

Das geht mit folgender Funktion, die in einem allgemeinen (globalen) Modul gespeichert wird.

Die Funktion gibt True zurück, wenn das Array nicht dimensioniert (leer) ist, und False, wenn es dimensioniert ist.

Public Function IstLeerArray(arr As Variant) As Boolean
 
   ' Quelle: http://www.dbwiki.net/
 
   Dim temp As Long
 
   If IsArray(arr) Then
     On Error Resume Next
     temp = LBound(arr)
     IstLeerArray = CBool(Err.Number)
   Else
     Err.Raise 13
   End If
 
End Function

Aufruf

   ' Beispiele:
   Dim strarr() As String
 
   ' Leeres Array
   MsgBox IstLeerArray(strarr())  'ergibt Wahr
   MsgBox IstLeerArray(strarr)    'ergibt Wahr
 
   ' Dimensioniertes Array
   ReDim strarr(0)
   MsgBox IstLeerArray(strarr)    'ergibt Falsch
 
   ' Array leeren
   Erase strarr()
   MsgBox IstLeerArray(strarr())  'ergibt Wahr
 
   ' Kein Array
   MsgBox IstLeerArray("Text")    'erzeugt Laufzeitfehler 13

Weblinks