Хорошо, мастера VBA! Новичок здесь снова. Работа с данными куба OLAP.
На этот раз я застрял при попытке автоматически выбрать элемент слайсера (из другой группы слайсеров) на основе ранее выбранного элемента слайсера из другой группы.
Чтобы дать ему контекст, я пытаюсь выбрать одного и того же человека из двух разных слайсеров. Чтобы усложнить задачу, слайсеры используют разные дескрипторы для людей - то есть «Смит, Боб» используется в одном слайсере, а «123C - Смит, Боб» используется в другом слайсере.
Вот мой код:
Dim wb As Workbook
Dim slItem As SlicerItem
Dim slItem2 As SlicerItem
Dim sc3 As SlicerCache
Dim sc3L As SlicerCacheLevel
Dim sc4 As SlicerCache
Dim sc4L As SlicerCacheLevel
Set wb = ActiveWorkbook
Set sc3 = wb.SlicerCaches("Slicer_Primary_Account_List_Combo__BI")
Set sc4 = wb.SlicerCaches("Slicer_TM_Hierarchy")
Set sc3L = sc3.SlicerCacheLevels(1)
Set sc4L = sc4.SlicerCacheLevels(3)
sc3L.CrossFilterType = xlSlicerCrossFilterHideButtonsWithNoData
' Select the first person within the Sales Cube slicer
' This selects each slicer item in the Sales Cube and iterates through them
For Each slItem In sc3L.SlicerItems
If slItem.HasData Then ''' This ensures the iteration is only on items with data
sc3.ClearManualFilter
sc3.VisibleSlicerItemsList = Array(slItem.Name)
End If
Next
' Now ensure the same person is also selected within the BM Cube slicer
For Each slItem2 In sc4L.SlicerItems
sc4.ClearManualFilter ''' CODE WORKS UP TO HERE
If slItem2.Value = Mid(slItem.Value, 8, 30) Then ''' I am trying to force the selection on the second slicer by looking for the name match. But this is NOT working. BREAKPOINT.
slItem2.Selected = True
End If
Next
Я получаю ошибку времени выполнения 1004 в точке останова. Сказать, что это ошибка приложения или объекта.
Я слишком долго пытался исправить этот кусок кода - и мне нужен ваш опыт!
Конечная цель: мне нужен только 1 человек, выбранный на каждой итерации. И мне нужен один и тот же человек, выбранный на обоих слайсерах.
И ИДТИ!