Страницы: 1
RSS
Ошибка при попытке передать в .PivotFields одномерный массив значений фильтра
 
Пожалуйста помогите.
У меня стоит задача установить фильтр в сводной таблице исходя из выбранных нескольких значений в ListBox.

Написал такой код:
Код
Sub btFilter_Click()
Dim iList()
Dim x As Integer
x = 0

UserFormFilter1.Show
ReDim iList(UserFormFilter1.ListBox1.ListCount)

For i = 0 To UserFormFilter1.ListBox1.ListCount - 1 Step 1
    
    If UserFormFilter1.ListBox1.Selected(i) Then
        iList(x) = UserFormFilter1.ListBox1.List(i, 0)
        'MsgBox iList(x)
        x = x + 1
    End If
Next i

ReDim Preserve iList(x - 1)
ActiveSheet.PivotTables("СводнаяТаблица2").PivotFields( _
        "[tbBasePLBS].[Тип_отчетности].[Тип_отчетности]").VisibleItemsList = iList

End Sub

На команде присвоения фильтру сводной таблицы значений массива выбранных пунктов выдает ошибку 1004
Не могу разобраться что я делаю не так.
 
В справке для свойства "VisibleItemsList" написано, что это свойство используется только для OLAP. У Вас OLAP?
 
Наверное нет, так как  сводная таблица сформирована на отдельном листе из таблицы из этой же книги.
Команда установки фильтра записана макрорекордем. В ней я изменил значение фильтра с Array ("....", "...", ..") на переменную iList
Наверно я неправильно формирую в массиве значения фильтра.
Изменено: Troglodit - 31.07.2017 09:37:17
 
Попробую щас сделать по аналогии с таким вот найденным кодом. Потом отпишусь.
Код
Sub Make_VisibleItems_Array()    Dim vVisibleList() As Variant, vPCodes As Variant
    Dim i As Long    

    vPCodes = Split("AB11,AB12,M2,M3,M4,M5,M6,M7,M8,M9,N1,N2,N3,N4,AB13", ",")     

    ReDim vVisibleList(LBound(vPCodes) To UBound(vPCodes))
    For i = LBound(vPCodes) To UBound(vPCodes)
        vVisibleList(i) = "[Postal District].[Postal District].&[" & vPCodes(i) & "]"
    Next i

    ActiveSheet.PivotTables("PivotTable6").PivotFields( _
        "[Postal District].[Postal District].[Postal District]") _
            .VisibleItemsList = vVisibleList
End Sub
 
У меня макрорекордер пишет такой код:
Код
.PivotItems("наим").Visible = False

Лучше сделайте файл с примером, чтобы участники форума могли тестировать. Свой файл можете не выкладывать, а сделайте файл специально для форума.
 

Все получилось. Действительно в значения фильтра нужно заполнять по определенным правилам, указывая и поля к которым он относится.
Готовый рабочий результат таков:

Код
Sub btFilter_Click()
Dim iList()
Dim x As Integer
x = 0UserFormFilter1.Show
ReDim iList(UserFormFilter1.ListBox1.ListCount)For i = 0 To UserFormFilter1.ListBox1.ListCount - 1 Step 1
    
    If UserFormFilter1.ListBox1.Selected(i) Then
        iList(x) = "[tbBasePLBS].[Тип_отчетности].&[" & UserFormFilter1.ListBox1.List(i, 0) & "]"
        'MsgBox iList(x)
        x = x + 1
    End If
Next i
ReDim Preserve iList(x - 1)

ActiveSheet.PivotTables("СводнаяТаблица2").PivotFields( _
       "[tbBasePLBS].[Тип_отчетности].[Тип_отчетности]").VisibleItemsList = iList

End Sub
Изменено: Troglodit - 31.07.2017 08:50:37
 

Друзья, помогите, пожалуйста. У меня подобная задача, только нужно в фильтре отобразить те данные которые отображены в А1:А10.
Иными словами пользователь вводит в ячейки А1:А10 список магазинов и с помощью макроса они отображаются в Олап Кубе в фильтре. В макросах новичок, буду признателен если распишите подробней. Спасибо большое

Изменено: bambucha - 24.07.2019 10:28:06
 
Файл-пример в студию. Как есть - Как надо
Согласие есть продукт при полном непротивлении сторон
 
Цитата
bambucha написал:
Друзья, помогите, пожалуйста. У меня подобная задача, только нужно в фильтре отобразить те данные которые отображены в А1:А10.  Иными словами пользователь вводит в ячейки А1:А10 список магазинов и с помощью макроса они отображаются в Олап Кубе в фильтре. В макросах новичок, буду признателен если распишите подробней. Спасибо большое
Люди, помогите пожалуйста!
 
bambucha, создайте отдельную тему с названием, отражающим суть задачи. Здесь - о listBox.
И не нужно копию считать цитатой
Страницы: 1
Наверх