Как использовать событие TextChanged в VBA visio?

Это связано с этим вопросом Как сделать Я программно / автоматически изменяю форматирование текста для текста фигуры Visio после завершения редактирования?

Там я попытался использовать некоторый код, который будет выполняться при редактировании текста фигуры. По некоторым причинам, как описано там, в некоторых ситуациях, которые я не мог изолировать, код выполняется бесконечно. Вероятно, это связано с тем, что сценарий вызывает себя в цикле. Код должен выполняться каждый раз, когда текст фигуры редактируется, НО сам код изменяет цвет текста. Я предполагаю, что это будет считаться новым изменением текста и так далее.

Я думаю об использовании события TextChanged. Согласно документации, это должно выполнить код, когда пользователь завершит редактирование http://msdn.microsoft.com/en-us/library/office/ff768749.aspx

Мне не удалось найти пример использования такого события в VBA, и здесь мне нужна ваша помощь, заранее спасибо Uni

Вот как я тестировал: я использовал CallThis ('ThisDocument.warning "), чтобы вызвать процедуру ниже из события" TheText "этой формы (доступно через таблицу фигур)

Дополнительное предупреждение (oShape As Visio.Shape) MsgBox («Текст отредактирован») End Sub

Это выполняется примерно три раза, если я отмечу редактирование текста фигуры и нажимаю клавишу пробела (добавляя пробел к существующему тексту).


person MiniMe    schedule 19.12.2013    source источник
comment
Хорошо, это все, что я мог понять: я должен объявить объект формы WithEvents, чтобы раскрыть события этого объекта. Теперь мне нужна помощь, чтобы понять, как я могу вызвать эту процедуру _TextChanged при изменении текста фигуры.   -  person MiniMe    schedule 20.12.2013


Ответы (1)


Хорошо, вот как вы это делаете:

Откройте редактор кода. В проводнике проекта выберите "ThisDocument". Затем в ObjectWindow выберите "Документ". Затем в раскрывающемся списке "Метод" выберите "ShapeExitedTextEdit". Вы увидите скелетную процедуру, как показано ниже.

Частный вложенный документ_ShapeExitedTextEdit (ByVal oShape как IVShape)

Конец подписки

Здесь вы добавляете код, который хотите выполнять каждый раз, когда редактирование завершено.

person MiniMe    schedule 20.12.2013