If Abfrage erkennt gleiche Array Werte nicht

Bild

Betrifft: If Abfrage erkennt gleiche Array Werte nicht
von: Martin
Geschrieben am: 10.09.2015 23:30:33

Hallo,
ich habe ein Problem, was mir Kopfzerbrechen bereitet.
Ich habe zwei Arrays (jeweils zweidimensional). Nun möchte ich für Werte aus dem ersten Array prüfen, ob diese Werte ebenfalls im zweiten Array enthalten sind.
Hierfür durchlaufe ich das zweite Array mit einer For Schleife und Prüfe mit einer IF Abfrage, ob die jeweiligen Werte gleich sind.
Hier taucht allerdings ein Problem auf.
Auch wenn die Werte gleich sind, ist die If Abfrage aus irgendeinem Grund nicht erfüllt. Die Werte sind für VBA also nicht gleich.
Dass die Werte gleich sind, habe ich im Direktfenster überprüft, also beide Werte über debug.print ins Direktfenster geschrieben.
Kennt jemand ein derartiges Problem? Woran könnte sowas liegen?
Hier ist mal der Ausschnitt von meinem Code:


        If Arr(z, 8) = "X" Then
            Arr(z, 8) = "YES"
            For x = 1 To UBound(FreestockArr)
            Debug.Print FreestockArr(x, 1)  'Diese beiden Werte sind gleich
            Debug.Print Arr(z, 3)           'Diese beiden Werte sind gleich
                If Arr(z, 3) = FreestockArr(x, 1) Then   'Hier taucht das Problem auf
                    Arr(z, 9) = FreestockArr(x, 2)
                    Arr(z, 10) = FreestockArr(x, 3)
                    GoTo gefunden
                End If
            Next
gefunden:
        End If 

Bild

Betrifft: AW: If Abfrage erkennt gleiche Array Werte nicht
von: Martin
Geschrieben am: 11.09.2015 06:43:10
Ich hab übrigens schon versucht die Zahlen zu runden (obwohl es eigentlich Ganzzahlen sind) und Leerzeichen haben sich auch nicht eingeschlichen.

Bild

Betrifft: AW: If Abfrage erkennt gleiche Array Werte nicht
von: Rudi Maintaire
Geschrieben am: 11.09.2015 10:01:49
Hallo,
schon mit
If CLng(Arr(z, 3)) = CLng(FreestockArr(x, 1)) Then
versucht?
Gruß
Rudi

Bild

Betrifft: AW: If Abfrage erkennt gleiche Array Werte nicht
von: Daniel
Geschrieben am: 11.09.2015 10:25:28
Hi
prüfe auch mal folgendes:
Debug.Print FreestockArr(x, 1), VarType(FreestockArr(x, 1)),
Debug.Print Arr(z, 3), VarType(FreestockArr(x, 1))
damit überprüfst du, ob in einer der Variabeln nicht eine als Text gespeicherte Zahl vorliegt
falls das der Fall sein sollte und hier unterschiedliche Datentypen vorliegen, kannst du den mit einer der C-Funktionen (CStr, CLng, CDbl) umwandeln und angleichen.
ich würde allerdings hier in einen Text wanden (CStr), dann bekommst du keinen Fehler, falls in den Zellen mal ein Text vorkommt, der nicht wandelbar ist.
Mit TRIM kannst du dann auch gleich Leerzeichen abschneiden, welche auch gerne mal nach Datenimporten an den Werten anhängen:

If Trim(CStr(Arr(z, 3))) = Trim(CStr(FreestockArr(x, 1))) Then
Gruß Daniel

Bild

Betrifft: AW: If Abfrage erkennt gleiche Array Werte nicht
von: Martin
Geschrieben am: 11.09.2015 16:25:25
Jawoll! Vielen Dank!
Das war tatsächlich das Problem.
Die eine Spalte in der Tabelle aus der das Array erstellt wird, war als Text formatiert, weshalb auch das eine Array als String und das andere als Long definiert war. Ich habs jetzt entsprechend angepasst und so läufts. THX =)

 Bild

Beiträge aus den Excel-Beispielen zum Thema "If Abfrage erkennt gleiche Array Werte nicht"