Se avessi questa colonna:eccellere testo estratto vba- tra 2 caratteri
ColA
-----
NUMBER(8,3)
NUMBER(20)
ho bisogno di una funzione VBA che sarebbe andato (notare questi cominciano e la stringa finale sarebbe sempre e solo una volta appare in una cella):
extract_val (cella, start_str, end_str)
ie. extract_val (A1, "(", ")") e dà i risultati:
8,3
20
Ho solo bisogno di utilizzare questa funzione all'interno altro codice vba non mettendolo come formula sul foglio.
UPDATE (grazie alla risposta, ho optato per :)
---------------------------
Public Function extract_value(str As String) As String
Dim openPos As Integer
Dim closePos As Integer
Dim midBit As String
On Error Resume Next
openPos = InStr(str, "(")
On Error Resume Next
closePos = InStr(str, ")")
On Error Resume Next
midBit = mid(str, openPos + 1, closePos - openPos - 1)
If openPos <> 0 And Len(midBit) > 0 Then
extract_value = midBit
Else
extract_value = "F"
End If
End Function
Public Sub test_value()
MsgBox extract_value("NUMBER(9)")
End Sub
Si potrebbe voler fare in modo che la linea closePos inizi nella posizione in cui ha trovato l'openPos, altrimenti si potrebbe trovare una parentesi di chiusura PRIMA della parentesi aperta, ma dato i propri esempi questo è improbabile. – harag
suggerimento leggermente off-scope: http://stackoverflow.com/questions/2757477/trap-error-or-resources-next –