Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1952to1956
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

.find findet String nicht

.find findet String nicht
24.11.2023 10:36:02
Jochen
Hallo Ihr Lieben,
vielleicht findet Ihr den Fehler.
Die Find-Methode findet den Fehler nicht obwohl die .usedrange den Bereich richtig auswählt.
siehe Musterdatei 164557.xlsm.

Public Sub Ticketschecken()


Dim Blatt As Worksheet
Dim RngBereich, RngFinden As Range

For Each Blatt In ActiveWorkbook.Worksheets

Set RngBereich = Blatt.UsedRange.Find("Ol7>888@=>9988979:8779;ly", lookat:=xlWhole, LookIn:=xlValues)
If Not RngBereich Is Nothing Then
Select Case Cells(1, RngBereich.Column)

Case "TagesticketNummer"
If Cells(RngBereich.Row, RngBereich.Column - 2) = Format(Now(), "DD.MM.YYYY") Then
MsgBox "Alles Klar"
Else
MsgBox "Tagesdatum passt nicht"
End If

Case "JahresaboNummer"
If Format(Cells(RngBereich.Row, RngBereich.Column - 2), "YYYY") = Format(Now(), "YYYY") Then
MsgBox "Alles Klar"
Else
MsgBox "Ticket abgelaufen passt nicht"
End If

Case "WochenendticketNummer"
If Format(Cells(RngBereich.Row, RngBereich.Column - 2), "YYYY") = Format(Now(), "YYYY") Then
MsgBox "Alles Klar"
Else
MsgBox "Ticket abgelaufen passt nicht"
End If

Case "MehrfachticketNummer"

Case "MonatsaboNummer"

End Select


End If

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: .find findet String nicht
24.11.2023 10:49:17
RPP63
Du musst den Link zum Upload kopieren und in die Antwort einfügen!
Siehe auch den Hinweis, den Du überlesen hast:


Gruß Ralf
AW: .find findet String nicht
24.11.2023 10:57:17
Jochen
Ok Sorry habe schon ein paar Jahre hier nichts mehr rein gebracht.
Danke für den Hinweis.
AW: .find findet String nicht
24.11.2023 11:28:37
Alwin Weisangler
Hallo Jochen,

suche diesen String mal mit Strg./F.
Da gibt es keinen Fund.
Es sind im String Zeichen drin, die diesen Misserfolg verursachen.
Sowohl .Find als auch Application.Match schlagen fehl.
Hier bleibt nur der Weg über Schleife
beispiehaft so:


Sub finden()
With Tabelle3
For i = 3 To 15
If .Cells(2, i) = "Qv787@8@>:9;88979:877978~h" Then MsgBox "Treffer in Spalte " & i
Next i
End With
End Sub

Da wir in Spalte 6 dieser String gefunden.

Gruß Uwe
Anzeige
AW: .find findet String nicht
24.11.2023 11:20:00
daniel
HI
folgendes:
die .Find-Funktion hat sog. Joker- bzw Funktionszeichen, dh wenn dieses Zeichen kommt, wird nicht nach diesem Zeichen gesucht, sondern nach was anderem. Die bekanntesten Beispiele sind "*" und "?", die Joker für beliebige Zeichen.

Wenn man aber jetzt nach genau so einem Zeichen suchen will, muss man dessen Funktion aufheben, und das Zeichen, um diese Funktion aufzuheben ist ein vorangestelltes ~.
Wenn man also nach dem Fragezeichen ? suchen will, muss man "~?" eingeben.

Du suchst im Beispiel nach dem Zeichen "~", das das ein Funktionszeichen ist, muss man dessen Funktion aufheben, also muss man nach "~~" suchen.

Set RngBereich = Blatt.UsedRange.Find("Qv787@8@>:9;88979:8779788~~h", lookat:=xlWhole, LookIn:=xlValues)


Gruß Daniel
Anzeige
AW: .find findet String nicht
24.11.2023 17:26:39
Jochen
Ok schon mal vielen Dank. Ich erzeuge den String aus einer Verschlüsselungsroutine. Dann müsste ich sämtliche Joker dort rausnehmen.
Hat jemand vielleicht eine schnelle Idee wie ich die "Verschlüsselung" so ändern kann das dann auch die Entschlüsselung noch funktioniert.
Eigentlich war ich damit nämlich sehr zufrieden.
Ansonsten löse ich es über die Schleife. Das kann halt irgenwann mal zu Problemen führen wenn die Datei sehr groß ist.


Public Function HelmCryp(chkPW As String) As String

Dim i As Integer
Dim newPw As String
On Error GoTo error_handler
newPw = ""
For i = 1 To Len(chkPW)
newPw = newPw & Chr(Asc(Mid(chkPW, i, 1)) + 7)
Next i
Debug.Print newPw
HelmCryp = newPw
Exit Function
error_handler: MsgBox "Fehler in der Function HelmCryp, bitte wiederholen oder Admin informieren!"
End Function



Public Function HelmUnCryp(chkPW As String) As String
Dim i As Integer
Dim newPw As String
On Error GoTo error_handler
newPw = ""
For i = 1 To Len(chkPW)
newPw = newPw & Chr(Asc(Mid(chkPW, i, 1)) - 7)
Next i
Debug.Print newPw
HelmUnCryp = newPw
Exit Function
error_handler: MsgBox "Fehler in der Function HelmUnCryp, bitte wiederholen oder Admin informieren!"
End Function


Anzeige
Die Caesaren sind los!
24.11.2023 17:34:15
RPP63
Moin!
*SCNR*
Diese Art von "Verschlüsselung" war schon vor Christus bekannt, ist folglich nicht sehr sicher. ;)
Allerdings begann Caesar beim Versatz (bei Dir 7) nach Z wieder mit A
Wahrscheinlich dachte er sich bereits vor über 2000 Jahren, dass die Range.Find-Methode von VBA ansonsten Probleme bekommt.
Auch denkbar, dass er ASCII noch nicht kannte, da noch nicht erfunden …

Gruß Ralf
AW: .find findet String nicht
24.11.2023 19:41:13
daniel
Du musst eigentlich nur im Suchtext für die .Find-Funktion die Jokerzeichen durch Tilde+Jokerzeichen ersetzten, damit vor jedem Jokerzeichen die Tilde steht

Das geht eigentlich einfach, wenn man mit Variablen arbeitet:

Txt = "abc?def*xyz~ijk"

Txt = Replace(txt, "~", "~~")
Txt = Replace(txt, "*", "~*")
Txt = Replace(txt, "?", "~?")

Set rng = ...Find(txt, ...,)

Gruß Daniel
Anzeige
AW: .find findet String nicht
27.11.2023 15:21:15
Jochen
Perfekt, dann bleibe ich beim Caesar Code ;-) Danke Euch
AW: Die Caesaren sind los!
24.11.2023 18:22:32
Jochen
Hallo Ralf,

ein wunderbarer Humor. Ich musste herzhaft lachen. Und ich war mir so sicher das alle Tod sind die die Verschlüsselung noch kennen. Na ja, da ich eigentlich nur Ticketnummern verändern wollte, damit eine Klartextkopie eines neuen Tickets nicht supereasy ist, fand ich diese Vorlagen eigentlich gut.
Ich hatte mir schon selber eine Verschlüsselung gebaut :

'Token um das Ticket zu ertstelle :

'2 ersten Buchstaben des Namen +
'Geburtsdatum als Zahl x aktuelles Datum der Ticketausstellung / Kundennummer +
'2 letzten Buchstaben des Namen


Die war aber so sicher, das ich Sie nicht mehr entschlüsseln konnte. :-)) und jetzt tut es mir fast leid, das ich alles wieder gelöscht habe. Ich hatte die Vorlagen gefunden und dachte: Na das kennt ja keiner mehr.. So sicher.. Aber VBA war anderer Meinung.

Also auf alle Fälle danke für deinen Tip.

Ich hatte natürlich auch schon gesucht aber die Quanten-Parabol-Differenzial Verschlüsselungen überstiegen nicht nur meine IQ-Stufe sondern auch mein Zeitbudget.
Als Maschinenbauer habe ich zwar ein Grundverständis von Zusammenhängen aber nur ein begrenztes Zeitbudget diese zu erschließen.
Falls du noch eine Vorlage kennst die zwischen Jesu Geburt und der Entdeckung von Amerika liegt, bei der ein VBA Visionär schon Excel 2019 berücksichtigt hatte wäre ich
nicht abgeneigt.
Es könnte natürlich auch nach 1963 sein, da war dann ASCII zumindest schon bekannt oder nach 1993 da könnte dann schon jemand an VBA gedacht haben da mit Excel 5.0 ja dieser Meilenstein gesetzt wurde (Na ja das ist dann wohl doch zu optimistisch, dann eher der Visionär). Da war ich dann zumindest schon auf der Welt und könnte etwas davon verstehen.

Lg Jochen
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige