Non so inquadrare il codice della Sub SplitStringRange, così come è non fa niente.
Ma secondo me la cosa e' piu' complicata che arrivare alla codifica vba.
Per quel che vedo, tu (voi) dovete innanzitutto definire uno standard per qualificare il tipo di lettura che si va a fare.
Esempi della mia fantasia, slegati dalla vostra situazione e slagati dai tracciati record che hai pubblicato e di cui mi sono dimenticato:
-Stringa unica (a) per la cella corrente (1)
-stringa unica (a) per la colonna VETTORE (2)
-stringa unica (a) per la colonna TARGA (3)
-stringa unica (a) per la colonna PESO (4)
-stringa multipla (b) per VETTORE /TARGA (5)
-etc
Il tipo di messaggio e relativo attributo devono essere poi inseriti all'interno del codice a barre, e devono rispettare sia lo standard di codifica (non so quali caratteri il codice a barre supporta) che lo standard di lettura excel (es il tasto Esc cancella la scrittura precedente)
Esempio di tipo=a #ZcZ1#U#
Esempio di tipo=b #ZcZ1#M#
Esempio per tipo=1 #ZcZ2##
Esempio per tipo=2 #ZcZ2#VETTORE#
Esempio per tipo=3 #ZcZ2#TARGA#
Etc
Quindi, un paio di esempi di lettura da pistola:
#ZcZ1#U#UniCorriere Milano (ipotetico messaggio che mette nella cella corrente "UniCorriere Milano")
#ZcZ1#M# #ZcZ2#TARGA#CZ111AB #ZcZ2#PESO#10 #ZcZ2#VETTORE#Uniservizi Pisa (ipotetico messaggio che mette CZ111AB nella colonna TARGA, 10 nella colonna PESO e Uniservizi Pisa nella colonna VETTORE
Nota che ho immaginato che stringhe del tipo #ZcZ non faranno mai parte dei valori che dovrebbero essere introdotti nelle celle. In alternativa puoi valutare una struttura tipo "xml" del tipo <messaggio><targa>Valore targa</targa><vettore>Valore campo Vettore</vettore>....</messaggio>.
La macro di gestione deve identificare il tipo del messaggio, gli eventuali attributi (Targa, Peso e Vettore, nel secondo esempio), estrarre i valori e scriverli nelle posizioni dovute.
Ovviamente questo va concordato con chi poi si deve occupare di stampare le "etichette" con i codici a barre.
Se il progetto fa fatica a diventare un progetto aziendale allora io direi che nel tuo piccolo ti dovresti fermare ai grandi miglioramenti che puoi apportare in proprio, cioe' leggere singoli codici a barre invece che scrivere da tastiera (e, per dire, già dire agli autisti che devono presentarsi alla tua postazione con un codice a barra potrebbe richiedere il coinvolgimento di altri Enti aziendali)
Comunque un codice che potresti usare per posizionare i campi:
- Codice: Seleziona tutto
Sub Pusher(ByVal iStr As String, pSep As String, oRow As Long)
Dim Mappa, mySplit, I As Long
'
Mappa = Array("A", "C", "F") '<<< Colonne di destinazione
mySplit = Split(iStr & pSep, pSep, , vbTextCompare)
If UBound(mySplit) > 0 Then
For I = 0 To UBound(mySplit) - 1
Cells(oRow, Mappa(I)).Value = mySplit(I)
If I >= UBound(Mappa) Then Exit For
Next I
End If
End Sub
Noterai la riga
Mappa=etc etc che dice in quali colonne i campi devono essere inseriti.
Poi dalla macro principale richiamerai la Sub Pusher inserendo i parametri su cui lavorare:
-la stringa da splittare
-il "separatore" dei campi
-il numero di riga su cui scrivere il risultato
Ad esempio:
- Codice: Seleziona tutto
Call Pusher(Cells(I, "A").Value, "#", I)
Questa passa al "Pusher" il contenuto di cella A della riga "i", dice che il separatore usato è "#" e il contenuto va rimesso in riga i (nella colonne indicate su Mappa)