VBA中用自定義函式在工作表中新增動態圖表

蝶戀花雨發表於2012-01-04
經常在家中看到有兄弟夥們問到:如何在工作表中新增動態的圖表.現做了個自定義函式,可在工作表中新增動態圖表,支援選擇連續單元格.
不足之處,還望多提寶貴意見.
函式:
Function MyChart(Optional ByVal MyChart_Name As String = "我的圖表", Optional ByVal MyChart_Type As XlChartType =
xlColumnClustered, _
   Optional ByVal MyChart_Source As Range = Nothing, Optional ByVal MyChart_Plotby As XlRowCol = xlRows, _
   Optional ByVal MyChart_Title As Boolean = True, Optional ByVal MyChart_TitleText As String = "標題", _
   Optional ByVal MyChart_HasLegend As Boolean = False, _
   Optional ByVal MyChart_Left As Integer = 420, Optional ByVal MyChart_Top As Integer = 250, _
   Optional ByVal MyChart_Width As Integer = 300, Optional ByVal MyChart_Height As Integer = 200) As Boolean
引數(可選):
  MyChart_Name As String = "我的圖表"           字元型,設定圖表的名稱,預設值="我的圖表"
  MyChart_Type As XlChartType = xlColumnClustered   XlChartType列舉,設定圖表型別,預設值=xlColumnClustered簇狀柱形圖
  MyChart_Source As Range = Nothing             單元格物件,設定圖表資料來源,預設為空
  MyChart_Plotby As XlRowCol = xlRows           XlRowCol列舉,設定圖表資料系列的數值是處於行中還是列中,預設值=xlRows行中
  MyChart_Title As Boolean = True               布林型,設定圖表有可見標題,預設值=True有可見標題
  MyChart_TitleText As String = "標題"          字元型,設定圖表的標題文字,預設值="標題"
  MyChart_HasLegend As Boolean = False          布林型,設定圖表有圖例,預設值=False沒有圖例
  MyChart_Left As Integer = 420                 整型,設定圖表的左邊距,預設值=420
  MyChart_Top As Integer = 250                  整型,設定圖表的上邊距,預設值=250
  MyChart_Width As Integer = 300                整型,設定圖表的寬度,預設值=300
  MyChart_Height As Integer = 200               整型,設定圖表的高度,預設值=200

以下為函式程式碼:
Function MyChart(Optional ByVal MyChart_Name As String = "我的圖表", Optional ByVal MyChart_Type As XlChartType =
xlColumnClustered, _
   Optional ByVal MyChart_Source As Range = Nothing, Optional ByVal MyChart_Plotby As XlRowCol = xlRows, _
   Optional ByVal MyChart_Title As Boolean = True, Optional ByVal MyChart_TitleText As String = "標題", _
   Optional ByVal MyChart_HasLegend As Boolean = False, _
   Optional ByVal MyChart_Left As Integer = 420, Optional ByVal MyChart_Top As Integer = 250, _
   Optional ByVal MyChart_Width As Integer = 300, Optional ByVal MyChart_Height As Integer = 200) As Boolean
Dim Mych As ChartObject     '宣告變數為嵌入式圖表物件
On Error Resume Next     '如出錯,則從出錯行下一行開始執行
Set Mych = ActiveSheet.ChartObjects(MyChart_Name)     '設定物件
'MsgBox Err.Number
If Err.Number = -2147024809 Then     '設定物件出錯,沒有物件
   Set Mych = ActiveSheet.ChartObjects.Add(MyChart_Left, MyChart_Top, MyChart_Width, MyChart_Height)     '新增嵌入圖表,設定對

   Mych.Name = MyChart_Name     '設定物件名稱
End If
Err.Clear   '清除Err物件
On Error GoTo Myerr     '如出錯,則執行Myerr語句
   
With Mych.Chart
   .ChartType = MyChart_Type     '圖表型別為xlLineMarkers_資料點折線圖
   .HasTitle = MyChart_Title    '圖表標題,可見則為 True
   If MyChart_Title Then .ChartTitle.Characters.Text = MyChart_TitleText     '圖表標題文字
   '.ChartTitle.Characters.Font.Size = 12      '設定標題的字號
   .SetSourceData Source:=MyChart_Source, PlotBy:=MyChart_Plotby     '為指定圖表設定源資料區域
   .HasLegend = MyChart_HasLegend     '為False ,圖表沒有圖例
End With
Mych.Activate     '物件啟用
MyChart = True     '本函式返回True
Exit Function     '退出函式
Myerr:
   MyChart = False     '本函式返回False
End Function

XlChartType 列舉
指定圖表型別。
名稱 描述
xl3DArea -4098 三維面積圖。
xl3DAreaStacked 78 三維堆積面積圖。
xl3DAreaStacked100 79 百分比堆積面積圖。
xl3DBarClustered 60 三維簇狀條形圖。
xl3DBarStacked 61 三維堆積條形圖。
xl3DBarStacked100 62 三維百分比堆積條形圖。
xl3DColumn -4100 三維柱形圖。
xl3DColumnClustered 54 三維簇狀柱形圖。
xl3DColumnStacked 55 三維堆積柱形圖。
xl3DColumnStacked100 56 三維百分比堆積柱形圖。
xl3DLine -4101 三維折線圖。
xl3DPie -4102 三維餅圖。
xl3DPieExploded 70 分離型三維餅圖。
xlArea 1 面積圖
xlAreaStacked 76 堆積面積圖。
xlAreaStacked100 77 百分比堆積面積圖。
xlBarClustered 57 簇狀條形圖。
xlBarOfPie 71 複合條餅圖。
xlBarStacked 58 堆積條形圖。
xlBarStacked100 59 百分比堆積條形圖。
xlBubble 15 氣泡圖。
xlBubble3DEffect 87 三維氣泡圖。
xlColumnClustered 51 簇狀柱形圖。
xlColumnStacked 52 堆積柱形圖。
xlColumnStacked100 53 百分比堆積柱形圖。
xlConeBarClustered 102 簇狀條形圓錐圖。
xlConeBarStacked 103 堆積條形圓錐圖。
xlConeBarStacked100 104 百分比堆積條形圓錐圖。
xlConeCol 105 三維柱形圓錐圖。
xlConeColClustered 99 簇狀柱形圓錐圖。
xlConeColStacked 100 堆積柱形圓錐圖。
xlConeColStacked100 101 百分比堆積柱形圓錐圖。
xlCylinderBarClustered 95 簇狀條形圓柱圖。
xlCylinderBarStacked 96 堆積條形圓柱圖。
xlCylinderBarStacked100 97 百分比堆積條形圓柱圖。
xlCylinderCol 98 三維柱形圓柱圖。
xlCylinderColClustered 92 簇狀柱形圓錐圖。
xlCylinderColStacked 93 堆積柱形圓錐圖。
xlCylinderColStacked100 94 百分比堆積柱形圓柱圖。
xlDoughnut -4120 圓環圖。
xlDoughnutExploded 80 分離型圓環圖。
xlLine 4 折線圖。
xlLineMarkers 65 資料點折線圖。
xlLineMarkersStacked 66 堆積資料點折線圖。
xlLineMarkersStacked100 67 百分比堆積資料點折線圖。
xlLineStacked 63 堆積折線圖。
xlLineStacked100 64 百分比堆積折線圖。
xlPie 5 餅圖。
xlPieExploded 69 分離型餅圖。
xlPieOfPie 68 複合餅圖。
xlPyramidBarClustered 109 簇狀條形稜錐圖。
xlPyramidBarStacked 110 堆積條形稜錐圖。
xlPyramidBarStacked100 111 百分比堆積條形稜錐圖。
xlPyramidCol 112 三維柱形稜錐圖。
xlPyramidColClustered 106 簇狀柱形稜錐圖。
xlPyramidColStacked 107 堆積柱形稜錐圖。
xlPyramidColStacked100 108 百分比堆積柱形稜錐圖。
xlRadar -4151 雷達圖。
xlRadarFilled 82 填充雷達圖。
xlRadarMarkers 81 資料點雷達圖。
xlStockHLC 88 盤高-盤低-收盤圖。
xlStockOHLC 89 開盤-盤高-盤低-收盤圖。
xlStockVHLC 90 成交量-盤高-盤低-收盤圖。
xlStockVOHLC 91 成交量-開盤-盤高-盤低-收盤圖。
xlSurface 83 三維曲面圖。
xlSurfaceTopView 85 曲面圖(俯檢視)。
xlSurfaceTopViewWireframe 86 曲面圖(俯視線框圖)。
xlSurfaceWireframe 84 三維曲面圖(線框)。
xlXYScatter -4169 散點圖。
xlXYScatterLines 74 折線散點圖。
xlXYScatterLinesNoMarkers 75 無資料點折線散點圖。
xlXYScatterSmooth 72 平滑線散點圖。
xlXYScatterSmoothNoMarkers 73 無資料點平滑線散點圖。


XlRowCol 列舉
指定對應於特定資料系列的數值是處於行中還是列中。
名稱 描述
xlColumns 2 資料系列在行中。
xlRows 1 資料系列在列中。



相關文章