2013-04-05 110 views
0

中我试图修改现有VBA代码(EXCEL),使图表显示了使用“单元格”,并使其更加灵活。Excel的VBA图表 - >范围选择在图表

我知道下面的代码片段基本上做同样的事情:

Range(Cells(12, 2), Cells(15, 2)).Select  

是或多或少相同:

Range("B12:B15").Select  

我的目标是有一个曲线图,其代表行的灵活计数。

所以我已经改变了现有代码:

ActiveChart.SetSourceData Source:=Sheets("Log-Data").Range("B12:B200"), PlotBy:=xlColumns  

Dim LastRow As Integer 
LastRow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row  
ActiveChart.SetSourceData Source:=Sheets("Log-Data").Range(Cells(12, 2), Cells(LastRow, 2)), PlotBy:=xlColumns  

现在,每当我执行的代码,我收到:

运行时错误“1004 “:应用程序定义或对象定义的错误

LastRow变量是没有问题的:我也有同样的结果,如果我有200

我在做什么错更换呢?

干杯

彼得

+1

Whenver你使用'sheetname.Range(细胞(A,b),细胞(A2,B2))'你应该总是限定每个'细胞()'用个e表单引用:否则,'Cells()'将始终引用ActiveSheet,这可能不是你想要的。 – 2013-04-05 16:31:46

回答

0

LastRow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row

LastRow = ActiveSheet.UsedRange.Rows.Count

是相同的。

至于实际的错误去,它看起来好像你有当代码运行没有活动的图表对象。所以ActiveChart.返回一个对象错误。

试试这个:下面

Dim LastRow As Integer 
LastRow = ActiveSheet.UsedRange.Rows.Count 
ActiveSheet.Shapes.AddChart.Select 
ActiveChart.SetSourceData Source:=Sheets("Log-Data").Range(Cells(12, 2), Cells(LastRow, 2)), PlotBy:=xlColumns 
-2

尝试,让我知道

Dim LastRow As Integer 
LastRow = ActiveSheet.UsedRange.Rows.Count 

With Sheets("Log-Data") 
Set Myrange = .Range(Cells(12, 2), Cells(LastRow, 2)) 
End With 

ActiveSheet.Shapes.AddChart.Select 
ActiveChart.SetSourceData Source:=Myrange, PlotBy:=xlColumns 
0

我尝试了以下内容和它的作品(前加入细胞字一期)

Dim LastRow As Integer 
LastRow = ActiveSheet.UsedRange.Rows.Count 

With Sheets("Log-Data") 
Set Myrange = .Range(.Cells(12, 2), .Cells(LastRow, 2)) 
End With 

ActiveSheet.Shapes.AddChart.Select 
ActiveChart.SetSourceData Source:=Myrange, PlotBy:=xlColumns