下面的图片是我想要做的一个例子。我的图表显示了资源的月份容量。我从下拉列表中选择要查看数据的月份。虽然这是excel,但我尝试使用图表和AxtiveX控件在Powerpoint中做同样的事情。有人可以指导我吗?
答案 0 :(得分:0)
使用标准的Microsoft Forms 2.0 ComboBox控件(我不使用ActiveX控件),这正是您所需要的。
将ComboBox控件插入到图表所在的幻灯片中。这假设图表数据存在于ListBox
工作表的默认ChartData.Workbook.Worksheets(1)
项目中(即,当您从PPT中直接插入图表时会发生这种情况)如果您从Excel复制图表,这可能需要修改,但总体思路是一样的:
ComboBox1_GotFocus
查询图表的基础数据以填充列表。如果您的数据结构不同,则需要修改。ComboBox1_Change
事件将识别包含所选系列的数据范围,并隐藏其他系列,以便只显示所选系列这是我的默认图表&右键单击/编辑数据我可以查看的数据:
显示幻灯片,进入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