- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
34#
發表於 2012-4-21 10:54
| 只看該作者
回復 33# c_c_lai
重新 修改整理 你的 程式碼 , 請將全部的程式碼 複製在同一模組中.- Dim xRow(1 To 6), yCol(1 To 6), cWidth(1 To 6), cHeight(1 To 6), xText(1 To 6)
- Dim Chart_Source(1 To 6)
- Private Sub 陣列設定(ShName As String)
- Dim Rng As Range
- xRow(1) = IIf(ShName = "Omega", 4, 1)
- xRow(2) = IIf(ShName = "Omega", 18, 16)
- xRow(3) = IIf(ShName = "Omega", 4, 1)
- xRow(4) = IIf(ShName = "Omega", 18, 16)
- xRow(5) = IIf(ShName = "Omega", 4, 1)
- xRow(6) = 31
- yCol(1) = IIf(ShName = "Omega", 55, 1)
- yCol(2) = IIf(ShName = "Omega", 35, 1)
- yCol(3) = IIf(ShName = "Omega", 39, 5)
- yCol(4) = IIf(ShName = "Omega", 39, 5)
- yCol(5) = IIf(ShName = "Omega", 43, 9)
- yCol(6) = 1
- cWidth(1) = IIf(ShName = "Omega", 209, 222)
- cWidth(2) = IIf(ShName = "Omega", 209, 222)
- cWidth(3) = 209
- cWidth(4) = 209
- cWidth(5) = 405
- cWidth(6) = 810
- cHeight(1) = 240
- cHeight(2) = 240
- cHeight(3) = 240
- cHeight(4) = 240
- cHeight(5) = IIf(ShName = "Omega", 485, 488)
- cHeight(6) = 480
- xText(1) = "主力界入"
- xText(2) = "力差"
- xText(3) = "消化力"
- xText(4) = "均差(大戶)"
- xText(5) = "主力、散戶、與成交價、量"
- xText(6) = "成交價與成交量"
- With Sheets("統計圖表")
- Set Rng = .Range("A1").CurrentRegion
- Set Chart_Source(1) = Union(Rng.Columns(2), Rng.Columns(27))
- Set Chart_Source(2) = Union(Rng.Columns(2), Rng.Columns(28))
- Set Chart_Source(3) = Union(Rng.Columns(2), Rng.Columns(29))
- Set Chart_Source(4) = Union(Rng.Columns(2), Rng.Columns(30))
- Set Chart_Source(5) = Union(Rng.Columns(2), Rng.Columns(6), Rng.Columns(9), Rng.Columns(10), Rng.Columns(22))
- Set Chart_Source(6) = Union(Rng.Columns(2), Rng.Columns(6), Rng.Columns(22))
- End With
- End Sub
- Sub 全部重繪() '重繪統計圖表 也是用此程序
- 製圖程序 Sheets(Array("統計圖表", "Omega"))
- End Sub
- Sub 重繪Omega()
- 製圖程序 Sheets(Array("Omega"))
- End Sub
- Private Sub 製圖程序(xlSh As Sheets) '全部重繪
- Dim Sh As Worksheet, xi As Integer
- For Each Sh In xlSh '"'Sheets(Array("統計圖表", "Omega"))
- Sh.ChartObjects.Delete
- 陣列設定 Sh.Name
- For xi = 1 To IIf(Sh.Name = "Omega", 5, 6)
- With Sh.ChartObjects.Add(Sh.Cells(xRow(xi), yCol(xi)).Left, Sh.Cells(xRow(xi), yCol(xi)).Top, cWidth(xi), cHeight(xi)).Chart
- .ChartType = IIf(xi >= 5, xlLine, xlColumnStacked) 'xlLine-> 折線圖 'xlColumnStacke-> 堆疊直條圖
- .SetSourceData Source:=Chart_Source(xi)
- .HasLegend = 0 '圖表的圖例: 不可見
- .SeriesCollection(1).AxisGroup = IIf(xi >= 5, 2, 1)
- With .Axes(xlCategory) 'X座標軸
- .CategoryType = xlCategoryScale
- .TickLabels.NumberFormatLocal = "hh:mm"
- .MinorTickMark = xlNone
- .Border.Weight = xlHairline
- .Border.LineStyle = xlNone
- .TickLabelPosition = xlLow
- .TickLabels.Font.Size = 10
- End With
- '''''''''''''''''''''''''
- If .ChartType = xlColumnStacked Then '堆疊直條圖
- .SeriesCollection(1).Shadow = False '圖表中的數列(1)
- .SeriesCollection(1).InvertIfNegative = True
- With .SeriesCollection(1).Border
- .Weight = xlHairline
- .LineStyle = xlNone
- End With
- With .SeriesCollection(1).Interior
- .ColorIndex = 5
- .PatternColorIndex = 42
- .Pattern = xlSolid
- End With
- Else '折線圖
- .HasLegend = True
- .Legend.Top = 1
- .Legend.Position = xlCorner
- .SeriesCollection(1).MarkerStyle = xlNone
- With .Legend.Border
- .Weight = xlHairline
- .LineStyle = xlNone
- End With
- End If
- '''''''''''''''''''''''''''
- With .Axes(xlValue).TickLabels.Font 'Y座標軸上刻度的刻度標籤的字體
- .FontStyle = "標準"
- .Size = 10
- End With
- .HasTitle = True '圖表的標題 可見
- With .ChartTitle '圖表的標題
- .Top = 1
- .text = xText(xi)
- .Font.Size = 14
- End With
- With .PlotArea ' 圖表的繪圖區
- .Top = 1
- .Left = 1
- .Width = cWidth
- .Height = cHeight
- .Interior.ColorIndex = xlNone
- End With
- End With
- Next
- Next
- End Sub
複製代碼 |
|