Una forma de solucionarlo es leer los campos antes de crear el array y redimensionarlo al número de campos diferentes de cero:
Modifica esta parte del código que te puse antes (a continuación de abrir el recordset):
Código vb:
Ver originalDim x As Integer, i As Integer
For x = 0 To rst.Fields.Count - 1
' si el valor del campo es mayor que , incrementamos la variable
If rst.Fields(x) > 0 Then i = i + 1
Next x
Dim a() As Variant
' redimensionamos la matriz bidimensional al número de campos no nulos
ReDim a(i - 1, 1)
' el primer índice de la matriz es 0
x = -1
For i = 0 To rst.Fields.Count - 1
If rst.Fields(i) > 0 Then
' el valor del campo es mayor que cero, lo cargamos en la matriz
x = x + 1
a(x, 0) = rst.Fields(i).Name
a(x, 1) = rst.Fields(i)
End If
Next i
.. y a continuación haces la ordenación del array