David想知道是否可以使用“查找和替换”来查找和修改文本框中或图表标签中的文本。简短的答案是不可能的,但是您可以尝试几种解决方法。

首先,您可以轻松地使文本框或图表标签中的文本动态化,以便将其与某些工作表单元格的内容绑定在一起。例如,您可以对文本框执行以下操作:

。将您的文本从每个文本框复制到工作表上的单元格区域。 (对于此示例,假设您将十个文本框的内容复制到范围Z1:Z10。)

。选择第一个文本框(对应于单元格Z1的文本框),然后删除文本框的内容。

。在文本框仍处于选中状态的情况下,在公式栏中输入以下内容:= Z1。当您按Enter键时,文本框应反映单元格Z1中的内容。

。使用步骤3中每个单元格的适当单元格引用,对其他每个文本框重复步骤2和3。

而已。您可以对自定义图表标签使用相同的技术-您所需要做的就是选择图表标签,然后在公式栏中输入单元格引用。通过将文本框和图表标签绑定到工作表单元格,您可以轻松地使用“查找和替换”来搜索和更改单元格中的信息。进行更改后,文本框和图表标签应自动反映单元格中的更改。

实际更改文本框或图表标签中的文本的唯一方法是手动更改或使用宏进行更改。该代码将需要逐步浏览工作表中的每个文本框,然后进行更改。以下是可以进行此类更改的宏的简单版本。

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

此宏逐步浏览工作表中的所有形状(文本框为形状),然后将sOld变量中的所有内容替换为sNew变量中的任何内容。将相同的技术应用于图表标签仅稍微复杂一点,如以下宏所示:

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

宏逐步遍历每个图表上每个数据系列的每个数据标签,并且(再次)将sOld中的任何实例替换为sNew中的任何实例。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

链接:/ excelribbon-ExcelTipsMacros [点击此处在新的浏览器标签中打开该特殊页面]。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(9262)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本:

链接:/ excelribbon-Finding_and_Replacing_in_Text_Boxes [在文本框中查找和替换]。