Board logo

標題: [發問] 如何寫vba改變圖表刻度 [打印本頁]

作者: dragonbx    時間: 2011-5-10 23:00     標題: 如何寫vba改變圖表刻度

小弟有一圖表想寫vba的方式來指定位置來改變圖表的最大值與最小值
我該如何寫呢?
作者: luhpro    時間: 2011-5-11 23:23

一般來說類似你這樣的需求.
其實Excel有提供一個工具可以讓我們很快的得到變更相關數據的指令,
那就是 : "錄製新巨集", 以下是錄製出來的程式內容:
Sub Macro1()
'
' Macro1 Macro
' user 在 2011/5/11 錄製的巨集
'
'
    ActiveSheet.ChartObjects("圖表 9").Activate
    ActiveChart.Axes(xlValue).Select
    With ActiveChart.Axes(xlValue)
        .MinimumScale = -1400  '<----- 圖表刻度最小值
        .MaximumScale = -600   '<----- 圖表刻度最大值
        .MinorUnit = 1.8
        .MajorUnit = 100
        .Crosses = xlCustom
        .CrossesAt = 0
        .ReversePlotOrder = False
        .ScaleType = xlLinear
        .DisplayUnit = xlNone
    End With
End Sub

圖表中的各種元素想要怎麼變更都可以經由錄製找到關鍵程式碼.
作者: dragonbx    時間: 2011-5-16 17:29

因為我的有許多各規格,會因為我所篩選的品名變更規格,使用巨集錄製的化無法達到我變更規格後圖表的上下界線也一並變更~~不知道該如何才可讓她依照我所指定欄位來變更上限&下限呢?
作者: luhpro    時間: 2011-5-16 23:21

本帖最後由 luhpro 於 2011-5-16 23:22 編輯

回復 3# dragonbx

當我們需要針對多個同類型物件賦予不同的元素內容時,
就我所知有個方法算是比較容易使用的 : 使用 Dictionary 物件 -

先分別以 "表格名稱" 為鍵值來建立 dMin 與 dMax 兩個 Dictionary
dMin(表格名稱)=該圖表刻度最小值
dMax(表格名稱)=該圖表刻度最大值
如此則可用
.
.
.
  .MinimumScale = dMin(表格名稱) 與
  .MaximumScale = dMax(表格名稱)
.
.
.
來達成依表格名稱給值的目標
Dictionary用法可參考 尋找失落的座標

另外用陣列也可以做到, 只是在給值的過程中可能需要相應多次 Redim 擴充其大小比較繁瑣一些.
作者: davidliu9116    時間: 2012-9-27 11:41

原來如此設定
謝謝您的分享
作者: c_c_lai    時間: 2012-9-27 12:05

回復 1# dragonbx
請參考
如何應用 VBA 將股票圖完整的呈現




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)