Excel VBA 替换字符

Excel VBA 替换字符

我尝试寻找这个特殊问题,但没找到。

我正在尝试替换字符串中的多种字符。

我尝试使用字符代码循环遍历字符,但我的代码会“随机”删除整个字符串,而不仅仅是特殊字符。(基本上我只想要字符串中的字母和数字)

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

相关内容