VB-Homepage Tipp 398

Suchen und Ersetzen von Zeichenfolgen in Text

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                                                      Command2
       
Suche nach :                 Ersetzen von :   Ersetzen durch :
                        
           
           

3.
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


Tipp-Download

Quelle :

Zurück zur Übersichtsseite