Ciao matzap, se poni Len >=17 fai intervenire l'istruzione mid, solo che quest'ultima e' settata per estrarre solo tre caratteri a partire dal dodicesimo, quindi il risultato che otterresti sarebbe 100 (ipotizzando un valore da esaminare del tipo: 6120269122-1000.01).
quindi se ho capito bene il tuo scenario ha queste caratteristiche:
il valore da esaminare ai fini dell'estrazione non puo' essere piu' corto di 17 caratteri e non puo' essere piu' lungo di 18
la parte prima del trattino e' sempre e solo di 10 caratteri
la parte che devi estrarre e' sempre e solo di 3 o 4 caratteri
Se queste sono le uniche caratteristiche ti propongo di assegnare una variabile alla parte da estrarre in funzione della lunghezza del valore da esamminare, se la lunghezza e' 17 allora la parte da estrarre acquistera' il valore 3, se la lunghezza e' 18 allora la parte da estrarre acquistera' il valore 4:
- Codice: Seleziona tutto
For x = 1 To 65536
If Cells(x, 1) = "" Then Exit Sub
If Len(Cells(x, 1)) = 17 Then ParteDaEstrarre = 3
If Len(Cells(x, 1)) = 18 Then ParteDaEstrarre = 4
Cells(x, 2) = Mid(Cells(x, 1), 12, ParteDaEstrarre)
If Len(Cells(x, 1)) < 17 Then Cells(x, 2) = Cells(x, 1)
Next x
Se il tuo scenario fosse piu' complesso ti chiedo di dettagliarlo il piu' possibile.
Spero di esserti stato utile.
ciao