Perdon no me da para resolverlo lo voy a intentar de nuevo mañana!!!
Como que no!!!!!!!!!!!!!!!!! triste muy triste
Te pongo el código que comprueba que sirve!!

Para aclarar en el codigo creo que esta linea seria la mas extraña o aparente sin lógica
UBound(Split(Mat(i), " ")) + 1
Explicación
split(Mat(i)," ")
La funcion split regresa un array base zero "cortando" la cadena en subcadenas, cada que encuentra el delimitador
split(Mat(i)," ")
ejemplo
es decir cada que la cadena tiene un " " lo pone en un espacio en el arreglo
Mat(i) tiene por valor la cadena "12 90 33" al ejecutar split("12,90,33"," ") nos regresaría un arreglo
(0) = "12"
(1) = "90"
(2) = "33"
aqui hay que ver que el indice superior es de 2, pero como es base zero tendriamos 3 elementos o lo que es lo mismo, calculamos el indice superior y le sumamos 1 para obtener la cantidad de elementos. por eso uso ubound para calcular el indice superior y le sumo 1 par tener el numero de elementos en ese arreglo.
Es decir sorteamos un arreglo en base a al cantidad de numeros separados por un espacio, para obtener esa cantidad usamos split apra separarlos ubound para contarlos y le sumamos el 1 por el cero...
y aca el código que prueba que la lógica... sirve =)
Private Sub Form_Load()
Dim Mat(3) As String
Mat(0) = "12 90 33"
Mat(1) = "34 56"
Mat(2) = "90 56 33 45"
Mat(3) = "9"
'algoritmo de la burbuja
Dim iMin As Long
Dim iMax As Long
Dim Vectemp As String ' -- variable temporal
Dim Pos As Long
Dim i As Long
iMin = LBound(Mat)
iMax = UBound(Mat)
While iMax > iMin
Pos = iMin
For i = iMin To iMax - 1
If UBound(Split(Mat(i), " ")) + 1 > UBound(Split(Mat(i + 1), " ")) + 1 Then
Vectemp = Mat(i + 1)
Mat(i + 1) = Mat(i)
Mat(i) = Vectemp
Pos = i
End If
Next i
iMax = Pos
Wend
'mostrar el arreglo
iMin = LBound(Mat)
iMax = UBound(Mat) 'como al final de burbuja este valor cambia, lo recalculamos
For i = iMin To iMax
MsgBox Mat(i)
Next i
End Sub