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 svolto.

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 (3135) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: