在excel中,要批量替换单元格的内容,可以直接使用【查找替换】功能,如下图所示
可以批量将单元格中的【张三】替换为【李四】。
但是,如果要查找替换的内容在excel的文本框中,用上述方法就行不通了。
如下图所示,工作表名称”Sheet1″里面,有很多文本框。
要把文本框内的内容【张三】替换为【李四】,代码可以这样写:
Sub exceloffice() '作者QQ:1722187970,微信:xycgenius,微信公众号exceloffice Dim oWK As Worksheet Set oWK = Excel.ThisWorkbook.Worksheets("Sheet1") Dim oSP As Shape With oWK sOldText = "张三" sNewText = "李四" For Each oSP In .Shapes With oSP '只替换文本框中的内容 If .Type = msoTextBox Then '读取文本框原来的内容 sText = .TextFrame2.TextRange.Text '输入替换后的内容 .TextFrame2.TextRange.Text = VBA.Replace(sText, sOldText, sNewText) End If End With Next End With MsgBox "操作完成" End Sub
运行上述代码以后,所有文本框中的张三就都变成李四了,如下所示
在Excel中所有的图片、图形、形状等都属于Shape对象。
针对不同的种类,Shape对象的Type属性可以识别。
在这里通过Shape对象的Type属性等于 msoTextBox来过滤所有的文本框对象。
通过这个例子,不仅可以遍历所有文本框,还可以遍历所有其它的图层对象。
如果要将选中的多个工作表中的文本框批量替换,代码会略有不同,可以参考下文:
发表评论