Dzwebs.Net

撰写电脑技术杂文十余年

excel录制宏疑难问题

Admin | 2007-10-8 22:59:09 | 被阅次数 | 10620

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆

一、问题背景:
Excel里已有6列数据
D列是时间,E列是对应到D列时间的数据,D列E列为一组等待制成XY散点图表(折线散点图)
F列是时间,G列是对应到F列时间的数据,F列G列为一组等待制成XY散点图表(折线散点图)
H列是时间,I列是对应到H列时间的数据,H列I列为一组等待制成XY散点图表(折线散点图)

二、问题目标:
我的目的是录制一个宏,成功后只要运行宏即可将D列和E列、F列和G列、H列和I列组合自动制成三个XY散点图表(折线散点图),

三、问题困难:
1、我在录制宏时,选中D列和E列两列后,插入图表,选择XY散点图,确定,录制完后,我发现他是记录下了D列和E列的第一行和最后一行,比如说我录制宏时的D列和E列一共有20行,那么以后我在别的一个10行或者50行的数据下运行宏时,他仍然都是以20行作图表,因此这个录好的宏实际是无用的
2、我录好的宏在运行时只能作为新工作表插入Chart1,不能作为其中的对象插入Sheet1,否则就出现错误
3、三组数据我只能一个一个录制宏,录制三种,无法一个宏就制作三次图表,否则就出现错误

应对办法:

下面这个宏可以完成三个图表的制作,缺点是三个图表叠加在一起,需要手工拖到适当位置。
Sub Macro1()
Charts.Add
ActiveChart.ChartType = xlXYScatterLines
ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("D:E"), PlotBy _
:=xlColumns
ActiveChart.SeriesCollection(2).Delete
ActiveChart.SeriesCollection(1).XValues = "=Sheet1!C4"
ActiveChart.SeriesCollection(1).Values = "=Sheet1!C5"
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
Charts.Add
ActiveChart.ChartType = xlXYScatterLines
ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("F:G"), PlotBy _
:=xlColumns
ActiveChart.SeriesCollection(2).Delete
ActiveChart.SeriesCollection(1).XValues = "=Sheet1!C6"
ActiveChart.SeriesCollection(1).Values = "=Sheet1!C7"
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
Charts.Add
ActiveChart.ChartType = xlXYScatterLines
ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("H:I"), PlotBy _
:=xlColumns
ActiveChart.SeriesCollection(2).Delete
ActiveChart.SeriesCollection(1).XValues = "=Sheet1!C8"
ActiveChart.SeriesCollection(1).Values = "=Sheet1!C9"
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
End Sub

注:工作表名为“Sheet1”。


该杂文来自: Excel杂文

上一篇:Excel中小数点的输入

下一篇:设置EXCEL表格的虚线!

网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231 访问统计