【发布时间】:2015-10-17 01:05:42
【问题描述】:
我的目标是为 Word 2003 编写一个 VBA 宏,其中用户选择表格的一部分(尤其是一列),宏将输入字符映射到特定的输出字符,例如任何a e i o u变成V;一些像 eh uw 这样的序列变成了 V;删除一个字符(感叹号);任何没有变成“V”的东西都会变成“C”。我的问题是,在第一次替换后,选择“未设置”,因此更改会影响原始选择以外的其他内容。
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.MatchWildcards = True
.Replacement.Text = "V"
.Text = "[aeiouáéíóú]"
.Execute Replace:=wdReplaceAll
'replace certain sequences
.Text = "[mn" & ChrW(618) & ChrW(650) & "]" & ChrW(769)
.Execute Replace:=wdReplaceAll
.Text = "[mn]" & ChrW(768)
.Execute Replace:=wdReplaceAll
'delete !
.Text = "[\!]"
.Replacement.Text = ""
.Execute Replace:=wdReplaceAll
'everything else becomes C
.Text = "[!V]"
.Replacement.Text = "C"
.Execute Replace:=wdReplaceAll
End With
如何让查找/替换只对选定的单元格进行操作?我注意到在第一次替换后,Selection.End 更改为与 Selection.Start 相同的值。我不明白 Word 中的列选择是如何工作的。
【问题讨论】:
标签: vba ms-word textselection