コードなし?しかし、それはとても短くて簡単で美しいです... :(
RegExパターン[^A-Za-z0-9_-]
は、すべてのセルのすべての特殊文字を削除するために使用されます。
Sub RegExReplace()
Dim RegEx As Object
Set RegEx = CreateObject("VBScript.RegExp")
RegEx.Global = True
RegEx.Pattern = "[^A-Za-z0-9_-]"
For Each objCell In ActiveSheet.UsedRange.Cells
objCell.Value = RegEx.Replace(objCell.Value, "")
Next
End Sub
編集
これは、元の質問にできるだけ近いものです。
2番目のコードは、=RegExCheck(A1,"[^A-Za-z0-9_-]")
2つの引数を持つユーザー定義関数です。最初のものはチェックするセルです。2つ目は、チェックするRegExパターンです。パターンがセル内のいずれかの文字と一致する場合、1を返します。それ以外の場合は0を返します。
最初にVBAエディターを開くと、他の通常のExcel数式と同じように使用できます ALT + F11で、新しいモジュール(!)を挿入して、以下のコードを貼り付けると、ます。
Function RegExCheck(objCell As Range, strPattern As String)
Dim RegEx As Object
Set RegEx = CreateObject("VBScript.RegExp")
RegEx.Global = True
RegEx.Pattern = strPattern
If RegEx.Replace(objCell.Value, "") = objCell.Value Then
RegExCheck = 0
Else
RegExCheck = 1
End If
End Function
RegExを初めて使用するユーザー向けに、パターンを説明します。 [^A-Za-z0-9_-]
[] stands for a group of expressions
^ is a logical NOT
[^ ] Combine them to get a group of signs which should not be included
A-Z matches every character from A to Z (upper case)
a-z matches every character from a to z (lower case)
0-9 matches every digit
_ matches a _
- matches a - (This sign breaks your pattern if it's at the wrong position)