Sub UsedRange_withShapes()
Dim FirstRow As Long
Dim LastRow As Long
Dim FirstColumn As Integer
Dim LastColumn As Integer
On Error Resume Next
FirstRow = Cells.Find(What:="*", After:=Range("IV65536"), LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext).Row
FirstColumn = Cells.Find(What:="*", After:=Range("IV65536"), LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext).Column
LastRow = Cells.Find(What:="*", After:=Range("A1"), LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
LastColumn = Cells.Find(What:="*", After:=Range("A1"), LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
Debug.Print "FirstRow: " & FirstRow
Debug.Print "FirstColumn: " & FirstColumn
Debug.Print "LastRow: " & LastRow
Debug.Print "LastColumn: " & LastColumn
'Set RealUsedRange = Range(Cells(FirstRow, FirstColumn), Cells(LastRow, LastColumn))
On Error GoTo 0
Dim sh As Shape
Dim I As Integer
I = 1
For Each sh In ActiveSheet.Shapes
'MsgBox sh.TopLeftCell.Row
'MsgBox sh.BottomRightCell.Row
If sh.BottomRightCell.Row > LastRow Then LastRow = sh.BottomRightCell.Row
If sh.BottomRightCell.Column > LastColumn Then LastColumn = sh.BottomRightCell.Column
Debug.Print "LastRow: " & LastRow
Debug.Print "LastColumn: " & LastColumn
Next
Range(Cells(FirstRow, FirstColumn), Cells(LastRow, LastColumn)).Select
End Sub