У меня проблема, которая ломает голову уже пару дней, вот и решил поделиться с вами, может вы уже сталкивались с такой же проблемой.
=== это контекст: ===
Я работаю над этим файлом Excel, где у меня есть, среди прочего, эти три вкладки: - одна, называемая «Данные», где я храню данные, которые мне нужны для файла, в обычной таблице; - второй, называемый "Диаграмма_1", где находятся сводная_таблица_1 и диаграмма_1. Источник для этих объектов находится во вкладке «Данные». - третья вкладка называется "Диаграмма_2" и содержит сводную_таблицу_2 и диаграмму_2. Эти объекты также берутся из вкладки «Данные». У меня есть пять слайсеров на вкладке «Диаграмма_1» и еще пять на вкладке «Диаграмма_2». Все слайсеры подключены к обеим сводным_таблицам, которые находятся на вкладках «График*». Я использовал VBA для форматов диаграмм на вкладках, как события Worksheet_Change.
=== вот в чем проблема: ===
Когда я выбираю что-то в слайсере (в зависимости от того, что является вкладкой «Диаграмма*»), он всегда активирует «Диаграмма_2». Если я щелкну один из слайсеров на вкладке «Диаграмма_1», когда макросы закончат работу, активируется вкладка «Диаграмма_2». Когда я нажимаю на один из слайсеров на вкладке «Диаграмма_2», все в порядке, потому что активированная вкладка не меняется. Какой бы слайсер я ни использовал (в какую бы вкладку он ни был встроен), VBA всегда сначала запускает Worksheet_Change «Chart_1», а затем Worksheet_Change «Chart_2». Я думаю, что это происходит из-за подключений фильтра: когда я нажимаю на один слайсер, он запускает все затронутые события Worksheet_Change.
=== это то, что я уже пробовал: ===
- есть глобальная переменная, в которой я храню имя соответствующей вкладки работы. Не сработало, потому что выполняются оба макроса с обеих вкладок. Я пробовал то же самое со счетчиком и тоже потерпел неудачу.
- ищите событие OnClick, где я мог бы сохранить имя вкладки, на которой я щелкнул в последний раз перед запуском макросов «Диаграмма *». Не нашел ни одного события OnClick, бух.
- Я думал о том, чтобы иметь глобальную переменную для хранения имени листа слайсера, который я щелкнул/выбрал в последний раз, но я не знаю, как его получить. Как вы думаете, это может сработать? Как я могу это реализовать?
Итак, это моя проблема с логикой/программированием прямо сейчас. Есть ли у вас какие-либо предложения о том, как я могу это исправить? Я просто хочу остаться на той вкладке, где я был, когда щелкнул слайсер...
GoodNameForAVariable = activesheet.name
в начале события изменения диаграммы 1, а затем в конце события изменения диаграммы 2:Thisworkbook.Sheets("GoodNameForAVariable").activate
- person Czeskleba   schedule 11.02.2020