今天继续讲讲VBA图表的相关操作
一、在图表工作表上创建图表(看起来有点拗口,也就是在Chart上创建一个图表)
插入图表的方式:打开工作簿后,对着sheet点一下右键——插入——选择图表。
①昨天主要是讲了VBA创建在sheet上面的图表,如果单独在Chart上创建图表的话,用Charts的add2方法就可以了:
Charts.Add2②创建完了如果需要引用数据的话,可以和昨天一样引用数据:
Sub demo()
Dim myChart As Chart
Set myChart = Charts.Add2
myChart.SetSourceData Source:=Sheets("Sheet1").Range("A1").CurrentRegion
myChart.ChartType = xlColumnClustered
End Sub需要注意的是,上述在引用数据源的时候,我是用的Sheets("Sheet1"),而不是常用的Sheets(1),这是因为新建了myChart后呢,它是自动往前面插入的,Sheets(1)就变成了图表,而不是原来的数据的那张表。
③如果先将区域值内的值赋值,再新建Chart就不用担心Sheet(1)引用不到了,可以这样写:
Sub demo()
Dim myChart As Chart
Dim myRng As Range
'先将原数据进行赋值,这样创建Chart后即使Chart是Sheet(1)也就不会报错啦
Set myRng = Sheets(1).Range("A1").CurrentRegion
Set myChart = Charts.Add2
myChart.SetSourceData Source:=myRng
myChart.ChartType = xlColumnClustered
End Sub当然了,也可以简单点,Chart新建时用after参数将新建的Chart表格位置放在Sheet1后面,同样不会报错
Sub demo()
Charts.Add2 after:=Sheets(Sheets.Count)
Sheets("Chart1").SetSourceData Source:=Sheets("Sheet1").Range("A1").CurrentRegion
End Sub二、修改图表
①在插入了图表后,点一下图表,在右上角会出现3个可以点的按钮:
1.图表元素 ChartElements,给图表添加或删除元素
2.图表样式 Style&Color,选择图表样式或调色板的颜色
3.图表筛选器: Chart Filters,隐藏序列或数据点

②VBA控制图表元素的话,主要是通过SetElement属性,代码如下:
myChart.SetElement msoElementPrimaryValueGridLinesMajorSetElement具体的每个属性可以参考这个链接:
https://docs.microsoft.com/zh-cn/office/vba/api/office.msochartelementtype
VBA控制图表样式的话,主要是通过ChartStyle和ChartColror属性,代码如下:
ChartStyle数字有效值是1~48和201~248
myChart.ChartStyle = 248ChartColor数字有效值是1~26
myChart.ChartColor = 26VBA控制图表筛选器的话,系列主要用myChart.FullSeriesCollection(2).IsFiltered进行过滤;类别主要是ChartGroups(1).FullCategoryCollection(i).IsFiltered进行过滤,值为True则不显示,代码如下:
For i = 1 To 1
myChart.FullSeriesCollection(i).IsFiltered = True
Next
For j = 1 To 10
myChart.ChartGroups(1).FullCategoryCollection(j).IsFiltered = False
Next三、激活和取消激活
①激活图表
如果是单独的Chart图表可以这样:
Sheets("Chart1").Activate如果是在sheet里面的图表可以这样:
Sheets("sheet1").ChartObjects(1).Activate②取消激活
取消激活比较简单,随便点一下其他地方就取消激活了,所以可以这样:
Sheets("sheet1").Range("A1").Select四、移动图表
还是拿前面的例子来说,假设需要把myChart进行移动
'将Sheet1上的图表移动到存在的Sheet2上
'myChart.Location where:=xlLocationAsObject, Name:="Sheet2"
'将Sheet1上的图表移动准备新建的Sheet3上
'myChart.Location where:=xlLocationAsNewSheet, Name:="Sheet3"
'将Sheet1上的图表交给EXCEL处理
'myChart.Location where:=xlLocationAutomatic名称 | 值 | 描述 |
xlLocationAsNewSheet | 1 | 将图表移动到新工作表 |
xlLocationAsObject | 2 | 将图表嵌入现有工作表 |
xlLocationAutomatic | 3 | 由 Excel 控制图表位置 |
今天就先到这里啦,明天继续~