Board logo

標題: [發問] Chart 項目次序移動 [打印本頁]

作者: li_hsien    時間: 2014-4-17 17:19     標題: chart VBA操作

最近在進行Chart的操作

不過依現有書籍好少相關的資料

一直上網GOOGLE
湊來湊去

以下是我目前用到的語法

下圖紅框裡面
菱形標記的框線寬度我一直查不到語法是什麼
用了這個.SeriesCollection(4).Format.Line.Weight
我是要用來調整走勢的曲線寬
不過他連標記的框線寬也跟著調整

不知只調標記的框線寬語法如何撰寫


還有~錄製巨集是否無法進行Chart操作的錄製???
使用了好幾次都只錄到Select、Activate之類的部分@@
  1.         .ChartTitle.Font.Size = 6.5  '標題字體大小
  2.         .ChartTitle.Font.Name = "Arial" '標題字型

  3.         .Legend.Position = xlLegendPositionBottom  '圖例列底部
  4.         .Legend.Top = 115  '圖例位移

  5.         .SeriesCollection(4).Border.Color = 5066944 '線條顏色
  6.         .SeriesCollection(4).Format.Line.Weight = 2 '線條寬為2
  7.         .SeriesCollection(4).MarkerStyle = 2  '標記菱形
  8.         .SeriesCollection(4).MarkerBackgroundColorIndex = 2 '標記顏色(白)
  9.         .SeriesCollection(4).MarkerSize = 5    '標記大小5
  10.         
  11.         .SeriesCollection(4).ApplyDataLabels  '顯示資料標籤
  12.         .SeriesCollection(4).Select
  13.         .SetElement (msoElementDataLabelTop) '資料標籤置上
  14.       
  15.         .Axes(xlValue, xlPrimary).AxisTitle.Font.Size = 6.5 'Y軸標題大小
  16.         .Axes(xlValue, xlPrimary).AxisTitle.Font.Name = "Arial" 'Y軸標題字型
  17.         .Axes(xlValue, xlPrimary).AxisTitle.Left = -3  'Y軸標題位移

  18.         .Axes(xlCategory).TickLabels.Font.Size = 5  'X軸字體大小
  19.         .Axes(xlCategory).TickLabels.Font.Name = "Arial"    'X軸字型
  20.         
  21.         .Axes(xlValue).TickLabels.Font.Size = 6.5  'Y軸字體大小
  22.         .Axes(xlValue).TickLabels.Font.Name = "Arial"  'Y軸字型
  23.         
  24.         .Legend.Font.Size = 6.5 '圖例字體大小
  25.         .Legend.Font.Name = "Arial" '圖例字型
  26.         
  27.         .SeriesCollection(4).DataLabels.Font.Size = 5  '上列數值字體大小
  28.         .SeriesCollection(4).DataLabels.Font.Name = "Arial" '上列數值字型
複製代碼
[attach]18060[/attach]



P.S.
另外想請問各位大大程式概念像以下
.Legend.Font.Size = 6.5的Lengend
.TickLabels.Font.Size = 5 的TickLabels以專業說法都是指"屬性"嗎???
作者: GBKEE    時間: 2014-4-18 09:47

回復 1# li_hsien
錄製巨集是否無法進行Chart操作的錄製??? 使用了好幾次都只錄到Select、Activate之類的部分@@
套用試試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim AR, i As Integer
  4.     With Sheet2.ChartObjects(1).Chart
  5.         .HasTitle = True              '圖表有的標題
  6.         .ChartTitle.Font.Size = 6.5  '標題字體大小
  7.         .ChartTitle.Characters.Text = "test"
  8.         .ChartTitle.Font.Name = "Arial" '標題字型
  9.         .Legend.Position = xlLegendPositionBottom   '圖例列底部
  10.         .Legend.Top = 115  '圖例位移
  11.         AR = Array(vbBlack, vbRed, vbGreen, vbYellow, vbBlue, vbMagenta, vbCyan, vbWhite)
  12.         For i = 1 To .SeriesCollection.Count
  13.             
  14.             If i <= UBound(AR) + 1 Then
  15.                 .SeriesCollection(i).Border.Color = AR(i - 1) '線條顏色
  16.                 .SeriesCollection(i).HasDataLabels = True
  17.                 .SeriesCollection(i).DataLabels.Font.Size = 15  '上列數值字體大小
  18.                 .SeriesCollection(i).DataLabels.Font.Name = "Arial" '上列數值字型
  19.             End If
  20.         
  21.         Next
  22.     End With
  23. End Sub
複製代碼
[attach]18063[/attach]
作者: li_hsien    時間: 2014-4-19 21:55

回復 2# GBKEE


感謝版大的幫助

原來有這些資料來源可以參考


不過我主要要錄製巨集是想抓到圖表中各個部份的VBA語法名稱

好讓我在程式撰寫上可以操作

但實際試了幾次 錄製圖表操作上的巨集好像沒有辦法做到@@
作者: li_hsien    時間: 2014-4-19 21:58     標題: Chart 項目次序移動

請問各位大大

Chart 上 各個項目他的次序該如何用VBA語法來調動呢????

如下圖的PMS我要往上移動

請問語法該如何操作???
[attach]18086[/attach]


謝謝
作者: GBKEE    時間: 2014-4-20 10:36

回復 4# li_hsien
你這視窗是2003以上的版本,此程式碼是以2003編寫.試試看是否可行.
  1. Option Explicit
  2. Sub Ex()
  3.     Dim MoObject As ChartObject, MoChart As Chart, i As Integer, Rng As Range
  4.     Dim Q(1 To 2)
  5.     Sheet1.ChartObjects.Delete
  6.     Set Rng = [F1:M21]                                  '圖表資料範圍
  7.     Set MoObject = Sheet1.ChartObjects.Add(Rng.Left, Rng.Top, Rng.Width, Rng.Height)
  8.                                                         '[F1:M21]上新增圖表
  9.     Set Rng = [b2:b21].Resize(, 3)     '設定範圍
  10.     '** 請在 [A2:A21]填上 日期 或 數字 : 作為X座標的數值
  11.    
  12.     MoObject.Chart.SetSourceData Rng   '指定圖表資料範圍
  13.     Set MoChart = MoObject.Chart
  14.     With MoChart
  15.         
  16.         Q(1) = Split(.SeriesCollection(3).Formula, ",")(2) '資料列的儲存格位址
  17.         Q(2) = Split(.SeriesCollection(1).Formula, ",")(2)
  18.         .SeriesCollection(1).Values = Range(Q(1))   '指定到儲存格
  19.         .SeriesCollection(3).Values = Range(Q(2))   '可在儲存格上變動數值
  20.         '******************************************************
  21.         Stop
  22.         Q(1) = .SeriesCollection(3).Values  '資料列的數值
  23.         Q(2) = .SeriesCollection(1).Values
  24.         .SeriesCollection(1).Values = Q(1)  '改變數值
  25.         .SeriesCollection(3).Values = Q(2)  '可在資料列變動數值
  26.         
  27.     End With
  28. End Sub
複製代碼
圖示: 可在資料列變動數值

[attach]18091[/attach]
作者: li_hsien    時間: 2014-4-24 14:32

回復 5# GBKEE

謝謝版大的幫助

這操作還蠻特別的

又學到了一點

謝謝  :  )




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