新大榭论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

《新大榭》- 创大榭地方网络社区先锋品牌 新大榭始终专注于地方网络社区平台的建设 关于我们- [大记事]- 留言建议- [新手报道]

发布 .新大榭软件管家(Excel版) V5.9版 财务/仓库/生产/销售/采购/行政/人事/校园 .公告 - 客户 - 打赏 - 职场 - Excel - Python.

新大榭镜像-音乐-法律-图书-高中课堂-实验 广告是为了能更好的发展 [欢迎商家支持本站互利共赢] 广告位招租.首页黄金广告位等您来!联系 13566035181

查看: 705|回复: 0

[Excel课程] 使用VBA自动生成图表

[复制链接]
发表于 2020-4-5 22:51:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!

您需要 登录 才可以下载或查看,没有账号?注册

x
  1. Sub ChartAdd()- z, C/ g' L  Q! u
  2.       Dim myRange As Range
    # c, A5 M' D7 Z4 i; K9 J5 b7 X
  3.       Dim myChart As ChartObject
    4 s. C$ |% d, U3 u/ n# z( ]8 D
  4.       Dim R As Integer2 a. \( V- E6 H# O. ~! D) p9 h
  5.       With Sheet16 y7 s$ ^( q( f, _$ ~0 x
  6.           .ChartObjects.Delete9 X- U  b" J2 h0 ?/ t% I$ g
  7.           R = .Range("A65536").End(xlUp).Row4 C( K% G! ]8 Y0 E* A
  8.           Set myRange = .Range("A" & 1 & ":B" & R)- w4 M$ r: g5 K% S
  9.           Set myChart = .ChartObjects.Add(120, 40, 400, 250)
    3 P+ y- ~/ S+ k1 _5 Q
  10.           With myChart.Chart4 I) Z1 p# C4 S# U& l
  11.               .ChartType = xlColumnClustered- ]$ G* l5 w, w) n
  12.               .SetSourceData Source:=myRange, PlotBy:=xlColumns9 b. k4 g( U2 {$ C8 U0 n
  13.               .ApplyDataLabels ShowValue:=True
    0 u" }9 }# k  a" }5 s8 }
  14.               .HasTitle = True
    7 r0 c, g! c: n0 n: w
  15.               .ChartTitle.Text = "图表制作示例"1 }' Y7 D7 h* J7 I+ _9 u
  16.                With .ChartTitle.Font
    + g: }' V5 |% @% P( \3 c
  17.                   .Size = 20
    2 h$ f# D& \. A$ f( ~
  18.                   .ColorIndex = 3, n4 n. N3 d/ f2 e# ~( G  Y
  19.                   .Name = "华文新魏"6 D" o! s  H4 A: p
  20.               End With- j6 v4 u* p2 D; L% C
  21.               With .ChartArea.Interior* j+ O, P& b4 r$ W
  22.                   .ColorIndex = 8
    5 Y( Z1 v! o% G+ f
  23.                   .PatternColorIndex = 1
    7 r& _( i3 C' P! q: W
  24.                   .Pattern = xlSolid8 g: ~( w( e1 X7 v" ]# {
  25.               End With
    + u  z4 y% b9 j* Y
  26.               With .PlotArea.Interior" m; L2 F: E0 P: x. H
  27.                   .ColorIndex = 35  x1 i: L; f# n1 X
  28.                   .PatternColorIndex = 1- m! s' B- U# E0 ]9 |+ m8 t' T
  29.                   .Pattern = xlSolid0 d9 G: L  p7 i. U
  30.               End With) B  [& m1 ^2 l9 ^- N$ S# Y8 e4 ]) C2 b
  31.               .SeriesCollection(1).DataLabels.Delete
    : E: f. F7 q) @" Y- K% B8 n2 A
  32.               With .SeriesCollection(2).DataLabels.Font3 `6 q) _8 }4 w# Z% k0 @
  33.                   .Size = 10
    ; A0 S" ?1 m/ t/ v2 j( K# m! X
  34.                   .ColorIndex = 5& M& a4 z* \1 s* ?: t9 F
  35.               End With
    ; F2 F% @+ e' F, l3 m
  36.           End With# I8 C1 S4 @  b+ e/ g
  37.       End With) D. u  u* L& `% ^! {, e+ O/ k2 l
  38.       Set myRange = Nothing% a3 o6 Q1 C  l) m& M! y
  39.       Set myChart = Nothing+ t- ^# B! u9 d! |5 N/ ?
  40. End Sub
复制代码
) [) \- J0 _+ r
' A7 ^# Q  l. }* [; [4 T
代码解析
* B6 q, N8 V. n' o# h" {) \ChartAdd过程在工作表中自动生成图表,图表类型为簇状柱形图。. W, Z+ P& f1 j5 _& Z! C$ J+ ^
第6行代码使用Delete方法删除工作表中已经存在的图表,而ChartObjects方法返回代表工作表中单个嵌入图表(ChartObject对象)或所有嵌入图表的集合(ChartObjects对象)的对象,语法如下:( X  c5 e9 t: C. U
expression.ChartObjects(Index)* z3 I7 M! G4 M  A4 g( Y5 _" F
其中参数Index是可选的,指定图表的名称或号码。该参数可以是数组,用于指定多个图表,因为示例中只有一个图表,所以无需指定其Index参数。' d9 ?6 a. n$ N* E( f$ c6 S
第8行代码指定图表的数据源。* A( ^, m2 \2 h; }6 V$ M9 p
第9行代码使用Add方法创建一个新图表,应用于ChartObjects对象的Add方法创建新的嵌入图表,语法如下:
9 H  p7 Z: W0 }5 T; mexpression.Add(Left, Top, Width, Height)
1 V  d  @; u% G参数Left、Top是必需的,以磅为单位给出新对象的初始坐标,该坐标是相对于工作表上单元格A1的左上角或图表的左上角的坐标。
$ S- R' N% R% L. ?4 p* E6 o0 C3 C. z参数Width、Height是必需,以磅为单位给出新对象的初始大小。
1 C% k& }. P3 ^+ d2 ^! {第10行代码使用Chart属性返回新创建的图表,应用于ChartObject对象的Chart属性返回一个Chart对象,该对象代表指定对象所包含的图表。
/ Z& M% {7 `' W9 k* M4 h第11行代码指定新创建图表的图表类型,应用于Chart对象的ChartType属性返回或设置图表的类型,可以为XlChartType常量之一,具体请参阅VBA帮助。本例中设置为xlColumnClustered即图表类型为簇状柱形图。4 }5 |! U8 W4 Z: x  N
第12行代码指定图表的数据源和绘图方式,应用于Chart对象的SetSourceData方法为指定图表设置源数据区域,语法如下:4 g2 T3 H" t7 @( d# |' ~
expression.SetSourceData(Source, PlotBy)3 a# P1 d+ a/ v
参数expression是必需的,该表达式返回一个Chart对象。
3 A  e) p0 c" _; }1 T参数Source是可选的,源数据的区域。* y8 s( q/ p% \: l
参数PlotBy是可选的,指定数据绘制方式,可为xlColumns(系列产生在列)或xlRows(系列产生在行)。
0 e7 c" m" F% W' ~第13行代码使用ApplyDataLabels方法使图表显示数据标签和数据点的值,应用于Chart对象的ApplyDataLabels方法将数据标签应用于图表中的某一数据点、某一数据系列或所有数据系列,语法如下:* ?$ t" n2 M$ F, a4 s
expression.ApplyDataLabels(Type, LegendKey, AutoText, HasLeaderLines, ShowSeriesName, ShowCategoryName, ShowValue, ShowPercentage, ShowBubbleSize, Separator)
: Z& L) D: ?7 y参数expression是必需的,该表达式返回一个Chart对象。) }' A5 l' p% B: H" t, y
参数Type是可选的,要应用的数据标签的类型,可为表格 60 1所列的XlDataLabelsType 常量之一9 I0 f7 ^7 q! t9 T6 g6 c* v
第14、15行代码设置新创建的图表有可见的标题并设置图表标题的文字。应用于Chart对象的HasTitle属性,如果坐标轴或图表有可见标题,则该值为True,而ChartTitle属性返回一个ChartTitle对象,代表指定图表的标题。
第16行到第20行代码设置图表标题文字的格式。
第21行到第25行代码设置图表区的颜色。
第26行到第30行代码设置绘图区的颜色。
第31行代码删除图表上第一个数据系列中的数据标签。SeriesCollection方法返回图表或图表组中单个数据系列(Series对象)或所有数据系列的集合(SeriesCollection集合)的对象,语法如下:
expression.SeriesCollection(Index)
可选的Index参数指定数据系列的名称或编号。
而DataLabels方法则返回代表数据系列中的单个数据标签(DataLabel对象)或所有数据标签的集合(DataLabels集合)的对象,语法如下:
expression.DataLabels(Index)
可选的Index参数指定数据系列中的数据标签的编号。
第32行到第36行代码设置图表上第二个数据系列中的数据标签的字体格式。
运行ChartAdd过程,在工作表中创建簇状柱形图,如60 - 1 所示/ q  _: f# d7 r
1.jpg
新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
Q群推荐 大榭本地求职招聘QQ群,欢迎转发分享本地招聘信息资讯! 官方招聘1群(已满);官方招聘2群:315816937 *
您需要登录后才可以回帖 登录 | 注册

本版积分规则

文字版|小黑屋|新大榭 ( 浙ICP备16018253号-1 )|点击这里给站长发消息|

GMT+8, 2025-12-13 17:08 , Processed in 0.078928 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表