Форум пользователей Visio
http://visio.getbb.ru/

Изменить цвет из списка
http://visio.getbb.ru/viewtopic.php?f=40&t=1372
Страница 1 из 1

Автор:  vin [ 07 сен 2018, 10:41 ]
Заголовок сообщения:  Изменить цвет из списка

Вложение:
Menu.png
Menu.png [ 22.92 Кб | Просмотров: 218 ]

Вложение:
ShapeSheet.png
ShapeSheet.png [ 79.66 Кб | Просмотров: 219 ]


Action меняет User.IdColor – это индекс (номер) цвета в списке User.ColorList.Prompt.
User.ColorList = INDEX(User.IdColor,User.ColorList.Prompt,";") – вытаскивает нужный цвет из списка.

А вот далее – самое интересное!!!
Код:
User.Row_3 = User.IdColor + SETF(GetRef(FillBkgnd), "=" & User.CorrectColor)
User.CorrectColor = SUBSTITUTE(User.ColorList,",",LISTSEP())
Если бы мы просто прописали в User.Row_3 указание на User.ColorList , то у нас бы сформировалась бы строка:
User.Row_3 = User.IdColor + SETF(GetRef(FillBkgnd), "=RGB(255,0,0)" )
Эту строку спокойно «проглатывает» Visio 2010, а вот у Visio 2007 это не проходит – возвращает ошибку.

Почему? А потому, что Visio 2007 считает выражение RGB(255,0,0) списком и требует, чтобы список разделялся корректным разделителем. Корректный разделитель можно узнать используя функцию LISTSEP.

Именно поэтому цвет сначала корректируется в User.CorrectColor – где «,» заменяются «;», ну а только после этого цвет применяется в User.Row_3.

Примерно на эти же грабли я наступал, когда писал макросы и записывал с помощью их формулы в ячейки.
Когда я писал формулу в ShapeSheet, то в качестве разделителя использовал «,». Но когда я пытался записать формулу с помощью макроса, то у меня появлялась ошибка. Ошибка появлялась потому, что в качестве разделителя нужно было использовать “;”, то есть тот, который прописывает функция LISTSEP.

Автор:  Tumanov [ 07 сен 2018, 11:15 ]
Заголовок сообщения:  Re: Изменить цвет из списка

Цитата:
А потому, что Visio 2007 считает выражение RGB(255,0,0) списком

Это должно быть не Visio, а в установках Windows. Разве не так?
В любом случае, определяющим является не версия Visio, а локализация.
В любом случае автору огромный плюс за напоминание!
Причем это не только со списками. Я даже чаще натыкался на схожий эффект в числовых представлениях (точка или запятая). Пока не приучился всегда, где только можно, ставить не локализованные версии продуктов.

Автор:  vin [ 07 сен 2018, 12:50 ]
Заголовок сообщения:  Re: Изменить цвет из списка

Tumanov писал(а):
В любом случае, определяющим является не версия Visio, а локализация.

Дело не только в локализации. В Visio 2010 я смотрел - LISTSEP так же выдает точку с запятой, но функция без корректировки работает, а в 2007 - нет.

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/