Author |
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 все работает ... Но.. |
|
|
SaSa
27 Posts |
Posted - 02/18/2004 : 15:09:30
|
Извините в предыдущем сообщени читать не по певому пункту , а по второму пункту, как раз с первым самая проблема. |
|
|
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)" если результат строка.
Так что вот.. хотя признаюсь для многих читателей форума скорее всего то что я тут написал будет не понятно:( |
|
|
Surrogate
Russia
122 Posts |
Posted - 05/01/2010 : 08:43:14
|
спасибо, очень пригодилось :) спустя много лет. мне приходилось для этого очень сильно изгаляться. а здесь простое и элегантное решение !!! |
|
|
|
Topic |
|
|
|