Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Länge eines Array

Forumthread: Länge eines Array

Länge eines Array
05.06.2005 01:10:12
Jens Meier
Hallo liebe Forum-Leute!
Sicher ist das für die meisten von euch sehr einfach, aber ich find's einfach nicht raus (bin auch dankbar, wenn jemand Suchtipps für solche Dinger für mich hat - die Excel-VBA-Hilfe blick ich da nicht ganz durch...)
Ich hab in etwa folgenden VBA-Code:
meinArray = Split(Range("B6").Value, ";")
Nun will ich die Länge des Arrays, also die Anzahl der mit Semikolon getrennten Einträge von B6 finden. Dazu hätte ich folgendes genommen:
meineLaenge = Len(meinArray)
Dies führt aber zum Fehler "Typen unverträglich", na ja, Len ist ja für Strings. Eine ähnliche Längen-Funktion für Arrays gibt's sicher auch!
Danke für eure Hinweise!
Jens
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Länge eines Array
05.06.2005 01:23:18
Fred
Hi,
Laenge = UBound(DeinArray)
mfg Fred
AW: Länge eines Array
05.06.2005 10:16:59
andre
... bei dem ubound 1 dazuzählen. ubound gibt den höchsten index wieder, und da die arrays meist mit 0 anfangen - wie in Deiner Variante auch - bekommst Du bei 4 Elementen 3 als Ergebnis.
Dim meinArray(40 To 41) bringt entsprechend 41 als Ergebnis. Wenn man es genau nimmt wäre das die Lösung:
anzahl = UBound(meinArray) - LBound(meinArray) + 1
Anzeige
AW: Länge eines Array
05.06.2005 01:36:27
Thomas Risi
Hallo Jens,
versuch's mal in etwa so ...


      
Option Explicit
Sub Test()
    
    
Dim s As String
    
    s = 
"a;b;c;d"
    
    
Dim a As Variant
    
    a = Split(s, 
";")
    
    MsgBox 
UBound(a) + 1
    
End Sub 

     Code eingefügt mit Syntaxhighlighter 3.0

Gruß
Thomas
Risi Thomas Softwareentwicklung
COM-Addins +++ RTD-Server +++ Komponenten
Anzeige
AW: Länge eines Array
05.06.2005 23:42:19
Jens Meier
Super,
genau die Funktion Ubound (und Lbound) macht's!
Jezt muss ich nur schaun, ob ich für die einzelnen Teile des Arrays die Typ-Umwandlungen hinkrieg, dann war's das!
Danke euch dreien!
Jens
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Länge eines Arrays in VBA ermitteln


Schritt-für-Schritt-Anleitung

Um die Länge eines Arrays in VBA zu ermitteln, kannst du die Funktionen UBound und LBound verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Array erstellen: Zunächst musst du ein Array definieren. Dies kannst du entweder durch die Split-Funktion oder manuell tun.

    Dim meinArray As Variant
    meinArray = Split(Range("B6").Value, ";")
  2. Anzahl der Elemente ermitteln: Verwende die UBound-Funktion, um den höchsten Index des Arrays zu finden, und addiere 1, um die Gesamtanzahl der Elemente zu erhalten.

    Dim anzahl As Long
    anzahl = UBound(meinArray) - LBound(meinArray) + 1
  3. Ergebnis anzeigen: Du kannst das Ergebnis in einer Meldungsbox oder in einer Zelle ausgeben.

    MsgBox "Die Anzahl der Elemente im Array beträgt: " & anzahl

Häufige Fehler und Lösungen

  • Typen unverträglich: Wenn du versuchst, die Länge eines Arrays mit Len zu ermitteln, erhältst du den Fehler "Typen unverträglich". Dies liegt daran, dass Len für Strings gedacht ist. Verwende stattdessen UBound.

  • Index außerhalb des Bereichs: Wenn dein Array leer ist, kann UBound einen Fehler auslösen. Stelle sicher, dass das Array Elemente enthält, bevor du UBound aufrufst.


Alternative Methoden

  • VBA Array Count: Du kannst auch die Count-Eigenschaft eines Arrays verwenden (dies funktioniert jedoch nur für 1-dimensionale Arrays):

    Dim anzahl As Long
    anzahl = UBound(meinArray) + 1
  • Excel VBA Array Größe ermitteln: Wenn du die Größe eines 2-dimensionalen Arrays ermitteln möchtest, kannst du UBound für jede Dimension verwenden:

    Dim zeilen As Long, spalten As Long
    zeilen = UBound(meinArray, 1)
    spalten = UBound(meinArray, 2)

Praktische Beispiele

Hier ist ein vollständiges Beispiel, das zeigt, wie du die Länge eines Arrays in einer Subroutine ermitteln kannst:

Option Explicit

Sub BeispielArrayLength()
    Dim s As String
    Dim meinArray As Variant
    Dim anzahl As Long

    s = "a;b;c;d"
    meinArray = Split(s, ";")

    anzahl = UBound(meinArray) - LBound(meinArray) + 1

    MsgBox "Die Anzahl der Elemente im Array beträgt: " & anzahl
End Sub

Tipps für Profis

  • Verwende Dim für Typen: Stelle sicher, dass du deine Arrays mit Dim korrekt typisierst, um die Leistung und Lesbarkeit deines Codes zu verbessern.

  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen (On Error GoTo), um sicherzustellen, dass dein Code auch bei unerwarteten Eingaben stabil bleibt.

  • Dokumentation: Kommentiere deinen Code, damit du und andere später verstehen, was jeder Abschnitt macht, insbesondere bei komplexen Arrays.


FAQ: Häufige Fragen

1. Wie kann ich die Größe eines mehrdimensionalen Arrays ermitteln?
Du kannst UBound und LBound für jede Dimension des Arrays verwenden, um die Anzahl der Zeilen und Spalten zu ermitteln.

2. Was ist der Unterschied zwischen UBound und LBound?
UBound gibt den höchsten Index eines Arrays zurück, während LBound den niedrigsten Index zurückgibt. Dies ist wichtig, um die Gesamtanzahl der Elemente korrekt zu berechnen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige