VBA使用保存范围作为图表的输入
在VBA中进行匹配操作后-我得到一个范围变量VBA使用保存范围作为图表的输入,vba,excel,Vba,Excel,在VBA中进行匹配操作后-我得到一个范围变量 Set rngSel = ActiveSheet.Range(Cells(3, 28).Offset(0, startIdx - 1), Cells(3, 28).Offset(0, endIdx - 1)) 它告诉我,我想在条形图中显示的数据在A3和Z3之间(总是在一行中),例如。我也可以打印这个 MsgBox ("rngSel=" & rngSel.Cells.Address) 但是,现在我想使用rngSel为我的图表提供输入。我
Set rngSel = ActiveSheet.Range(Cells(3, 28).Offset(0, startIdx - 1), Cells(3, 28).Offset(0, endIdx - 1))
它告诉我,我想在条形图中显示的数据在A3和Z3之间(总是在一行中),例如。我也可以打印这个
MsgBox ("rngSel=" & rngSel.Cells.Address)
但是,现在我想使用rngSel为我的图表提供输入。我试过了
ActiveChart.SetSourceData Source:=Sheets("Diagramm 1").rngSel
然而,这不起作用。rngSel仅提供x坐标范围(例如A3到Z3。y值在A4到Z4之间。基于rngSel对象,我如何告诉我的图表1仅从中获取数据
A3:Z4?不手动指定,但动态使用rngSel
全宏
Sub Aku()
Dim startIdx As Integer, endIdx As Integer
Set valRng = ActiveSheet.Range("AB3:LS3")
startIdx = Application.Match(CLng(Cells(2, 18).Value), valRng, 0)
endIdx = Application.Match(CLng(Cells(2, 22).Value), valRng, 0)
Set rngSel = ActiveSheet.Range(Cells(3, 28).Offset(0, startIdx - 1), Cells(3, 28).Offset(0, endIdx - 1))
MsgBox ("rngSel=" & rngSel.Cells.Address)
ActiveChart.SetSourceData Source:=rngSel.Resize(2), PlotBy:=xlRows
End Sub
在OP进一步澄清后编辑 试试这个:
Sub Aku()
Dim startIdx As Integer, endIdx As Integer
Dim rngSel As Range, valRng As Range
With ActiveSheet
Set valRng = .Range("AB3:LS3")
startIdx = Application.Match(CLng(Cells(2, 18).Value), valRng, 0)
endIdx = Application.Match(CLng(Cells(2, 22).Value), valRng, 0)
Set rngSel = .Range(Cells(3, 28).Offset(0, startIdx - 1), Cells(3, 28).Offset(0, endIdx - 1))
End With
Worksheets("Sheet 1").ChartObjects("Diagramm 1").Chart.SetSourceData Source:=rngSel.Resize(2), PlotBy:=xlRows
End Sub
它假设您正在运行此宏,而活动工作表是从中读取值的工作表只有rngsel可以执行此操作。或ActiveChart.SetSourceData:=工作表(“图表1”)。范围(rngsel.address)不一定能满足您的要求,但可能是“rngsel.Resize(2)”这就是你要找的-我在rngSel中存储了一个从A3到Z3的范围-但是图表源应该是A3到z4-如果我使用nathan解决方案,我会遇到一个调试错误-有人能帮忙吗?有一个错误,debuggin语句中缺少一个对象变量或with block变量。它不应该是ActiveChart.SetSourceData Sou吗rce:=rngSel.Resize(2,),PlotBy:=xlRows-但是我无法编译,但是我想在范围中添加一行而不是一列-?@Sonnecken56,你通过了吗?所以我又遇到了同样的错误-是不是图表1部分不在那里的问题?对象变量还是带变量错误的块-又一次。我在问题中粘贴了我的整个宏,如果我执行ActiveChart.SetSourceData源:=Sheets(“图表1”).rngSel.Resize(2)-我得到一个索引超出范围的错误