经常在家中看到有兄弟伙们问到:如何在工作表中添加动态的图表.现做了个自定义函数,可在工作表中添加动态图表,支持选择连续单元格.
不足之处,还望多提宝贵意见.
函数:
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 | 数据系列在列中。 |
本文提供了一个自定义函数,用于在工作表中轻松添加动态图表,支持选择连续单元格并定制图表类型、数据源、标题、图例等属性。
2227

被折叠的 条评论
为什么被折叠?



