MSChart控件教程

MSChart控件教程


2024年6月3日发(作者:)

MSChart控件

这些内容是在学习过程中进行的整理,由于感到书籍资料或软件帮助中有时让人

很不容易理解,特制作这个教程,以方便其他朋友学习,从新学习此控件的人的角度来

描述相应的属性,相信也能让跟我一样程度的人更容易理解,可能在学习的过程中对某

些属性与方法有理解不正确,请各位指正。

加载:“工程部件Microsoft Chart Control 6.0(SP4)”

序号

1

2

3

4

5

6

7

8

9

10

11

12

13

14

14-1

14-2

14-3

14-4

14-5

14-6

14-7

14-8

14-9

14-10

附录:

项目

AllowDynamicRotation[=True或False]

ChartData

ChartType

Column

ColumnCount

ColumnLabel

ColumnLabelCount和ColumnLabelIndex

Data

SeriesColumn

TitleText或

Backdrop对象的Fill对象

Backdrop对象的Frame对象

Backdrop对象的Shadow对象

DataGrid对象

CompositeColumnLabel

DeleteRowLabels

DeleteRows

GetData

InsertColumnLabels/InsertRowLabels

InsertColumns/InsertRows

MoveData

RandomDataFill

SetData

SetSize

描述

返回或设置是否可旋转图表

返回或设置一个数组,数组用于要被图表显示的值

返回或设置图表类型

返回或设置当前列

返回或设置总列数

返回或设置列标签

返回或设置列标签级数/指定当前操作的列标签级别

返回或设置当前行、当前列的值

返回或设置当前系列数据列的位置

返回或设置图表标题内容

背景的类型和外观

框架外观

阴影样式

返回多级标签指定列的组合标签内容

删除行标签级

删除数据行和行标签(DeleteColumns类同)

返回指定行列的值

插入列/行标签级

插入新列/行数据

将数据移动到新的位置(理解很困难)

随机填充数据

设定指定行列的数据值

重设行、列标签级数与行、列总数

序号

1

2

3

4

5

描述

chartType类形常数

3维柱形图代码

2维1~12月代码

1、AllowDynamicRotation

返回目录

作用:返回或设置是否可旋转图表

注:需要图表的ChartType是3d类型才可以,当AllowDynamicRotation=True时,在图

表中可按住ctrl+鼠标左键旋转图表。

示例:

下列代码在窗体加载时将MSChart1设置为3d柱形图,并允许按住ctrl+鼠标左键旋转。

(窗体上放一个MSChart控件)

Private Sub Form_Load()

With MSChart1

.chartType = VtChChartType3dBar '类型为3d柱形图,类形常数详见附录

.AllowDynamicRotation = True '允许旋转

End With

End Sub

下列代码将以对话框的形式返回上面示例的AllowDynamicRotation值:

MsgBox ynamicRotation

2、ChartData

返回目录

注:书中及软件帮助文档中说到数组需要变体型数值,是指如果要将数组第一个元素作

为标题,其他作为数据,那个这个数组既有字符又有数字,那么就需要一个变体形。

如果数组中并不包含标题(或是之后使用属性来赋于标题),那么数组是可以定义

类形的,个人建议先给定数组类型,之后再使用属性来设置标题。

作用:设置:将一个数组的数据作表图表的显示数据

返回:将图表数据赋给一个数组

示例:将数组元素作为图表的显示数据

制作一个1行6列的的图表(数组的维代表图表的行,每维的元素代表列)

Private Sub Form_Load()

Dim 一维数组(1 To 6)

'为了表示得更清楚,我们采取逐个赋值的方法

一维数组(1) = 1

一维数组(2) = 2

一维数组(3) = 3

一维数组(4) = 4

一维数组(5) = 5

一维数组(6) = 6

With MSChart1

.chartType = VtChChartType2dBar '类型为3d柱形图

.ChartData = 一维数组()

End With

End Sub

为了理解图表的行列与数组的维数的对应关系,再举例一个二维数组(图表对应就形成2行6列)

Private Sub Form_Load()

Dim 二维数组(1 To 2, 1 To 6)

'为了表示得更清楚,我们采取逐个赋值的方法

二维数组(1, 1) = 1

二维数组(1, 2) = 2

二维数组(1, 3) = 3

二维数组(1, 4) = 4

二维数组(1, 5) = 5

二维数组(1, 6) = 6

二维数组(2, 1) = 1

二维数组(2, 2) = 2

二维数组(2, 3) = 3

二维数组(2, 4) = 4

二维数组(2, 5) = 5

二维数组(2, 6) = 6

With MSChart1

.chartType = VtChChartType2dBar '类型为2d柱形图

.ChartData = 二维数组()

End With

End Sub

下面是将数组的第一个元素设置成字符,使图表加载时将其作为标题的示例:

Private Sub Form_Load()

Dim 二维数组(1 To 2, 1 To 6)

'为了表示得更清楚,我们采取逐个赋值的方法

二维数组(1, 1) = "第一行标题"

二维数组(1, 2) = 2

二维数组(1, 3) = 3

二维数组(1, 4) = 4

二维数组(1, 5) = 5

二维数组(1, 6) = 6

二维数组(2, 1) = "第二行标题"

二维数组(2, 2) = 5

二维数组(2, 3) = 4

二维数组(2, 4) = 3

二维数组(2, 5) = 2

二维数组(2, 6) = 1

With MSChart1

.chartType = VtChChartType2dBar '类型为2d柱形图

.ChartData = 二维数组()

End With

End Sub

最后总结数组元素与维和图表行列的对应关系,作以下关系图:

上述例子是将数组的内容反应到图表中,下面我们将使用上面的一维和二维图表,从图表中获得数据给数组,并将

数组显示出来以验证结果(我们采取设置一个断点,然后通过视图本地的方式来查看生成的数组):

从图中可以看到,对于我们用2给数组生成的图表,再赋给新的数组时,数组变成了3维,并且每维还多了一个元

素用来存储行标签,既“R1”、“R2”,多出来的一维用来存储列标签,既“C1”、“C2”等。

3、ChartType

返回目录

用途:返回或设置图表的类型

注:设置类型后不用刷新,可以设计的时候选择属性,也可以代码中设置。

类型种类见附录。

示例:本示例中我们用了一个combox,可以在该combox选择类型,然后通过Click事件用select case语句来根据

不同的选择给MSChart1的ChartType赋于不同的值来实现图表类型的改变。

Private Sub Form_Load()

Dim 二维数组(1 To 2, 1 To 6)

'为了表示得更清楚,我们采取逐个赋值的方法

二维数组(1, 1) = 1

二维数组(1, 2) = 2

二维数组(1, 3) = 3

二维数组(1, 4) = 4

二维数组(1, 5) = 5

二维数组(1, 6) = 6

二维数组(2, 1) = 6

二维数组(2, 2) = 5

二维数组(2, 3) = 4

二维数组(2, 4) = 3

二维数组(2, 5) = 2

二维数组(2, 6) = 1

With MSChart1

.chartType = VtChChartType2dBar '类型为2d柱形图

.ChartData = 二维数组()

End With

With cmb图表类型

.AddItem "三维柱形"

.AddItem "二维柱形"

.AddItem "三维折线"

.AddItem "二维折线"

.AddItem "三维面积"

.AddItem "二维面积"

.AddItem "三维梯形"

.AddItem "二维梯形"

.AddItem "三维组合"

.AddItem "二维组合"

.AddItem "二维饼形"

.AddItem "二维XY散点"

.ListIndex = 0

End With

End Sub

Private Sub cmb图表类型_Click()

With MSChart1

Select Case cmb图表类型.Text

Case "三维柱形"

.chartType = VtChChartType3dBar

Case "二维柱形"

.chartType = VtChChartType2dBar

Case "三维折线"

.chartType = VtChChartType3dLine

Case "二维折线"

.chartType = VtChChartType2dLine

Case "三维面积"

.chartType = VtChChartType3dArea

Case "二维面积"

.chartType = VtChChartType2dArea

Case "三维梯形"

.chartType = VtChChartType3dStep

Case "二维梯形"

.chartType = VtChChartType2dStep

Case "三维组合"

.chartType = VtChChartType3dCombination

Case "二维组合"

.chartType = VtChChartType2dCombination

Case "二维饼形"

.chartType = VtChChartType2dPie

Case "二维XY散点"

.chartType = VtChChartType2dXY

End Select

End With

End Sub

经过测试,ChartType值使用数值也可以,不过一般不建议使用数值,这样更不容易理解;对应数值如下:

VtChChartType3dBar

VtChChartType2dBar

VtChChartType3dLine

VtChChartType2dLine

VtChChartType3dArea

VtChChartType2dArea

VtChChartType3dStep

VtChChartType2dStep

VtChChartType3dCombination

VtChChartType2dCombination

VtChChartType2dPie

VtChChartType2dXY

3D 条形图

2D 条形图

3D 折线图

2D 折线图

3D 面积图

2D 面积图

3D 阶梯图

2D 阶梯图

3D 组合图

2D 组合图

2D 饼图

2D XY 散点图

0

1

2

3

4

5

6

7

8

9

14

16

4、Column

返回目录

用途:返回或设置当前列

之所以要设置当前列,是因为我们对数据操作时需要指定当前行与列,因为

MSChart没有像EXCEL软件的cells(行,列).text这样指定行与列的属性。(此处暂不确定,

之后更新)

注:尝试过MSChart的列数设置为65536,会溢出,设置为30000是可以的,更多就

已经无响应了,行就没有试了,不过应该不会有人要这么多行与列吧

示例:此示列是1个二维柱形图,我们通过将当前列设置为2,然后修改2列的数值由2变为6

Private Sub Command1_Click()

= 2 '将第2列设置为当前列

= 6 '更改当前列的值

End Sub

Private Sub Form_Load()

Dim 一维数组(1 To 6)

'为了表示得更清楚,我们采取逐个赋值的方法

一维数组(1) = 1

一维数组(2) = 2

一维数组(3) = 3

一维数组(4) = 4

一维数组(5) = 5

一维数组(6) = 6

With MSChart1

.chartType = VtChChartType2dBar '类型为2d柱形图

.ChartData = 一维数组()

End With

End Sub

示例:对于多行的图形,同时需要指定行和列,如果未指定行(并且未有过其他操作图表的代码),会默认为第一

行,未指定列,会默认为1列。

以上例的图表为例,我们要改变第2行的第2列的当前值为6

Private Sub Command1_Click()

= 2 '将第2列设置为当前列

= 2 '将第2行设置为当前行

= 6 '更改当前行、列的值

End Sub

5、ColumnCount

返回目录

用途:返回或设置图表的总列数

示例中使用二维数组生成2行6列的图表,请注意看两次结果的不同之处(代码就使用之前的)

下列两图形其实是一个,ColumnCount=6,之所以呈现的外观不一样,是因为设置了以下属性:

riesInRow = True

6、ColumnLabel

返回目录

用途:返回或设置列标签

示例:以2行6列的数据图表为例,通过指定当前列=1,然后设置列标签;然后再指定当前列=6,再设置列标签。

Private Sub Form_Load()

Dim 二维数组(1 To 2, 1 To 6)

'为了表示得更清楚,我们采取逐个赋值的方法

二维数组(1, 1) = 1

二维数组(1, 2) = 2

二维数组(1, 3) = 3

二维数组(1, 4) = 4

二维数组(1, 5) = 5

二维数组(1, 6) = 6

二维数组(2, 1) = 6

二维数组(2, 2) = 5

二维数组(2, 3) = 4

二维数组(2, 4) = 3

二维数组(2, 5) = 2

二维数组(2, 6) = 1

With MSChart1

.chartType = VtChChartType2dBar '类型为2d柱形图

.ChartData = 二维数组()

.Column = 1

.ColumnLabel = "第1列"

.Column = 6

.ColumnLabel = "第6列"

End With

End Sub

但图例中我们并没有看到刚才设置的标签:

我们将DataSeriesInRow属性设置为True

riesInRow = True

7、ColumnLabelCount和ColumnLabelIndex

返回目录

用途:ColumnLabelCount指定列标签总级数,ColumnLabelIndex指定当前要操作的列标

签级数,index要小于Count

不论是书籍还是微软的MSDN均很吝啬的只给出几句文字描述,认为我们光靠文字就

能理解几个Column相关的属性。下面给出的示例有综合用到这几个跟列相关的属

性。

示例:设置列标签级数为3,再分别指定1、2、3级别并设置标签内容

Private Sub Form_Load()

Dim 二维数组(1 To 2, 1 To 6)

'为了表示得更清楚,我们采取逐个赋值的方法

二维数组(1, 1) = 1

二维数组(1, 2) = 2

二维数组(1, 3) = 3

二维数组(1, 4) = 4

二维数组(1, 5) = 5

二维数组(1, 6) = 6

二维数组(2, 1) = 6

二维数组(2, 2) = 5

二维数组(2, 3) = 4

二维数组(2, 4) = 3

二维数组(2, 5) = 2

二维数组(2, 6) = 1

With MSChart1

.chartType = VtChChartType2dBar '类型为2d柱形图

.ChartData = 二维数组()

.riesInRow = True

End With

End Sub

Private Sub Command1_Click()

With MSChart1

.ColumnLabelCount = 3 '设置列标签级别共3级

.Column = 6 '指定当前列为第6列

.ColumnLabelIndex = 1 '当前列标签级别为第1级

.ColumnLabel = "一级" '第1级标签内容设为“一级”

.ColumnLabelIndex = 2 '当前列标签级别为第2级

.ColumnLabel = "二级" '第1级标签内容设为“二级”

.ColumnLabelIndex = 3 '当前列标签级别为第3级

.ColumnLabel = "一级" '第1级标签内容设为“三级”

End With

End Sub

8、Data

返回目录

用途:返回或设置当前行、当前列的值

既然是要设定某行某列的值,那么就要指定行、指定列、指定值

示例:使用一个默认的MSChart1,将第2行的1、2、3、4列的值分别改为20、40、60、80

Private Sub Command2_Click()

With MSChart1

.Row = 2 '设定当前为第2行

.Column = 1 '当前列为第1列

.Data = 20 '更改第2行第1列值为20

.Column = 2 '当前列为第2列

.Data = 40 '更改第2行第2列值为40

.Column = 3 '当前列为第3列

.Data = 60 '更改第2行第3列值为60

.Column = 4 '当前列为第4列

.Data = 80 '更改第2行第4列值为80

End With

End Sub

初始图表值如图所示:

初始图表 执行Command2_Click()代码后的图表

关于Row、RowCount、RowLabel、RowLabelCount、RowLabelIndex属性见Column相

关属性

9、SeriesColumn

返回目录

用途:返回或设置当前系列数据列的位置

示例:将当前列移动到指定列,使两列的数据重叠放在一起,下面的示例先将第2列放到第3列上,然后再把原

第3列放到第1列上

Private Sub Command1_Click()

With MSChart1

.Column = 2 '指定当前列为第2列

.SeriesColumn = 3 '将第2列放到第3列上(究竟是谁在上谁在下不知如何设置)

End With

End Sub

Private Sub Command2_Click()

With MSChart1

.Column = 3 '指定当前列为第3列

.SeriesColumn = 1 '将第3列放到第1列上

End With

End Sub

从“将第3列移到第1列”的结果来看,在移动列数据的时候,虽然数据重在一起后,看上去只有了4列,实际列

的总数是没有发生变化的,不然操作第3列移到第1列时就变成黄色了。

10、TitleText或

返回目录

用途:返回或设置图表的标题内容

这个属性很容易理解,默认标题显示在正上方(此示例将标题放到正下方),需要补

充的是如何设置标题的位置,设置标题位置是使用此属性:

MSChart1 .onType =位置值

Private Sub Command1_Click()

With MSChart1

.TitleText = "测试图表标题"

.onType = VtChLocationTypeBottom

End With

End Sub

LocationType常数如下图:

当类型为8时,可拖到标题到任何地方(实际上设置为其他预定位置类型时,标题也是可以随意拖动的),拖动标

题时,并不会盖在图表上面,而是会将图表挤到其他地方去,所以位置要选好。

11、Backdrop对象的Fill对象

返回目录

用途:设置图表中对象的背景的类型与外观。

Fill对象的结构如图所示:

示例:两种Style对比,有无填充和纯色或图案,其中无填充并不是透明,只是颜色会跟窗体后面颜色一样(为了

体现效果,给窗体的backcolor一个蓝色),但并不能看到被盖住的其他控件,此示例中在mschart1下面放置了一

个Label,无论是哪种style均不能看到它。

Private Sub Command1_Click()

= VtFillStyleNull '将Fill对象的风格设为无填充

End Sub

Private Sub Form_Load()

Dim a(1 To 4)

Dim i As Integer

For i = 1 To 4

a(i) = I ‘赋值给数组

Next

With MSChart1

.ChartData = a() ‘将数组的值作为图表的数据

. = VtFillStyleBrush '将Fill对象的风格设为纯色或图案

End With

End Sub

将背景色设置为红色:

255,0,0

下列语句的设置结果是相同的:

With

. = 255

. = 0

. = 0

End With

共有四种模式:

 VtBrushStyleHatched:阴影,既背影加上横的、黑色的线条

 VtBrushStyleNull:无,同=vtFillStyleNull

 Pattern:用图案作为背景(VB的所谓图案其实是很单调的,就是点,当处在图案模式时,可使用

255, 0, 0来设置背景图颜色,这里设置的是红色,默认为黑

色)

 Solid:用实色填背景,这是默认的。

= VtBrushStyleHatched ‘设置为阴影

= VtBrushStyleNull ‘设置为无

= VtBrushStylePattern

255, 0, 0

= VtBrushStyleSolid

效果图如下:

‘设置为图案

‘设置图案颜色为红色

‘设置为实色

当= VtBrushStyleHatched(阴影线)或者VtBrushStylePattern(图案)时,可以使用

index属性来指定各类背景。

= 背景常数

常数如下所示:(究竟是什么样的图我就不截图了,请各位自己试一试就知道了,不过这些背景会让图表看上去太

杂,估计都不会使用它)

VtBrushPattern94percent 94% 图案颜色

VtBrushPattern88percent

VtBrushPattern75percent

VtBrushPattern50percent

VtBrushPattern25percent

VtBrushPatternBoldHorizontal

88% 图案颜色

75% 图案颜色

50% 图案颜色

25% 图案颜色

粗水平线

VtBrushPatternBoldVertical

VtBrushPatternBoldDownDiagonal

VtBrushPatternBoldUpDiagonal

VtBrushPatternChecks

VtBrushPatternWeave

VtBrushPatternHorizontal

VtBrushPatternVertical

VtBrushPatternDownDiagonal

VtBrushPatternUpDiagonal

VtBrushPatternGrid

VtBrushPatternTrellis

VtBrushPatternInvertedTrellis

粗垂直线

向下的粗对角线

向上的粗对角线

Checks 图案

Weave 图案

水平线

垂直线

向下对角线

向上对角线

Grid 图案

Trellis 图案

倒置的 trellis 图案

12、Backdrop对象的Frame对象

返回目录

用途:设定图表的周围框架的外观,框架包含Frame和Space,这两者都可以设置颜

色,Frame还可以使用Width属性设置线宽,线宽同时也影响间距Space,详见下列

代码:

Private Sub Form_Load()

With

.Style = VtFrameStyleDoubleLine '外框的风格,几种风格常数见下面

. 255, 0, 0 '外观的颜色

.Width = 100 '外观线的粗细,同时会影响双线之间的间距

. 0, 255, 0 '双线之间的颜色为绿色

End With

End Sub

Style的常数有以下几种:

常数 描述

无框架。

背景周围围绕单线。

背景周围围绕两条等宽线。

VtFrameStyleNull

VtFrameStyleSingleLine

VtFrameStyleDoubleLine

VtFrameStyleThickInner 背景周围围绕一条粗的内线和一条细的外线。

VtFrameStyleThickOuter 背景周围围绕一条细的内线和一条粗的外线。

当常数是无线框或者单线时,是没有Space的,也就不能设置SpaceColor

13、Backdrop对象的Shadow对象

返回目录

用途:设定图表的周围框架的阴影,可设置Brush(阴影类型)、Offset(偏移距离)、

Style(阴影类型),当Frame的Style类型为

VtFrameStyleNull

时,依旧能显示阴影:

Private Sub Form_Load()

With

.Style = VtFrameStyleDoubleLine

. 255, 0, 0 '外观的颜色

.Width = 100 '外观线的粗细,同时会影响双线之间的间距

. 0, 255, 0 '双线之间的颜色

End With

With

.Style = VtShadowStyleDrop '设置阴影风格

. = VtBrushStylePattern '阴影的类型

. 300, 300 '阴影的距离(此例子设得比较夸张)

. = VtBrushPatternWeave '设置了笔刷样式,但好像对阴影没有影响

End With

End Sub

Shadow的各属性相比较简单,Brush和Style等设置与前面的属性也是雷同的。

14、DataGrid

返回目录

DataGrid对象的属性及方法较多,各属性方法在后面列出,下面是通过DataGrid建立

图表的基本过程:

Private Sub Form_Load()

ype = VtChChartType3dBar '3维柱形

With id

.SetSize 2, 2, 6, 6 '2级行标签,2级列标签,6行,6列

.RandomDataFill '随机填充数据

.ColumnLabel(1, 2) = "Product 1" '设置1列的2级标签内容

.ColumnLabel(4, 2) = "Product 2" '设置4列的2级标签内容

.RowLabel(1, 2) = "1994" '设置1行的2级标签内容

.RowLabel(4, 2) = "1995" '设置4行的2级标签内容

End With

End Sub

3维柱形图时,标签基本看不清楚。

下列示例要做一个12月,二级标签为季度名的二维图表(三维看不清,所以我们做二维),如果我们要在1、2、3

月下方显示二级标签“春季”,那我们应在1行2级设置Label=”春季”,为了使1、2、3都被包含在春季里,那么下

一个二级标签应该第4行再设置,既第1个二级标签所辖范围会持续遇到第2个二级标签止:

Private Sub Form_Load()

Dim i As Integer

ype = VtChChartType2dBar '3维柱形

With id

.SetSize 2, 1, 12, 1 '2级行标签,1级列标签,12行,1列

.RandomDataFill '随机填充数据

'设置1~12行的1级标签

For i = 1 To 12

.RowLabel(i, 1) = i & "月"

Next

.RowLabel(1, 2) = "春季" '设置1行的2级标签内容

.RowLabel(4, 2) = "夏季" '设置4行的2级标签内容

.RowLabel(7, 2) = "秋季" '设置7行的2级标签内容

.RowLabel(10, 2) = "冬季" '设置10行的2级标签内容

End With

End Sub

假设我们让4、5月为夏季,6、7、8、9为秋季,那么在4行2级标签设置“夏季”后,我们就应该在6行2级标签

设置为“秋秋”(上例中我们是用.RowLabel(7, 2) = "秋季"使秋季是从7月开始的)

.RowLabel(6, 2) = "秋季"

当MSChart图表宽度不够时,标签文本就会旋转90度显示,较虚看不清楚。目前我们还不知道如何通过代码来设

置轴向标签的大小,可先采取在控件上鼠标右键进行字体字号的设置。

14-1、CompositeColumnLabel

返回目录

用途:返回多级标签字符串标识与图表关联的数据网络中的列(通俗的说,就是显示

指定列的标签内容,但这个属性中还有composite,既组合,在我们上面的例子中,

是二级标签,1、2、3月包含在春季中,那么当我们指定列为2时,显示的则会是“春

季 2月”,而不会单单显示2月,这就是组合),与之对应的还有一个

CompositeRowLabel,既返回行的标签;

下面示例中,当单击MSChart1时,会依次显示“春季 1月”、”春季 2月”……”冬季 12月”

Private Sub MSChart1_Click()

Dim i As Integer

For i = 1 To nt

MsgBox iteRowLabel(i)

Next

End Sub

14-2、DeleteRowLabels

返回目录

用途:删除行标签

示例:删除第1级和第2级标签(第2个参数不知是什么用)

原始图表标签:

删除行1级标签,这样会保留二级标签

RowLabels 1, 1

删除行2级标签,这样会保留一级标签

RowLabels 2, 1

如果我们用这样的参数,会将1、2两级都删掉:

RowLabels 1, 2

14-3、DeleteRows(DeleteColumnS类同)

返回目录

用途:删除行数据和标签

示例:此例子利用前面生成的12月图表,从第3行开始,删除共2行,由于有二级标签,删除后的二级标签会混

乱。

Rows 3, 2 '删除从第3行开始,共2行的数据及标签

从两图对比可以看出,由于第3行数据的二级标签是“春季”,第4行数据的二级标签是“夏季”,删除后,保留了前

面的二级标签,后面的被破坏掉了,原来“夏季”的5月、6月被合入到了“春季”的二级标签,这个删除操作是真实

的去除,数据行的总数是发生了变化的,跟之前的用SeriesColumn移动数据形成叠加是不同的。

14-4、GetData

返回目录

用途:获取指定行列的值

示例:获到第1行第2列的值,这里我们使用前面有多行的图表(不使用1~12月的表,因为该表只有12行,每

行只有1列数据),接收值的变量类型需要是双精度浮点型。

Private Sub Form_Load()

Dim 二维数组(1 To 2, 1 To 6)

Dim 数据 As Double '定义存放使用GetData获取数据的变量

'为了表示得更清楚,我们采取逐个赋值的方法

二维数组(1, 1) = 1

二维数组(1, 2) = 2

二维数组(1, 3) = 3

二维数组(1, 4) = 4

二维数组(1, 5) = 5

二维数组(1, 6) = 6

二维数组(2, 1) = 6

二维数组(2, 2) = 5

二维数组(2, 3) = 4

二维数组(2, 4) = 3

二维数组(2, 5) = 2

二维数组(2, 6) = 1

With MSChart1

.chartType = VtChChartType2dBar '类型为2d柱形图

.ChartData = 二维数组()

End With

a 1, 2, 数据, 0 ‘第4个参数暂不知道作用

n = "1行2列数据值:" & 数据

End Sub

14-5、InsertColumnLabels/InsertRowLabels

返回目录

用途:添加标签级别

示例:在现有标签级别中插上级别,此示例中标签级别是2级,我们准备在1级与2级中间再插入1级,并且在

新插入的级别中,将第1行的标签写成“2级”

Private Sub Form_Load()

Dim i As Integer

ype = VtChChartType2dBar '3维柱形

With id

.SetSize 2, 1, 12, 1 '2级行标签,1级列标签,12行,1列

.RandomDataFill '随机填充数据

'设置1~12行的1级标签

For i = 1 To 12

.RowLabel(i, 1) = i & "月"

Next

.RowLabel(1, 2) = "春季" '设置1行的2级标签内容

.RowLabel(4, 2) = "夏季" '设置4行的2级标签内容

.RowLabel(7, 2) = "秋季" '设置7行的2级标签内容

.RowLabel(10, 2) = "冬季" '设置10行的2级标签内容

End With

End Sub

Private Sub Command1_Click()

RowLabels 2, 1 ‘在第2级插入,插入共1级,总级数就是3级;如果

在第2级插入2级,那总级数就是4了。

With id

.RowLabel(1, 2) = "2级"

End With

End Sub

新的标签级别不但可以在已有两级中间插入,也可以手入到1级前:

Private Sub Command1_Click()

RowLabels 1, 1

With id

.RowLabel(1, 1) = "1级"

End With

End Sub

‘在1级处插入共1级的标签级别

‘将第1行的1级标签改为命为“1级”

但是标签内容的包含关系呈倒金字塔型:

14-6、InsertRows/InsertColumnS

返回目录

用途:增加行/列数据

示例:在现有图表中插入新的行/列,新插入后该行/列的数据=0,行/列的总数增加,此例我们以12行1列的月

份图表为例,在第2行后面插入1个新行,然后将标签改为”新”,并赋值=75

Private Sub Command1_Click()

Rows 3, 1 '在第2行后面,第3行入插入1新行,数据为0

With id

.RowLabel(3, 1) = "新" '原来第3行变成了第4行,现在的新3行1级标签改为“新”

End With

= 3 '将当前行设为3

= 75 '设置3行1列的数据值=75

End Sub

14-7、MoveData

返回目录

用途:移动数据中一组连续的数据到新的位置

示例:这个例子我们以2行6列的3维柱形图为例,将2行2列到2行3列的数据移动到1行3列至1行4列

Private Sub Form_Load()

Dim 二维数组(1 To 2, 1 To 6)

'为了表示得更清楚,我们采取逐个赋值的方法

二维数组(1, 1) = 1

二维数组(1, 2) = 2

二维数组(1, 3) = 3

二维数组(1, 4) = 4

二维数组(1, 5) = 5

二维数组(1, 6) = 6

二维数组(2, 1) = 6

二维数组(2, 2) = 5

二维数组(2, 3) = 4

二维数组(2, 4) = 3

二维数组(2, 5) = 2

二维数组(2, 6) = 1

With MSChart1

.chartType = VtChChartType3dBar '类型为3d柱形图

.ChartData = 二维数组()

.riesInRow = True

End With

End Sub

Private Sub Command1_Click()

With id

.MoveData 1, 1, 1, 2, 1, -1

End With

End Sub

对比前后结果,这个移动类似windows的剪切、粘贴操作,原位置的数据没了,并且会替换掉新位置的数据。

MSChart的行与列计算时跟我们平时想的是不一样的,标识的行与列并不是表示所要移动的数据所在行与列,而是

它之前的行和之前的列,比如要移动第2行的第2列以第2行5列处,那应该是:

ta 1, 1, 1,1, 3, 0

要移动第2行的第2列以第1行5列处,那应该是:

ta 1, 1, 1,1, 3, -1

这个会很难理解,唯一的办法就是先画好平面示意图,然后设定要自己要移动哪些数据,移到哪里,然后修改语句

去进行验证。

14-8、RandomDataFill

返回目录

用途:随机填充数据,跟VB中产生随机数不一样,这里不能指定种子,每次load

时,初始数据是一样的,每次随机填充时的数据就不一样了。

示例:这个例子我们运行了2次程序,并且各随机产生了2次数据,从对比图来看,除了初始load时数据是一样

的外,其他随机填充的数据都是不一样的。

DataFill

14-9、SetData

返回目录

用途:获取指定行、列数据的值。

示例:前面14-6例子中,我们新增加了一列数据,然后使用先改变当前行、列位置,然后用.Data的方式指定值

=75,现在我们可以使用这个SetData更方便的修改值,而不是先去改变当前的行、列。

Private Sub Command1_Click()

Rows 3, 1 '在第2行后面,第3行入插入1新行,数据为0

With id

.RowLabel(3, 1) = "新" '原来第3行变成了第4行,现在的新3行1级标签改为“新”

End With

a 3, 1, 75, 0 '设置3行1列的数据值=75,如果把最后的0设为

1的话,则3行1列数据变为空

End Sub

最后一个参数为1时,数据变为了空

14-10、SetSize

返回目录

用途:重设图表行、列标签级别和行、列总数

示例:如果重设的标签级别数是比原有的更少,那么是从级数更高的标签删除,例如原有2级标签,现设为1

级,那么2级就会被删掉;行、列数也是相同的。如果重设的标签数跟行、列数比原有更多,则新产生的标签和

数据行、列均为空,需要再进行更改。

我们利用原12行1列的1~12月图表进行演示

e 行标签级数, 列标签级数, 行总数, 列总数

减少行,由原来的12行变为10行

e 2, 1, 10, 1 ‘原行标签级、列标签级、列总数均不变

增加行,由原来的12行变为14行

e 2, 1, 14, 1 ‘原行标签级、列标签级、列总数均不变

減少行标签级别,由原来的2级变为1级,更改后会将2级去掉,保留1级

e 1, 1, 12, 1 ‘原行标签级、列标签级、列总数均不变

增加行标签级别,由原来的2级变为3级,更改后不会在1、2中间插入空标签级,3级标签会为空,为使效果更

明显,我们在更改后,再设置了3级标签内容

e 3, 1, 12, 1 ‘原行标签级、列标签级、列总数均不变

el(1, 3) = "新加的"

el(6, 3) = "新加的2"

15、Footnote对象Font属性

返回目录

用途:重设图表行、列标签级别和行、列总数

示例:如果重设的标签级别数是比原有的更少,那么是从级数更高的标签删除,例如原有2级标签,现设为1

级,那么2级就会被删掉;行、列数也是相同的。如果重设的标签数跟行、列数比原有更多,则新产生的标签和

数据行、列均为空,需要再进行更改。

附录:

返回目录

1、chartType常数

VtChChartType3dBar

VtChChartType2dBar

VtChChartType3dLine

VtChChartType2dLine

VtChChartType3dArea

VtChChartType2dArea

VtChChartType3dStep

VtChChartType2dStep

VtChChartType3dCombination

VtChChartType2dCombination

VtChChartType2dPie

VtChChartType2dXY

3D 条形图

2D 条形图

3D 折线图

2D 折线图

3D 面积图

2D 面积图

3D 阶梯图

2D 阶梯图

3D 组合图

2D 组合图

2D 饼图

2D XY 散点图

0

1

2

3

4

5

6

7

8

9

14

16

2、3维柱形图代码

Private Sub Form_Load()

Dim 二维数组(1 To 2, 1 To 6)

'为了表示得更清楚,我们采取逐个赋值的方法

二维数组(1, 1) = 1

二维数组(1, 2) = 2

二维数组(1, 3) = 3

二维数组(1, 4) = 4

二维数组(1, 5) = 5

二维数组(1, 6) = 6

二维数组(2, 1) = 6

二维数组(2, 2) = 5

二维数组(2, 3) = 4

二维数组(2, 4) = 3

二维数组(2, 5) = 2

二维数组(2, 6) = 1

With MSChart1

.chartType = VtChChartType3dBar '类型为3d柱形图

.ChartData = 二维数组()

.riesInRow = True

End With

End Sub

3、2维1~12月代码:

Private Sub Form_Load()

Dim i As Integer

ype = VtChChartType2dBar '3维柱形

With id

.SetSize 2, 1, 12, 1 '2级行标签,1级列标签,12行,1列

.RandomDataFill '随机填充数据

'设置1~12行的1级标签

For i = 1 To 12

.RowLabel(i, 1) = i & "月"

Next

.RowLabel(1, 2) = "春季"

.RowLabel(4, 2) = "夏季"

.RowLabel(7, 2) = "秋季"

.RowLabel(10, 2) = "冬季"

End With

End Sub

'设置1行的2级标签内容

'设置4行的2级标签内容

'设置7行的2级标签内容

'设置10行的2级标签内容


发布者:admin,转转请注明出处:http://www.yc00.com/web/1717397736a2738049.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信