![MS Excel 查找和替换宏](https://linux22.com/image/1333868/MS%20Excel%20%E6%9F%A5%E6%89%BE%E5%92%8C%E6%9B%BF%E6%8D%A2%E5%AE%8F.png)
我编写了一个宏,用于根据 ASCII 值删除工作表中的特殊字符,但问题是它会替换单元格内容。例如,p;j;h
应该变成的内容p,j,h
变成了,,
(缺少数据)。我需要添加任何其他语句吗?或者如何调整我的代码?
sub specialcharecters()
Dim i As Long
For i = 32 To 43
Selection.Replace what:=Chr(i), replacement:=", ", LookAt:=xlPart, SearchOrder:= _
xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Next i
END sub
答案1
我逐行检查了您的代码,发现罪魁祸首是Chr(42)
,它对应于*
符号。当 Excel 遇到它时,它会将其视为通配符并替换所有文本。如果您添加一个简单的 if 语句来跳过 42,它会通过第一个For
循环而不会导致观察到的问题。您需要对Chr(63)
(?
)再次执行此操作,否则它会再次给出奇怪的输出。一旦考虑到这两个因素,它对我来说就很好了。