#vba #hyperlink #visio
#vba #гиперссылка #visio
Вопрос:
Я довольно хорошо разбираюсь в VBA, когда дело доходит до Excel, но не так много в Visio. То, что я хочу сделать, просто. Если бы у меня была гиперссылка на объект, я хотел бы, чтобы этот объект был заполнен синим цветом. В Excel я мог бы сделать это без проблем. В Visio не так много. Блок-схема достаточно проста, я бы сказал, 20 объектов или около того, и не все из них будут связаны гиперссылками.
Комментарии:
1.Я немного повздорил с Visio на предыдущем концерте. Хотя у меня, к сожалению, нет доступа к установке, с которой можно было бы поиграть, через несколько минут на сайте MSDN появилась пара интересных ссылок: 1.
Shape.Hyperlinks
свойство и 2.Hyperlink.Address
свойство. Возможно, вы могли бы перебирать фигуры, проверяя,Hyperlink.Address
пусто ли они, используя это какIf...Then
проверку для применения изменений цвета?2. Прежде всего, спасибо за редактирование и голосование против. Это мой первый вопрос здесь, и мне просто нужна небольшая помощь. Дэн, спасибо за твой ответ. Я знаю, что я близок к тому, чтобы заставить его работать, но я просто слишком незнаком с синтаксисом, используемым в Visio. Мне придется продолжать оглядываться и надеяться что-нибудь найти.
3. Я не был сторонником отказа
4. Нет, нет, я знаю. Этот код Visio так расстраивает, потому что я знаю, что это так просто, но я просто ничего не знаю о синтаксисе Visio VBA.
Ответ №1:
Вот некоторый псевдокод VBA, который я мог бы попробовать в духе моего комментария выше:
Dim Sh As Visio.Shape
Dim Link As Hyperlink
For Each Sh In Visio.ActivePage.Shapes '<~ loop through the shapes collection
For Each Link In Sh.Hyperlinks '<~ loop through the links collection
If Not Link.Address = "" Then '<~ check for a blank address
Sh.Cells("Fillforegnd") = 2 '<~ apply a color to the shape
End If
Next Link
Next Sh
Комментарии:
1. Спасибо, сэр, это сработало отлично. Следующее, что мне нужно выяснить, это как заставить страницу реализовать эти изменения без использования кнопки. Обычно в Excel я просто использую подраздел Workbook_Change, но мне придется с ним поиграть. Еще раз спасибо.
2. теперь я хочу добавить что-то в ваш код. Я пытаюсь добавить в код, чтобы он изменился на другой цвет, если адрес гиперссылки пуст. Это то, что я пробовал: установить Sh = Visio. Активная страница. Формы (1) для каждой ссылки в sh.Гиперссылки, если ссылка. Адрес <> «» Затем Sh.Ячейки («Fillforegnd»). Формула = «RGB(255, 102, 0)» В противном случае ссылка. Address = » » Затем Sh.Cells(«Fillforegnd») = 1 конец, если следующая ссылка завершает Sub
3. Я не уверен, что понимаю ваш запрос… Ваша попытка не сработала? Я бы не стал добавлять в комментарии все, кроме самых простых фрагментов кода, лучше отредактировать исходное сообщение, если это небольшая корректировка, или задать новый вопрос, если это большая корректировка