Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA скрипт / 9 сообщений из 9, страница 1 из 1
13.07.2017, 12:16
    #39488232
IDVT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA скрипт
Добрый день.

Подскажите пожалуйста, как в скрипте VBA вытащить самый нижний объект "строк", выбранный пользователем в сводной таблице.

Пока получается только вытащить все, ранее не работал с VBA, не совсем понимаю как можно проверить объект к принадлежности строк.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
Sub FInd()
With ActiveSheet.PivotTables("Сводная таблица1")
        For i = 1 To .PivotFields.Count
         MsgBox .PivotFields(i).Name
     
        Next
    End With
End Sub
...
Рейтинг: 0 / 0
13.07.2017, 13:22
    #39488346
IDVT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA скрипт
В таком варианте выводятся то что нужно, но как узнать порядок? т.е. мне нужен самый нижний атрибут, как получить некий индекс?

Код: sql
1.
2.
3.
4.
5.
6.
7.
Sub FInd()
With ActiveSheet.PivotTables("Ñâîäíàÿ òàáëèöà1")
        For i = 1 To .RowFields.Count
            MsgBox .RowFields(i).Name
        Next
    End With
End Sub
...
Рейтинг: 0 / 0
13.07.2017, 14:40
    #39488429
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA скрипт
IDVTВ таком варианте выводятся то что нужно, но как узнать порядок? т.е. мне нужен самый нижний атрибут, как получить некий индекс?

Код: sql
1.
2.
3.
4.
5.
6.
7.
Sub FInd()
With ActiveSheet.PivotTables("Ñâîäíàÿ òàáëèöà1")
        For i = 1 To .RowFields.Count
            MsgBox .RowFields(i).Name
        Next
    End With
End Sub



Убрать цикл и подставить .RowFields.Count вместо i.
...
Рейтинг: 0 / 0
13.07.2017, 16:10
    #39488542
IDVT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA скрипт
Не, не совсем то, нужно как то обыграть через "MsgBox .RowFields(i).Position" т.е. вывести имя объекта у которого позиция в сводной таблице = RowFields.Count.

Но пока не нашел как это сделать...
...
Рейтинг: 0 / 0
13.07.2017, 16:33
    #39488561
IDVT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA скрипт
Вот таким образом, я получаю корректное значение. Как избавиться от цикла, он тут совсем не к месту?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Sub FInd()
With ActiveSheet.PivotTables("Сводная таблица1")
     CountRF = .RowFields.Count
     For i = 1 To CountRF
         PositionRF = .RowFields(i).Position
         If PositionRF = CountRF Then
            MsgBox .RowFields(i).Name
         End If
     Next
End With
End Sub
...
Рейтинг: 0 / 0
13.07.2017, 16:50
    #39488571
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA скрипт
IDVT,

Видимо, я плохо объяснил, что имел в виду.

Код: vbnet
1.
MsgBox .RowFields(.RowFields.Count).Name
...
Рейтинг: 0 / 0
13.07.2017, 17:21
    #39488593
IDVT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA скрипт
Неее, все отлично объяснили. Дело в том, что, порядок кривой, к примеру индекс максимальной позиции (он же «.RowFields.Count») не соответствует индексу «.RowFields(i).Position», т.е.:

MsgBox .RowFields(.RowFields.Count).Name

Не всегда возвращает имя самого нижнего элемента, такое ощущение что сортирует по алфовиту. Мой пример работает корректно всегда, но ХЗ как уйти от цикла. Можно как то выдрать Имя строки по номеру "Position"?
...
Рейтинг: 0 / 0
13.07.2017, 20:07
    #39488686
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA скрипт
IDVTНеее, все отлично объяснили. Дело в том, что, порядок кривой, к примеру индекс максимальной позиции (он же «.RowFields.Count») не соответствует индексу «.RowFields(i).Position», т.е.:

MsgBox .RowFields(.RowFields.Count).Name

Не всегда возвращает имя самого нижнего элемента, такое ощущение что сортирует по алфовиту. Мой пример работает корректно всегда, но ХЗ как уйти от цикла. Можно как то выдрать Имя строки по номеру "Position"?

Значит я невнимательно читал :) Тогда боюсь не смогу помочь. Полагаю, что без цикла ни как.
...
Рейтинг: 0 / 0
26.07.2017, 12:20
    #39495191
IDVT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA скрипт
Коллеги, а теперь заоблачный вопрос моего не знания VBA


--------------------------------------
При работе с кубом, мне необходимо выполнить сценарий VBA (т.е. макрос) до того момента как Excel отправит запрос к SSAS, это возможно? т.е. мне необходимо установить определенное значение атрибута (фильтр) для корректного расчета меры. Все это делаю по простой причине - в Табулярке нет функции Axis(Axis_Number), приходится выкручиваться....
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA скрипт / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]