可以对Excel文本框中的内容进行查找和替换吗?

时间:2022-10-14 21:54:25



Excel情报局

职场联盟Excel


生产挖掘分享Excel基础技能

Excel爱好者大本营

用1%的Excel基础搞定99%的职场问题

做一个超级实用的Excel公众号

Excel是门手艺玩转需要勇气

数万Excel爱好者聚集地

SUPER EXCEL MAN


可以对Excel文本框中的内容进行查找和替换吗?

可以对Excel文本框中的内容进行查找和替换吗?

    可以对Excel文本框中的内容进行查找和替换吗?


1

职场实例


今天我们来继续讲解一个实用的Excel纯技巧干货:

在Excel单个工作表或Excel整个工作簿中,如何批量替换“文本框”中的指定内容!


我们来观察下面一个具体的例子:

在“Excel情报局”这个工作表中,表格中左侧含有2个插入的文本框内容,分别为:

文本框①:“Excel情报局”

文本框②:“Excel职场联盟”


现在我们想要将所有文本框中的内容“Excel”批量替换为“Word”显示,形成右侧文本框的所示的内容。


可以对Excel文本框中的内容进行查找和替换吗?


有的小伙伴又说了,Excel的“查找和替换”功能可以实现吗?

我们用“查找和替换”实验了一下,我们查找“Excel”这个字段内容,发现根本无法查找到相关信息。


注意:

Excel中的查找和替换,查找的对象是单元格,也就是说只能查找单元格中所显示的内容,像“文本框”、“批注”中的内容是无法使用查找和替换功能的。


可以对Excel文本框中的内容进行查找和替换吗?



2

工作表内查找替换


假如我们在工作中遇到这种文本框内容查找和替换的问题,还必须通过VBA代码的方法来解决,简单又高效。PS:代码为固定模板,不需要我们自己编写,复制粘贴即用。


如果说我们只查找替换单个工作表(如工作表名称:Excel情报局)中文本框的内容,即将工作表中所有文本框中内容“Excel”替换为“Word”,则按如下方法:


右击工作表名称标签,点击“查看代码”,进入VBA编辑器窗口(或按快捷键Alt+F11进入)。将下面的一段代码复制到窗口中,点击上方的【运行】-【运行子过程/用户窗体】;


在弹出的【Find】对话框中输入需要查找的内容:Excel,点击确定;

在弹出的【Replace】对话框中输入要替换为的内容:Word,点击确定,最后即可成功替换。


代码如下:















Sub TextBoxReplace()Dim xWs As WorksheetDim shp As ShapeDim xFindStr As StringDim xReplace As StringxFindStr = Application.InputBox("Find:", xTitleId, "", Type:=2)xReplace = Application.InputBox("Replace:", xTitleId, "", Type:=2)Set xWs = Application.ActiveSheetOn Error Resume NextFor Each shp In xWs.Shapes    xValue = shp.TextFrame.Characters.Text    shp.TextFrame.Characters.Text = VBA.Replace(xValue, xFindStr, xReplace, 1)NextEnd Sub


如下图所示:


可以对Excel文本框中的内容进行查找和替换吗?



3

工作簿内查找替换


如果我们的文本框存在于多个工作表中,我们想要将整个工作簿中所有工作表中文本框内容“Excel”替换为“Word”,如果还用上面的代码,就会失效。


上面的那段代码是:

想要替换哪个工作表中文本框必须右击对应工作表的名称标签,点击“查看代码”,即有局限性。


如果有1000个工作表的话,当然,如果你不嫌麻烦,可以一个一个工作表进行复制代码操作。


我们以2个工作表(工作表1:Excel情报局;工作表2:Excel职场联盟)为例,来简单的进行说明。如下图所示:


可以对Excel文本框中的内容进行查找和替换吗?


我们右击任意一个工作表名称标签,点击“查看代码”,进入VBA编辑器界面(或按快捷键Alt+F11进入)。


然后将下面一段VBA代码复制粘贴到VBA编辑器录入界面中,最后点击上方的【运行】-【运行子过程/用户窗体】后,关闭VBA编辑器窗口。



Sub 批量替换文本框7()Dim oWK As WorksheetFor Each oWK In WorksheetsWithsOldText = "Excel"sNewText = "Word"For Each oSP InWithIf oSP.Type = msoTextBox ThensText = .TextFrame2.TextRange.Text.TextFrame2.TextRange.Text = VBA.Replace(sText, sOldText, sNewText)End IfEnd WithNextEnd WithNextMsgBox "操作完成"End


最后我们发现:

所有工作簿中文本框内容中的“Excel”批量替换为了“Word”

如下如所示:


可以对Excel文本框中的内容进行查找和替换吗?


此段代码需要我们根据实际情况灵活修改:


①sOldText = "Excel"

此句代码中的“Excel”:是要查找替换的旧文本


②sNewText = "Word"

此句代码中的“Word”:是要替换修改为的新文本


可以对Excel文本框中的内容进行查找和替换吗?


回顾关键内容,善用图片表达,学会建立联系,拓展深度广度,浓缩关键概念,应用到行动中,善于归纳总结,尝试进行分享。


可以对Excel文本框中的内容进行查找和替换吗?