Nenhum código? Mas é tão curto e fácil, bonito e ... :(
Seu padrão RegEx [^A-Za-z0-9_-]
é usado para remover todos os caracteres especiais em todas as células.
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
Editar
Isso é o mais próximo possível da sua pergunta original.
O segundo código é uma função definida pelo usuário =RegExCheck(A1,"[^A-Za-z0-9_-]")
com 2 argumentos. O primeiro é a célula a verificar. O segundo é o padrão RegEx a ser verificado. Se o padrão corresponder a qualquer um dos caracteres da sua célula, ele retornará 1, caso contrário, 0.
Você pode usá-lo como qualquer outra fórmula normal do Excel se abrir o editor VBA pela primeira vez com ALT+ F11, inserir um novo módulo (!) E colar o código abaixo.
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
Para usuários novos no RegEx, explicarei seu padrão: [^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)