
在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来过滤所有的文本框对象。
通过这个例子,不仅可以遍历所有文本框,还可以遍历所有其它的图层对象。
如果要将选中的多个工作表中的文本框批量替换,代码会略有不同,可以参考下文:


发表评论