67. Suchenfunktion für Textfelder

Aufgabenstellung:

Für diese Beispieldatei war die Aufgabenstellung, eine Suchenfunktion für Textfelder zu erstellen, da die Excelsuche nicht für Textfelder funktioniert.

Diese Beispiele stehen auch als
Beispieldatei zum Download zur Verfügung.


Realisiert wurde das durch eine VBA-Lösung.

Beispiel 1: Hier wird bei dem Textfeld, das den Suchbegriff beinhaltet, die Hintergrundfarbe geändert. Zusätzlich wird in einer Messagebox der Name des Textfeldes ausgegeben.

Der Code ist in ein StandardModul einzufügen


Option Explicit


Public Textfeld As TextBox

Sub In_Textfeldern_suchen_Hintergundfarbe()
'Variablen deklarieren
Dim Suchbegriff As Variant, Textfeldtext As String

'Eingabefenster auf dem Bildschirm anzeigen und den eingegebenen Text in
'Variable "Suchbegriff" schreiben
Suchbegriff = InputBox("Bitte einen Suchbegriff eingeben.", "Suchbegriff...")

'Wenn die Variable "Suchbegriff" den Wert "False" hat, der entsteht hier durch das betätigen der Abbruchtaste,
'oder keinen Wert enthält, das entsteht hier, wenn nichts eingegeben wird, aber dennoch die OK-Taste betätigt wird,
'dann Prozedur beenden
If Suchbegriff = False Or Suchbegriff = Empty Then Exit Sub

'For Each-Schleife zum Ansprechen aller in dem Tabellenblatt eingesetzten Textfelder anzusprechen
For Each Textfeld In ActiveSheet.TextBoxes

    'Das Textfeld, das durch die Schleife angesprochen wird, markieren
    ActiveSheet.Shapes(Textfeld.Index).Select
    
    'Bei einem Laufzeitfehler bei der nächsten Befehlszeile weitermachen
    On Error Resume Next
    
    'Bei dem markierten Textfeld die Hintergrundfarbe zurücksetzen
    Selection.ShapeRange.Fill.Visible = msoFalse
    
    'Den Text aus dem Textfeld auslesen und in Variable "Textfeldtext" schreiben
    Textfeldtext = Selection.Characters.Text
    
    'Wenn der Suchbegriff in dem Textfeld vorkommt (hier über die Funktion "InStr" realisiert,
    'ab dem ersten Buchstaben den Text mit dem Suchbegriff vergleicht)
    If InStr(1, Textfeldtext, Suchbegriff, 1) Then
    
        'Bildschirmmeldung, in der die Textboxnummer angezeigt wird, ausgeben
        MsgBox "Suchbegriff in " & ActiveSheet.Shapes(Textfeld.Index).Name & " gefunden."
        
        'Hintergrundfarbe in rot ändern
        Selection.ShapeRange.Fill.ForeColor.SchemeColor = 10
        Selection.ShapeRange.Fill.Visible = msoTrue
    End If
Next
End Sub

 

Beispiel 2: Hier wird in dem Textfeld, das den Suchbegriff beinhaltet, die Schriftfarbe des gefundenen Suchtextes geändert. Zusätzlich wird in einer Messagebox der Name des Textfeldes ausgegeben.

Der Code ist in ein StandardModul einzufügen


Option Explicit


Public Textfeld As TextBox

Sub In_Textfeldern_suchen_Schriftfarbe()
'Variablen deklarieren
Dim Suchbegriff As Variant, Textfeldtext As String

'Eingabefenster auf dem Bildschirm anzeigen und den eingegebenen Text in
'Variable "Suchbegriff" schreiben
Suchbegriff = InputBox("Bitte einen Suchbegriff eingeben.", "Suchbegriff...")

'Wenn die Variable "Suchbegriff" den Wert "False" hat, der entsteht hier durch das betätigen der Abbruchtaste,
'oder keinen Wert enthält, das entsteht hier, wenn nichts eingegeben wird, aber dennoch die OK-Taste betätigt wird,
'dann Prozedur beenden
If Suchbegriff = False Or Suchbegriff = Empty Then Exit Sub

'For Each-Schleife zum Ansprechen aller in dem Tabellenblatt eingesetzten Textfelder anzusprechen
For Each Textfeld In ActiveSheet.TextBoxes

    'Das Textfeld, das durch die Schleife angesprochen wird, markieren
    ActiveSheet.Shapes(Textfeld.Index).Select
    
    'Bei einem Laufzeitfehler bei der nächsten Befehlszeile weitermachen
    On Error Resume Next
    
    'Bei dem markierten Textfeld die Schriftfarbe zurücksetzen
    Selection.Font.ColorIndex = 0
    
    'Den Text aus dem Textfeld auslesen und in Variable "Textfeldtext" schreiben
    Textfeldtext = Selection.Characters.Text
    
    'Wenn der Suchbegriff in dem Textfeld vorkommt (hier über die Funktion "InStr" realisiert,
    'ab dem ersten Buchstaben den Text mit dem Suchbegriff vergleicht)
    If InStr(1, Textfeldtext, Suchbegriff, 1) Then
    
        'Bildschirmmeldung, in der die Textboxnummer angezeigt wird, ausgeben
        MsgBox "Suchbegriff in " & ActiveSheet.Shapes(Textfeld.Index).Name & " gefunden."
        
        'Die Farbe der Buchstaben des gefundenen Suchbegriffs ändern
        Selection.Characters( _
        Start:=InStr(1, Textfeldtext, Suchbegriff, 1), _
        Length:=Len(Suchbegriff)).Font.ColorIndex = 3
    End If
Next
End Sub

 

Beispiel 3: Hier wird das Textfeld, das den Suchbegriff beinhaltet, markiert und sofern es nicht in der aktiven Ansicht sichtbar ist, zu dem Textfeld gescrollt. Zusätzlich wird in einer Messagebox der Name des Textfeldes ausgegeben.

Der Code ist in ein StandardModul einzufügen


  Option Explicit

Sub In_Textfeldern_suchen_Scrollen()
'Variablen deklarieren
Dim Textfeld As TextBox, Suchbegriff As Variant, Textfeldtext As String, Abfrage As Variant

'Wenn die Variable "Suchbegriff" den Wert "False" hat, der entsteht hier durch das betätigen der Abbruchtaste,
'oder keinen Wert enthält, das entsteht hier, wenn nichts eingegeben wird, aber dennoch die OK-Taste betätigt wird,
'dann Prozedur beenden
Suchbegriff = InputBox("Bitte einen Suchbegriff eingeben.", "Suchbegriff...")

'Wenn Keine Eingabe erfolgte oder die Abbrechen-Taste betätigt wurde, Prozedur beenden
If Suchbegriff = False Or Suchbegriff = Empty Then Exit Sub

'For Each-Schleife zum Ansprechen aller in dem Tabellenblatt eingesetzten Textfelder anzusprechen
For Each Textfeld In ActiveSheet.TextBoxes

    'Das Textfeld, das durch die Schleife angesprochen wird, markieren
    ActiveSheet.Shapes(Textfeld.Index).Select

    'Den Text aus dem Textfeld auslesen und in Variable "Textfeldtext" schreiben
    Textfeldtext = Selection.Characters.Text
    
    'Wenn der Suchbegriff in dem Textfeld vorkommt (hier über die Funktion "InStr" realisiert,
    'ab dem ersten Buchstaben den Text mit dem Suchbegriff vergleicht)
    If InStr(1, Textfeldtext, Suchbegriff, 1) Then

        'Zum Textfeld das die Übereinstimmung enthält scrollen
        ActiveWindow.ScrollIntoView _
        Left:=Selection.Left, Top:=Selection.Top, _
        Width:=0, Height:=0
        
        'Bildschirmmeldung, in der die Textboxnummer angezeigt wird, ausgeben
        MsgBox "Suchbegriff in " & ActiveSheet.Shapes(Textfeld.Index).Name & " gefunden."
    End If
Next
End Sub

 


Dieses Beispiel wurde unter den in der Tabelle aufgeführten Versionen getestet.

  A B C D E
1        

2

 

Excel - Version

Getestet

 
3      
4   Excel 2007 12.0 a  
5   Excel 2003 11.0 a  
6   Excel 2002 10.0 a  
7   Excel 2000 9.0 a  
8   Excel 97 8.0    
9          
10   Anzahl der Downloads:

 
11          
12   Dieses Beispiel wurde bereits  x aufgerufen.  
13    
14          

 


> Beispieldatei herunterladen <

  Sollten beim Ausführen der Beispieldatei Fehler auftreten, bitte ich darum, mir eine Mail mit der Fehlerbeschreibung an fehler@excelbeispiele.de zu schicken.
Danke!

 Möchten Sie www.excelbeispiele.de in Ihre Favoriten aufnehmen? Dann Klicken Sie hier.
 

Kontakt:

letzte Aktualisierung am 06.01.2008

© 2004 - Copyright Oliver Scheckelhoff,
All Rights Reserved