删除excel vba中的特殊字符

我正在使用这个function来删除所有的特殊字符,但仍然很less像“Ø”或“é”的特殊字符,所有类似的字符仍然存在如何处理下面给出的function。

我的想法是创build一个像MyStr这样的特殊字符的string,并删除它们。

请build议。

Function ReplaceSplChars(TempStr As String) As String Dim counter As Long, Position As Long Dim MyStr As String, SplStr As String MyStr = " 1234567890abcdefghijklmnopqrstuvwxyz.@" Position = 1 For counter = 1 To Len(TempStr) SplStr = Mid(LCase(TempStr), Position, 1) If Not InStr(MyStr, SplStr) > 0 Then If SplStr = "-" Or SplStr = "_" Or SplStr = "'" Or SplStr = "/" Or SplStr = "," Then TempStr = Replace(TempStr, SplStr, " ", , 1) SplCharCount = SplCharCount + 1 Position = Position + 1 Else TempStr = Replace(TempStr, SplStr, "", , 1) SplCharCount = SplCharCount + 1 End If Else Position = Position + 1 End If Next counter ReplaceSplChars = TempStr End Function 

一个rexp需要努力工作。

testing代码

 Sub EddieBetts() MsgBox ReplaceSplChars(" 12345Ø67890abcdefghijklmnopqrstéuvwxyz.@") End Sub 

下面的模式排除任何不是

  • 字母数字( \ w
  • 空间( \ s
  • @

  Function ReplaceSplChars(strIn As String) As String Dim objRegex As Object Set objRegex = CreateObject("vbscript.regexp") With objRegex .Pattern = "[^\w\s@]+" .Global = True ReplaceSplChars = Application.Trim(.Replace(strIn, vbNullString)) End With End Function