Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用下拉列表(vba)更改图表数据范围_Vba_Excel_Graph - Fatal编程技术网

使用下拉列表(vba)更改图表数据范围

使用下拉列表(vba)更改图表数据范围,vba,excel,graph,Vba,Excel,Graph,我正在尝试使用下拉列表(vba)更改图表数据范围。这是我的密码: Sub SelectTable() With ActiveSheet.Shapes(Application.Caller).ControlFormat If ActiveSheet.Shapes(Application.Caller).Name = "Drop Down 2" Then Worksheets("Comparison").ChartObjects("Chart 8").Chart.SetSource

我正在尝试使用下拉列表(vba)更改图表数据范围。这是我的密码:

Sub SelectTable()

With ActiveSheet.Shapes(Application.Caller).ControlFormat
    If ActiveSheet.Shapes(Application.Caller).Name = "Drop Down 2" Then
    Worksheets("Comparison").ChartObjects("Chart 8").Chart.SetSourceData Source:= _
    Range(.List(.Value) & "[#All]")
    Worksheets("Comparison").ChartObjects("Chart 8").Chart.PlotBy = xlRows

End If

End With

End Sub
获取运行时错误:“1004”

选择下拉列表时

此外,此VBA将不基于任何透视表。它将在仪表板上进行更改


是的,图表是使用Pivot创建的,但下拉列表是UserForm和数据验证的组合

我假设列表框返回命名范围的字符串

Sub SelectTable()

With ActiveSheet.Shapes(Application.Caller).ControlFormat
    If ActiveSheet.Shapes(Application.Caller).Name = "Drop Down 2" Then
    Worksheets("Comparison").ChartObjects("Chart 8").Chart.SetSourceData Source:= _
    worksheet("sheetName??").Range(.Value & "[#All]")

    Worksheets("Comparison").ChartObjects("Chart 8").Chart.PlotBy = xlRows

End If

End With

End Sub

我假设您的列表框返回一个命名范围的字符串

Sub SelectTable()

With ActiveSheet.Shapes(Application.Caller).ControlFormat
    If ActiveSheet.Shapes(Application.Caller).Name = "Drop Down 2" Then
    Worksheets("Comparison").ChartObjects("Chart 8").Chart.SetSourceData Source:= _
    worksheet("sheetName??").Range(.Value & "[#All]")

    Worksheets("Comparison").ChartObjects("Chart 8").Chart.PlotBy = xlRows

End If

End With

End Sub

嗨,Eric K,即使在给出了Sheetname(比较)之后仍然得到了相同的结果。似乎所有代码都很好,我找不到任何错误。请检查指定的范围是否可访问->范围(.Value&“[#All]”)Hi Eric K即使给出了Sheetname,即“比较”,仍然得到相同的结果。似乎所有代码都很好,我找不到任何错误。请检查指定的范围是否可访问->范围(.Value&“[#All]”)