Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как сделать форму универсальной?  (Прочитано 17949 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
djozzz
Гость
« : 09-03-2005 07:57 » 

У меня есть форма, на которой есть несколько refedit-ов . Проблема в том, что форма работает в границах ActiveWorkbook. При попытке переключиться на другую книгу активный refedit дублирует себя(возникает ещё окошко с заголвком Refedit), и не переключается.
Как сделать так, чтобы форма разрешала переключаться на другие книги, и refedit не дублировал себя?

Благодарю за советы.
Записан
Naghual
Модератор

ua
Offline Offline
Пол: Мужской
ОПТИМИСТ


WWW
« Ответ #1 : 09-03-2005 11:19 » 

А как вызывается эта форма? Как она инициализхируется?
От куда?
приведи пример кода
Записан
djozzz
Гость
« Ответ #2 : 09-03-2005 12:31 » 

Сама форма сидит в xla. Она вызывается в в макросе, который сидит там же.
Текст макроса таков:
Testform.Show.
Параметров вызова формы я не знаю   Здесь была моя ладья....
Записан
Naghual
Модератор

ua
Offline Offline
Пол: Мужской
ОПТИМИСТ


WWW
« Ответ #3 : 09-03-2005 15:02 » 

Попробуй обьявить глобальную переменную в модуле этого аддина. Потом загружаеш экземпляр этой формы в эту переменную. И показываеш уже экземпляр формы.

'В Декларациях модуля
Public MyForm as Object

'В Процедуре
   Set MyForm = New Testform
   MyForm.Show
« Последнее редактирование: 20-12-2007 21:10 от Алексей1153++ » Записан
djozzz
Гость
« Ответ #4 : 10-03-2005 09:09 » 

Пробовал, не помогает  :oops: . Как было до этого, так всё и осталось.Но я заметил, что когда два файла открыты в одном окне Экселя, то я могу переключаться на другой файл. Также методом научного тыка обнаружил, что когда на форме ещё есть текстбокс, и он активен, то переключаться на другой файл можно, но когда делаешь активным рефедит, то форма сама переключается на  книгу её вызвавшую.
Поэтому мне сейчас кажется, что проблема заключается не в форме, а в рефэдитах. Но может у кого нибудь другие мнения ? Мне будет интересно. Ведь мне необходимо, чтобы рефэдиты работали и при развёрнутых на весь экран книгах.
« Последнее редактирование: 10-03-2005 16:45 от djozzz » Записан
Naghual
Модератор

ua
Offline Offline
Пол: Мужской
ОПТИМИСТ


WWW
« Ответ #5 : 11-03-2005 08:14 » 

Как вызывается макрос?
А откуда и как происходит вызов формы?
Приведи пример кода.
Записан
djozzz
Гость
« Ответ #6 : 11-03-2005 08:58 » 

Макрос вызывается строкой "блабла.xla!макрос"
Про место нахождения формы я писал ранее.
Ну а вызов осуществляется по твоему примеру кода.
Записан
djozzz
Гость
« Ответ #7 : 15-03-2005 04:28 » new

Объясните, пожалйста, в чём отличие обращения рефэдита к разным книгам при развёрнутых на весь экран книгах, и при книгах находящихся в одном окне экселя? И как можно  при инициализации модуля объявить рефэдит публичным, а в инициализации формы добавить рефэдиты программным образом? Кстати я заметил, что когда вазываешь некоторые функции экселя, то в форме находятся совсем не те рефэдиты, которые мне предлагает эксель в инструментах. Может мне кто-нибудь объяснит, что это за рефэдит, который скрыт от обычных пользователей ?
Заранее благодарю за ответы.
Записан
djozzz
Гость
« Ответ #8 : 17-03-2005 04:18 » 

Всем привет !

Для Вас эта тема уже неинтересна, или я какой-нибудь ответ ещё получу ?
Напишите, пожалуйста, ответ.
Записан
Naghual
Модератор

ua
Offline Offline
Пол: Мужской
ОПТИМИСТ


WWW
« Ответ #9 : 19-03-2005 09:56 » 

Хочктся уточнить сленг. Что ты подразумеваеш под "рефэдит"?
Записан
djozzz
Гость
« Ответ #10 : 21-03-2005 06:15 » 

Под словом "рефэдит" я поодразумеваю объект EXcel VBA, который специально предназначен для работы с дипазонами ячеек, т.е. непосредственно  в нем отображаются адреса выделенных ячеек.
Записан
Naghual
Модератор

ua
Offline Offline
Пол: Мужской
ОПТИМИСТ


WWW
« Ответ #11 : 21-03-2005 18:36 » 

Ок. Я понял.
Тогда расскажи для какой цели тебе нужны рефедиты?
Записан
djozzz
Гость
« Ответ #12 : 22-03-2005 11:42 » 

Рефэдиты мне нужны для разных целей.
Например, я сделал форму: в первый рефэдит вводится адрес ячейки с  числом,  а во второй - адрес конечной ячейки. И процедура назначенная на кнопку преобразует число из числового вида в прописной.
Или , к примеру форма с копированием через вставку, т.е. если мне надо всунуть какие-либо данные в экселе между имеющимися, то код в форме сначала берёт диапазон с первого рефэдита, считает количество строк а потом в первую строку конечного диапазона вставляет необходимое количество строк, а потом уже производит копирование, т.к. вставка пустых строк перебивает копирование, а считать количество строк а потом призводить операцию  "Вставка-строки" N раз лень.
В принципе, можно придумать ещё очень много подобных примеров.
Записан
djozzz
Гость
« Ответ #13 : 31-03-2005 05:10 » 

Привет всем !

Я, кажется, придумал решение.
Открытые книги будут размещены в комбобоксе. и при переключении книги будет вызываться макрос, который сначала спрячет форму, затем переключиться на другую книгу. Попутно запомнит имя предыдущей рабочей книги и значения рефэдитов.
После перехода на другую книгу он обратно вызовет форму и вставит предыдущие значения рефэдитов. Таким образом я могу обойтти ограничения описаные мной в порвом посте.

Всем спасибо за советы.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines