codice:
Function Parte(Var As Variant, Index As Integer, Sep As String) As String
' --- Routine ritorna la parte della stringa passata in var
' avendo il carattere di separazione passato in Sep e il numero di
' campo di ritorno passato in index
' se ritorna Var=null passato qualcosa che non va
'
Dim Passa As Variant
Dim posto As Long
Dim ini As Integer
Dim PostoM As Long
Dim MaxSegna As Long
Dim a As Long
Dim Iniziale As Integer
Dim Finale As Integer
Dim Uscita As String
Passa = Var
If Passa = "" Or IsNull(Passa) Or Index < 1 Then
Parte = -1
Exit Function
End If
' controllo se esiste il carrattere separatore cercato
posto = 0
posto = InStr(Passa, Sep)
If posto < 1 Then
Parte = -1
Exit Function
End If
posto = 0: ini = 1: PostoM = 0: MaxSegna = 0
'-- controllo per quanti sono i segnaposto
For a = 1 To Len(Passa)
posto = 0
posto = InStr(ini, Passa, Sep)
If posto > 0 Then
ini = posto + 1
MaxSegna = MaxSegna + 1
End If
Next
If Index > (MaxSegna + 1) Then
Parte = -1
Exit Function
End If
Iniziale = 1: posto = 0: Finale = 0: ini = 1
For a = 1 To Index
posto = InStr(ini, Passa, Sep)
If posto > 0 Then
Finale = posto ' - 1
ini = posto + 1
If a = (Index - 1) Then
Iniziale = posto ' + 1
End If
posto = 0
End If
Next
' determinare quanti caratteri è lungo il campo da recuperare
Uscita = ""
Select Case Index
Case 1
Uscita = Trim(Left(Passa, Finale - 1))
Case Is = (MaxSegna + 1)
Uscita = Trim(Mid$(Passa, Finale + 1))
Case Else
Uscita = Trim(Mid$(Passa, Iniziale + 1, (Finale - (Iniziale + 1))))
End Select
' Normalizzazione di Uscita
Uscita = Trim(Uscita)
If Uscita = Sep Or Uscita = "" Then
Uscita = " "
End If
Parte = Uscita
End Function
usa questa routine