Excel VBA图表->使用图表中的“单元格”选择范围

wnavrhmk  于 2023-02-14  发布在  其他
关注(0)|答案(4)|浏览(227)

我试图修改一个现有的VBA代码(Excel),使图表图形,并使其更加灵活。
我知道下面的代码基本上做同样的事情:

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

或多或少等同于:

Range("B12:B15").Select

我的目标是有一个Graph,它表示灵活的行数。
所以我改变了现有的代码:

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来代替它,我会得到同样的结果。
我哪里做错了?
干杯
彼得

v09wglhw

v09wglhw1#

工作表(“日志-数据”)。激活
LastRow =活动工作表.已用范围.行(活动工作表.已用范围.行.计数).行
ActiveChart.设置源数据源:=工作表(“Log-Data”).范围(单元格(12,2),单元格(最后一行,2)),绘图依据:=xlColumns
工作表(“名称_CHEET_图表”)。激活

uklbhaso

uklbhaso2#

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
u4dcyp6a

u4dcyp6a3#

我尝试了下面的方法,它起作用了(在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
tzxcd3kk

tzxcd3kk4#

试试下面的,让我知道

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

相关问题