Estoy intentando escribir una función para Excel 2010 que tomará una celda de texto no estructurado, busque algo llamado valor de sdi y, si lo encuentra, devuelva ese número. El valor de sdi aparecerá como sdi ####. Lo que quiero es volver a los números que le siguen sepecific SDI y, por lo que si la celda contiene "un texto SDI 1234 algo más de texto" la función devolverá SDI 1234.Devolver una coincidencia de expresión regular en VBA (excel)
Ésta es mi función:
Function SdiTest(LookIn As String) As String
Dim temp As String
Dim STA As Object
temp = ""
Set SDI = CreateObject("VBScript.RegExp")
SDI.IgnoreCase = True
SDI.Pattern = "sdi [1-9]*"
SDI.Global = True
If SDI.Test(LookIn) Then
temp = SDI.Execute(LookIn)
End If
SdiTest = temp
End Function
Si no hay un número de serie, nunca ingresa la instrucción if y devuelve diligentemente la cadena vacía. ¡Si hay un número sdi, obtengo #VALUE!
¿Qué me estoy perdiendo?
Sí, VBScript está habilitado. Además, me resulta frustrante utilizar expresiones regex en VBA, y es difícil encontrar información útil en línea. Se apreciarán los enlaces a buenos recursos en línea.
Gracias
¡Gran respuesta, gracias por la función! –
Gracias Issun - su función funciona maravillosamente – TheoRose
+1 muy bien hecho Issun – brettdj