Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 17 сен 2019, 11:26

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Изменить цвет из списка
СообщениеДобавлено: 07 сен 2018, 10:41 
Не в сети
Бывалый

Зарегистрирован: 19 июн 2015, 22:18
Сообщений: 101
Использую Visio c: 2013
Очков репутации: 21

Добавить очки репутацииУменьшить очки репутации
Вложение:
Menu.png
Menu.png [ 22.92 Кб | Просмотров: 216 ]

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


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.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменить цвет из списка
СообщениеДобавлено: 07 сен 2018, 11:15 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 1461
Очков репутации: 100596

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменить цвет из списка
СообщениеДобавлено: 07 сен 2018, 12:50 
Не в сети
Бывалый

Зарегистрирован: 19 июн 2015, 22:18
Сообщений: 101
Использую Visio c: 2013
Очков репутации: 21

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB