Eu tenho uma função dentro de uma macro usando expressão regular no Excel 2016 (VBA) que deve remover todos os números do texto para que eu basicamente acabe com apenas caracteres alfabéticos. O problema é que esses números não são apenas dígitos, mas também podem ser algarismos romanos (incluindo apenas numerais romanos de um a quatro, ou seja, I, II, III e IV). Como exemplo, pegue a seguinte lista de possíveis itens:
Program Manager 3
Systems Engineer 3
Secretary III 12345
Consultant
IT Instructor 3
Computer Operations Manager 1
User Support Specialist 2
Engineering Tech II 12345
IT Instructor 2
Network Tech 3
Minha função usa o seguinte código de expressão regular do VBA para substituir os dígitos e numerais romanos (não estou preocupado em aparar ou qualquer coisa nesse ponto):
Public Function RemoveNumbers(Txt As String) As String
With CreateObject("VBScript.RegExp")
.Global = True
.IgnoreCase = True
.Pattern = "[0-9]|\s[i]+|\s[iv]$"
RemoveNumbers = .Replace(Txt, "")
End With
End Function
Geralmente, isso funciona bem, exceto que me deparei com um problema. Minha RegEx altera incorretamente a frase IT Instructor 2 e a transforma em ITnstructor (por causa do espaço e depois da palavra Instructor , que começa com um I que é o mesmo que numeral romano um). Tentei encontrar a resposta on-line e testei muitas variações para que o RegEx exclua a frase Instrutor na pesquisa, mas não consigo fazer com que ela funcione. Alguns dos padrões que eu tentei usar incluem:
.Pattern = "\b(!Instructor)\b|[0-9]|\s[i]+|\s[iv]$"
.Pattern = "\b(!Instructor)\b\w+|[0-9]|\s[i]+|\s[iv]$"
.Pattern = "(!Instructor\b)|[0-9]|\s[i]+|\s[iv]$"
...etc
Como preciso remover o numeral romano (I), não posso usar o seguinte como solução alternativa:
.Pattern = "[0-9]|\s[i]{2,}|\s[iv]$"
É possível excluir uma sequência de caracteres (como o Instrutor) de fazer parte da pesquisa usando expressões regulares do Excel 2016 VBA? Se assim for, alguém pode me apontar na direção correta sobre como excluir itens durante um VBA RegEx?
Obrigado