Código:
Private Sub CmdImprimirPeriodos_Click()
Dim Fila As Integer, ContarFila As Integer, nIncrem As Single
'Papel Tamaño Carta = 21.59 x 27.94 Centimetros = 2550 x 3300 pixels
'Imprimimos la hoja en forma Horizontal
Printer.Orientation = vbPRORPortrait '2 Orientación Horizontal vbPRORLandscape '1 Horientación Vertical "vbPRORPortrait"
Printer.ScaleMode = vbCentimeters 'Ponemos la Escala en Centimetros
'Margenes
HorizontalMargen = (21.59 - Printer.ScaleWidth) / 2 + 0.1
VerticalMargen = (27.94 - Printer.ScaleHeight) / 2 + 0.1 + 4
nIncrem = 0.6
'Imprimimos la Grilla
'---------------------------------------------------------------------------------------
'imprimimos los datos de la grilla
EncabezadoGrilla 'imprimimos el encabezado
'Cargamos nuevas fuentes y tamaños para la grilla
Printer.Font = "Verdana"
Printer.FontSize = 8
Printer.ForeColor = vbBlue
Printer.FontBold = False
ContarFila = 1
For Fila = 1 To (Me.GrillaPeriodos.Rows - 1)
Printer.CurrentY = VerticalMargen + (ContarFila - 1) * nIncrem
'Columna 0 Meses
Printer.CurrentX = HorizontalMargen + ((3.5 - Printer.TextWidth(Me.GrillaPeriodos.TextMatrix(Fila, 0))) / 2)
Printer.Print Me.GrillaPeriodos.TextMatrix(Fila, 0)
'Columna 1 Numero de Periodo
Printer.CurrentX = 3.5 + HorizontalMargen + ((2 - Printer.TextWidth(Me.GrillaPeriodos.TextMatrix(Fila, 1))) / 2)
Printer.Print Me.GrillaPeriodos.TextMatrix(Fila, 1)
'Columna 2 Dias a Pagar
Printer.CurrentX = 5.5 + HorizontalMargen + ((2 - Printer.TextWidth(Me.GrillaPeriodos.TextMatrix(Fila, 2))) / 2)
Printer.Print Me.GrillaPeriodos.TextMatrix(Fila, 2)
'Columna 3 Fecha en que inicia el Periodo
Printer.CurrentX = 7.5 + HorizontalMargen + ((3.5 - Printer.TextWidth(Me.GrillaPeriodos.TextMatrix(Fila, 3))) / 2)
Printer.Print Me.GrillaPeriodos.TextMatrix(Fila, 3)
'Columna 4 Fecha en que Termina el Periodo
Printer.CurrentX = 11 + HorizontalMargen + ((3.5 - Printer.TextWidth(Me.GrillaPeriodos.TextMatrix(Fila, 4))) / 2)
Printer.Print Me.GrillaPeriodos.TextMatrix(Fila, 4)
'Columna 5 Partes de un Mes
Printer.CurrentX = 14.5 + HorizontalMargen + ((2 - Printer.TextWidth(Me.GrillaPeriodos.TextMatrix(Fila, 5))) / 2)
Printer.Print Me.GrillaPeriodos.TextMatrix(Fila, 5)
'Columna 6 Status Activo o Inactivo
Printer.CurrentX = 16.5 + HorizontalMargen + ((3 - Printer.TextWidth(Me.GrillaPeriodos.TextMatrix(Fila, 6))) / 2)
Printer.Print Me.GrillaPeriodos.TextMatrix(Fila, 6)
ContarFila = ContarFila + 1
If ContarFila > 37 Then
Printer.NewPage 'Llamamos otra pagina
EncabezadoGrilla 'imprimimos nuevamente el encabezado
ContarFila = 1
End If
Next Fila
' No sé si el siguiente mensaje se presenta adecuadamente tal como le pones...
MsgBox "Las Tablas que se Generaron se Estan Imprimiendo en la Impresora:" & vbCrLf & " " & Printer.DeviceName, vbInformation, "Imprimiendo Tablas" 'Printer.Port & "Imprimiendo"
'Final de la impresión
Printer.EndDoc
End Sub Como ves, no es necesario definir el "CurrentY" para cada columna. Vale con que le definas una vez para toda la fila.
Y, aunque no sea indispensable, verás también que merece la pena cuidar la presentación del código.
Por otra parte, me da la impresión de que estás manejando variables que no has definido. Si te acostumbrases a poner "Option Explicit" como primera línea de todos tus formularios... evitarías esos posibles errores.
Y lo más importante: Ojalá ahora te funcione !!!