Страницы: 1
RSS
Выделение элементов среза VBA
 
Добрый день!

Хочу в срезе выбрать предыдущий день и у меня это получается в случае, если данные не в модели данных.
Если тянуть данные из базы или из модели, скрипт сразу перестает работать. Перепробовал как мне кажется все типы данных , даже в базе создавал колонку с датой в формате строки (55333).
В файле 2 листа и 2 скрипта. На их примере можно посмотреть, что первый скрипт отрабатывает (из таблички), а второй нет (из модели данных)

Нашел на форуме похожий вопрос , но он остался без внимания(
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=141564


По скрипту.
В VBA полный ноль :)
 
DanKo, добрый день.
У меня и "из таблички" не работал, пока не сделал полный год в дате:
Код
formattedDate = Format(currentDate, "dd.mm.yyyy")
По поводу "из модели данных" - тут срез без .SlicerItems, но с заполненным ".SlicerCacheLevels(1).SlicerItems", которые всё равно менять нельзя (видимо, из-за подключения к внешним данным).
Срабатывает такой код:
Код
formattedDate = Format(currentDate, "yyyy-mm-dd")
ActiveWorkbook.SlicerCaches("Срез_период1").VisibleSlicerItemsList = Array( _
    "[Сводный для модели].[период].&[" + formattedDate + "T00:00:00]")
Это всё можно смотреть в макро-рекордере, успехов.
 
andypetr, так я тоже пробовал, но проблема в том что я не знаю как в эту часть "T00:00:00]" подставить переменную , например Date.
Я каждый день подливаю отчеты по продажам за вчерашний день и меня есть маленький скриптик, который автоматически обновляет несколько отчетов, но все ровно приходится заходить в файлы для выставления вчерашней даты в срезе.
 
Цитата
я не знаю как в эту часть "T00:00:00]" подставить переменную , например Date.
Не понял проблемы. Вот кусок кода, который я написал:
Код
formattedDate = Format(currentDate, "yyyy-mm-dd")
ActiveWorkbook.SlicerCaches("Срез_период1").VisibleSlicerItemsList = Array( _
    "[Сводный для модели].[период].&[" + formattedDate + "T00:00:00]")
Он выдаёт нужный результат (устанавливается срез на 23 апреля):
Код
formattedDate = "2024-04-23"
ActiveWorkbook.SlicerCaches("Срез_период1").VisibleSlicerItemsList = Array( _
    "[Сводный для модели].[период].&[2024-04-23T00:00:00]")
 
andypetr, Прошу прощения, все действительно работает
Спасибо огромное
Страницы: 1
Наверх