Author |
Topic |
|
repa
5 Posts |
Posted - 02/16/2006 : 20:46:46
|
Создал шейп который ссылается на TheDoc!User.Row_1. При вытаскивании его на документ у меня добавляется пользовательская переменная документа User.Row_1. Добавляется со значением 0
Вопрос как мне выполнить проверку значения User.Row_1 документа при вытаскивании шейпа и в случае если он до етого не существовал или равен 0 записать в него какое либо текстовое значение.
P.S. Пока только допер до того как изменить значение User.Row_1 документа при вытаскивании шейпа через EventDrop.
=IF(TheDoc!User.Row_1,SETF(GetRef(TheDoc!User.Row_1),"""цирк"""),SETF(GetRef(TheDoc!User.Row_1),"""цирк1"""))
А вот как сделать анализ значения ума не приложу. |
|
Tumanov
Russia
1198 Posts |
Posted - 02/17/2006 : 07:50:57
|
Насколько я понимаю, элементарный анализ, для Вас не проблема (просто в условии вместо IF(TheDoc!User.Row_1,... будет что-то типа IF(TheDoc!User.Row_1=0,... или IF(StrSame(TheDoc!User.Row_1,"цирк")... Сложности возникают скорее всего потому, что условие становится более сложным. Возможные состояния: 1. True 2. False 3. Error (причем ошибки могут быть разного типа) 4. Поведение Visio в случае ошибок Поясню два последних пункта. В случае ошибки (например, ячейка содержит строку вместо ожидаемого числа) формула кажется просто не выполняется. То есть Вы не выполните действия ни по True, ни по False - вообще ничего не выполните. Но в некоторых случаях, как в данном, при отсутствии ячейки User.Row_1 Visio "поможет" Вам ее сформировать. Чем несколько затруднит анализ ошибки :) Короче, на общий случай тут замучаешься формулу писать. Надо до упора конкретизировать - что именно нужно, упрощать, а потом уже реализовать конкретный частный случай. |
|
|
repa
5 Posts |
Posted - 02/17/2006 : 11:12:43
|
Задача стоит следующим образом Я создаю чистый документ из нескольких листов. На каждый листы выкидываю создаваемый шэйп. Если я в одном меняю значение текстового поля, то во всех остальных оно тоже меняется.
Решение с использованием StrSame(TheDoc!User.Row_1,"цирк") оказалось тем, что доктор прописал. Теперь Event Drop выглядит следующим образом. =IF(STRSAME(TheDoc!User.Row_1,"0"),SETF(GetRef(TheDoc!User.Row_1),"""цирк"""),FALSE)
Tumanov, вам большей сенкс.
З.Ы.Есть ли какой способ проанализировать тип значения хранящийся в ячейке?
Как сослаться на переменную в которой хранится текст, что я набираю в каком либо шэйпе? |
|
|
Tumanov
Russia
1198 Posts |
Posted - 02/17/2006 : 21:55:22
|
Хорошего способа проанализировать тип не знаю. Visio старается по максимуму все сам конвертировать... А вот когда конвертировать уже нельзя, то можно отловить некоторые ошибки. Нужно смотреть функции ISERRVALUE, ISERR, ISERRNA, ISERROR.
Текст выбирается специальной функцией ShapeText, например =ShapeText(Sheet.1!TheText) Вторым аргументом его еще и подформатировать можно. Подробности см. в хелпе. |
|
|
repa
5 Posts |
Posted - 02/26/2006 : 15:33:31
|
Огромное спасибо |
|
|
|
Topic |
|
|
|