2014-10-20 16 views
0

我有一个程序可以创建一个新工作表,将数据添加到该工作表,最后一部分应该是输出图表。当我尝试下面的代码,我得到“对象或变量或块变量未设置”excel vba图表使用该工作表的数据在不同的工作表上

请让我知道我要去哪里错了。谢谢。

Dim ws As Worksheet 
For Each ws In ActiveWorkbook.Worksheets 
    ws.Shapes.AddChart.Select 
    ActiveChart.SetSourceData Source:=Range("J2", Sheets(ws.Name).Range("L2").End(xlDown).Address) 
    ActiveChart.ChartType = xlLine 
    With ActiveChart.Parent 
    .Height = 400 
    .Width = 800 
    End With 
Next 
+0

在哪一行? – 2014-10-20 14:14:09

+0

你可以发布你设置ws的代码吗? – 2014-10-20 14:14:55

+0

@ vvba4all在这一行。 。 .ActiveChart.SetSourceData源:=范围(“J2”,表(ws.Name).Range(“L2”)。结束(xlDown)。地址) – user1681664 2014-10-20 14:20:27

回答

0

您正在使用逗号来创建带有字符串的范围。这只适用于范围对象。尝试: ActiveChart.SetSourceData Source:=ws.Range("J2:" & ws.Range("L2").End((xlDown).Address)

+0

谢谢,有人在之前建议过,但是它不起作用。此声明适用于活动表格,但不适用于其他表格 – user1681664 2014-10-20 14:39:14

0
With ws.ChartObjects.Add(Left:=100, Width:=375, Top:=75, Height:=225) 
.Chart.SetSourceData Source:=ws.Range("J2", Sheets(ws.Name).Range("L2").End(xlDown).Address) 
.Chart.ChartType = xlLine 
End With 
+1

考虑添加一些解释,为什么未设置“ActiveChart”变量。只有代码的答案通常是不鼓励的。 – 2014-10-20 16:09:39

0

在VBA回报变种很多对象存取的。 如果你有这个问题,例如chart.parent //返回变量btw 首先要尝试的是将它分配给一个类型变量 在运行时,如果变体被处理,就好像它是一个不同的类型,肯定会遇到运行时错误。

dim ws As Worksheet 
set ws = ActiveChart.Parent 
With ws 
    'ws operations here 
    .Name = "My worksheet!" 
    .Cells(1,1).Value = "cell A1" 
End With 

也是它值得一提的是,Workbook.Worksheets收藏还包含图表对象http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.workbook.worksheets.aspx

所以当您添加图表工作表你基本上是增加你遍历该集合,不建议。

0

更改为这样:

ActiveChart.SetSourceData来源:=范围(表(ws.Name).Range( “J2”),表格(ws.Name).Range( “L2”)结束( xlDown))

相关问题