用vba在工作表中新建图表的方法有很多种。
一、用Shapes对象的AddChart方法(该方法已经被作废,但是仍然可以使用)
代码如下:
Sub exceloffice()
'作者QQ:1722187970,微信:xycgenius,微信公众号exceloffice
Dim oChart As Chart
Dim oSP As Shape
Dim oWK As Worksheet
Set oWK = Excel.ActiveSheet
With oWK
If .ChartObjects.Count > 0 Then
'先删除所有图表
.ChartObjects.Delete
End If
Set oSP = .Shapes.AddChart(xlColumnClustered, 0, 0, 300, 300)
Set oChart = oSP.Chart
With oChart
.SetSourceData oWK.Range("A1").CurrentRegion
End With
End With
End Sub
二、用Shapes对象的AddChart2方法
代码如下:
Sub exceloffice()
'作者QQ:1722187970,微信:xycgenius,微信公众号exceloffice
Dim oChart As Chart
Dim oSP As Shape
Dim oWK As Worksheet
Set oWK = Excel.ActiveSheet
With oWK
If .ChartObjects.Count > 0 Then
'先删除所有图表
.ChartObjects.Delete
End If
'相比AddChart新增2个参数,第一个参数指定用哪个图表样式,最后一个参数表示是否显示图表标题和图例
Set oSP = .Shapes.AddChart2(-1, xlColumnClustered, 0, 0, 300, 300, True)
Set oChart = oSP.Chart
With oChart
.SetSourceData oWK.Range("A1").CurrentRegion
End With
End With
End Sub
三、用ChartObjects对象的Add方法
代码如下:
Sub exceloffice()
'作者QQ:1722187970,微信:xycgenius,微信公众号exceloffice
Dim oChart As Chart
Dim oChartObject As ChartObject
Dim oWK As Worksheet
Set oWK = Excel.ActiveSheet
With oWK
If .ChartObjects.Count > 0 Then
'先删除所有图表
.ChartObjects.Delete
End If
Set oChartObject = .ChartObjects.Add(0, 0, 200, 200)
Set oChart = oChartObject.Chart
With oChart
.SetSourceData oWK.Range("A1").CurrentRegion
End With
End With
End Sub
其中ChartObjects对象的Add方法和Shapes对象的AddChart方法基本相同,都是先创建一个图表容器,设置好图表的位置和大小。


发表评论