ExcelVBA处理图形图表大全剖析.docx
《ExcelVBA处理图形图表大全剖析.docx》由会员分享,可在线阅读,更多相关《ExcelVBA处理图形图表大全剖析.docx(45页珍藏版)》请在冰豆网上搜索。
ExcelVBA处理图形图表大全剖析
VBA图表剖析
一、图表各元素在VBA中的表达方式
1、图表区
VBA名称:
ChartArea
2、绘图区
VBA名称:
PlotArea
调整绘图区的大小以及在图表中的位置,指定绘图区的Top、Left、Height和Width属性。
3、数据系列
VBA名称:
Series
指定给定系列语法:
ChatObject.SeriesCollection(Index),其中Index是数字范围,从1开始,最大值是图表中系列的数量或系列名称的数量。
4、图表轴
VBA名称:
Axis
指定给定轴的简单语法:
ChatObject.Axes(Type),其中Type指定轴的ExcelVBA常量。
辅助轴
语法:
ChatObject.Axes(Type,AxisGroup)。
5、网格线
VBA名称:
HasMajorGridlines和HasMinorGridlines
根据需要可以选择显示或者不显示主要网格线或次要网格线。
若显示网格线,可以设置线条的图案(颜色、线宽、线条样式等等)。
6、数据标签
VBA名称:
DataLabels和DataLabel
(1)图表中所有系列的所有点显示特定类型的数据标签或不显示数据标签:
ActiveChart.ApplyDataLabelsType:
=xlDataLabelsShowNone
(2)特定系列显示数值(Y)作为数据标签:
WithActiveChart.SeriesCollection(“Xdata”)
.HasDataLabels=True
.ApplyDataLabelsType:
=xlDataLabelsShowValue
EndWith
(3)特定的点在它的数据标签中显示文字
WithActiveChart.SeriesCollection(“Xdata”).Points
(1)
.HasDataLabels=True
.DataLabel.Text=”MyLabel”
EndWith
(4)将公式放置在某个系列上的某特定点的数据标签中(在公式中需使用RC样式)
WithActiveChart.SeriesCollection(“Xdata”).point
(1)
.HasDataLabels=True
.DataLabel.Text=”Sheet1.R1C1”
EndWith
7、图表标题、图例和数据表
VBA名称:
ChartTitle、HasLegend和HasDataTable
可以用VBA指定图表标题和图例的位置、文字和文字格式。
8、趋势线和误差线
VBA名称:
Trendlines和ErrorBar
二、图表类型
Excel标准图表类型
图表类型
描述
ExcelVBA常量
柱形图
簇状柱形图
3D簇状柱形图
堆积柱形图
3D堆积柱形图
百分比堆积柱形图
3D百分比堆积柱形图
3D柱形图
xlColumnClustered
xl3DColumnClustered
xlColumnStacked
xl3DColumnStacked
xlColumnStacked100
xl3DColumnStacked100
xl3DColumn
条形图
簇状条形图
3D簇状条形图
堆积条形图
3D堆积条形图
百分比堆积条形图
3D百分比堆积条形图
xlBarClustered
xl3DBarClustered
xlBarStacked
xl3DBarStacked
xlBarStacked100
xl3DBarStacked100
折线图
折线图
数据点折线图
堆积折线图
堆积数据点折线图
百分比堆积折线图
百分比堆积数据点折线图
3D折线图
xlLine
xlLineMarkers
xlLineStacked
xlLineMarkersStacked
xlLineStacked100
xlLineMarkersstacked100
xl3DLine
饼图
饼图
分离型饼图
3D饼图
分离型3D饼图
复合饼图
复合条饼图
xlPie
xlPieExploded
xl3DPie
xl3DPieExploded
xlPieOfPie
xlBarOfPie
XY(散点)图
散点图
平滑线散点图
无数据点平滑线散点图
折线散点图
无数据点折线散点图
xlXYScatter
xlXYScatterSmooth
xlXYScatterSmoothNoMarkers
xlXYScatterLines
xlXYScatterLinesNoMarkers
气泡图
气泡图
3D气泡图
xlBubble
xlBubble3DEffect
面积图
面积图
3D面积图
堆积面积图
3D堆积面积图
百分比堆积面积图
3D百分比堆积面积图
xlArea
xl3DArea
xlAreaStacked
xl3DAreaStacked
xlAreaStacked100
xl3DAreaStacked100
圆环图
圆环图
分离型圆环图
xlDoughnut
xlDoughnutExploded
雷达图
雷达图
数据点雷达图
填充雷达图
xlRadar
xlRadarMarkers
xlRadarFilled
曲面图
3D曲面图
曲面图(俯视)
3D曲面图(框架图)
曲面图(俯视框架图)
xlSurface
xlSurfaceTopView
xlSurfaceWireframe
xlSurfaceWireframeTopView
股价图
盘高-盘低-收盘图
成交量-盘高-盘低-收盘图
开盘-盘高-盘低-收盘图
成交量-开盘-盘高-盘低-收盘图
xlStockHLC
xlStockVHLC
xlStockOHLC
xlStockVOHLC
圆柱图
柱形圆柱图
条形圆柱图
堆积柱形圆柱图
堆积条形圆柱图
百分比堆积柱形圆柱图
百分比堆积条形圆柱图
3D柱形圆柱图
xlCylinderColClustered
xlCylinderBarColClustered
xlCylinderColStacked
xlCylinderBarStacked
xlCylinderColStacked100
xlCylinderBarStacked100
xlCylinderCol
圆锥图
柱形圆锥图
条形圆锥图
堆积柱形圆锥图
堆积条形圆锥图
百分比堆积柱形圆锥图
百分比堆积条形圆锥图
3D柱形圆锥图
xlConeColClustered
xlConeBarClustered
xlConeColStacked
xlConeBarStacked
xlConeColStacked100
xlConeBarStacked100
xlConeCol
棱锥图
柱形棱锥图
条形棱锥图
堆积柱形棱锥图
堆积条形棱锥图
百分比堆积柱形棱锥图
百分比堆积条形棱锥图
3D柱形棱锥图
xlPyramidColClustered
xlPyramidBarClustered
xlPyramidColStacked
xlPyramidBarStacked
xlPyramidColStacked100
xlPyramidBarStacked100
xlPyramidCol
vba图表常用命令
ActiveSheet.UsedRange.Rows.Count
获取工作表的行数(注:
考虑向前兼容性)
Cells.Item(5,"C")
引单元格C5
Cells.Item(5,3)
引单元格C5
Application.WorksheetFunction.IsNumber("A1")
使用工作表函数检查A1单元格中的数据是否为数字
Range("A:
A").Find(Application.WorksheetFunction.Max(Range("A:
A"))).Activate
激活单元格区域A列中最大值的单元格
Cells(8,8).FormulaArray="=SUM(R2C[-1]:
R[-1]C[-1]*R2C:
R[-1]C)"
在单元格中输入数组公式。
注意必须使用R1C1样式的表达式
ActiveSheet.ChartObjects.Count
获取当前工作表中图表的个数
ActiveSheet.ChartObjects("Chart1").Select
选中当前工作表中图表Chart1
ActiveSheet.ChartObjects("Chart1").Activate
选中当前图表区域
ActiveChart.ChartArea.Select
选中当前图表区域
WorkSheets("Sheet1").ChartObjects("Chart2").Chart.ChartArea.Interior.ColorIndex=2
更改工作表中图表的图表区的背景颜色
Sheets("Chart2").ChartArea.Interior.ColorIndex=2
更改图表工作表中图表区的颜色
Charts.Add
添加新的图表工作表
ActiveChart.SetSourceDataSource:
=Sheets("Sheet1").Range("A1:
D5"),PlotBy:
=xlColumns
指定图表数据源并按列排列
ActiveChart.LocationWhere:
=xlLocationAsNewSheet
新图表作为新图表工作表
ActiveChart.PlotArea.Interior.ColorIndex=xlNone
将绘图区颜色变为白色
WorkSheets("Sheet1").ChartObjects
(1).Chart.ExportFileName:
="C:
MyChart.gif",FilterName:
="GIF"
将图表1导出到C盘上并命名为MyChart.gif
ActiveSheet.ChartObjects.Delete
删除工作表上所有的ChartObject对象
ActiveWorkbook.Charts.Delete
删除当前工作簿中所有的图表工作表
∙
Excel中的VBA常量和编码值所代表的标准图表类型
图表类型——描述——ExcelVBA常量——编码值
(注:
下面按此顺序排列)
——————————————————————————
柱形图—簇状柱形图—xlColumnClustered—51
3D簇状柱形图—xl3DColumnClustered—54
堆积柱形图—xlColumnStacked—52
3D堆积柱形图—xl3DColumnStacked—55
百分比堆积柱形图—xlColumnStacked100—53
3D百分比堆积柱形图—xl3DColumnStacked100—56
3D柱形图—xl3DColumn— -4100
——————————————————————————
条形图—簇状条形图—xlBarClustered—57
3D簇状条形图—xl3DBarClustered—60
堆积条形图— xlBarStacked— 58
3D堆积条形图—xl3DBarStacked—61
百分比堆积条形图—xlBarStacked100—59
3D百分比堆积条形图—xl3DBarStacked100—62
——————————————————————————
折线图—折线图—xlLine—4
数据点折线图—xlLineMarkers—65
堆积折线图—xlLineStacked—63
堆积数据点折线图—xlLineMarkersStacked—66
百分比堆积折线图—xlLineStacked100—64
百分比堆积数据点折线图—xlLineMarkersstacked100—67
3D折线图—xl3DLine— -4101
——————————————————————————
饼图—饼图—xlPie— 5
分离型饼图—xlPieExploded— 69
3D饼图—xl3DPie— -4102
分离型3D饼图—xl3DPieExploded—70
复合饼图—xlPieOfPie—68
复合条饼图—xlBarOfPie—71
——————————————————————————
XY(散点)图—散点图—xlXYScatter— -4169
平滑线散点图—xlXYScatterSmooth—72
无数据点平滑线散点图—xlXYScatterSmoothNoMarkers—73
折线散点图—xlXYScatterLines—74
无数据点折线散点图—xlXYScatterLinesNoMarkers—75
——————————————————————————
气泡图—气泡图—xlBubble—15
3D气泡图—xlBubble3DEffect—87
——————————————————————————
面积图—面积图—xlArea—1
3D面积图—xl3DArea— -4098
堆积面积图—xlAreaStacked—76
3D堆积面积图— xl3DAreaStacked—78
百分比堆积面积图— xlAreaStacked100— 77
3D百分比堆积面积图—xl3DAreaStacked100 —79
——————————————————————————
圆环图—圆环图— xlDoughnut— -4120
分离型圆环图— xlDoughnutExploded — 80
——————————————————————————
雷达图—雷达图—xlRadar— -4151
数据点雷达图—xlRadarMarkers—81
填充雷达图—xlRadarFilled— 82
——————————————————————————
曲面图— 3D曲面图—xlSurface—83
曲面图(俯视)— xlSurfaceTopView —85
3D曲面图(框架图)—xlSurfaceWireframe—84
曲面图(俯视框架图) —xlSurfaceWireframeTopView—86
——————————————————————————
股价图—盘高-盘低-收盘图—xlStockHLC— 88
成交量-盘高-盘低-收盘图—xlStockVHLC—90
开盘-盘高-盘低-收盘图—xlStockOHLC—89
成交量-开盘-盘高-盘低-收盘图—xlStockVOHLC—91
——————————————————————————
圆柱图— 柱形圆柱图—xlCylinderColClustered—92
条形圆柱图—xlCylinderBarClustered—95
堆积柱形圆柱图—xlCylinderColStacked—93
堆积条形圆柱图—xlCylinderBarStacked—96
百分比堆积柱形圆柱图—xlCylinderColStacked100—94
百分比堆积条形圆柱图—xlCylinderBarStacked100—97
3D柱形圆柱图—xlCylinderCol—98
——————————————————————————
圆锥图—柱形圆锥图—xlConeColClustered—99
条形圆锥图—xlConeBarClustered—102
堆积柱形圆锥图—xlConeColStacked—100
堆积条形圆锥图—xlConeBarStacked—103
百分比堆积柱形圆锥图—xlConeColStacked100—101
百分比堆积条形圆锥图—xlConeBarStacked100—104
3D柱形圆锥图—xlConeCol—105
——————————————————————————
棱锥图—柱形棱锥图—xlPyramidColClustered—106
条形棱锥图—xlPyramidBarClustered—109
堆积柱形棱锥图 — xlPyramidColStacked —107
堆积条形棱锥图 — xlPyramidBarStacked —110
百分比堆积柱形棱锥图—xlPyramidColStacked100—108
百分比堆积条形棱锥图 —xlPyramidBarStacked100—111
3D柱形棱锥图 —xlPyramidCol —112
∙
利用以上参数,可用VBA写出批量产生Excel图表的程序。
代码如下:
PrivateSubcmdCompareSales_Click()
DimiRows,iChartType,iChartTypeRowsAsInteger
DimiTempAsInteger
DimsChartTitle,sCategoryTitle,sValueTitleAsString
DimsChartNameAsString
DimlArrayChartType(73)AsLong,sArrayChartConst(73)AsString,sArrayChartExplain(73)AsString
ForiTemp=0To72
lArrayChartType(iTemp)=Sheets("Sheet2").Cells(iTemp+1,1).Value
sArrayChartConst(iTemp)=Sheets("Sheet2").Cells(iTemp+1,3).Value
sArrayChartExplain(iTemp)=Sheets("Sheet2").Cells(iTemp+1,2).Value
NextiTemp
Sheets("Sheet1").Activate
sChartTitle="销售量比较图"
sCategoryTitle="Category标题"
sValueTitle="Value标题"
iRows=Sheets("sheet1").UsedRange.Rows.Count
OnErrorResumeNext
Sheets("sheet1").ChartObjects.Delete
ForiChartType=0To72Step1
Charts.Add
ActiveChart.ChartType=lArrayChartType(iChartType)
ActiveChart.SetSourceDataSource:
=Sheets("Sheet1").Range("A2:
M"&CStr(iRows)),PlotBy:
=xlRows
ActiveChart.Locationwhere:
=xlLocationAutomatic,Name:
="Sheet1"
WithActiveChart
.HasTitle=True
.ChartTitle.Characters.Text=sChartTitle&sArrayChartConst(iChartType)&sArrayChartExplain(iChartType)
' .ChartTitle.Characters.Text=sChartTitle&"xl3DArea"
.Axes(xlCategory,xlPrimary).HasTitle=False
' .Axes(xlCategory,xlPrimary).AxisTitle.Text=sCategoryTitle
.Axes(xlValue,xlPrimary).HasTitle=False
' .Axes(xlValue,xlPrimary).AxisTitle.Text=sValueTitle
EndWith
sChartName=Mid(ActiveChart.Name,8,6)
ActiveSheet.Shapes(sChartName).Left=Range("B"&Str(18*(iChartType+1))).Left
ActiveSheet.Shapes(sChartName).Top=Range("B"&Str(18*(iChartType+1))).Top
ActiveChart.ExportThisWorkbook.Path&"\"&Format(Now(),"yymmddhhmm")&sArrayChartConst(iChartType)&".gif","gif"
Sheets("sheet1").ChartObjects(sChartName).Delete
NextiChartType
EndSub
注意楼上的参数存于Sheet2的1至3列中。
VBA-批量调整excel图表格式-线条粗细
Excel画图时默认的线条和标记比较大,写论文时使用起来经常要把线条和标记调小才好看。
如果图表比较多,图里的系列也比较多的话,一条一条的设置起来会很麻烦,这里给出了一个宏,使用方法是选中图表后运行宏即可。
Subzoom()
'
'zoom宏
'
'ActiveSheet.