Макрос срабатывает 50% времени при смене слайсера

У меня есть особая проблема, и я не мог найти никакого решения в Интернете.

Итак, у меня есть сводная таблица, которая связана с 6 слайсерами, а также диаграмма, диапазон данных которой зависит от значений сводной таблицы.

Я создал макрос, который обновляет масштаб диаграммы каждый раз, когда изменяется значение в любой из ячеек таблицы. Вот макрос:

Public Sub worksheet_Change(ByVal Target2 As Range)
If ActiveSheet.Name = "Dashboard" Then
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.DataEntryMode = xlOff
 'Chart_axis Macro

Sheets("Dashboard").ChartObjects("Chart 9").Activate
If ActiveSheet.Range("B19") = "excluding CE" Then
    ActiveChart.Axes(xlValue).MinimumScale = Range("E3").Value
    ActiveChart.Axes(xlValue).MaximumScale = Range("E4").Value
Else
    ActiveChart.Axes(xlValue).MinimumScale = Range("A3").Value
    ActiveChart.Axes(xlValue).MaximumScale = Range("A4").Value
End If

ActiveChart.Refresh
ActiveSheet.Range("B18").Select
Application.EnableEvents = True
Application.ScreenUpdating = True
End If

End Sub

Чтобы работать по назначению, мне также нужно было создать функцию, которая считывает активные элементы слайсера:

Public Function GetSelectedSlicerItems(SlicerName As String) As String
Application.Volatile
Set coll = New Collection
Dim cache As Excel.SlicerCache
Dim i As Integer
Set cache = ActiveWorkbook.SlicerCaches(SlicerName)
Dim sItem As Excel.SlicerItem
Dim result As String
For Each sItem In cache.SlicerItems
If sItem.Selected And sItem.HasData Then
    'Debug.Print sItem.Name
    'Debug.Print sItem.HasData
    'GetSelectedSlicerItems = (sItem.Name)
    coll.Add sItem.Name
    End If
Next sItem
For i = 1 To coll.Count
'Debug.Print coll(i)
 result = result & coll(i) & ", "
Next i
result = Left(result, Len(result) - 2)
GetSelectedSlicerItems = result
End Function

Моя проблема в том, что, хотя значение функции всегда обновляется при изменении элемента слайсера, макрос делает это только случайным образом примерно в 50% случаев.

Скриншот моего отчета:

img1

Формулы, содержащие выбранную функцию элементов слайсера, находятся в правом верхнем углу.

Так есть ли у вас идеи, как заставить его работать в 100% случаев?

Заранее спасибо,

Алан

Изменить: я забыл добавить, что это только проблема, если выделен только один слайсер. Когда я выбираю несколько слайсеров (Ctrl+ клик), это всегда работает.

0 ответов

Другие вопросы по тегам