Nessun codice? Ma è così breve e facile e bello e… :(
Il tuo schema RegEx [^A-Za-z0-9_-]
è usato per rimuovere tutti i caratteri speciali in tutte le celle.
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
Questo è il più vicino che posso ottenere alla tua domanda originale.
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
Il secondo codice è una funzione definita dall'utente =RegExCheck(A1,"[^A-Za-z0-9_-]")
con 2 argomenti. Il primo è la cella da controllare. Il secondo è il modello RegEx da controllare. Se il pattern corrisponde a uno qualsiasi dei caratteri nella cella, restituirà 1 altrimenti 0.
Potete usarla come qualsiasi altra formula normale di Excel se prima aprite l'editor VBA con ALT+F11, inserite un nuovo modulo (!) e incollate il codice sottostante.
[] 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)
Per gli utenti nuovi di RegEx spiego il tuo schema: [^A-Za-z0-9_-]