Ciao, l'errore lo da in quanto non hai indicato che la variabile codice (e le altre) è un vettore.
anche se non è il massimo dell'ottimizzazione, modifica in questa maniera:
codice:
 Dim idxMax as long
 Dim codice() as string
 Dim descr() as string
 Dim um() as string
 Dim qta() as string
 Dim note() As string

 Dim tmp2, tmp1 As Variant
 tmp1 = Split(dati, "§")
 
 idxMax=UBound(tmp1)
 Redim codice(idxMax)
 Redim descr(idxMax)
 Redim um(idxMax)
 Redim qta(idxMax)
 Redim note(idxMax)
 
For i = LBound(tmp1) To UBound(tmp1) - 1
  tmp2 = Split(tmp1(i), "¤")
  codice(i) = tmp2(0)
  descr(i) = tmp2(1)
  um(i) = tmp2(2)
  qta(i) = tmp2(3)
  note(i) = tmp2(4)
Next