同时替换工作表和注释(Microsoft Excel)
Dorothy的学生正在自定义支票簿模拟工作簿,用自己的名字替换默认名称。例如,她希望他们搜索“ Jason Anderson”并将其名称替换为“ Sue Smith”。
八个工作表选项卡中的文本框中共有22个“ Jason Anderson”事件,而工作表本身中还有多个事件。
Dorothy想知道她如何一次查找并替换所有工作表实例和所有注释实例。
如果不使用宏,则无法执行此操作。宏将需要浏览工作簿中的每个单元格,每个注释和每个文本框,以查看是否需要进行更改。以下是如何完成此操作的示例:
Sub ReplaceNames() Dim sDefaultName As String Dim sNewName As String Dim sht As Worksheet Dim cmt As Comment Dim wks As Worksheet Dim sCmt As String Dim shp As Shape sDefaultName = "Jason Anderson" sNewName = InputBox("Enter your first and last name.", _ "Name Replacement") ' Replace cell text For Each sht In ActiveWorkbook.Worksheets sht.Cells.Replace what:=sDefaultName, _ Replacement:=sNewName, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, _ SearchFormat:=False, ReplaceFormat:=False Next sht ' Replace comment text For Each wks In ActiveWorkbook.Worksheets For Each cmt In wks.Comments sCmt = cmt.Text If InStr(sCmt, sDefaultName) <> 0 Then sCmt = Application.WorksheetFunction. _ Substitute(sCmt, sDefaultName, sNewName) cmt.Text Text:=sCmt End If Next cmt Next wks Set wks = Nothing Set cmt = Nothing ' Replace text box text On Error Resume Next For Each wks In ActiveSheet.Parent.Worksheets For Each shp In wks.Shapes With shp.TextFrame.Characters .Text = Application.WorksheetFunction.Substitute( _ .Text, sDefaultName, sNewName) End With Next shp Next wks End Sub
宏提示用户输入新名称,然后搜索单元格,注释和文本框,以查看是否存在默认名称(“ Jason Anderson”)。如果是这样,则进行适当的替换。
如果您不想使用宏进行搜索,则可能需要对工作簿进行重组。例如,您可以创建一个“数据输入工作表”,在其中输入常用信息(例如人的名字)。在其他工作表中,使用公式引用数据输入工作表中的名称。因此,在数据输入工作表中进行了一项更改,在所有其他工作表中进行了更改。
使用这种方法也可以处理注释。您可以选择注释或形状,然后在“公式”栏中输入如下参考公式:
=MyName
假定数据输入工作表上的用户名已与MyName命名范围相关联。如果注释或形状中需要其他信息,则可以在数据输入工作表的单元格中构造该文本,然后将该单元格的内容分配给注释或形状,就像MyName命名范围所指出的那样。
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(2614)适用于Microsoft Excel 2007、2010、2013和2016。