VBA 图表的基本操作

不知不觉已经学习VBA大半个月了,数据透视表的内容已经学完了,回想一下,demo做得还是比较少,匆匆学完没有练习,很多内容还不熟练,不过为了保持学习的连贯性(当然了,主要是不停地往前学不做练习比较简单),咱就先把书上的内容全学了,再慢慢做练习吧。

本章主要是学习VBA生产图表。

首先假设有这样的一些数据:

一、生成图表前,先看看工作表sheet对象的层次结构:

Application
    Workbook
        Worksheet

①如果图表是在sheet上的话,层次结构是这样滴:

Application
    Workbook
        Worksheet
            ChartObject
                Chart
                    ChartTitle

根据上面的结构,如果需要调用ChartObject的话,前面得加上某workbook和某sheet,然后ChartObject里面可以操作Chart,Chart又可以操作ChartTitle。所以比如要设置一个图表的标题,可以这样操作:

Workbook.Sheets(1).ChartObjects(1).Chart.ChartTitle.Text = "第一个图表"

②如果图表不是在sheet上的话,层次结构略有不同,因为和sheet并列了,所以没有sheet这个结构了,也没有ChartObject

Application
    Workbook
        Chart
            ChartTitle

所以这里要设置一个图表的标题的话,结构有点不一样(对着sheet上面的图表按一下F11,就会在边上生成个和sheet并列的chart图表):

Sub demo2()
    Sheets("Chart1").ChartTitle.Text = "第二个图表"
End Sub

二、创建嵌入式图表

①先看看直接插入图表的宏代码长啥样

Sub demo()
    ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
    ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$E$41")
End Sub

②我们会发现中间有个Shapes.AddChart2的内容,简单说一下:

ChartObject 是特殊的Shape对象,所以也就是Shape集合的一个成员。所以创建一个没内容的图表可以参照上面的语句改一下:

Sub demo3()
    ActiveSheet.Shapes.AddChart2
End Sub

③我们还可以看到录制的宏上面还有AddChart2还有个201和xlColumnClustered参数,下面讲讲AddChart2的参数(一共7个,都是可选的):

1.Style:制定图表的样式的数值代码

2.xlChartType:图表类型。可以点击下面的链接查看每个代码对应的图表样式

https://docs.microsoft.com/zh-cn/office/vba/api/excel.xlcharttype

3.Left:图表左边的位置,省略就会水平居中

4.Top:图表顶端位置,省略就会垂直居中

5.Width:图表的整个大小宽度,省略默认354

6.Height:图表的整个大小高度,省略默认210

7.NewLayout:图表布局的数值代码

④根据上面的参数,创建个设置长宽高的空表:

代码如下(注意哈,这个参数没有用括号括起来):

Sub demo4()
    ActiveSheet.Shapes.AddChart2 201, xlColumnClustered, 20, 20, 200, 200, 5
End Sub

当然了也可以这样:

Sub demo5()
    Dim myChart As Chart
    Set myChart = ActiveSheet.Shapes.AddChart2(201, xlColumnClustered, 20, 20, 200, 200, 5).Chart
End Sub

⑤上述两种办法都是创建了一个长宽高的空表,里面没有数据,参照之前的录制宏代码,我们还要往里面指定图标的数据,所以在此基础上可以先选择单元格再插入,也就是这样操作:

Sub demo4()
    Range("A1").CurrentRegion.Select
    ActiveSheet.Shapes.AddChart2 201, xlColumnClustered, 20, 20, 200, 200, 5
End Sub

当然了也可以这样:

Sub demo5()
    Range("A1").CurrentRegion.Select
    Dim myChart As Chart
    Set myChart = ActiveSheet.Shapes.AddChart2(201, xlColumnClustered, 20, 20, 200, 200, 5).Chart
End Sub

⑥除了选中区域之外,也可以使用SetSourceData方法引用(因为意思都一样,这次就写一个了):

Sub demo6()
    Dim myChart As Chart
    Set myChart = ActiveSheet.Shapes.AddChart2(201, xlColumnClustered, 20, 20, 200, 200, 5).Chart
    myChart.SetSourceData Source:=Range("A1").CurrentRegion
End Sub

好了,今天的内容就先到这啦~

 

 

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:书香水墨 设计师:CSDN官方博客 返回首页

打赏作者

YeXueQing2020

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值