In Access 2010 Wörter aus textfeld im memofeld suchen und hervorheben
Hallo, ich habe folgendes Problem.
In einem Textfeld werden verschiedene Wörter eingegeben,
Diese Wörter sollen in einem anderen Textfeld gesucht und dann markiert werden.
Problem hierbei da es sich um ein reines text formatiertes textfeld handelt
Vielleicht kann mir hier jemand helfen
In einem Textfeld werden verschiedene Wörter eingegeben,
Diese Wörter sollen in einem anderen Textfeld gesucht und dann markiert werden.
Problem hierbei da es sich um ein reines text formatiertes textfeld handelt
Vielleicht kann mir hier jemand helfen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 223338
Url: https://administrator.de/forum/in-access-2010-woerter-aus-textfeld-im-memofeld-suchen-und-hervorheben-223338.html
Ausgedruckt am: 09.04.2025 um 10:04 Uhr
9 Kommentare
Neuester Kommentar
Hallo Thomas,
das kannst du z.B. wie folgt erreichen:
Im Beispiel ist
Wird ein Treffer gefunden wird dieser im Memofeld selektiert.
Das ganze lässt sich auch noch so erweitern das bei mehreren Treffern diese nacheinander markiert werden.
Wie dies aussehen könnte kannst du an dieser Demo-Access-Datenbank nachvollziehen.
Grüße Uwe
das kannst du z.B. wie folgt erreichen:
Im Beispiel ist
txtSearch
das Suchfeld in das der Begriff eingegeben wird, und txtContent
das Feld in dem danach gesucht wird.Wird ein Treffer gefunden wird dieser im Memofeld selektiert.
Private Sub btnSuche_Click()
txtSearch.SetFocus
sWord = txtSearch.Text
txtContent.SetFocus
sContent = txtContent.Text
'Suche Anfangsposition des Suchwortes
sPosition = InStr(1, sContent, sWord, vbTextCompare)
'Wenn ein Treffer gefunden wurde setze die Auswahl auf ihn
If sPosition > 0 Then
txtContent.SelStart = sPosition - 1
txtContent.SelLength = Len(sWord)
End If
End Sub
Wie dies aussehen könnte kannst du an dieser Demo-Access-Datenbank nachvollziehen.
Grüße Uwe
Zitat von @thomas1972:
Besteht irgendwie die Möglichkeit alle
Wörter gleichzeitig hervorgehoben angezeigt zu bekommen?
Oder muss dazu das textfeld richtext formatiert sein um dann per vba einfach die gesuchten Felder hervor zu heben?
Ja, es muss in diesem Fall ein Richtext-Feld sein. Mit einem Nur-Text-Feld lässt sich leider nicht viel mehr machen, da eine Selektion nicht gesplittet werden kann. Hingegen bei einem Richtext-Feld z.B. alle gefundenen Wörter grün eingefârbt werden kônnten.Besteht irgendwie die Möglichkeit alle
Wörter gleichzeitig hervorgehoben angezeigt zu bekommen?
Oder muss dazu das textfeld richtext formatiert sein um dann per vba einfach die gesuchten Felder hervor zu heben?
Die Frage wäre dann wie dieses am besten per vba möglich wäre
mit ein paar zusätzlichen Zeilen in der Schleife der Demo-DB müsste das kein großer Aufwand sein.Melde mich dazu morgen nochmal mit einem Beispiel.
Schönes Advent's-Wochenende noch
Grüße Uwe
So hier mal die Variante mit der Markierung aller Fundstellen mit Hilfe eines Richtext-Feldes: Download Demo-DB
Grüße Uwe
Grüße Uwe
ich Moment sucht das Script nur Wortgenau ohne Wildcards. Da die Suche auf Regular Expressions basiert, kannst du aber diese Möglichkeit nutzen, wenn du die "Replaces" der Regex-Sonderzeichen im Script löschst. Du solltest dich dann aber vorher mit Regular Expressions beschäftigen, dann stehen dir unbegrenzte Suchmöglichkeiten offen...
Alternativ wenn du nur den Stern als Wildcard-Zeichen nutzen musst du diesen Abschnitt, so abändern:
Grüße Uwe
Alternativ wenn du nur den Stern als Wildcard-Zeichen nutzen musst du diesen Abschnitt, so abändern:
'Replace special chars in search term for regex pattern
sWord = Replace(sWord, "\", "\\")
sWord = Replace(sWord, "[", "\[")
sWord = Replace(sWord, "]", "\]")
sWord = Replace(sWord, "+", "\+")
sWord = Replace(sWord, "^", "\^")
sWord = Replace(sWord, "$", "\$")
sWord = Replace(sWord, "{", "\{")
sWord = Replace(sWord, "}", "\}")
sWord = Replace(sWord, ".", "\.")
sWord = Replace(sWord, "?", "\?")
sWord = Replace(sWord, "*", "[\S]*")