Dynamic Range for Excel Charts - VBA
今天碰到一個小棘手的問題:為了讓excel的圖表能夠自動變更圖表資料範圍,利用vba寫了巨集, 讓檔
案一開始的時候去判斷是否要重新計算圖表的資料範圍。
原本用了Rows.End 去找到資料起始和結束,但是測試後發現,如果資料表有放入過比較大範圍的資料
,Rows.End 會算錯位置,不得以只好用Offset重新去計算目前資料範圍(幸好資料量不會很大...),
不過這有個壞處,如果中間資料有中斷,就會判斷錯誤。
希望未來能有更好的方法處理...orz
Private Sub Workbook_Open()
Dim curSheet As Worksheet
Dim curRange As Range
Dim findRight As Boolean
Dim findDown As Boolean
Set curSheet = Sheets("Sheet1")
Set curRange = curSheet.Cells(1, 1)
If curRange.Text <> "" And MsgBox("是否重新計算圖表範圍?", vbOKCancel, "訊息") = vbOK Then
findRight = False
findDown = False
While findRight = False
If curRange.Text = "" Then
findRight = True
Else
Set curRange = curRange.Offset(0, 1)
End If
Wend
Set curRange = curRange.Offset(0, -1)
While findDown = False
If curRange.Text = "" Then
findDown = True
Else
Set curRange = curRange.Offset(1, 0)
End If
Wend
Set curRange = curRange.Offset(-1, 0)
Debug.Print curRange.Address
Sheets("Chart1").Select
Sheets("Chart1").SetSourceData Source:=Sheets("Sheet1").Range("$A$1:" & curRange.Address), PlotBy:=xlRows
Sheets("Chart1").ApplyLayout (4)
End If
End Sub