我尝试寻找这个特殊问题,但没找到。
我正在尝试替换字符串中的多种字符。
我尝试使用字符代码循环遍历字符,但我的代码会“随机”删除整个字符串,而不仅仅是特殊字符。(基本上我只想要字符串中的字母和数字)
ABC-3.3%H14T-6
我只是想要
ABC33H14T6
对我来说,奇怪的是,我的代码会删除随机字符上的字符串,但情况并非总是chr(41)
如此,每次运行代码时它都会发生变化。这可能是格式问题吗?
For Char = 33 To 47
Sheets("Sheet1").Cells(FRow, 44).Replace What:=Chr(Char), Replacement:="", LookAt:=xlPart
Next Char
我会给你我的大部分代码,但这对工作很敏感。
答案1
按照你的方式进行替换是行不通的,因为这些非字母数字字符可能具有特殊功能,例如小丑等。你需要在 VBA 中替换,而不是在 Excel 中替换。
所以尝试一下这个:
For Char = 33 To 47
Sheets("Sheet1").Cells(FRow, 44).Value = Replace(Sheets("Sheet1").Cells(FRow, 44).Value, Chr(Char), "")
Next Char
答案2
类似这样的正则表达式
Sub test()
MsgBox KillChars("ABC-3.3%H14T-6")
End Sub
Function KillChars(strIn As String) As String
Dim objRegex
Set objRegex = CreateObject("vbscript.regexp")
With objRegex
.Pattern = "[^\w]+"
.Global = True
KillChars = .Replace(strIn, vbNullString)
End With
End Function