2017-04-03 12 views
2

私はこの機能を使用して、すべての特殊文字を削除しますが、 "Ø"や "é"のような特殊文字はまだありません。excel vbaで特殊文字を削除する

MyStrのような特殊文字の文字列を作成して削除することは、私の心の中にあります。

お勧めします。

Function ReplaceSplChars(TempStr As String) As String 

Dim counter As Long, Position As Long 
Dim MyStr As String, SplStr As String 


MyStr = " [email protected]" 
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 

答えて

2

は難しい作業です。

試験

Sub EddieBetts() 
MsgBox ReplaceSplChars(" 12345Ø67890abcdefghijklmnopqrsté[email protected]") 
End Sub 

パターンは以下

  • 英数字(\ワット)
  • 空間(\ S
  • ないものを除外するコード

コード

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

正規表現のニース使用@。しかし、文字クラスの括弧は余分なものであることに注意してください。 –

+0

真。ネガティブマッチで始まり、それから完全に巻き戻されなかった。 – brettdj

+0

お返事ありがとうございます。 –

関連する問題