VBA中用自定义函数在工作表中添加动态图表

本文提供了一个自定义函数,用于在工作表中轻松添加动态图表,支持选择连续单元格并定制图表类型、数据源、标题、图例等属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经常在家中看到有兄弟伙们问到:如何在工作表中添加动态的图表.现做了个自定义函数,可在工作表中添加动态图表,支持选择连续单元格.
不足之处,还望多提宝贵意见.
函数:
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三维面积图。
xl3DAreaStacked78三维堆积面积图。
xl3DAreaStacked10079百分比堆积面积图。
xl3DBarClustered60三维簇状条形图。
xl3DBarStacked61三维堆积条形图。
xl3DBarStacked10062三维百分比堆积条形图。
xl3DColumn-4100三维柱形图。
xl3DColumnClustered54三维簇状柱形图。
xl3DColumnStacked55三维堆积柱形图。
xl3DColumnStacked10056三维百分比堆积柱形图。
xl3DLine-4101三维折线图。
xl3DPie-4102三维饼图。
xl3DPieExploded70分离型三维饼图。
xlArea1面积图
xlAreaStacked76堆积面积图。
xlAreaStacked10077百分比堆积面积图。
xlBarClustered57簇状条形图。
xlBarOfPie71复合条饼图。
xlBarStacked58堆积条形图。
xlBarStacked10059百分比堆积条形图。
xlBubble15气泡图。
xlBubble3DEffect87三维气泡图。
xlColumnClustered51簇状柱形图。
xlColumnStacked52堆积柱形图。
xlColumnStacked10053百分比堆积柱形图。
xlConeBarClustered102簇状条形圆锥图。
xlConeBarStacked103堆积条形圆锥图。
xlConeBarStacked100104百分比堆积条形圆锥图。
xlConeCol105三维柱形圆锥图。
xlConeColClustered99簇状柱形圆锥图。
xlConeColStacked100堆积柱形圆锥图。
xlConeColStacked100101百分比堆积柱形圆锥图。
xlCylinderBarClustered95簇状条形圆柱图。
xlCylinderBarStacked96堆积条形圆柱图。
xlCylinderBarStacked10097百分比堆积条形圆柱图。
xlCylinderCol98三维柱形圆柱图。
xlCylinderColClustered92簇状柱形圆锥图。
xlCylinderColStacked93堆积柱形圆锥图。
xlCylinderColStacked10094百分比堆积柱形圆柱图。
xlDoughnut-4120圆环图。
xlDoughnutExploded80分离型圆环图。
xlLine4折线图。
xlLineMarkers65数据点折线图。
xlLineMarkersStacked66堆积数据点折线图。
xlLineMarkersStacked10067百分比堆积数据点折线图。
xlLineStacked63堆积折线图。
xlLineStacked10064百分比堆积折线图。
xlPie5饼图。
xlPieExploded69分离型饼图。
xlPieOfPie68复合饼图。
xlPyramidBarClustered109簇状条形棱锥图。
xlPyramidBarStacked110堆积条形棱锥图。
xlPyramidBarStacked100111百分比堆积条形棱锥图。
xlPyramidCol112三维柱形棱锥图。
xlPyramidColClustered106簇状柱形棱锥图。
xlPyramidColStacked107堆积柱形棱锥图。
xlPyramidColStacked100108百分比堆积柱形棱锥图。
xlRadar-4151雷达图。
xlRadarFilled82填充雷达图。
xlRadarMarkers81数据点雷达图。
xlStockHLC88盘高-盘低-收盘图。
xlStockOHLC89开盘-盘高-盘低-收盘图。
xlStockVHLC90成交量-盘高-盘低-收盘图。
xlStockVOHLC91成交量-开盘-盘高-盘低-收盘图。
xlSurface83三维曲面图。
xlSurfaceTopView85曲面图(俯视图)。
xlSurfaceTopViewWireframe86曲面图(俯视线框图)。
xlSurfaceWireframe84三维曲面图(线框)。
xlXYScatter-4169散点图。
xlXYScatterLines74折线散点图。
xlXYScatterLinesNoMarkers75无数据点折线散点图。
xlXYScatterSmooth72平滑线散点图。
xlXYScatterSmoothNoMarkers73无数据点平滑线散点图。


XlRowCol 枚举
指定对应于特定数据系列的数值是处于行中还是列中。
名称描述
xlColumns2数据系列在行中。
xlRows1数据系列在列中。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值