Kein Code? Aber es ist so kurz und einfach und schön und… :(
Ihr RegEx-Muster [^A-Za-z0-9_-]
wird verwendet, um alle Sonderzeichen in allen Zellen zu entfernen.
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
Edit
Das ist so nah, wie ich Ihrer ursprünglichen Frage kommen kann.
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
Der zweite Code ist eine benutzerdefinierte Funktion =RegExCheck(A1,"[^A-Za-z0-9_-]")
mit 2 Argumenten. Das erste ist die zu prüfende Zelle. Das zweite ist das RegEx-Muster, auf das geprüft werden soll. Wenn das Muster mit einem der Zeichen in der Zelle übereinstimmt, wird 1 zurückgegeben, andernfalls 0.
Sie können diese Funktion wie jede andere normale Excel-Formel verwenden, wenn Sie zuerst den VBA-Editor mit ALT+F11 öffnen, ein neues Modul (!) einfügen und den folgenden Code einfügen.
[] 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)
Für Benutzer, die neu in RegEx sind, erkläre ich das Muster: [^A-Za-z0-9_-]