2021年11月22日 星期一

VBA:卷軸物件控制資料顯示區間的應用

 之前發了一篇BDI 不妙! (2021/11/01)一文。

這邊小編發現,這段時間除了固定發發股票分析文外,似乎都沒再分享一些簡易的VBA文,所以分享這一篇做分享。



圖1.成品圖
操作開始:
1.名稱管理員:
設定名稱,小編設定有7組如下圖,與對應的參照。
圖2.名稱管理員設定
名稱管理員設定 純文字版:
日期,=OFFSET(工作表5!$Q$2,起始,,組數,1)
起始,=工作表5!$A$2
組數,=工作表5!$B$2
漲跌,=OFFSET(日期,,4)
MIN,=MIN(OFFSET(日期,,2))
MAX,=MAX(OFFSET(日期,,2))
BDI,=OFFSET(日期,,2)

名稱管理員操作GIF解說 :

圖3.名稱管理員設定GIF

 P.S請留意工作表名稱設定歐!!!
筆者設定OFFSET是以第一行有資料的R行開始設定為1。
2.儲存格位置:
保留起始、最大、最小與組數設定的儲存格位置(小編是選A2、B2、C2、D2、E2)

C2儲存格,設定為MAX 

D2儲存格,設定為MINI

3.圖表製作:
先手動先畫兩張圖表,再變更資料為"BDI"跟X軸改為"日期"。
GIF操作:
先畫兩張圖,點選圖形,點選滑鼠右鍵選"選取資料",對話框點選編輯,在數列值中做預設名稱設定;中間GIF小編有錯誤操作,亦有透過"名稱管理員"做名稱確立後再重新設定。

 圖4.名稱管理員設定GIF

4.表單控制項使用:
插入表單控制項的物件,我們選卷軸控制項作插入。 

圖5.卷軸控制項   

GIF操作:



問題:美中不足的尺規很笨。
所以我們要加入自動設定尺規的VBA CODE如下:

Sub 調整尺規()

With ActiveSheet '改工作表
            
             .ChartObjects("圖表 1").Chart.Axes(xlValue) _
                                .MaximumScale = Round(.Range("$C$2").Value + 1.3, 3) 'X MAX
                                             
             .ChartObjects("圖表 1").Chart.Axes(xlValue) _
                                .MinimumScale = Round(.Range("$D$2").Value - 0.001, 3) 'X MIN
                                                    
End With
  
End Sub

Sub 卷軸設定()

    With ActiveSheet
    
         .Shapes("Scroll Bar 1").ControlFormat.Max = .Range("$E2").Value - .Range("$B$2").Value
         
    End With
    
    調整尺規
  
End Sub

設定GIF:

以上大功告成


沒有留言:

張貼留言

我的雷達:2024/11/15

  似乎有一種不安的味道