Слегка модифицируя этот ответ :
- Создать и заполнить
ComboBox1
с "Bus 1"
до "Bus 22"
.
Private Sub ComboBox1_DropButtonClick()
Dim i As Integer
With ComboBox1
If .ListCount = 0 Then
For i = 1 To 22
.AddItem "Bus " & i, i - 1
Next i
End If
End With
End Sub
Затем вместо того, чтобы скрывать строки, фактически измените исходные данные диаграммы, используя Chart.SetSourceData
. Для этого:
- Добавить ссылку на Библиотеку объектов Microsoft Excel в Инструменты> Ссылки .
Find
ComboBox1.Value
на Worksheet
и получите соответствующий диапазон исходных данных.
- Затем используйте
SetSourceData
с объединенной ссылкой на Worksheet
s Name
и Address
Исходных данных
Private Sub ComboBox1_Change()
Dim shp As Shape: Set shp = ActivePresentation.SlideShowWindow.View.Slide.Shapes("Chart 5") ' Change to your chart name
Dim rng As Excel.Range, dataRng As Excel.Range
Dim ws As Excel.Worksheet: Set ws = shp.Chart.ChartData.Workbook.Sheets(1)
With ws
Set rng = .Cells.Find(ComboBox1.Value)
If Not rng Is Nothing Then
' Data rng starts 1 column to the right and spans 2 rows
Set dataRng = .Range(rng.Offset(, 1), rng.End(xlToRight).Offset(1))
shp.Chart.SetSourceData Source:="='" & .Name & "'!" & dataRng.Address, PlotBy:=xlRows
End If
End With
End Sub