Walter hat ein Arbeitsblatt mit mehreren Textfeldern. Er möchte diese Textfelder durchsuchen, um einen bestimmten Text zu finden, aber Suchen und Ersetzen scheint nicht in der Lage zu sein, Text in Textfeldern zu finden. Er fragt sich, ob es eine Möglichkeit gibt, Textfelder zu durchsuchen.

Walter hat recht; Sie können keinen Text in Textfeldern in Excel finden. Um dies zu testen, haben wir eine brandneue Arbeitsmappe geöffnet, eine einzelne Phrase darin eingefügt („meine Nachricht“) und dann zufälligen Text und Zahlen in andere Zellen des Arbeitsblatts eingefügt. Wenn das Textfeld nicht ausgewählt war, wurde Strg + F gedrückt, um nach „Meine Nachricht“ zu suchen. Excel berichtete pflichtbewusst, dass der Text im Textfeld nicht gefunden werden konnte, obwohl er sich noch genau dort befand.

Glücklicherweise können Sie mithilfe eines Makros in einem Textfeld nach Text suchen. Jedes Textfeld in einem Arbeitsblatt gehört zur Shapes-Sammlung. Sie müssen also nur jedes Mitglied der Sammlung durchgehen und prüfen, ob es den gewünschten Text enthält. Hier ist ein Makro, das zur Eingabe einer Suchzeichenfolge auffordert und diese dann in den Textfeldern sucht.

Sub FindInShape1()

Dim rStart As Range     Dim shp As Shape     Dim sFind As String     Dim sTemp As String     Dim Response

sFind = InputBox("Search for?")

If Trim(sFind) = "" Then         MsgBox "Nothing entered"

Exit Sub     End If     Set rStart = ActiveCell     For Each shp In ActiveSheet.Shapes         sTemp = shp.TextFrame.Characters.Text         If InStr(LCase(sTemp), LCase(sFind)) <> 0 Then             shp.Select             Response = MsgBox( _               prompt:=shp.Name & vbCrLf & _               sTemp & vbCrLf & vbCrLf & _               "Do you want to continue?", _               Buttons:=vbYesNo, Title:="Continue?")

If Response <> vbYes Then                 Set rStart = Nothing                 Exit Sub             End If         End If     Next     MsgBox "No more found"

rStart.Select     Set rStart = Nothing End Sub

Dieses Makro durchsucht alle Formen im Arbeitsblatt, nicht nur die Textfelder. Wenn Sie Ihre Suche lieber auf Textfelder beschränken möchten, können Sie die TextBoxes-Auflistung anstelle der Shapes-Auflistung durchlaufen. so oder so wird gut funktionieren.

Beachten Sie auch, dass dieser Ansatz jedes Mal beendet wird, wenn passender Text gefunden wird (der Fall des Textes spielt keine Rolle) und Sie fragt, ob Sie fortfahren möchten. Möglicherweise möchten Sie stattdessen ein Makro, das einfach den passenden Text in Textfeldern markiert. Dies kann mit einem kürzeren Makro erfolgen, wie hier gezeigt:

Sub FindInShape2()

Dim shp As Shape     Dim sFind As String     Dim sTemp As String     Dim iPos As Integer     Dim Response

sFind = InputBox("Search for?")

If Trim(sFind) = "" Then         MsgBox "Nothing entered"

Exit Sub     End If     sFind = LCase(sFind)

For Each shp In ActiveSheet.Shapes         sTemp = LCase(shp.TextFrame.Characters.Text)

iPos = InStr(sTemp, sFind)

If iPos > 0 Then             With shp.TextFrame.Characters(Start:=iPos, _               Length:=Len(sFind)).Font                 .ColorIndex = 3                 .Bold = True             End With         End If     Next     MsgBox "Finished"

End Sub

Dieses Makro hebt den gefundenen Text mit einer fetten, roten Schrift hervor. Wenn Sie fertig sind, möchten Sie den Text wahrscheinlich wieder in normalen Text ändern. Sie können dies mit dem folgenden Makro tun:

Sub ResetFont()

Dim shp As Shape

For Each shp In ActiveSheet.Shapes         With shp.TextFrame.Characters.Font             .ColorIndex = 0             .Bold = False         End With     Next End Sub

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (11281) gilt für Microsoft Excel 97, 2000, 2002 und 2003.

Eine Version dieses Tippes für die Multifunktionsleistenoberfläche von Excel (Excel 2007 und höher) finden Sie hier: