As variáveis globais do VBA precisam ser de tipos primitivos (Integer, String, etc).
Isto porque o Provider precisa serializar e deserializar os valores quando o contexto é transferido de um provider para outro (insert para post, por exemplo).
No caso desta macro em questão, ao que parece o programador cometeu uma falácea na declaração das variáveis, pois em outras linguagens as variáveis giNivelCustom, giNivel1Custom, giNivel2Custom seriam igualmente do tipo Integer, porém em VBA elas estão sem tipo (ou seja: Variant) e apenas a giNivel3Custom é que está como Integer.
Para funcionar teria que alterar para:
Dim gnNivelCustom as Integer, giNivel1Custom as Integer, giNivel2Custom as Integer, giNivel3Custom as Integer