VBA中用自定義函式在工作表中新增動態圖表
經常在家中看到有兄弟夥們問到:如何在工作表中新增動態的圖表.現做了個自定義函式,可在工作表中新增動態圖表,支援選擇連續單元格.
不足之處,還望多提寶貴意見.
函式:
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
指定圖表型別。
指定對應於特定資料系列的數值是處於行中還是列中。
不足之處,還望多提寶貴意見.
函式:
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 | 資料系列在列中。 |
相關文章
- VBA中使用EXCEL工作表函式Excel函式
- VBA 自定義常用函式 (備用)函式
- Excel vba自定義函式公式智慧提示Excel函式公式
- 皕傑報表之自定義函式函式
- Laravel 新增自定義助手函式Laravel函式
- DcatAdmin 擴充套件: 自定義表單(動態表單)套件
- java 自定義表單 動態表單 表單設計器 工作流引擎 flowable 專案原始碼Java原始碼
- (Android自定義控制元件)Android自定義狀態提示圖表Android控制元件
- 在資料庫中自定義外部函式資料庫函式
- 如何使用 DAX 函式解決動態圖表標題函式
- Hive中自定義函式Hive函式
- Oracle中自定義函式Oracle函式
- jQuery如何實現新增自定義函式jQuery函式
- 自定義表單 動態表單 表單設計器 流程引擎 設計方案
- 高度自定義圖表庫HLChartViewView
- PHPCMS自定義表單樣式PHP
- 在PowerBuilder中動態呼叫函式UI函式
- 報表中怎麼新增動態文字水印
- HIVE中的自定義函式Hive函式
- oracle 10g 新增:自定義聚集函式Oracle 10g函式
- 如何在水晶報表中動態新增欄位
- 編號函式 自定義函式 集合型別 表的優化 資料傾斜函式型別優化
- EMQX 多版本釋出、新增自定義函式功能MQ函式
- Hive中新增自定義函式(UDF)方法及實踐Hive函式
- shell自定義函式函式
- Oracle 自定義函式Oracle函式
- perl自定義函式函式
- c#WinFrom自定義圖表儀表控制元件-頻譜C#控制元件
- 自定義儀表盤
- vue自定義表單生成器,可根據json引數動態生成表單VueJSON
- 【react】實現動態表單中巢狀動態表單React巢狀
- 圖形、GDI + 和圖表(在網頁上嵌入動態圖形)網頁
- Hive常用函式及自定義函式Hive函式
- 在Luminar 4中向天空新增自定義物件物件
- Angular如何在模板驅動表單中自定義校驗器Angular
- 影片直播系統原始碼,在Laravel中自定義模板函式 並在模板中呼叫原始碼Laravel函式
- Android自定義ImageView 在圖片上新增一個圖層AndroidView
- jwt 自定義 資料表 區別於 auth 中的 users 表JWT