1 - Errori nelle dichiarazioni
codice:
Dim i, msup, msin, mdes, colx As Integer
Dim maxr, rec, righe, pag As Integer
escluso colx e pag sono dichiarate tutte Variant, che non è proprio il massimo

2 - Manca un qualsiasi commento (!!!)
Così per sapere cosa fa il codice occorre studiarselo riga per riga.
Nemmeno nelle dichiarazioni, così non si sa a cosa servano le variabili

3 - Identazione praticamente inesistente!
il codice è poco leggibile, quindi poco comprensibile.

Ti suggerisco di tenere più in ordine nel codice.

A parte questo, se questa riga:
Printer.CurrentY = Printer.CurrentY + 0.04
è quella che determina la riga in cui stampare, allora è sbagliata.

Dovresti aumentare l'altezza in base al carattere che hai impostato nell'oggetto Printer, ovvero:

codice:
Printer.CurrentY = Printer.CurrentY + Printer.TextHeight("Aq")
Se non risolvi, sarebbe utile avere uno screenshot del risultato di stampa, così da capire bene cosa succede.