Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2011, 21:45   #1
Zorg
Пользователь
 
Регистрация: 18.04.2008
Сообщений: 41
По умолчанию Множественный выбор в сводной таблице OLAP макросом

Люди добрые, помогите решить проблему!
Есть OLAP-куб, к сводной таблице которого в Excel обращается макрос.

В исполнении макрорекордера этот запрос выглядит так:
Sub Макрос()
With ActiveSheet.PivotTables("СводнаяТаб лица1").PivotFields("[Time].[Week]")
.CubeField.EnableMultiplePageItems = True
.AddPageItem "[Time].[Week].&[2.01048E5]", True
.AddPageItem "[Time].[Week].&[2.01049E5]"
.AddPageItem "[Time].[Week].&[2.0105E5]"
'(и так далее...)
End With
End Sub
То есть по неделям задается множественный выбор недель, что визуализируется через проставление галочек в выпадающем списке поля в сводной в измерении "Неделя", находящегося в поле фильтров.

Задача в том, что необходим макрос, который выбирал бы в сводной таблице OLAP-куба в указанном измерении "Неделя" значениz, список которых расположен в Листе1 в столбце A:A.
Загвоздка в том, что количество требуемых значений для выбора каждый раз разное (когда 3 недели, когда 5 и т.д.), но все их значения существуют в списке значений OLAP-куба.

У меня получаются только циклы с выбором 1-го значения, а вот как припаять туда возможность выбора множества значений - не могу понять.

Пока что смог сваять только вот это:

Sub УстановитьНеделю()
Dim Nedelya As String ' значение, выбираемое в списке OLAP, по логике их должно быть множество
Dim x As Integer ' Номер строки проверяемого значения в столбце А
Dim KolvoZnach As Integer ' кол-во проверяемых значений в столбце A

KolvoZnach = 10000


'выбираем ячейку в OLAP, чтобы активизировать OLAP-куб
Sheets("Куб").Activate
Sheets("Куб").Cells(10,8).Select

With ActiveWorkbook.Worksheets("Куб").Pi votTables("СводнаяТаблица1").PivotF ields("[Time].[Week]")
.CubeField.EnableMultiplePageItems = True

For x = 1 To KolvoZnach
If Sheets("Лист1").Cells(x, 1) <> "" Then
Nedelya = Sheets("Лист1").Cells(x, 1).Value
.AddPageItem "[Time].[Week].&[" & Nedelya & "]", True

End If
Next x

'Вот тут и загвоздка: как сделать чтобы макрос оставлял уже выбранное значение и просто добавлял следующее???

End With
End Sub


Помогите, пожалуйста!
Zorg вне форума Ответить с цитированием
Старый 12.11.2011, 23:55   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

так не прокатит?
Код:
For x = 1 To KolvoZnach
  If Sheets("Лист1").Cells(x, 1) <> "" Then
    Nedelya = Sheets("Лист1").Cells(x, 1).Value
    if x = 1 then 
      .AddPageItem "[Time].[Week].&[" & Nedelya & "]", True
    else
      .AddPageItem "[Time].[Week].&[" & Nedelya & "]"
    end if
  End If
Next x
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 13.11.2011, 09:31   #3
Zorg
Пользователь
 
Регистрация: 18.04.2008
Сообщений: 41
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
так не прокатит?
Код:
For x = 1 To KolvoZnach
  If Sheets("Лист1").Cells(x, 1) <> "" Then
    Nedelya = Sheets("Лист1").Cells(x, 1).Value
    if x = 1 then 
      .AddPageItem "[Time].[Week].&[" & Nedelya & "]", True
    else
      .AddPageItem "[Time].[Week].&[" & Nedelya & "]"
    end if
  End If
Next x
IgorGO, спасибо за ответ! В таком варианте кода получается, что макрос игнорирует значение x = 1 из списка, и все равно ставит последнее (где x = 2 или 3 или 4). То есть, если после x = 1, следует x = 2, то он возьмет именно только второе значение (при x = 2), проигнорировав первое (при x = 1).
Разве не так?
А нужно чтобы он уже ставил и первое, и второе значение в сводную.
Zorg вне форума Ответить с цитированием
Старый 14.11.2011, 10:41   #4
Zorg
Пользователь
 
Регистрация: 18.04.2008
Сообщений: 41
По умолчанию

Неужели никто не может подсказать алгоритм?
Добрые люди, ну помогите советом! Оч надо...
Zorg вне форума Ответить с цитированием
Старый 14.11.2011, 10:51   #5
Zorg
Пользователь
 
Регистрация: 18.04.2008
Сообщений: 41
По умолчанию

Все заработало, IgorGO, Ваш код как раз правильный, это я тупил.
Еще раз большое Спасибо!!!
Zorg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор периода в сводной таблице mrs.petrushina Microsoft Office Excel 2 08.03.2011 21:31
множественный выбор в dbgrid IvanKonst БД в Delphi 7 03.09.2010 16:27
множественный выбор dimast_bl_y Microsoft Office Access 1 09.07.2010 16:28
множественный выбор в cxGrid ~=DEN=~ Общие вопросы Delphi 1 20.05.2010 10:17
макросом обновить диапазон сводной Dorvir Microsoft Office Excel 4 28.09.2008 23:28