Форум пользователей Visio http://visio.getbb.ru/ |
|
VBA в Visio http://visio.getbb.ru/viewtopic.php?f=6&t=1248 |
Страница 1 из 1 |
Автор: | Серж [ 03 ноя 2017, 16:45 ] |
Заголовок сообщения: | VBA в Visio |
Здравствуйте. Начинаю изучать данный язык его применение в Визио. Подскажите, пожалуйста, как решить след. задачу. есть цикл по shape на листе. у каждого шейпа есть имя. нужно вывести ошибки по шейпам , у которых совпадают наименования с указаним ИД шейпа В каком направлении копать? Заранее спасибо |
Автор: | nbelyh [ 03 ноя 2017, 17:07 ] |
Заголовок сообщения: | Re: VBA в Visio |
А что такое "ошибка шейпа"? |
Автор: | Гость [ 03 ноя 2017, 17:50 ] |
Заголовок сообщения: | Re: VBA в Visio |
шейпы, у которых наименования совпадают - это ошибка. их нужно идентифицировать |
Автор: | Гость [ 03 ноя 2017, 18:24 ] |
Заголовок сообщения: | Re: VBA в Visio |
Гость писал(а): шейпы, у которых наименования совпадают - это ошибка. наименования чего ?
|
Автор: | Tumanov [ 03 ноя 2017, 18:36 ] |
Заголовок сообщения: | Re: VBA в Visio |
Цитата: наименования чего ? Дело в том, что у шейпов на одной странице не может быть одинаковых имен. Значит Вы под именем или наименованием понимаете что-то другое. Отсюда и вопрос. Полезно было бы приложить файлик, в котором было бы хотя бы 2 шейпа с этим одинаковым чем-то. |
Автор: | Dmitrii [ 03 ноя 2017, 18:38 ] |
Заголовок сообщения: | Re: VBA в Visio |
@Tumanov, в точку! Встроенное видео спрятано под спойлер ↓ Прямая ссылка на видео Спойлер: ↕ |
Автор: | nbelyh [ 03 ноя 2017, 20:39 ] | ||
Заголовок сообщения: | Re: VBA в Visio | ||
А, кажется понял. На диаграмме не должно быть дубликатов одного и того же по нескольку раз. Две фигуры считаются дубликатами, если на них написано одно и тоже. Вот их-то и надо вывести. Правильно? Код: Sub PrintDuplicates()
Set seen = CreateObject("Scripting.Dictionary") For Each s In ActivePage.Shapes shapeText = s.Text If Not seen.Exists(shapeText) Then seen.Add shapeText, New Collection End If seen(shapeText).Add s.ID Next For Each k In seen If seen(k).Count > 1 Then Line = "'" & k & "'" For Each ShapeID In seen(k) Line = Line & " " & ShapeID Next Debug.Print Line End If Next End Sub
|
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |