Sto provando a scrivere una funzione per Excel 2010 che prenderà una cella di testo non strutturato, cercare qualcosa chiamato valore sdi e, se trovato, restituire quel numero. Il valore sdi apparirà come sdi ####. Quello che voglio è quello di restituire sdi ei numeri sepecific che lo seguono, quindi, se la cella contiene "un testo sdi 1234 ancora un po 'di testo" la funzione restituirà sdi 1234.Restituzione di una corrispondenza regolare in VBA (excel)
Questa è la mia funzione:
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
Se non c'è alcun numero SDI non entra mai nella dichiarazione if e restituisce doverosamente la stringa vuota. Se c'è un numero sdi ottengo #VALORE!
Cosa mi manca?
Sì, VBScript è abilitato. Inoltre, trovo frustrante usare regex in VBA e difficile trovare informazioni utili online. I collegamenti a buone risorse online sarebbero apprezzati.
Grazie
Ottima risposta, grazie per la funzione! –
Grazie Issun - la tua funzione funziona meravigliosamente – TheoRose
+1 ben fatto Issun – brettdj