Unerheblich, wo Sie den Text hernehmen, ob schon in
einer Multiline Textbox oder RTF Box vorhanden oder aus einer Datei auslesen und in einer
Textbox oder Labelobjekt zwischenlagern, mit einigen VB eigenen Funktionen (ab VB 6.0),
können Sie sowohl einen Text suchen und/oder diesen auch mit wenigen Handgriffen gegen
einen anderen ersetzen. Ich habe diese Funktionen noch einmal explizit aus dem Tipp zu den
neuen VB6 Funktionen herausgenommen, da man sie so themenbezogen besser findet.
In unserem Beispiel soll aus einem vorhanden Text in einer Multiline Textbox ein Wort
gesucht werden und alle Fundstellen in einer Messagebox angezeigt werden. Ihrer
Kreativität ist dabei natürlich keine Grenze gesetzt und Sie können sich das dann Ihren
Vorstellungen anpassen. Als weiteres, soll ein gesuchter Text durch einen anderen ersetzt
werden und dies gleich in der Textbox angezeigt werden.
Aber nun zur Umsetzung.
1.
Benötigen Sie ein paar Objekte auf Ihrer Form.
Commandbutton Command1 , Command2
Textbox (Eigenschaft Multiline=True) Text1
Textbox Text2 , Text3(0) , Text3(1) - für die Eingaben
2.
Ordnen sie die Objekte In etwa so an und vergeben die Caption Eigenschaften wie gesehen.
Command1
Command23.
Als nächstes sollten Sie
(aus einer Word Dokument oder HTML Seite oder oder ...)
Ihrer Textbox 1 noch einigen formatierten Text spendieren, damit wir auch etwas zum suchen
und ersetzen haben.
4.
Kommen wir nun zu den Anweisungen.
Command1_Click
'SUCHEN
'nach Leerzeichen soll nicht gesucht werden
If Trim(Text2.Text) = "" Then Exit Sub
'teilen der Gesamtheit des Textes in Zeilen
'vbcrlf - Zeilenumbruch ist Teilungszeichen
'genausogut könnte nach Leerzeichen geteilt werden
x = Split(UCase(Text1.Text), vbCrLf)
'Herausfiltern der Treffer, nach der Eingabe in Text2
x = Filter(x, UCase(Trim(Text2.Text)))
'Zusammensetzen der Treffer in einen einzelnen String
'um übersicht zu bewahren, werden zwei Zeilenumbrüche
'nach jedem Treffer eingefügt
x = Join(x, " ...." & vbCrLf
& vbCrLf)
'Zu viele Treffer
If Len(x) > 1000 Then x = "zu viele Funstellen, bitte schränken Sie die Suche
ein"
'Anzeige
MsgBox x & " ...."
Command2_Click
'ERSETZEN
'notwendige Angaben fehlen
If Trim(Text3(0).Text) = "" Or Trim(Text3(1).Text) = "" Then Exit Sub
'Aktualisierter Text wird direkt angezeigt
Text1.Text = Replace(Text1.Text,
Trim(Text3(0).Text), Trim(Text3(1).Text))
5.
Damit nach der Eingabe des Textes zum suchen bzw. ersetzen auch der entsprechende
Commandbutton der aktive ist und man nicht erst zur Maus greifen muß, wenn man sich doch
schon auf der Tastatur befindet und die Aktion besser mit der ENTER Taste ausführen
läßt, setzen wir noch den entsprechenden Button als den DEFAULT Button
Text2_KeyPress(KeyAscii As Integer)
If Not Command1.Default = True Then Command1.Default = True
Text3_KeyPress(Index As Integer, KeyAscii As Integer)
If Not Command2.Default = True Then Command2.Default = True
|