[英]Get Actual Print Area of an Excel Sheet (Through VBA)
如何在Excel中獲得實際的“已用范圍”(包括圖表)?
問題是,用戶將不會定義任何打印區域。 但是他應該在剪貼板中獲得所有使用范圍(包括圖表)的圖片:
如果我喜歡的話, Sheet1.PageLayout.PrintArea
它給我一個空白字符串。
如果我喜歡Sheet1.UsedRange.Address
,它不會考慮底部的圖表。
請提出解決方法。
謝謝。
您不能使用ChartObject的 TopLeftCell和BottomRightCell並檢查某些圖表是否在UsedRange之外嗎? 像這樣:
Sub test()
Dim usedRangeEx As Range
Set usedRangeEx = GetUsedRangeIncludingCharts(Worksheets("Sheet1"))
usedRangeEx.Activate
Debug.Print usedRangeEx.Address
End Sub
Private Function GetUsedRangeIncludingCharts(target As Worksheet) As Range
Dim firstRow As Long
Dim firstColumn As Integer
Dim lastRow As Long
Dim lastColumn As Integer
Dim oneChart As ChartObject
With target
firstRow = .UsedRange.Cells(1).Row
firstColumn = .UsedRange.Cells(1).Column
lastRow = .UsedRange.Cells(.UsedRange.Cells.Count).Row
lastColumn = .UsedRange(.UsedRange.Cells.Count).Column
For Each oneChart In .ChartObjects
If oneChart.TopLeftCell.Row < firstRow Then _
firstRow = oneChart.TopLeftCell.Row
If oneChart.TopLeftCell.Column < firstColumn Then _
firstColumn = oneChart.TopLeftCell.Column
If oneChart.BottomRightCell.Row > lastRow Then _
lastRow = oneChart.BottomRightCell.Row
If oneChart.BottomRightCell.Column > lastColumn Then _
lastColumn = oneChart.BottomRightCell.Column
Next oneChart
Set GetUsedRangeIncludingCharts = .Range(.Cells(firstRow, firstColumn), _
.Cells(lastRow, lastColumn))
End With
End Function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.