0

我正在尝试修改现有的 VBA 代码 (Excel),它可以制作图表,并使其更加灵活。

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

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 替换它,我会得到相同的结果。

我究竟做错了什么?

干杯

彼得

4

3 回答 3

-1

我尝试了以下并且它有效(在 Cells 单词之前添加一个句点)

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
于 2014-08-21T06:30:55.660 回答
-1

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
于 2013-07-23T15:08:17.940 回答
-3

试试下面,让我知道

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
于 2014-02-24T16:15:18.983 回答