如何修改Word VBA代码实现表格指定列替换或0.059精确匹配替换
Word VBA修改方案
以下是对应两个需求的实现代码:
方案1:实现完全匹配替换(仅替换单元格完整内容为「0.059」的内容)
原代码只要单元格内容包含目标字符串就会触发替换,修改后会额外校验单元格完整内容,避免误替换0.0590这类包含目标字符的内容:
Sub ConvertTo1_5MM() Dim oTable As Table, rng As Range Application.ScreenUpdating = False For Each oTable In ActiveDocument.Tables With oTable Set rng = .Range Do If rng.Find.Execute("0.059") Then ' 校验单元格完整内容(去掉Word自带的单元格结尾控制符)是否恰好等于0.059 If Trim(Replace(rng.Cells(1).Range.Text, Chr(13) & Chr(7), "")) = "0.059" Then rng.Text = "1.5 MM" End If Else Exit Do End If rng.Collapse wdCollapseEnd Loop End With Next Application.ScreenUpdating = True End Sub
方案2:限定替换范围为所有表格的第2列、第5列
直接限定处理范围为指定列,不会修改其他列的内容,代码中也预留了全匹配逻辑的开关,按需开启即可:
Sub ConvertTo1_5MM() Dim oTable As Table, rng As Range Dim targetCols As Variant, colIdx As Variant ' 定义需要处理的列号 targetCols = Array(2, 5) Application.ScreenUpdating = False For Each oTable In ActiveDocument.Tables For Each colIdx In targetCols ' 避免表格列数不足时报错 If oTable.Columns.Count >= colIdx Then Set rng = oTable.Columns(colIdx).Range Do If rng.Find.Execute("0.059") Then ' 如需同时开启全匹配校验,取消下一行的注释即可 ' If Trim(Replace(rng.Cells(1).Range.Text, Chr(13) & Chr(7), "")) = "0.059" Then rng.Text = "1.5 MM" ' End If Else Exit Do End If rng.Collapse wdCollapseEnd Loop End If Next colIdx Next Application.ScreenUpdating = True End Sub
内容的提问来源于stack exchange,提问作者Mapleleaf
相关产品推荐
相关产品推荐

