Michelle tiene una hoja de trabajo larga con la que está trabajando. Cuando usa la Vista previa de impresión para la hoja de trabajo, la página que se muestra en el cuadro de diálogo Vista previa de impresión es siempre la primera página. Michelle se pregunta si hay alguna manera de hacer que Print Preview muestre automáticamente la página de la hoja de trabajo en la que está trabajando.

Una forma de abordar este problema es intentar trabajar con áreas de impresión. Si selecciona el área de la hoja de trabajo en la que está trabajando y luego establece el área de impresión igual a su selección, cuando muestre la Vista previa de impresión, debería ver solo esa área de impresión.

Si esto no logra su deseo, entonces podría pensar que puede recurrir al uso de una macro. Aquí hay una macro de ejemplo que puede ayudarte:

Sub PrintPreviewActivePage()

Dim lActiveRow As Long     Dim iActiveCol As Integer     Dim iHPBs As Integer     Dim iVPBs As Integer     Dim lRow As Integer     Dim iCol As Integer     Dim iPage As Integer

lActiveRow = ActiveCell.Row     iActiveCol = ActiveCell.Column     ActiveSheet.UsedRange

If IsEmpty(ActiveCell.SpecialCells(xlCellTypeLastCell)) Then _       ActiveCell.SpecialCells(xlCellTypeLastCell).FormulaR1C1 = " "

If lActiveRow > ActiveCell.SpecialCells(xlCellTypeLastCell).Row Or _       iActiveCol > ActiveCell.SpecialCells(xlCellTypeLastCell).Column Then _       Exit Sub

With ActiveSheet         iHPBs = .HPageBreaks.Count         iVPBs = .VPageBreaks.Count         lRow = 0         iCol = 0         If iHPBs > 0 Or iVPBs > 0 Then             For lRow = iHPBs To 1 Step -1                 If .HPageBreaks(lRow).Location.Row <= lActiveRow Then Exit For             Next lRow             For iCol = iVPBs To 1 Step -1                 If .VPageBreaks(iCol).Location.Column <= iActiveCol Then Exit For             Next iCol         End If         iPage = (lRow + 1) + (iCol * (iHPBs + 1))

.PrintOut From:=iPage, To:=iPage, Preview:=True         MsgBox "Previewed page " & iPage     End With     If ActiveCell.SpecialCells(xlCellTypeLastCell).FormulaR1C1 = " " Then _       Selection.SpecialCells(xlCellTypeLastCell).ClearContents End Sub

Esta macro es en realidad una variación de cualquier cantidad de macros que pueda encontrar con algunas investigaciones en Internet. Hay dos partes clave: primero, la macro determina en qué «página» se encuentra en la hoja de trabajo, y luego utiliza el método .PrintOut con el parámetro Preview establecido en True, lo que da como resultado que se invoque Print Preview.

En algunas hojas de trabajo, esta macro puede funcionar muy bien, pero es bastante voluble en cuanto a si funcionará o no. En la mayoría de mis pruebas, no pude hacer que funcionara, a menos que usara hojas de trabajo muy pequeñas. (En otras palabras, muy pocas filas y columnas). Si lo ejecuta en una hoja de trabajo grande, verá rápidamente que obtiene un error de «Subíndice fuera de rango» en el ciclo que examina los miembros de la colección .HPageBreaks. Cómo podría suceder esto cuando no está utilizando un miembro que está fuera de rango (lRow nunca varía fuera del valor devuelto por la propiedad .Count) es desconcertante.

Sin embargo, parece ser un problema que Microsoft reconoce. De hecho, es un problema que han reconocido, pero nunca resuelto, durante años:

https://support.microsoft.com/en-us/help/210663/

Sin embargo, la solución sugerida en la página web no funciona realmente. Por lo tanto, estamos atascados con una macro que solo funciona de manera confiable en hojas de trabajo donde no necesitaría calcular el número de página porque solo está trabajando con una sola página. ¡Aargh!

La conclusión es que un enfoque basado en macros puede, en el futuro previsible, no ser viable para las necesidades de Michelle. Eso nos deja solo con el enfoque del área de impresión, que se describe al principio de este consejo.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (13578) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365.