Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Stringvergleich funktioniert nicht


Betrifft: Stringvergleich funktioniert nicht von: Jürgen Vogelauer
Geschrieben am: 15.01.2019 09:18:56

Hallo zusammen,

Ich habe folgendes Problem, ich hoffe ihr könnt mir helfen.

Ich lese 2 Strings ein und will diese miteinander vergleichen.
Die Strings sind laut Lokal-Fenster absolut ident und haben auch den selben Datentyp (String). Trotzdem wird die If Bedingung nicht erfüllt.
Wenn man die beiden Strings mit StrComp vergleicht, so wird ausgegeben, dass diese sich unterscheiden. Dies tun sie aber nicht? Woran kann dies liegen?
Habe die üblichen Dinge wir Leerzeichen Trimmen usw. versucht, daran liegt es nicht.
Anbei der Code, ich hoffe ihr könnt mir helfen!
lg, Jürgen

Sub Makro9()

Dim ArtikelFinden As String
Dim ArtikelSuchen As String

 ArtikelSuchen = Worksheets("Bestand").Cells(4, 1)          'String: "0224000"
 ArtikelFinden = Worksheets("Import Ldbg").Cells(3, 2)      'String: "0224000"

 Vergleich1 = StrComp(ArtikelSuchen, ArtikelFinden, 0)      'Ergebnis: 1
 Vergleich2 = StrComp(ArtikelSuchen, ArtikelFinden, 1)      'Ergebnis: -1
 
 If ArtikelSuchen = ArtikelFinden Then                      'Bedingung wird nicht erfüllt?
     Ausgabe = MsgBox("Artikel gefunden!", vbOKOnly)
 End If

End Sub

  

Betrifft: Das Ergebnis … von: RPP63
Geschrieben am: 15.01.2019 09:32:57

… von StrComp() muss 0 sein, wenn die Texte tatsächlich gleich sind!
Da bei Dir etwas anderes heraus kommt, sind sie eben nicht gleich.
Du solltest mal die Datei mit lediglich den beiden Zellen hochladen.
Dann kann man sich das näher anschauen.

Gruß Ralf


  

Betrifft: AW: Das Ergebnis … von: Luschi
Geschrieben am: 15.01.2019 09:41:41

Hallo Jürgen,

wenn in der 1. Zelle der Wert so eingegeben wurde: '0224000
und in der 2. Zelle 224000 und diese Zelle benutzerdefiniert formatiert wurde: 0000000
dann sehen die beiden Werte zwar gleich aus, sind aber inhaltlich nicht das selbe.

Gruß von Luschi
aus klein-Paris


  

Betrifft: AW: Stringvergleich funktioniert nicht von: Daniel
Geschrieben am: 15.01.2019 09:43:35

Hi
dazu müsste man jetzt wissen, was wirklich in den Zellen steht, dh du solltest mal die Datei hochladen.

oder du lässt mal dieses Makro zum Texten laufen.
Dieser Code zeigt dir im Direktfenster nebeneinander die ASCII-Codes der Zeichen der beiden Variablen.
Wenn die Zahlenwerte an irgendeiner Stelle nicht gleich sind, hast du deine Abweichung gefunden.

Sub Makro9()

Dim ArtikelFinden As String
Dim ArtikelSuchen As String
Dim i As Long
Dim L As Long


 ArtikelSuchen = Worksheets("Bestand").Cells(4, 1)          'String: "0224000"
 ArtikelFinden = Worksheets("Import Ldbg").Cells(3, 2)      'String: "0224000"

If Len(ArtikelFinden) <> Len(ArtikelSuchen) Then
    MsgBox "Unterschiedlich lang!"
Else
  For i = 1 To Len(ArtikelSuchen)
    Debug.Print "pos" & i & ":", AscW(Mid(ArtikelFinden, i, 1)), AscW(Mid(ArtikelSuchen, i, 1))
  Next
End If
End Sub
Gruß Daniel


  

Betrifft: AW: Stringvergleich funktioniert nicht von: Jürgen Vogelauer
Geschrieben am: 15.01.2019 09:59:02

Hallo Ralf,
Hallo Daniel,

Vielen Dank für eure Rückmeldungen!
Ich finde den Fehler aber immer noch nicht, ich denke ich stehe auf dem Schlauch.
Anbei die Datei.

https://www.herber.de/bbs/user/126766.xlsm

Ev. seht ihr den Grund.

lg, Jürgen


  

Betrifft: AW: Stringvergleich funktioniert nicht von: RPP63
Geschrieben am: 15.01.2019 10:13:36

In Bestand steht tatsächlich die Textzahl 0224000
In Import beginnt die "Zahl" mit dem Zeichen 31, am Ende stehen neun Leerzeichen Zeichen(32)

Da ist nix gleich! ;)


  

Betrifft: AW: Stringvergleich funktioniert nicht von: RPP63
Geschrieben am: 15.01.2019 10:16:47

Ach so:
Die unerwünschten Zeichen bekommst Du so weg:
=GLÄTTEN(SÄUBERN(dieZelle))


  

Betrifft: AW: Stringvergleich funktioniert nicht von: Jürgen Vogelauer
Geschrieben am: 15.01.2019 10:30:27

Hallo RPP63,

Ja, jetzt funktioniert es - vielen Dank!

Das GLÄTTEN war nicht der Grund, ich hatte den String zuvor auch schon mit LTRIM und RTRIM bearbeitet.
Das SÄUBERN hast den Ausschlag gegeben :-)

Vielen Dank!!
Gruß, Jürgen

P.S. Ich brauche das Herber Forum nicht oft, aber wenn, dann habe ich noch jedes mal innerhalb von wenigen Stunden eine Hilfe bekommen. Tolles Forum, ganz großes Kompliment an alle Beteiligten!!!


  

Betrifft: AW: Stringvergleich funktioniert nicht von: UweD
Geschrieben am: 15.01.2019 10:23:32

Hallo


so??

 ArtikelFinden = WorksheetFunction.Clean(Trim(ArtikelFinden))
LG UweD


  

Betrifft: AW: Stringvergleich funktioniert nicht von: Jürgen Vogelauer
Geschrieben am: 15.01.2019 10:57:38

Hallo Uwe,

Ja, funktioniert. Ziemlich elegant gelöst, vielen Dank!

lg, Jürgen


  

Betrifft: AW: Stringvergleich funktioniert nicht von: Luschi
Geschrieben am: 15.01.2019 11:57:19

Hallo Jürgen,

trotzdem ist des Besser, den vorhandenen Datenbestand zu säubern, als dann mit Zusatzfunktionalitäten erst in der Auswertung anzufangen, mit 'Hängen & Würgen' die Ausgangsdaten umzubiegen, denn damit wird ja nicht das Problem beseitigt, sondern nur vertagt.

Gruß von Luschi
aus klein-Paris


  

Betrifft: Sehe ich genauso, Luschi! von: RPP63
Geschrieben am: 15.01.2019 12:38:25

Schließlich heißt das eine Blatt ja wohl nicht von ungefähr Import …
Genau da muss man ansetzen: "sauberer" Import (mittels PowerQuery?)