djozzz
Гость
|
|
« : 09-03-2005 07:57 » |
|
У меня есть форма, на которой есть несколько refedit-ов . Проблема в том, что форма работает в границах ActiveWorkbook. При попытке переключиться на другую книгу активный refedit дублирует себя(возникает ещё окошко с заголвком Refedit), и не переключается. Как сделать так, чтобы форма разрешала переключаться на другие книги, и refedit не дублировал себя?
Благодарю за советы.
|
|
|
Записан
|
|
|
|
Naghual
|
|
« Ответ #1 : 09-03-2005 11:19 » |
|
А как вызывается эта форма? Как она инициализхируется? От куда? приведи пример кода
|
|
|
Записан
|
|
|
|
djozzz
Гость
|
|
« Ответ #2 : 09-03-2005 12:31 » |
|
Сама форма сидит в xla. Она вызывается в в макросе, который сидит там же. Текст макроса таков: Testform.Show. Параметров вызова формы я не знаю .
|
|
|
Записан
|
|
|
|
Naghual
|
|
« Ответ #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
|
|
« Ответ #5 : 11-03-2005 08:14 » |
|
Как вызывается макрос? А откуда и как происходит вызов формы? Приведи пример кода.
|
|
|
Записан
|
|
|
|
djozzz
Гость
|
|
« Ответ #6 : 11-03-2005 08:58 » |
|
Макрос вызывается строкой "блабла.xla!макрос" Про место нахождения формы я писал ранее. Ну а вызов осуществляется по твоему примеру кода.
|
|
|
Записан
|
|
|
|
djozzz
Гость
|
|
« Ответ #7 : 15-03-2005 04:28 » |
|
Объясните, пожалйста, в чём отличие обращения рефэдита к разным книгам при развёрнутых на весь экран книгах, и при книгах находящихся в одном окне экселя? И как можно при инициализации модуля объявить рефэдит публичным, а в инициализации формы добавить рефэдиты программным образом? Кстати я заметил, что когда вазываешь некоторые функции экселя, то в форме находятся совсем не те рефэдиты, которые мне предлагает эксель в инструментах. Может мне кто-нибудь объяснит, что это за рефэдит, который скрыт от обычных пользователей ? Заранее благодарю за ответы.
|
|
|
Записан
|
|
|
|
djozzz
Гость
|
|
« Ответ #8 : 17-03-2005 04:18 » |
|
Всем привет !
Для Вас эта тема уже неинтересна, или я какой-нибудь ответ ещё получу ? Напишите, пожалуйста, ответ.
|
|
|
Записан
|
|
|
|
Naghual
|
|
« Ответ #9 : 19-03-2005 09:56 » |
|
Хочктся уточнить сленг. Что ты подразумеваеш под "рефэдит"?
|
|
|
Записан
|
|
|
|
djozzz
Гость
|
|
« Ответ #10 : 21-03-2005 06:15 » |
|
Под словом "рефэдит" я поодразумеваю объект EXcel VBA, который специально предназначен для работы с дипазонами ячеек, т.е. непосредственно в нем отображаются адреса выделенных ячеек.
|
|
|
Записан
|
|
|
|
Naghual
|
|
« Ответ #11 : 21-03-2005 18:36 » |
|
Ок. Я понял. Тогда расскажи для какой цели тебе нужны рефедиты?
|
|
|
Записан
|
|
|
|
djozzz
Гость
|
|
« Ответ #12 : 22-03-2005 11:42 » |
|
Рефэдиты мне нужны для разных целей. Например, я сделал форму: в первый рефэдит вводится адрес ячейки с числом, а во второй - адрес конечной ячейки. И процедура назначенная на кнопку преобразует число из числового вида в прописной. Или , к примеру форма с копированием через вставку, т.е. если мне надо всунуть какие-либо данные в экселе между имеющимися, то код в форме сначала берёт диапазон с первого рефэдита, считает количество строк а потом в первую строку конечного диапазона вставляет необходимое количество строк, а потом уже производит копирование, т.к. вставка пустых строк перебивает копирование, а считать количество строк а потом призводить операцию "Вставка-строки" N раз лень. В принципе, можно придумать ещё очень много подобных примеров.
|
|
|
Записан
|
|
|
|
djozzz
Гость
|
|
« Ответ #13 : 31-03-2005 05:10 » |
|
Привет всем !
Я, кажется, придумал решение. Открытые книги будут размещены в комбобоксе. и при переключении книги будет вызываться макрос, который сначала спрячет форму, затем переключиться на другую книгу. Попутно запомнит имя предыдущей рабочей книги и значения рефэдитов. После перехода на другую книгу он обратно вызовет форму и вставит предыдущие значения рефэдитов. Таким образом я могу обойтти ограничения описаные мной в порвом посте.
Всем спасибо за советы.
|
|
|
Записан
|
|
|
|
|