返回列表 上一主題 發帖

[發問] 如何在股價圖下方應用 VBA 增列一拉霸?

[發問] 如何在股價圖下方應用 VBA 增列一拉霸?

請教諸位先進,如何能在股價圖下方 (如附圖) 應用 VBA 語法來增列一拉霸 (ScrollBar)?
,先前 GBKEE 版大有個範本給我,但是拿來應用在此處卻不成功,
光是  .ScrollBar1.Min = 1  的宣告就無疾而終,更何況接下去了,
要怪只能怪自個兒功力不行!  附上檔案,謝謝諸位先進指導!

股票圖表與拉霸.rar (150.33 KB)

c_c_lai大
想請問您這套分析系統可否分享,
作為小弟系統建置的參考用呢
clietj37.tsao@gmail.com

TOP

回復 18# alexliou
Alex兄,
謝謝您,我試著在程式執行階段利用VBA Code建置它,它不僅充滿著 Tricky, 而且還 Difficult to manage,
所以我還是做個乖寶寶使用原本的 ScrollBar 比較親和性也不會作怪,雖然沒有 BackColor & ForeColor。
Anyway 還是要向您說聲謝謝囉!

TOP

本帖最後由 alexliou 於 2012-5-22 21:34 編輯

回復 17# c_c_lai

折線圖並沒直接的辦法來設定不同的顏色
也就是說  InvertIfNegative 與折線圖合用時並不會發揮作用
(線段是連接兩點, InvertIfNegtative 是針對"點")

若要處理折線圖在不同的範圍(可以是X軸, 也可以是不同的Y值)顯示不同的顏色
一般解法是把一個資料數列根據範圍拆成不同的數列
每個序列賦予不同的顏色

PS. 以上說得很簡單 但Implement起來會有新的問題發生
假設第一點的Y值是 10, 第二點的Y值是-5
你想要在0以上的線段和0以下的線段呈現不同的顏色
這樣就得人工插入一個點0 (分界點又會形成一個資料數列)
你可以朝這個方向去思考
這是一個不算小的工程
Alex

TOP

本帖最後由 alexliou 於 2012-5-22 19:39 編輯

回復 17# c_c_lai
先回答你有關於ScrollBar 顏色的問題

1. 前面說過  工作表可使用的控制項可分兩種:
表單控制項和ActiveX控制項
在不使用VBA來自動建立ScrollBar控制項的狀況下
也就是在工作表環境中  我們選擇[開發人員] > [插入]時
就可以發現 EXCEL提供兩種選擇 : 表單控制項和ActiveX控制項
而且表單控制項的屬性較少  
ActiveX控制項的屬性選擇較多 (當Mouse 在ActiveX控制項上時按右鍵, 你會發現多了一個[內容]標籤)
這兩種控制項在用VBA 建立時及操作時
使用的Code也不一樣
附件中用VBA code 建立了兩種不同的ScrollBar控制項 敬請參考

拉霸事件產生器3.zip (28.09 KB)
2. 表單控制項的ScrollBar 並無BackColor 和 ForeColor等屬性
所以無法改變它的顏色
如果你要讓ScrollBar 有顏色
就只能使用ActiveX控制項ScrollBar了
它的BackColor屬性可以調整Bar的顏色
它的ForeClor屬性可以調整Bar兩端箭頭的顏色

3. 當你用VBA Code自動建立ActiveX控制項時
會遇到一個麻煩   是它不支援中斷模式
會讓你偵錯很不方便
(但我還是比較喜歡用ActiveX控制項)

4. ActiveX控制項的名稱還有一些Tricky的地方
(你可以在VBA 的 IDE下 利用Help查ActiveX控制項)
所以盡量在設計階段時建置
而不要在程式執行階段利用VBA Code建置它
Alex

TOP

本帖最後由 c_c_lai 於 2012-5-21 10:15 編輯

回復 16# alexliou
目前我的 ScrollBar 是由VBA動態產生的,亦即當進入(啟動) Excel表單,該系統即自動產生一ScrollBar,
Sheets("統計圖表").ScrollBars.Add(Cells(20, 1).Left, Cells(20, 1).Top, 879, Rows(1).Height).Select
當離開Excel時,又自動將它刪除掉。
我的提問是:
我想能將該動態產生的ScrollBar加上背景或者是前景顏色,如此比較顯著,否者使用者會看不清ScrollBar在哪裡,
因為VBA產生的ScrollBar的顏色是Default值,不知道可不可以這麼做?   又,               
.InvertIfNegative = True
.InvertColor = RGB(255, 124, 128)                     
只能應用在柱狀圖,我在想如果是 xlLine 型態時,當表列數值為負值時,有否將其顯示之顏色更變成橘紅色,
正值時則選擇其它顏色,不知能否突破?
謝謝指導!

TOP

回復 15# c_c_lai
我的Access 資料庫中所存的都是歷史資料
資料源並非券商的DDE

但在需要即時交易資料的狀況下
券商的DDE資料源則是個不錯的選擇
至少跟其他一般免費的資料源(如交易所的網頁)
它的穩定性和即時性(更新頻率)都較佳
Alex

TOP

回復 14# alexliou
我會再實地演練多次以瞭解它們佊此間互動關聯的, 謝謝您!
依您所言,您所有資料都直接由DDE匯入到Acess,那線上您只看券商的圖表,
Excel 上的統計圖表只是來當作歷史資料參考依據了, 或是兩者皆儲存,同步參考?

TOP

本帖最後由 alexliou 於 2012-5-16 03:09 編輯

回復 13# c_c_lai
那些附屬在物件(如ThisWorkBook, 工作表1, .......)下的變數或程序
即使宣告為Public , 要去存取或呼叫,  需透過物件的階層  
如Thisworkbook.VariableA, 工作表1.ScrollBarChange,.....

但在模組(Module)中宣告的變數或程序
如宣告為Public, 即使是在Module外取用或呼叫
也不用加上模組的名稱

像你前述的問題
如果把ScrollBarChange 程序 放在模組表1中
並把它宣告為Public (這裡不宣告也行  此情形是特例)
那你使用   .OnAction = "ScrollBarChange" 也會work

工作表上的控制項的Event Handler 通常會放在附屬於工作表的程序裡
因為同一類別的控制項可能會在不同的工作表中出現
如果能確保每個控制項稱都不同名
Event Handlers全都放在模組表裡亦可
Alex

TOP

回復 11# GBKEE
回復 12# alexliou
謝謝兩位的幫忙,這兩天我上了國外網站收尋資料,找到了一篇還不錯,如下:
  1. Sheet1.ScrollBars.Add(624763.5, 4271616, 5095730.25, 189166.5).Select

  2. With Selection
  3.     .Value = 60
  4.     .Min = SMin
  5.     .Max = SMax
  6.     .SmallChange = 1
  7.     .LargeChange = 1
  8.     .LinkedCell = "Sheet1!$O$5"
  9.     .Display3DShading = True
  10.      
  11.     With .ShapeRange
  12.         .Left = 0
  13.         .Width = 680.32
  14.         .Top = 0
  15.         .Height = 15
  16.     End With
  17.      
  18.     .OnAction = "ScrollBarChange"
  19. End With
複製代碼
但是我卻鑽進了死胡同  .OnAction = "ScrollBarChange"  老是告訴我無法使用此巨集,
百思不解之下才來求援,結果是 Alex兄叫我使用 .OnAction = "工作表1.ScrollBarChange"  ,
便迎刃而解了。 就差別在必須加上 "工作表1."字樣才能正常運作。謝謝您們!
另外再請教,在 ThisWorkbook 上頭已經宣告了 Public 型態,理論上它應屬於 Global,
為何在"工作表1"內卻無法取得該等變數內容值呢?

TOP

        靜思自在 : 一個人不怕錯,就怕不改過,改過並不難。
返回列表 上一主題