Steve está buscando una manera de determinar, en una macro de VBA, la cantidad de páginas que tendrá una hoja de trabajo, cuando se imprima, y ​​el número de página en la que se imprimirá una celda en particular. Esta tarea no es tan fácil como cabría esperar, pero se puede realizar.

Parece que la mejor manera de manejar esto es usar una función de Excel 4 anticuada (pero aún disponible) para determinar el número total de páginas impresas en una hoja de trabajo. Luego, puede usar las colecciones HPageBreaks y VPageBreaks para averiguar dónde se ubica la celda en la matriz de páginas que se imprimirán. El siguiente es un ejemplo de una macro que utiliza estos elementos:

Sub PageInfo()

Dim iPages As Integer     Dim iCol As Integer     Dim iCols As Integer     Dim lRows As Long     Dim lRow As Long     Dim x As Long     Dim y As Long     Dim iPage As Integer

iPages = ExecuteExcel4Macro("Get.Document(50)")



With ActiveSheet         y = ActiveCell.Column         iCols = .VPageBreaks.Count         x = 0         Do             x = x + 1         Loop Until x = iCols _           Or y < .VPageBreaks(x).Location.Column         iCol = x         If y >= .VPageBreaks(x).Location.Column Then             iCol = iCol + 1         End If

y = ActiveCell.Row         lRows = .HPageBreaks.Count         x = 0         Do             x = x + 1         Loop Until x = lRows _           Or y < .HPageBreaks(x).Location.Row         lRow = x         If y >= .HPageBreaks(x).Location.Row Then             lRow = lRow + 1         End If

If .PageSetup.Order = xlDownThenOver Then             iPage = (iCol - 1)  (lRows + 1) + lRow         Else             iPage = (lRow - 1)  (iCols + 1) + iCol         End If     End With     MsgBox "Cell " & ActiveCell.Address & _       " is on " & vbCrLf & "Page " & _       iPage & " of " & iPages & " pages"

End Sub

Una cosa que debe tener en cuenta con esta macro es que las colecciones HPageBreaks y VPageBreaks solo se consideran precisas si está viendo la hoja de trabajo en Vista previa de salto de página (Ver | Vista previa de salto de página). Por lo tanto, querrá asegurarse de estar en ese modo antes de seleccionar una celda y ejecutar la macro.

_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 (11581) se aplica a Microsoft Excel 2007, 2010, 2013 y 2016.

Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí: link: / excel-Page_Numbers_in_VBA [Page Numbers in VBA].