是否可以使用组合框在 powerpoint 中控制图表?

Is it possible to control charts in powerpoint using combo box?

下图是我正在尝试做的一个例子。我的图表显示了一个月的资源容量。我从下拉列表中选择要查看数据的月份。虽然这是在 excel 中,但我正在尝试使用图表和 AxtiveX 控件在 Powerpoint 中执行相同的操作。有人可以指导我吗?

Chart and combobox example

使用标准的 Microsoft Forms 2.0 ComboBox 控件(我不使用 ActiveX 控件),这正是您要找的。

在图表所在的幻灯片上插入 ComboBox 控件。这假设图表数据存在于 ChartData.Workbook.Worksheets(1) 工作表的默认 ListBox 项中(即,当您直接在 PPT 中插入图表时会发生这种情况)如果您从 Excel,这可能需要修改,但大体思路是一样的:

  1. 当用户选择组合框时,(ComboBox1_GotFocus 查询图表的基础数据以填充列表。如果您的数据结构不同,则需要修改。
  2. 用户可以在组合框中进行选择。
  3. 选择后,ComboBox1_Change事件会识别包含所选系列的数据范围,并隐藏其他系列,这样只有所选系列可见

这是我的默认图表和数据,我可以通过 right-click/Edit 数据查看:

显示幻灯片,进入ComboBox会显示系列名称列表:

然后,更改选择,仅查看所选系列:

Option Explicit
'This code belongs in a SLIDE module in PowerPoint
Private Sub ComboBox1_Change()
'This procedure hides/unhides chart series, based on combobox value
    Dim rng As Object  'Excel.Range object
    Dim c As Long

    With Me.Shapes("Content Placeholder 5").Chart.ChartData  '## MODIFY YOUR SHAPE NAME
        .Activate
        .Workbook.Parent.WindowState = -4140
        For c = 2 To .Workbook.Worksheets(1).ListObjects(1).HeaderRowRange.Columns.Count
            Set rng = .Workbook.Worksheets(1).ListObjects(1).HeaderRowRange.Cells(c)
            rng.EntireColumn.Hidden = (rng.Value <> ComboBox1.Value)
        Next
        .Workbook.Close
    End With

End Sub

Private Sub ComboBox1_GotFocus()
'This procedure sets the list items in the combobox whenever it gets focus
Dim lst As Variant
Dim xlApp As Object
With Me.Shapes("Content Placeholder 5").Chart.ChartData  '## MODIFY YOUR SHAPE NAME
    .Activate
    .Workbook.Parent.WindowState = -4140
    Set xlApp = .Workbook.Parent
    .Workbook.Worksheets(1).Columns("B:D").Hidden = False
    lst = xlApp.Transpose(xlApp.Transpose(.Workbook.Worksheets(1).Range("B1:D1").Value))
    .Workbook.Close
End With
ComboBox1.List = lst
End Sub