Dim s$, pag(), ws As Worksheet
Sub main()
Dim i%, j%
Set ws = ActiveSheet
PageAddress2 False
For i = 1 To ws.ChartObjects.count
For j = LBound(pag) To UBound(pag)
If Not Intersect(ws.ChartObjects(i).TopLeftCell, pag(j)) Is Nothing Then
MsgBox "Found " & ws.ChartObjects(i).Name & " on page " & j
Exit For
End If
Next
Next
End Sub
Sub PageAddress2(colorcode As Boolean)
Dim c%, v%, h%, cln%, rw%, hgth%, wth%, i%
c = 1: s = ""
ActiveWindow.View = xlPageBreakPreview
ws.PageSetup.PrintArea = ""
ws.PageSetup.PrintArea = ws.UsedRange.Address ' force page break recalculation
ReDim Preserve pag(1 To (ws.VPageBreaks.count + 1) * (ws.HPageBreaks.count + 1)) 'all pages on that sheet
For v = 0 To ws.VPageBreaks.count
For h = 0 To ws.HPageBreaks.count
If v = ws.VPageBreaks.count Then
wth = ws.UsedRange.Columns(ws.UsedRange.Columns.count).Column
Else
wth = ws.VPageBreaks(v + 1).Location.Column - 1
End If
If h = ws.HPageBreaks.count Then
hgth = ws.UsedRange.Rows(ws.UsedRange.Rows.count).Row
Else
hgth = ws.HPageBreaks(h + 1).Location.Row - 1
End If
If v = 0 Then
cln = 1
Else
cln = ws.VPageBreaks(v).Location.Column
End If
If h = 0 Then
rw = 1
Else
rw = ws.HPageBreaks(h).Location.Row
End If
Set pag(c) = ws.Range(ws.Cells(rw, cln).Address & ":" & ws.Cells(hgth, wth).Address) ' page address
s = s & pag(c).Address & vbLf
If colorcode Then pag(c).Interior.Color = RGB(CInt(250 * Rnd), CInt(250 * Rnd), CInt(250 * Rnd))
c = c + 1
Next
Next
End Sub