小編這幾天想,一直自動畫圖好像還缺了啥,所以思索了一下,圖都在那了不如變成更新圖的資料的做法,補足這塊的不足,再者效率比重新生成物件來的更快,然後圖的格式也不用重新設定了。
小編目前掌有兩種方式可以更新圖面資料,
第一種:
透過 Formula 方式丟入資料組所在位置,來更新資料。
此種方法簡單不複雜。
例如要更新圖表3的第一條線的資料,資料來源在工作表1上的j2:j203,資料x軸標籤在f2:f203上,可以這樣寫,vba如下 msdn
ActiveSheet.ChartObjects("圖表9").Activate
ActiveChart.FullSeriesCollection(1).Formula = "=SERIES(,'工作表1'!$J$2:$J$203,'工作表1'!$F$2:$F$203,2)"
第一種加強版:
接下去看來看看,如果今天學會了set的技巧,我們可以這樣做:
'透過set 設置使用的儲存格範圍
Set myrange_y = ActiveSheet.Range("f2:f203")
Set myrange_x = ActiveSheet.Range("j2:j203")
'透過SetSourceData 設置使用的儲存格範圍
ActiveSheet.ChartObjects("圖表 9").Chart.SetSourceData Source:=myrange_y
'x軸標籤透過Chart.SeriesCollection(1).XValues設置使用的儲存格範圍
ActiveSheet.ChartObjects("圖表 9").Chart.SeriesCollection(1).XValues = myrange_x
第二種:MSDN
直接丟資料組"資料"給圖形物件,來更新資料,很簡單,拿掉set 即可,語法相當單一
如下:
myrange_y = ActiveSheet.Range("f2:f20")
myrange_x = ActiveSheet.Range("j2:j20")
ActiveSheet.ChartObjects("圖表 9").Chart.SeriesCollection(1).XValues = myrange_x
ActiveSheet.ChartObjects("圖表 9").Chart.SeriesCollection(1).Values = myrange_y
沒有留言:
張貼留言