Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1488to1492
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA String vergleichen (StrComp) geht Nicht

VBA String vergleichen (StrComp) geht Nicht
17.04.2016 18:21:15
Björn
Moin,
habe gerade ein Problem dabei einen String zu vergleichen. Ich übergebe einen String an eine Funktion und checke in der Funktion ob der String einem anderen String entspricht. Obwohl die Strings identisch sind gibt mir StrComp 1 zurück.
Wo ist mein Fehler:
Public Function SheetRename(objSheet As Object, NewName As String) As Boolean
'Problem NewName enthält string daher vergleich True. STrings aber nicht gleich ! das  _
checken
'NewName enthält "einszweidreivierfuenfsechssiebenachtneun"
Dim content As String
'NewName = Trim(NewName)           Kein Unterschied
content = "einszweidreivierfuenfsechssiebenachtneun"
If Len(NewName) > 31 Then              'Prüfung auf Länge Blattname
MsgBox NewName & Chr(10) & content  ' Es steht zweimal das gleiche Untereinander
MsgBox StrComp(NewName, content, vbTextCompare) 'Warum True (1)?
If StrComp(NewName, "einszweidreivierfuenfsechssiebenachtneun", vbTextCompare) = 0 Then
' in diese If muss ich rein aber die Bedingung ist FALSE ?
objSheet.Name = "Textblock1227"
GoTo QuitRename
End If
End If
objSheet.Name = NewName
QuitRename:
End Function

Zusatz:
NewName ist ein ausgelesener String aus einer Word Kopfzeile. content ="" ist CopyPaste aus der selben Datei - die die String sehen optisch identisch aus sind sie aber nicht ?
LG
Björn

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA String vergleichen (StrComp) geht Nicht
17.04.2016 19:40:53
Michael
Hi Björn,
versuch mal:
Option Explicit
Sub wat_nun(s1$, s2$)
Dim s1a$, s2a$
Dim i&
For i = 1 To Len(s1): s1a = s1a & Asc(Mid(s1, i, 1)) & "/": Next
For i = 1 To Len(s2): s2a = s2a & Asc(Mid(s2, i, 1)) & "/": Next
Debug.Print s1a
Debug.Print s2a
End Sub
Sub test3()
Call wat_nun("abcdef", "abcdef")
End Sub
Es scheint den Post im Forum zu überstehen, auch die Quellcode-Ansicht im Browser...
...trotzdem noch die Datei mit Makro anbei: https://www.herber.de/bbs/user/105035.xls
Viel Spaß,
Michael
P.S.: Du solltest den String sicherheitshalber auf in Blattnamen nicht verwendbare Zeichen testen.

Anzeige
AW: VBA String vergleichen (StrComp) geht Nicht
17.04.2016 20:15:16
fcs
Hallo Björn,
das Problem ist der Text, der aus Word übernommen wird. Dieser hat am Ende ggf. noch 2 mal das Zeichen 13.
Deswegen sind die Texte nicht identisch.
Diese Zeichen müssen vor dem Vergleich entfernt werden.
Gruß
Franz
Public Function SheetRename(objSheet As Object, NewName As String) As Boolean
'Problem NewName enthält string daher vergleich True. STrings aber nicht gleich ! das _
checken
'NewName enthält "einszweidreivierfuenfsechssiebenachtneun"
Dim content As String
NewName = Trim(NewName)  '       Kein Unterschied
'unerwünschte Zeichen (Zeilenschaltungen am Zeilenende), die von Word kommen abschneiden
Do Until Right(NewName, 1)  Chr(13)
NewName = Left(NewName, Len(NewName) - 1)
Loop
content = "einszweidreivierfuenfsechssiebenachtneun"
If Len(NewName) > 31 Then              'Prüfung auf Länge Blattname
MsgBox NewName & vbLf & content  ' Es steht zweimal das gleiche Untereinander
MsgBox StrComp(NewName, content, vbTextCompare) _
& vbLf & Len(NewName) & " - " & Len(content)  'Warum True (1)?
If StrComp(NewName, "einszweidreivierfuenfsechssiebenachtneun", vbTextCompare) = 0 Then
' in diese If muss ich rein aber die Bedingung ist FALSE ?
objSheet.Name = "Textblock1227"
GoTo QuitRename
End If
Else
objSheet.Name = NewName
End If
QuitRename:
End Function

Anzeige
AW: VBA String vergleichen (StrComp) geht Nicht
17.04.2016 21:13:43
Björn
GENIAL Franz ! Du rettest mir zum zweiten Mal den Hintern =)
Ich war schon am verzweifeln habe aber mir sowas in der Art schon gedacht.
Für das nächste Mal - wie kann ich mir einen String komplett anzeigen lassen ?
MsgBox hat mir die Steuerzeichen von Word ja nicht mit angezeigt.
Es klappt auf jedenfall jetzt alles so wie es soll und ich bin sehr Froh über die Hilfe, welche ich hier bekommen habe.
Vielen Dank
Björn

AW: VBA String vergleichen (StrComp) geht Nicht
18.04.2016 16:32:15
Michael
Hi Björn,
probiere doch bitte mein Makro bzw. die Datei auch mal aus, da ist ne Gemeinheit versteckt, die man beim reinen Lesen des Quellcodes NICHT sieht, erst im "Direktfenster"!
Schöne Grüße,
Michael
Anzeige

9 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige