Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA: Abfrage, ob Array existiert

VBA: Abfrage, ob Array existiert
02.04.2005 20:28:37
Christoph
Hallo bestes Forum,
es sind mal wieder die kleinen Punkte, dan denen ich hängen bleibe - und hoffe ein weiteres Mal auf eure Hilfe.
An eine Prozedur wird optional ein Array übergeben. Daher muss zunächst geprüft werden, ob dieses Array existiert. Hierzu fehlt mir der richtige VBA-Syntax.
Meine kläglichen Versuche:
"If Not IsEmty(arr) Then ..."
"If arr "" Then ..."
ein einfaches Beispiel siehe unten
vielen Dank für eure Hilfe
Gruß
Christoph

Option Explicit
Sub Test(intCnt As Integer, Optional arr)
'If Not IsEmpty(arr) Then
'If arr <> "" Then
MsgBox intCnt & " / " & UBound(arr)
End Sub
Sub MitArray()
Dim arrOpt(3)
Call Test(2, arrOpt)
End Sub
Sub OhneArray()
Call Test(1)
End Sub

		
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Abfrage, ob Array existiert
02.04.2005 20:37:14
MichaV
Hi,
hilft ismissing(arr)?
Gruß
Genau, das war's - merci
02.04.2005 20:47:47
Christoph
Hallo Micha
wieder was gelernt, vielen Dank
Gruß
Christoph

Sub Test(intCnt As Integer, Optional arr)
If Not IsMissing(arr) Then
MsgBox intCnt & " / " & UBound(arr)
Else
MsgBox intCnt
End If
End Sub

Anzeige
AW: VBA: Abfrage, ob Array existiert
02.04.2005 20:38:54
Ramses
Hallo
vielleicht könntest du mal etwas genauer beschreiben was du machen willst.
Aus deiner Beschreibung und deinem Beispiel werde ich ehrlich gesagt nicht richtig schlau :-)
Gruss Rainer
Danke Rainer, Problem ist schon gelöst
02.04.2005 20:52:38
Christoph
Hallo
siehe Antwort von Micha. Mir fehlte der Syntax "IsMissing"
Danke für dein Interesse
Gruß
Christoph
Anzeige
AW: Danke Rainer, Problem ist schon gelöst
02.04.2005 21:02:57
Ramses
Hallo
Gern geschehen, aber mit IsMissing prüfst du nur, ob ein Argument übergeben worden ist.
Es ist nach wie vor offen, ob das Array überhaupt gefüllt ist.
In deinem Beispiel hast du das Array lediglich dimensioniert, .... Daten sind aber keine drin ;-)
Anyway,.. viel Spass weiterhin
Gruss Rainer
Anzeige
Da hast du recht
02.04.2005 21:22:32
Christoph
Hallo Rainer,
da hast du schon recht, mir ging es auch in erster Linie darum, ob das Argument übergeben worden ist. Erst dann kann ich prüfen, ob Werte in dem Array existieren.
Ich hab eben auch die Online-Hilfe zu IsMissing überflogen, damit komm ich auf jeden Fall weiter. Es ist nur eben schwer, in der OL-Hilfe nach was zu suchen, das man nicht kennt. Daher war der Tipp von MichaV genau der richtige.
Aufgrund der OL-Hilfe stellt sich mir natürlich gleich die nächste Frage: was meinen die Jungs mit "ParamArray" - aber das Wochenende ist ja noch lang...
ich wünsch dir was
Gruß
Christoph
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Abfrage, ob ein Array in VBA existiert


Schritt-für-Schritt-Anleitung

Um in Excel VBA zu prüfen, ob ein Array existiert, kannst du die Funktion IsMissing verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Deklariere die Prozedur: Erstelle eine Subroutine, die ein optionales Array als Parameter akzeptiert.

    Sub Test(intCnt As Integer, Optional arr)
  2. Überprüfe, ob das Array übergeben wurde: Verwende IsMissing, um zu prüfen, ob das Array übergeben wurde.

    If Not IsMissing(arr) Then
  3. Verwende UBound: Wenn das Array existiert, kannst du die Funktion UBound nutzen, um die obere Grenze des Arrays abzufragen.

    MsgBox intCnt & " / " & UBound(arr)
    Else
    MsgBox intCnt
    End If
  4. Fülle das Array: Wenn du ein Array übergeben möchtest, stelle sicher, dass es auch gefüllt ist.

    Dim arrOpt(3) As Variant
  5. Testen: Führe deine Prozeduren aus, um die Funktionsweise zu überprüfen.


Häufige Fehler und Lösungen

  • Fehler: "IsEmpty" verwendet: Der Versuch, IsEmpty zu nutzen, führt nicht zum gewünschten Ergebnis. Verwende stattdessen IsMissing.

  • Fehler: "Array nicht gefüllt": Auch wenn du IsMissing korrekt benutzt, kann es sein, dass das Array leer ist. Achte darauf, dass du beim Erstellen des Arrays auch Werte hinzufügst.

  • Lösung für "vba not in array": Um zu prüfen, ob ein bestimmter Wert im Array vorhanden ist, kannst du eine Schleife verwenden, um alle Elemente zu durchlaufen.


Alternative Methoden

Eine alternative Methode besteht darin, eine Funktion zu erstellen, die prüft, ob ein Wert im Array vorhanden ist:

Function WertInArray(prüfWert As Variant, arr As Variant) As Boolean
    Dim i As Long
    WertInArray = False
    For i = LBound(arr) To UBound(arr)
        If arr(i) = prüfWert Then
            WertInArray = True
            Exit Function
        End If
    Next i
End Function

Diese Funktion gibt True zurück, wenn der Wert im Array vorhanden ist, andernfalls False.


Praktische Beispiele

Hier sind einige praktische Beispiele, die die oben genannten Konzepte verdeutlichen.

  1. Array-Überprüfung mit IsMissing:

    Sub Beispiel()
       Dim arr() As Variant
       Call Test(1, arr)
    End Sub
  2. Wert im Array prüfen:

    Dim arrTest(2) As Variant
    arrTest(0) = "A"
    arrTest(1) = "B"
    arrTest(2) = "C"
    
    If WertInArray("B", arrTest) Then
       MsgBox "Wert gefunden!"
    Else
       MsgBox "Wert nicht gefunden."
    End If

Tipps für Profis

  • ParamArray verwenden: Wenn du eine variable Anzahl von Argumenten akzeptieren möchtest, kannst du ParamArray verwenden. Das ermöglicht eine flexiblere Handhabung von Arrays in VBA.

  • Verwendung von Option Explicit: Setze immer Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind.

  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um sicherzustellen, dass dein Code auch bei unerwarteten Eingaben stabil bleibt.


FAQ: Häufige Fragen

1. Wie prüfe ich, ob ein Wert im Array vorhanden ist?
Du kannst eine Schleife verwenden, um jedes Element des Arrays zu durchlaufen und zu überprüfen, ob der Wert übereinstimmt.

2. Was ist der Unterschied zwischen IsMissing und IsEmpty?
IsMissing prüft, ob ein optionales Argument übergeben wurde, während IsEmpty überprüft, ob eine Variable leer ist. Bei Arrays ist IsMissing die richtige Wahl.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige