Как вызвать макрос с изменением вкладки ленты? - PullRequest
1 голос
/ 28 апреля 2020

У меня есть книга Excel с несколькими пользовательскими вкладками ленты. Я хотел бы активировать указанный лист при нажатии на вкладку определенной ленты.

Подробности: Рабочая книга, состоящая из 5 листов, имеет следующие дополнительные вкладки ленты: «Параметры» и «Анализ данных». Каждая вкладка имеет несколько групп элементов управления. Мне нужно добавить триггер (макрос?), Который автоматически изменит лист на Sheet3 (для запуска ActiveWorkbook.Sheets ("Sheet3"). Activate), только когда пользователь выберет вкладку "Анализ данных".

Буду признателен за любую помощь.

1 Ответ

1 голос
/ 28 апреля 2020

Можно использовать обратный вызов getVisible с ленты для достижения того, что вы ищете.
Вот пример xml для вкладки (она должна быть вложена в CustomUI и ribbon тэги)

<tabs>
    <tab id="ExampleTab" label="Example Tab">
        <group id="ExampleGroup" 
            label="Example Group"
            getVisible="GetVisibility"
            tag="1"
            >
        </group>
    </tab>
</tabs>

Когда кто-то нажимает на вкладку, этот xml вызовет подпункт GetVisibility в книге, которой он принадлежит. Вы можете использовать свойство tag для передачи переменной в Sub. Например, каждая вкладка может иметь свой собственный тег или может использоваться для чего-то другого.

Теперь приведен пример кода для GetVisibility:

Public Sub GetVisibility(Control As IRibbonControl, ByRef Visible)
    'your code to activate the worksheet can go here
     Visible = True 'if you want to make a control visible
     Select Case Control.Tag 'you can use Control.Tag to get a variable from ribbon
         Case "1"
         Case Else
     End Select
End Sub

Единственная проблема заключается в том, что этот код обычно вызывается только при первом нажатии на вкладку. Чтобы получить код для повторного запуска, я думаю, что вам нужно аннулировать контроль ленты. Для этого вам придется хранить вашу ленту в глобальной переменной видимости при инициализации. В последний раз, когда я проверял, вам может потребоваться обходной путь, например, сохранение адреса ленты в листе. В стеке есть ряд вопросов по этому поводу, например: этот .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...