返回列表 上一主題 發帖

[發問] K 線股票圖如何能與主力、散戶、及成交量線共存?

回復  c_c_lai
謝謝先進分享
值得借鏡使用
非常好的圖例
執行產生如下錯誤:
.SetElement (msoEleme ...
b9208 發表於 2012-10-7 09:21

Chart.SetElement 方法
會設定圖表上的圖表元素。可讀寫的 MsoChartElementType 物件。
版本資訊
新增的版本:  Excel 2007

TOP

回復 1# c_c_lai
謝謝先進分享
值得借鏡使用
非常好的圖例
執行產生如下錯誤:
.SetElement (msoElementChartTitleCenteredOverlay)  變數未定義

使用版本Office Excel 2003

謝謝指導
100 字節以內
不支持自定義 Discuz! 代碼

TOP

這個股票圖表真的EXCEL中所看過最精緻的了 , 有折線  , 長條跟K線
想必花了不少心血 , 功力不夠真的做不出來
感謝分享這個作品 , 雖然還不能下載
但光是知道能夠做到這樣真的令人讚嘆

TOP

我太晚來這邊了,因為如果知道的話,就不會浪費那樣多的時間了!

TOP

回復 1# c_c_lai


    您的作品太棒了!可以利用此範本運用在其他數據,感謝您的分享,謝謝!
peter460191

TOP

我在這裡提出我的建議,如有不中意聽的話請多多包涵

我覺得不管是寫得多少年程式或是身為程式設計師的人,都應該有的在程式是中加上必要的說明是應當
剛開始投身於程式工程師時,要在程式中加入註解,與明確訂定程式名稱與變數名稱,也是很不能適應要在程式裡加上說明
但久而久之習慣了,沒加反而不習慣,因為哪一天要再回過頭來看的時候可以很快就能上手,才不會再時間去回想當初的想法

對於寫程式已久的人,是否應該思考的該如何寫得讓人家看得懂的程式,而非寫給自己看的爽的程式
對於剛開始接觸新程式語言的新人,更應該學習養成良好的寫程式習慣,這樣哪天回頭來複習的時候可以更清楚當初的思路

我剛到這個討論區的時候,即發現到這裡回應的人的習慣真的跟我當初習慣一樣,所以我才會在每次貼程式碼的時候,特別加上註解與明確定義相關的名稱
以讓後面的人要學習時可以一眼看出我的想法與思路,這樣對他們可以成長得更快

說了這麼多,無非也是希望你能了解,不管是寫了程式多少年,沒有一個好的習慣養成,這樣程式的可讀性真的很低
以上的言論如有冒犯的地方請多多包涵

TOP

回復 5# white5168
程式的模組化與註釋本來就很重要,但請注意註釋要標註到重點,
而非亂譜。打從八位元開始就已經從事軟體維護的我,真不知如何
向你解說看起來好亂的定義?

TOP

很感謝c_c_lai大大提供的程式碼

不過看起來好亂,能否請c_c_lai大大能將每個對應的功能做成一個個函數與註解,以方便清楚了解原理與debug
能否請c_c_lai大大提供您所使用的資料檔以供參考使用的格式內容
抱歉! 請多諒解, 需求多了點, 身為Programmer就是程式寫久了,這樣的習慣改不了,遇到需要debug時,程式的模組化與註解就很重要
謝謝

TOP

本帖最後由 c_c_lai 於 2012-5-7 14:42 編輯

回復 3# white5168
  1. Option Explicit

  2. Sub drawCharts()
  3.     Dim totalRows As Single
  4.     Dim xRow, yCol, cHeight, cWidth As Integer
  5.     Dim text As String
  6.     Dim chartname As String
  7.     Dim sRowHeight As Single
  8.    
  9.     xRow = 3
  10.     yCol = 1
  11.     cHeight = 31         'CHeight 定義為圖表所佔的列高
  12.     cWidth = 874
  13.         
  14.     Sheets("工作表1").Select
  15.    
  16.     ActiveSheet.ChartObjects.Delete
  17.         
  18.     totalRows = Sheets("工作表1").Range("B" & Rows.Count).End(xlUp).Row     ' 傳回 B 欄所使用儲存格之最後一格之列號
  19.     '先把列高找出來, 才好算出圖要佔幾列, 兩個圖才好連在一起
  20.     sRowHeight = Sheets("工作表1").Rows(3).RowHeight
  21.    
  22.     ActiveSheet.Shapes.AddChart.Select
  23.     With ActiveChart
  24.         .SetSourceData Source:=Range("工作表1!$B$1:工作表1!$B$" & totalRows & ", 工作表1!$C$1:工作表1!$F$" & totalRows)
  25.         .ChartType = xlStockOHLC
  26.         With .ChartGroups(1)
  27.              .AxisGroup = 1
  28.              ' .UpBars.Format.Fill.ForeColor.RGB = RGB(255, 0, 0)           ' 紅色
  29.              .UpBars.Format.Fill.ForeColor.RGB = RGB(255, 69, 0)          ' 橘紅色
  30.              ' .DownBars.Format.Fill.ForeColor.RGB = RGB(0, 32, 96)       ' 深藍色
  31.              .DownBars.Format.Fill.ForeColor.RGB = RGB(0, 250, 170)     ' 淺洋綠色
  32.         End With
  33.         
  34.         .SeriesCollection.Add Source:=Range("工作表1!$G$2:工作表1!$I$" & totalRows)
  35.         
  36.         With .SeriesCollection(5)
  37.             .AxisGroup = 2
  38.             .Name = "=工作表1!$G$1"
  39.             .ChartType = xlColumnClustered
  40.             
  41.             With .Format.Line
  42.                 .Visible = msoTrue          ' 成交量
  43.                 .ForeColor.RGB = RGB(147, 112, 219)        ' 成交量指數顯示之顏色    ---   紫色
  44.                 .Transparency = 0
  45.             End With
  46.         End With
  47.         
  48.         With .SeriesCollection(6)
  49.             .Name = "=工作表1!$H$1"
  50.             .ChartType = xlLine
  51.             With .Format.Line
  52.                 .Visible = msoTrue          ' 主力界入
  53.                 ' .ForeColor.RGB = RGB(105, 205, 170)      ' 主力界入指數顯示之顏色    ---   藍綠色
  54.                 .ForeColor.RGB = RGB(32, 178, 170)         ' 主力界入指數顯示之顏色    ---   海洋綠色
  55.                 .Transparency = 0
  56.             End With
  57.         End With
  58.         
  59.         With .SeriesCollection(7)
  60.             .Name = "=工作表1!$I$1"
  61.             .ChartType = xlLine
  62.             With .Format.Line
  63.                 .Visible = msoTrue          ' 散戶方向
  64.                 .ForeColor.RGB = RGB(65, 105, 225)         ' 散戶方向指數顯示之顏色    ---   天藍色
  65.                 .Transparency = 0
  66.             End With
  67.         End With
  68.         
  69.         .Axes(xlValue).TickLabels.NumberFormatLocal = "0_ "
  70.         
  71.         With .Axes(xlCategory)                            ' X座標軸 (時間軸)
  72.             .CategoryType = xlCategoryScale
  73.             .TickLabels.NumberFormatLocal = "hh:mm"
  74.             .MajorTickMark = xlNone
  75.             .Border.Weight = xlHairline
  76.             .Border.LineStyle = xlNone
  77.             .TickLabelPosition = xlLow
  78.             .TickLabels.Font.Size = 10
  79.         End With
  80.         
  81.         .ChartArea.Height = cHeight * sRowHeight                           ' 將原本設定之高度調至適度位置
  82.         .ChartArea.Width = cWidth
  83.         
  84.         text = "股票圖 K 線、主力、散戶、與成交量"
  85.         
  86.         .SetElement (msoElementChartTitleCenteredOverlay)
  87.         .ChartTitle.text = text
  88.         .ChartTitle.Format.TextFrame2.TextRange.Font.Size = 14
  89.         .Legend.Position = xlCorner                         ' 將圖表圖示從圖表最下方調整到圖表之右上角位置
  90.     End With
  91.    
  92.     chartname = Trim(Replace(ActiveChart.Name, ActiveSheet.Name, ""))
  93.     ActiveSheet.Shapes(chartname).Left = Cells(xRow, yCol).Left     ' 設定此圖表實際擺放的 X、Y 座標位置。
  94.     ActiveSheet.Shapes(chartname).Top = Cells(xRow, yCol).Top
  95.    
  96.     Range("A1").Select
  97. End Sub
複製代碼

TOP

我記得我有發問過類似的問題,想請教如何將2張以上的圖疊加起來,目前來沒有升級,能否PO文出來

TOP

        靜思自在 : 愛不是要求對方,而是要由自身的付出。
返回列表 上一主題