David fragt sich, ob es möglich ist, mithilfe von Suchen und Ersetzen Text in Textfeldern oder in Beschriftungen in Diagrammen zu suchen und zu ändern. Die kurze Antwort lautet, dass dies nicht möglich ist, Sie jedoch verschiedene Problemumgehungen ausprobieren können.

Erstens können Sie den Text in Ihren Textfeldern oder in Ihren Diagrammbeschriftungen leicht dynamisch gestalten, sodass er an den Inhalt einiger Arbeitsblattzellen gebunden ist. Sie können beispielsweise Folgendes für Ihre Textfelder tun:

  1. Kopieren Sie Ihren Text aus jedem der Textfelder in eine Reihe von Zellen in Ihrem Arbeitsblatt. (In diesem Beispiel wird davon ausgegangen, dass Sie den Inhalt von zehn Textfeldern in den Bereich Z1: Z10 kopiert haben.)

  2. Wählen Sie das erste Textfeld aus (das der Zelle Z1 entspricht) und entfernen Sie den Inhalt des Textfelds.

  3. Geben Sie bei noch ausgewähltem Textfeld Folgendes in die Formelleiste ein: = Z1. Wenn Sie die Eingabetaste drücken, sollte das Textfeld alle Angaben in Zelle Z1 enthalten.

  4. Wiederholen Sie die Schritte 2 und 3 für jedes Ihrer anderen Textfelder unter Verwendung der entsprechenden Zellreferenz für jedes in Schritt 3.

Das ist es. Sie können dieselbe Technik mit benutzerdefinierten Diagrammbeschriftungen verwenden. Sie müssen lediglich die Diagrammbeschriftung auswählen und eine Zellreferenz in die Formelleiste eingeben. Mit den Textfeldern und Diagrammbeschriftungen, die an Arbeitsblattzellen gebunden sind, können Sie mithilfe von Suchen und Ersetzen problemlos nach Informationen in den Zellen suchen und diese ändern. Wenn die Änderungen vorgenommen werden, sollten die Textfelder und Diagrammbeschriftungen automatisch die Änderungen in den Zellen widerspiegeln.

Die einzige Möglichkeit, den Text in einem Textfeld oder einer Diagrammbezeichnung tatsächlich zu ändern, besteht darin, ihn manuell oder mithilfe eines Makros zu ändern. Der Code muss jedes Textfeld im Arbeitsblatt durchlaufen und dann Ihre Änderung vornehmen. Das Folgende ist eine einfache Version eines Makros, das eine solche Änderung vornehmen kann.

Sub TextBoxReplace()

Dim shp As Shape     Dim sOld As String     Dim sNew As String

'Change as desired     sOld = "Old string"

sNew = "New string"

On Error Resume Next     For Each shp In ActiveSheet.Shapes         With shp.TextFrame.Characters             .Text = Application.WorksheetFunction.Substitute( _               .Text, sOld, sNew)

End With     Next End Sub

Dieses Makro durchläuft alle Formen im Arbeitsblatt (Textfelder sind Formen) und ersetzt dann alles, was in der sOld-Variablen enthalten ist, durch alles, was in der sNew-Variablen enthalten ist. Das Anwenden derselben Technik auf Diagrammbeschriftungen ist nur etwas komplexer, wie im folgenden Makro gezeigt:

Sub ChartLabelReplace()

Dim Cht As ChartObject     Dim Ser As Series     Dim scPt As Point     Dim sOld As String     Dim sNew As String

'Change as desired     sOld = "Old String"

sNew = "New String"

On Error Resume Next     For Each Cht In ActiveSheet.ChartObjects         For Each Ser In Cht.Chart.SeriesCollection             For Each scPt In Ser.Points                 With scPt.DataLabel                     .Text = Application.WorksheetFunction.Substitute( _                       .Text, sOld, sNew)

End With             Next         Next     Next End Sub

Das Makro durchläuft jedes Datenetikett für jede Datenreihe in jedem Diagramm und ersetzt (erneut) alle Instanzen von allem, was sich in sOld befindet, durch alles, was sich in sNew befindet.

_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 (9262) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: