经常在家中看到有兄弟伙们问到:如何在工作表中添加动态的图表.现做了个自定义函数,可在工作表中添加动态图表,支持选择连续单元格.
不足之处,还望多提宝贵意见.
函数:
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 | 数据系列在列中。 |