Visio: Могу ли я иметь CommandButton на каждой странице Visio только с одним набором кода, выполняющим одну и ту же задачу на отдельных слоях?

Можно ли иметь кнопку (вызов) на каждой странице, которая будет использовать точно такой же код, но работать только со слоями на странице, с которой она вызывается, тем самым уменьшая количество кода, который необходимо написать/изменить или добавить в .

Страница-1 с кодом CommandButton (или ToggleButton) изменяет состояние видимости слоя. оно работает. Страница-2 как страница-1 и т. д., если я пишу код снова и снова, он работает.

В настоящее время у меня есть 11 страниц, и каждая страница имеет одинаковые имена свойств слоев (на странице 31 слой)... (например, на странице-1 есть ALLBACK, BAU, Callout.....) (на странице-2 есть ALLBACK , BAU, Callout.....) и т. д., поэтому 31 * 11 командных кнопок = 341 кнопка, уменьшающая код до 31 варианта, было бы хорошо, но я не могу найти подсказки для этого.

для ясности каждая страница представляет собой временную шкалу, и каждая рассчитана на 6 месяцев, а страница 1 — 2018_Q34, страница 2 — 2019_Q12, страница 3 — 2019_Q34 и т. д.

Спасибо за любую помощь заранее. Стивен


person SKT    schedule 02.08.2018    source источник


Ответы (2)


Вы можете, но я очень давно не использовал VBA в Visio, поэтому, пожалуйста, потерпите меня.

Откройте редактор VBA и выберите объект документа. Это предполагает, что вы смотрите на рисунок, в который хотите внести эти изменения.

Создайте новую подпрограмму, назовите ее как хотите. Это то, что вы собираетесь вызывать при нажатии кнопки. Напишите код, который необходимо выполнить для страницы.

Теперь в обработчике OnClicked() для кнопки вызовите новую подпрограмму в документе.

Хотел бы я, чтобы у меня все еще была копия Visio, я мог бы просто написать вам простой пример примерно за пять минут.

Надеюсь, это поможет.

person Rob Fahrni    schedule 03.08.2018
comment
извините, что так поздно, и спасибо за ответ. Я добился своего требования. но это очень грязно. теперь я собираюсь привести в порядок весь код/процесс. В конце концов, у меня есть несколько кнопок на каждом листе visio, и каждая кнопка 1 или 2 и т. д. на каждом листе будет вызывать один и тот же фоновый модуль/код. Код будет включать/выключать/соответствующие слои и печатать требования в слоях листа. В любом случае еще раз спасибо. - person SKT; 31.10.2018

Это довольно поздний ответ, но, возможно, кто-то другой сможет его использовать.

Вместо использования этих кнопок я бы рекомендовал добавить новое меню на панель ленты. Для этого я использую этот инструмент: https://www.rondebruin.nl/win/s2/win001.htm

Затем вы можете вызвать саб этой кнопкой. В начале подпрограммы вы можете использовать activepage, чтобы получить текущую страницу и работать с ней.

Чтобы сделать его еще более гибким, измените подпрограмму, чтобы она принимала страницу в качестве параметра. Затем создайте еще один модуль, в этом модуле есть несколько небольших сабвуферов. Эти сабвуферы вызываются вашими кнопками и, в свою очередь, вызывают ваши исходные сабвуферы и передают страницу, которую вы хотите отредактировать.

person L8n    schedule 24.08.2018
comment
извините, что так поздно, и спасибо за ответ. Я добился своего требования. но это очень грязно. теперь я собираюсь привести в порядок весь код/процесс. В конце концов, у меня есть несколько кнопок на каждом листе visio, и каждая кнопка 1 или 2 и т. д. на каждом листе будет вызывать один и тот же фоновый модуль/код. Код будет включать/выключать/соответствующие слои и печатать требования в слоях листа. В любом случае еще раз спасибо. - person SKT; 31.10.2018