求助VB利用EXCEL画趋势图

bigbillybear 2010-04-30 05:31:24
各位大侠,我想用以下代码实现画趋势图的功能,即安排两个按键,分别话A列和B列的图并显示,遇到了RANGE方法的global问题,网上方法很多,但是都不太好用,请大家指点

PS:为了显示做得图,我把EXCEL的关闭程序注释掉了,点Command1可以做出来,但是关闭图后,再点击Command2就会报错
,即使我使用注释掉的程序,但是还是会有此问题,而且进程里的EXCEL.EXE关不掉,请大家赐教,要是能有别的方式完成趋势图也可以说说,但是数据是保存在EXCEL里的不同列中。

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

Private Sub Command1_Click()

Range("A:A").Select
xlApp.DisplayAlerts = False
Charts.Add.ChartWizard gallery:=xlLine, HasLegend:=False, Title:="折线图表", ValueTitle:="PH值", _
Format:=2
xlApp.Visible = True

' Set xlSheet = Nothing
' xlBook.Close
' Set xlBoook = Nothing
' xlApp.Quit
' Set xlApp = Nothing

End Sub

Private Sub Command2_Click()
Range("B:B").Select
xlApp.DisplayAlerts = False
Charts.Add.ChartWizard gallery:=xlLine, HasLegend:=False, Title:="折线图表", ValueTitle:="PH值", _
Format:=2
xlApp.Visible = True

' Set xlSheet = Nothing
' xlBook.Close
' Set xlBoook = Nothing
' xlApp.Quit
' Set xlApp = Nothing
End Sub
...全文
982 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
bigbillybear 2010-05-06
  • 打赏
  • 举报
回复
我现在已经找到修改activechart的title的语句了,写出来大家共勉


.HasTitle = True
.ChartTitle.Characters.Text = "服务器"

可见和一般方法.title="123"的方法不一样
soundbird_qian 2010-05-06
  • 打赏
  • 举报
回复
路过,友情顶一下,UpUp
bigbillybear 2010-05-06
  • 打赏
  • 举报
回复
最近发现objExlApp.ActiveChart.SeriesCollection(1).Values = yx()
当yx()数组数量太大的时候就会出现错误。。。。。。
是不是我objExlApp.ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("O24"), PlotBy:=xlRows的范围定的不对??
贝隆 2010-05-05
  • 打赏
  • 举报
回复
UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP
bigbillybear 2010-05-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tww844475003 的回复:]
'引用Microsoft Excel 9.0 Object Library (后面为版本号)

Dim objExlApp As New Excel.Application

Private Sub Command1_Click()
objExlApp.Workbooks.Add
objExlApp.Charts.Add
objExlApp.ActiveChart.Cha……
[/Quote]
LS的代码很好的解决了我的需求,只是我需要把赋值改为数组变量,顺便问个问题,关于这句话
objExlApp.ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("O24"), PlotBy:= _
xlRows
这句代码是什么意思??如果我没有指定读取某个EXCEL表格里的数据作图,那么Sheets("Sheet1").Range("O24")是指向哪里的呢???
伍哥的传说 2010-05-04
  • 打赏
  • 举报
回复
'引用Microsoft Excel 9.0 Object Library (后面为版本号)

Dim objExlApp As New Excel.Application

Private Sub Command1_Click()
objExlApp.Workbooks.Add
objExlApp.Charts.Add
objExlApp.ActiveChart.ChartType = xlLine
objExlApp.ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("O24"), PlotBy:= _
xlRows
objExlApp.ActiveChart.SeriesCollection.NewSeries
objExlApp.ActiveChart.SeriesCollection.NewSeries
objExlApp.ActiveChart.SeriesCollection(1).XValues = "={2003,2004,2004,2005,2006}"
objExlApp.ActiveChart.SeriesCollection(1).Values = "={100,200,300,400,500}"
objExlApp.ActiveChart.SeriesCollection(1).Name = "=""第一记录"""
objExlApp.ActiveChart.SeriesCollection(2).Values = "={900,1000,300,1000,400}"
objExlApp.ActiveChart.SeriesCollection(2).Name = "=""第二记录"""
objExlApp.ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
With objExlApp.ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
objExlApp.Visible = True
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
objExlApp.Quit
Set objExlApp = Nothing
End Sub
'不知道这个可以没
bigbillybear 2010-05-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ning1958 的回复:]
看了这个程序理论好像是对的,像这种程序,一般是先在Excel调试好后,再转到VB,只改几参数.
这么看有点看不清,建议先到ExcelHome先帖附件.根据附件好帮助你调试成功.
看这种程序有点晕.
[/Quote]

是说要用VBA的方法吗??
bigbillybear 2010-05-04
  • 打赏
  • 举报
回复
我使用数组读取EXCEL不同列,然后再调用3l的代码可以解决问题,但是有个问题就是修改图标属性时,出现错误提示,对象不支持该属性和方法

objExlApp.ActiveChart.ChartTitle = "pH值"

我尝试用ChartWizard修改图标

objExlApp.ActiveChart.ChartWizard HasLegend:=False

但是提示对象ChartWizard 的方法_chart失效,请问我该怎么修改呢??
bigbillybear 2010-05-04
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 rkdrc 的回复:]
objExlApp.ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("O24"), 就是趋势图指向的区域值 O24应该是定义的一名称区域
[/Quote]

这个我知道,但是2楼的程序是自己赋值作图的啊,为什么还需要指向一个区域值呢??sheet1还可以理解,就是在add的sheet1里显示做的图,但是"024"代表什么呢??我试了下"048"貌似也没区别
rkdrc 2010-05-04
  • 打赏
  • 举报
回复
objExlApp.ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("O24"), 就是趋势图指向的区域值 O24应该是定义的一名称区域

ning1958 2010-04-30
  • 打赏
  • 举报
回复
看了这个程序理论好像是对的,像这种程序,一般是先在Excel调试好后,再转到VB,只改几参数.
这么看有点看不清,建议先到ExcelHome先帖附件.根据附件好帮助你调试成功.
看这种程序有点晕.

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧