Geen code? Maar het is zo kort en makkelijk en mooi en… :(
Je RegEx patroon [^A-Za-z0-9_-]
wordt gebruikt om alle speciale tekens in alle cellen te verwijderen.
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
Dit is zo dicht als ik kan komen bij je oorspronkelijke vraag.
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
De tweede code is een door de gebruiker gedefinieerde functie =RegExCheck(A1,"[^A-Za-z0-9_-]")
met 2 argumenten. Het eerste is de cel die moet worden gecontroleerd. Het tweede is het RegEx patroon om op te controleren. Indien het patroon overeenkomt met een van de karakters in uw cel, zal het 1 teruggeven, anders 0.
U kunt het gebruiken zoals elke andere normale Excel formule als u eerst de VBA editor opent met ALT+F11, een nieuwe module (!) invoegt en de onderstaande code plakt.
[] 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)
Voor gebruikers die nieuw zijn met RegEx zal ik het patroon uitleggen: [^A-Za-z0-9_-]