Números de página en VBA (Microsoft Excel)
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]
.