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

Forumthread: Vergleich Wert aus Array mit String

Vergleich Wert aus Array mit String
01.07.2015 10:50:24
Dirk
Hallo,
bei folgendem Code bekommen ich die Fehlermeldung "Typen unverträglich". Leider kabe ich keine Ahnung wieso.
Sub Test()
Dim temparr() As Variant
Dim datarr() As Variant
datarr = Array("CD3_19", "CD4_8", "CD16_56", "HLADR", "CD25", "CD 8_57")
For i = 0 To 6
If datarr(i) = "CD3_19" Or "CD4_8" Then
temparr = Array(2, 5)
....
Kann mir da mal bitte wer aus die Sprünge helfen?
Danke schonmal
Dirk

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vergleich Wert aus Array mit String
01.07.2015 11:19:52
Daniel
Hi
es wäre leichter dir zu helfen, wenn du dazu schreiben würdest, in welcher Programmzeile der Fehler auftritt.
unabhängig vom fehler solltest du noch folgendes im Code änderen:
wenn du in einer Schleife durch das gesamte Array laufen willst, dann lass doch ersten und letzten Index durch VBA ermitteln, dann musst du dir da keine Gedanken drum machen und brauchst den Code nicht ändern, falls sich die Anzahl der Werte im Array erhöht oder erniedrigt.
for i = LBound(datarr) to Ubound(datarr)
wenn die IF-Prüfung in zwei Fällen WAHR ergeben soll dann so:
if datarr(i) = "CD3_19" or datarr(i) = "CD4_8" Then

alternativ auch Select case:
for i = Lbound(datarr) to Ubound(datarr)
Select Case  datarr(i)
case "CD3_19", "CD4_8"
temparr = Array(2, 5)
Case else
end Select
next

Gruss Daniel

Anzeige
AW: Vergleich Wert aus Array mit String
01.07.2015 11:26:44
Dirk
Danke Daniel, das war es. Der Vollständigkeit halber: Der Fehler trat in der Zeile:
If datarr(i) = "CD3_19" Or "CD4_8" Then 
auf.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Vergleich von Werten aus einem Array mit Strings in Excel VBA


Schritt-für-Schritt-Anleitung

Um einen Wert aus einem Excel-VBA Array mit einem String zu vergleichen, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Deklariere das Array: Zuerst musst du dein Array definieren. In diesem Fall verwenden wir Variant, um verschiedene Datentypen zuzulassen.

    Dim datarr() As Variant
    datarr = Array("CD3_19", "CD4_8", "CD16_56", "HLADR", "CD25", "CD8_57")
  2. Schleife durch das Array: Verwende LBound und UBound, um durch alle Elemente des Arrays zu iterieren, ohne dir Gedanken über die Anzahl der Elemente machen zu müssen.

    For i = LBound(datarr) To UBound(datarr)
  3. Vergleich der Strings: Stelle sicher, dass du jeden Wert korrekt mit dem gewünschten String vergleichst. Zum Beispiel:

    If datarr(i) = "CD3_19" Or datarr(i) = "CD4_8" Then
       ' Deine Logik hier
    End If
  4. Verwende Select Case für mehrere Vergleiche: Eine alternative Methode ist die Verwendung der Select Case Anweisung, die den Code leserlicher macht.

    Select Case datarr(i)
       Case "CD3_19", "CD4_8"
           ' Deine Logik hier
       Case Else
           ' Andere Logik
    End Select

Häufige Fehler und Lösungen

  • Fehler: "Typen unverträglich": Dieser Fehler tritt häufig auf, wenn du versuchst, einen String mit einem anderen Datentyp zu vergleichen. Stelle sicher, dass du den richtigen Datentyp verwendest, wie im Schritt-für-Schritt-Beispiel gezeigt.

  • Falsche Syntax in der If-Anweisung: Achte darauf, dass du die Bedingungen in deiner If-Anweisung korrekt formulierst, wie zum Beispiel:

    If datarr(i) = "CD3_19" Or datarr(i) = "CD4_8" Then

Alternative Methoden

Neben der Nutzung von If und Select Case kannst du auch andere Methoden verwenden, um Strings im Array zu vergleichen:

  • VBA-Funktionen: Verwende VBA-Funktionen wie InStr, um zu überprüfen, ob ein Teilstring in einem anderen String vorhanden ist.

    If InStr(datarr(i), "CD") > 0 Then
       ' Logik, wenn "CD" im String vorhanden ist
    End If
  • Erstellen einer Liste von Strings: Du kannst auch ein Array von Strings in Form einer Liste erstellen und dann mit einer Schleife durch diese Liste iterieren.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du Strings mit einem Excel-VBA Array vergleichen kannst:

Beispiel 1: Einfache If-Anweisung

Sub BeispielIf()
    Dim datarr() As Variant
    datarr = Array("CD3_19", "CD4_8", "CD16_56")

    For i = LBound(datarr) To UBound(datarr)
        If datarr(i) = "CD4_8" Then
            MsgBox "Wert gefunden: " & datarr(i)
        End If
    Next i
End Sub

Beispiel 2: Verwendung von Select Case

Sub BeispielSelectCase()
    Dim datarr() As Variant
    datarr = Array("CD3_19", "CD4_8", "CD16_56")

    For i = LBound(datarr) To UBound(datarr)
        Select Case datarr(i)
            Case "CD3_19", "CD4_8"
                MsgBox "Wert gefunden: " & datarr(i)
            Case Else
                ' Nichts tun
        End Select
    Next i
End Sub

Tipps für Profis

  • Optimierung der Performance: Wenn du mit großen Arrays arbeitest, kann es hilfreicher sein, die Application.ScreenUpdating und Application.Calculation Eigenschaften zu deaktivieren, um die Performance zu verbessern.

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    ' Dein Code hier
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um unerwartete Fehler während der Ausführung deines Codes zu vermeiden.

    
    On Error GoTo Fehlerbehandlung
    ' Dein Code hier
    Exit Sub

Fehlerbehandlung: MsgBox "Ein Fehler ist aufgetreten: " & Err.Description



---

#### FAQ: Häufige Fragen {#id6}

**1. Wie vergleiche ich in VBA ein Array mit einem String?**  
Du kannst die `If`-Anweisung oder `Select Case` verwenden, um die Elemente des Arrays mit einem bestimmten String zu vergleichen.

**2. Was bedeutet "Typen unverträglich"?**  
Dieser Fehler tritt auf, wenn du versuchst, unterschiedliche Datentypen miteinander zu vergleichen. Achte darauf, dass du Strings mit Strings vergleichst.

**3. Wie kann ich ein Array von Strings in VBA erstellen?**  
Du kannst ein Array mit der `Array`-Funktion erstellen, wie im Tutorial beschrieben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige