Numeri di pagina in VBA (Microsoft Excel)
Steve sta cercando un modo per determinare, in una macro VBA, il numero di pagine che avrà un foglio di lavoro, una volta stampato, e il numero di pagina su cui verrà stampata una determinata cella. Questo compito non è così facile come si potrebbe sperare, ma può essere fatto.
Sembra che il modo migliore per gestirlo sia utilizzare una funzione Excel 4 obsoleta (ma ancora disponibile) per determinare il numero di pagine stampate totali in un foglio di lavoro. Quindi puoi utilizzare le raccolte HPageBreaks e VPageBreaks per capire dove si trova la cella nella matrice delle pagine che verranno stampate. Quello che segue è un esempio di una macro che utilizza questi elementi:
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 da tenere a mente con questa macro è che le raccolte HPageBreaks e VPageBreaks sono considerate accurate solo se si visualizza il foglio di lavoro in Anteprima interruzioni di pagina (Visualizza | Anteprima interruzioni di pagina). Pertanto, ti consigliamo di assicurarti di essere in quella modalità prima di selezionare una cella ed eseguire la macro.
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (11581) si applica a Microsoft Excel 2007, 2010, 2013 e 2016.
È possibile trovare una versione di questo suggerimento per la vecchia interfaccia del menu di Excel qui: Numeri di pagina in VBA.