使用该表格的数据在另一张纸上使用excel vba图表

时间:2014-10-20 14:11:18

标签: excel vba 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

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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

答案 2 :(得分: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

因此,当您添加图表时,您实际上是在添加到正在迭代的集合中,而不建议使用该工作表。

答案 3 :(得分:0)

更改为:

ActiveChart.SetSourceData Source:= Range(Sheets(ws.Name).Range(" J2"),Sheets(ws.Name).Range(" L2")。End (xlDown))