我正在尝试修改现有的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 替换它,我会得到相同的结果。
我做错了什么?
干杯
彼得
Worksheets("Log-Data").Activate
LastRow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
ActiveChart.SetSourceData Source:=Sheets("Log-Data").Range(Cells(12, 2), Cells(LastRow, 2)), PlotBy:=xlColumns
Worksheets("NAME_CHEET_CHART").Activate
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
我尝试了以下方法,它有效(在单元格单词之前添加句点)
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
尝试以下并让我知道
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