'-----------------------------------------------
'Exact Visible Range RECT relative to the Screen
'-----------------------------------------------
Function ExactVisibleRangeRECTToScreen(Window As Window) As RECT
Dim EVRRS As RECT
Dim LastVisibleRangeCell As Range
Dim LastXPixelVisible As Long
Dim LastYPixelVisible As Long
With Window.Panes(Window.Panes.Count)
Set LastVisibleRangeCell = .VisibleRange.Cells(.VisibleRange.Cells.Count).Offset(-1, -1)
LastXPixelVisible = .PointsToScreenPixelsX(LastVisibleRangeCell.Left)
LastYPixelVisible = .PointsToScreenPixelsY(LastVisibleRangeCell.Top)
EVRRS.Left = .PointsToScreenPixelsX(.VisibleRange.Left)
Do While Not .Parent.RangeFromPoint(LastXPixelVisible, LastYPixelVisible) Is Nothing
LastXPixelVisible = LastXPixelVisible + 1
Loop
LastXPixelVisible = LastXPixelVisible - 1
EVRRS.Right = LastXPixelVisible + 1
EVRRS.Top = .PointsToScreenPixelsY(.VisibleRange.Top)
Do While Not .Parent.RangeFromPoint(LastXPixelVisible, LastYPixelVisible) Is Nothing
LastYPixelVisible = LastYPixelVisible + 1
Loop
LastYPixelVisible = LastYPixelVisible - 1
EVRRS.Bottom = LastYPixelVisible + 1
End With
'Return value
ExactVisibleRangeRECTToScreen = EVRRS
End Function