更改 powerpoint 中图表的数据源 vba
Changing data source of chart in powerpoint vba
我在 PowerPoint 中有一个条形图,并希望 select 行(类别 1 - 4,请参阅屏幕截图 1),具体取决于我在 ComboBox 中的 selection。
到目前为止,这是我的代码:
Private Sub ComboBox1_Change()
With SlideShowWindows(1).View
Select Case ComboBox1.Value
Case "Category 1"
Case "Category 2"
Case Else
End Select
End With
End Sub
当没有单独的 Excel-Sheet 时,我不知道如何 select 源数据。 PowerPoint中只有插入图表时生成的“Excel-Sheet”。
您的图表包含在 Shape
对象中,您可以按照 this answer 的建议通过 Shape.Chart.ChartData.Workbook.Sheets(1)
访问源数据。
根据你的问题我了解到你希望图表只显示所选的类别。您可以隐藏您不想在源数据中显示的行,它们将隐藏在图表中。
这会用类别 1-4 填充 ComboBox1
。
Private Sub ComboBox1_DropButtonClick()
With ComboBox1
If .ListCount = 0 Then
.AddItem "Category 1", 0
.AddItem "Category 2", 1
.AddItem "Category 3", 2
.AddItem "Category 4", 3
End If
End With
End Sub
然后你可以用这样的东西隐藏你不想显示的行。
Private Sub ComboBox1_Change()
Dim shp As Shape: Set shp = ActivePresentation.SlideShowWindow.View.Slide.Shapes("Chart 3") ' Change to your chart name here
Dim rw As Integer, j As Integer
Select Case ComboBox1.Value
Case "Category 1"
rw = 2
Case "Category 2"
rw = 3
Case "Category 3"
rw = 4
Case "Category 4"
rw = 5
Case Else
Exit Sub
End Select
For j = 2 To 5
shp.Chart.ChartData.Workbook.sheets(1).Rows(j).Hidden = (j <> rw)
Next j
End Sub
截图
我在 PowerPoint 中有一个条形图,并希望 select 行(类别 1 - 4,请参阅屏幕截图 1),具体取决于我在 ComboBox 中的 selection。 到目前为止,这是我的代码:
Private Sub ComboBox1_Change()
With SlideShowWindows(1).View
Select Case ComboBox1.Value
Case "Category 1"
Case "Category 2"
Case Else
End Select
End With
End Sub
当没有单独的 Excel-Sheet 时,我不知道如何 select 源数据。 PowerPoint中只有插入图表时生成的“Excel-Sheet”。
您的图表包含在 Shape
对象中,您可以按照 this answer 的建议通过 Shape.Chart.ChartData.Workbook.Sheets(1)
访问源数据。
根据你的问题我了解到你希望图表只显示所选的类别。您可以隐藏您不想在源数据中显示的行,它们将隐藏在图表中。
这会用类别 1-4 填充 ComboBox1
。
Private Sub ComboBox1_DropButtonClick()
With ComboBox1
If .ListCount = 0 Then
.AddItem "Category 1", 0
.AddItem "Category 2", 1
.AddItem "Category 3", 2
.AddItem "Category 4", 3
End If
End With
End Sub
然后你可以用这样的东西隐藏你不想显示的行。
Private Sub ComboBox1_Change()
Dim shp As Shape: Set shp = ActivePresentation.SlideShowWindow.View.Slide.Shapes("Chart 3") ' Change to your chart name here
Dim rw As Integer, j As Integer
Select Case ComboBox1.Value
Case "Category 1"
rw = 2
Case "Category 2"
rw = 3
Case "Category 3"
rw = 4
Case "Category 4"
rw = 5
Case Else
Exit Sub
End Select
For j = 2 To 5
shp.Chart.ChartData.Workbook.sheets(1).Rows(j).Hidden = (j <> rw)
Next j
End Sub
截图