All Forums
 Категория Visio
 Форум Вопросы и ответы
 Как сослаться из одного шейпа на другой по выбору
Author Previous Topic Topic Next Topic  

SaSa

27 Posts

Posted - 02/18/2004 :  10:58:45
Как сослаться из одного шейпа на другой по выбору пользователя.
Есть шейп у которого в пользовательских свойствах есть поле “список” в которое из VB подставляю список всех шейпов на других листах. Нужно сделать так чтобы после того как пользователь выбрал из этого списка шейп с другой страницы, все “User” свойства текушего шейпа ссылались на выбранный из списка шейп. Типа User.Press = Pages[Page-1]!Sheet.55! User.Press и так далее, по всем свойствам. Вот какие проблемы:
1. Нужно чтобы пользователю в список выбора шейпов передавалось не полная ссылка на шейп типа Pages[Page-1]! Sheet.5; Pages[Page-3]! Sheet.6; итд, а список нормальных пользовательских имен P-1;P-2;P-5.. а вот поле того как он сделает выбор например выберет "Р-2", каким то образом из второго списка получить соответствующее Pages[Page-3]! Sheet.6.
2. Чтобы получить значение из поля “User.Press” другого шейпа я пишу в текушем шейпе что-то типа = Prop.Origin.Value & “! User.Press где в Prop.Origin подставляется список Pages[Page-1]! Sheet.5; Pages[Page-3]! Sheet.6. В результате в текущей ячейке, если посмотреть значение формулы получается правильная ссылка Pages[Page-1]!Sheet.5! User.Press . Но нужно, каким-то образом получить по этой ссылке значение, а вот как?
3. Из VB хочу получить значения “User” ячейки пишу “N =ShpObj.Cells("User.Out").Formula” и в “N” получаю “Sheet.7! Width”, а хочу получить значение типа “7” видимо надо писать не “.Formula” а что-то другое ?
4. Как из VB получить доступ к другим полям секций “User” и “Prop” кроме “Value”? Хочу изменить, например значение “User.Prompt”,”Prop.Prompt”, “Prop.Type” идр.?
5. Возможно есть другой более простой путь это сделать?

SaSa

27 Posts

Posted - 02/18/2004 :  15:07:05
Да, по первому пункту моего вопроса. Есть такая функция SETF. Но с ней тоже как-то не все получилось. Пишу так: "SETF(GetRef(User.Press);Prop.Origin)" соответсвенно в поле User.Press получается формула ="Pages[1]!Sheet.5!User.Press" и все бы хорошо если бы он ее записал без кавчек, если стираю руками кавычки, получается =Pages[1]!Sheet.5!User.Press все работает ... Но..
Go to Top of Page

SaSa

27 Posts

Posted - 02/18/2004 :  15:09:30
Извините в предыдущем сообщени читать не по певому пункту , а по второму пункту, как раз с первым самая проблема.
Go to Top of Page

SaSa

27 Posts

Posted - 02/20/2004 :  10:19:20
Пракически все решил сам.. если интересно проблема выбора данных из одной строки по результату выбора из другой - вопрос по П1 решается предельно просто без использования VB " =INDEX(LOOKUP(Prop.OriginName;Prop.OriginName.Format);User.Linc)" где в Prop.OriginName подставляеся список человекиских имен, а в User.Linc сисок полных ссылок на шейп, типа Psges[sasa].Sheet.13. При выборе человеческого имени в списке пользовательсих свойств эта штука возвращает полную ссылку .

С проблемой подстановки функции П.2 чтобы убрать кавычки из формулы можно писать =SETF(GetRef(User.Pressure);FORMAT(User.GetPress;"@")) где GetPress содержит полное имя типа = "Pages[sasa]!Shet.5!User.Pressure" без (Fomat "@") это не работало.

П3.получение результата функции из VB тоже очень простое оказалось вместо ".Formula" нужно писать ".ResultStr(0)" если результат строка.

Так что вот.. хотя признаюсь для многих читателей форума скорее всего то что я тут написал будет не понятно:(
Go to Top of Page

Surrogate

Russia
122 Posts

Posted - 05/01/2010 :  08:43:14  Visit Surrogate's Homepage
спасибо, очень пригодилось :)
спустя много лет. мне приходилось для этого очень сильно изгаляться. а здесь простое и элегантное решение !!!
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)