Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Array füllen und für If Abfrage verwenden

Array füllen und für If Abfrage verwenden
15.09.2017 11:44:27
Jens
Hallo,
wie kann ich ein Array mit Kürzel (z.b Es) füllen und dann über eine If abfrage einbinden.
Sprich wenn das Kürzel in der array enthalten ist, dann soll etwas bestimmtes gemacht werden.
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
mit nem Dictionary owt.
15.09.2017 11:52:37
Jack_d
ohne weiteren Text
AW: mit nem Dictionary owt.
15.09.2017 11:54:33
Jens
Ich verstehe es nicht... Kenne mich in Vba nicht so aus
AW: mit nem Dictionary owt.
15.09.2017 12:03:48
Martin
Hallo Jens,
das Dictionary (Suche im Archiv mal nach "Dictionary.Object") bietet sich hervorragend an, um per Schlüsselwort auf Werte zuzugreifen. Wenn Dein Schlüssen "Es" ist, kannst du einen Wert dazu ablegen bzw. abfragen ohne per Schleife alle Einträge abfragen zu müssen. Auch eine einfache "Exist"-Abfrage ist damit möglich.
Viele Grüße, Martin
Anzeige
AW: Array füllen und für If Abfrage verwenden
15.09.2017 12:00:50
Martin
Hallo Jens,
um alle Inhalte eines Array zu durchsuchen kannst du mit einer Schleife
For i = 0 To ubound([ArrayName], [Dimension])

alle Einträge durchsuchen und per
If Instr([ArrayName][Index],"Es"]) > 0 Then

abfragen, ob ein Eintrag das Kürzel "Es" enthält.
Viele Grüße, Martin
Anzeige
AW: Array füllen und für If Abfrage verwenden
15.09.2017 12:02:25
UweD
Hallo
Sub tt()
    Dim arr, Z
    arr = Array("ab", "fr", "es", "ht")
    
    For Each Z In arr
        If Z = "es" Then
            MsgBox "Ja"
        End If
    Next
End Sub

LG UweD
Anzeige
AW: Array füllen und für If Abfrage verwenden
15.09.2017 12:11:16
Jens
Besten Dank.
Wie verbinde ich das nun noch so, dass ich den Inhalt der Zelle A1 mit dem Inhalt des Array vergleiche und dann eben die MSBgob ausführe?

Sub tt()
Dim arr, Z
arr = Array("1", "fr", "es", "ht")
For Each Z In arr
If Cells(1, 1).Value = Z Then
MsgBox "Ja"
End If
Next
End Sub

So geht es nicht
Anzeige
doch, geht so
15.09.2017 12:20:17
Rudi
Hallo,
aber nur wenn in A1 des aktiven Blatts auch was aus dem Array steht.
Gruß
Rudi
also bei mir geht dein Code doch
15.09.2017 12:21:57
Martin
...aber die Groß-/Kleinschreibung muss beschtet werden. Oder mach es so:
Sub tt()
Dim arr, Z
arr = Array("1", "fr", "es", "ht")
For Each Z In arr
If LCase(Z) = LCase(Cells(1, 1).Value) Then
MsgBox "Ja"
End If
Next
End Sub

Anzeige
aber die Groß-/Kleinschreibung muss beachtet...
15.09.2017 12:36:36
Rudi
Hallo Martin,
alternativ zu LCase() Option Compare Text in den Modulkopf schreiben.
Gruß
Rudi
AW: aber die Groß-/Kleinschreibung muss beachtet...
15.09.2017 16:29:22
Jens
Hallo
so nachfolgend mein Code.
Es werden nun alle Zellen roteingefärbt. Auch die Zellen deren Inhalt nicht dem Array entspricht. Warum?

Sub DIN_Kürzel()
Dim arr, Z
arr = Array("BS", "BA", "WA", "WS")
lr = Cells(Rows.Count, "A").End(xlUp).Row
For i = 13 To lr
For Each Z In arr
If Cells(i, 1).Value = Z Then
Cells(i, 4).Interior.Color = RGB(255, 255, 255)
Else
'Cells(i, 4).Interior.Color = RGB(255, 0, 0)
End If
Next
Next
End Sub

Anzeige
AW: aber die Groß-/Kleinschreibung muss beachtet...
16.09.2017 09:28:13
Piet
Hallo Jens
das Problem bi Excel ist, die Twext Auswertung ist "knüppelhart logisch", man darf sich keine Fehler erlauben!!
Bei dir fehlt "Exit For" im Code, denn wenn du auf einen Text gestossen bist, z.B. "BS", aber dann nicht sofort aus der For Each Schleife ausspringst, stimmt der naechste "Z" Wert nicvht mehr, wird die Zelle wieder auf weiss gesetzt! Probier mal den unteren Code.
mfg Piet
    For Each Z In arr
If Cells(i, 1).Value = Z Then
Cells(i, 4).Interior.Color = RGB(255, 0, 0)
Exit For
Else
Cells(i, 4).Interior.Color = RGB(255, 255, 255)
End If

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Array füllen und für If-Abfragen verwenden


Schritt-für-Schritt-Anleitung

Um ein Array in VBA zu füllen und es für If-Abfragen zu verwenden, kannst du folgende Schritte befolgen:

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Neues Modul erstellen: Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)" und wähle Einfügen > Modul.

  3. Array definieren und füllen: Verwende den folgenden Code, um ein eindimensionales Array zu erstellen und mit Werten zu füllen:

    Sub ArrayBefuellen()
       Dim arr As Variant
       arr = Array("ab", "fr", "es", "ht")
    End Sub
  4. If-Abfrage implementieren: Füge den folgenden Code hinzu, um das Array zu durchsuchen und eine Aktion auszuführen, wenn ein bestimmter Wert gefunden wird:

    For Each Z In arr
       If Z = "es" Then
           MsgBox "Ja"
       End If
    Next
  5. Zusammenführen: Verbinde den Code, um den Inhalt der Zelle A1 mit dem Array zu vergleichen:

    Sub tt()
       Dim arr As Variant
       Dim Z As Variant
       arr = Array("1", "fr", "es", "ht")
    
       For Each Z In arr
           If Cells(1, 1).Value = Z Then
               MsgBox "Ja"
           End If
       Next
    End Sub

Häufige Fehler und Lösungen

  • Fehler: Das Array wird nicht gefüllt.

    • Lösung: Stelle sicher, dass du das Array korrekt definierst, z.B. Dim arr As Variant.
  • Fehler: Groß-/Kleinschreibung wird nicht beachtet.

    • Lösung: Verwende LCase() für den Vergleich oder füge Option Compare Text am Anfang deines Moduls hinzu.
  • Fehler: Werte aus dem Array werden nicht korrekt abgefragt.

    • Lösung: Stelle sicher, dass du die Schleife korrekt implementierst und gegebenenfalls Exit For verwendest, um die Schleife zu verlassen, wenn ein Treffer gefunden wurde.

Alternative Methoden

Eine Alternative zum Füllen eines Arrays in VBA ist die Verwendung eines Dictionaries. Dies ermöglicht eine schnelle Abfrage von Werten ohne Schleifen. Hier ist ein Beispiel:

Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
dict.Add "es", "Wert1"
dict.Add "fr", "Wert2"

If dict.Exists(Cells(1, 1).Value) Then
    MsgBox "Ja, der Wert existiert."
End If

Praktische Beispiele

Hier sind einige praktische Beispiele, die dir helfen, das Konzept des Arrayfüllens in VBA zu verstehen:

  1. Eindimensionales Array füllen:

    Sub BeispielArray()
       Dim arr As Variant
       arr = Array("A", "B", "C", "D")
       Dim i As Integer
    
       For i = LBound(arr) To UBound(arr)
           Debug.Print arr(i)
       Next i
    End Sub
  2. Vergleich mit einer Zelle:

    Sub VergleicheMitZelle()
       Dim arr As Variant
       Dim Z As Variant
       arr = Array("Ja", "Nein", "Vielleicht")
    
       For Each Z In arr
           If LCase(Z) = LCase(Cells(1, 1).Value) Then
               Cells(1, 2).Value = "Treffer!"
           End If
       Next
    End Sub

Tipps für Profis

  • Nutze Debug.Print, um den Inhalt deines Arrays während der Ausführung zu überprüfen.
  • Experimentiere mit mehrdimensionalen Arrays für komplexere Datenstrukturen.
  • Verwende Application.Match, um die Suche in einem Array zu optimieren.
  • Berücksichtige die Verwendung von Option Base 1, wenn du mit Arrays arbeitest, um die Indizes von 1 beginnen zu lassen.

FAQ: Häufige Fragen

1. Wie definiere ich ein mehrdimensionales Array in VBA? Du kannst ein mehrdimensionales Array so definieren:

Dim arr(1 To 5, 1 To 3) As Variant

2. Wie kann ich ein Array dynamisch füllen? Verwende eine Schleife und die ReDim-Anweisung, um ein Array dynamisch zu füllen.

Dim arr() As String
ReDim arr(0 To 5)
For i = 0 To 5
    arr(i) = "Wert" & i
Next i

3. Gibt es einen Limit für die Größe eines Arrays in VBA? Ja, der maximale Index eines Arrays ist 65535 für eindimensionale Arrays und 32767 für mehrdimensionale Arrays.

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