|
|
|
VBA и Exel, Описание свойств рабочего окна
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, подскажите пожалуйста: Как создать окно, которое автоматически запускалось бы при открытии этого exel документа, а так же имело следующие свойства: - оно всегда было на экране по верх всех остальных окон - его нельзя было закрыть (нет кнопок закрытия окна) - только если закрыть этот exel документ - и чтобы оно не захватывало управление. Когда создаешь обычное окно - оно перехватывает все управления на себя и после этого нельзя работать с документом, пока не закроешь это окно. А мне необходимо создать вспомогательное окно, которое всегда было бы на экране, но позволяло работать с Exel документом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 07:09 |
|
||
|
VBA и Exel, Описание свойств рабочего окна
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 08:01 |
|
||
|
VBA и Exel, Описание свойств рабочего окна
|
|||
|---|---|---|---|
|
#18+
Спасибо, но что-то не получается ( Я работаю в VB 6.3 тот, что при Exel'е - и он выдает ошибку, что не знает такой функции SetWindowPos. Нужно подключать какую-то библиотеку? Что я должен прописать в тексте программы? (в разделе инициализации окна) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 15:22 |
|
||
|
VBA и Exel, Описание свойств рабочего окна
|
|||
|---|---|---|---|
|
#18+
вот этот модуль подключи к твоему проекту а в форме затем напишешь Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 15:29 |
|
||
|
VBA и Exel, Описание свойств рабочего окна
|
|||
|---|---|---|---|
|
#18+
В Exel VB нету событий Form_Load() и Form_Unload() Я прописываю: Private Sub UserForm_Initialize() Dim i i = SetWindowPos(hWnd_, HWND_TOPMOST, 0, 0, 0, 0, &H1 Or &H2) End Sub Он впринципе заглатывает, но окно 1. Двигается - хотя код &H1 должен запрещать его перемещение. 2. Оно по умолчанию, как и все создаваемые диалоговые окна при Exel - не дают возможность работать с листами, ячейками Exel, пока открыто это диалоговое окно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 16:00 |
|
||
|
VBA и Exel, Описание свойств рабочего окна
|
|||
|---|---|---|---|
|
#18+
Eriksson1. Двигается - хотя код &H1 должен запрещать его перемещение. Оригинальная интерпретация. SetWindowPos FunctionSWP_NOMOVE Retains the current position (ignores X and Y parameters). SWP_NOSIZE Retains the current size (ignores the cx and cy parameters). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 16:17 |
|
||
|
VBA и Exel, Описание свойств рабочего окна
|
|||
|---|---|---|---|
|
#18+
)) я не так понял? я думал это код... но все же - даже прописывая SWP_NOMOVE - окно всеравно двигается ((( Да впринципе пофиг - пускай двигается. Главеное, чтобы диалоговое окно позволяло работать с Exel документами, в то время как оно запущенно. Чтобы оно не перехватывало все управление... Подскажите пожайлуста - как это сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 19:03 |
|
||
|
VBA и Exel, Описание свойств рабочего окна
|
|||
|---|---|---|---|
|
#18+
Eriksson, флаг SWP_NOMOVE говорит функции SetWindowPos: игнорируй свои параметры X и Y. И всё. ErikssonГлавеное, чтобы диалоговое окно позволяло работать с Exel документами, в то время как оно запущенно. Чтобы оно не перехватывало все управление... Подскажите пожайлуста - как это сделать? UserForm1.Show vbModeless ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 11:37 |
|
||
|
VBA и Exel, Описание свойств рабочего окна
|
|||
|---|---|---|---|
|
#18+
Спасибо. Все работает! Только появилась еще одна проблема: При выполнении процедуры удаления OLE Объектов - удаляется это диалоговое окно, которое, как я понимаю, не является OLE объектом. Процедура: For Each objOle In Worksheets(2).OLEObjects If objOle.Name <> UserForm6.Name Then objOle.delete Next objOle даже описал так, но всеравно окно закрывается... Подскажите пожалуста - почему? Что надо прописать, чтобы оно не закрывалось? (Eriksson) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2007, 12:03 |
|
||
|
VBA и Exel, Описание свойств рабочего окна
|
|||
|---|---|---|---|
|
#18+
Самое интересное, что если в рабочей области нет OLE объектов, то все нормально, а если они там есть, то удаляются они и диалоговое окно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2007, 12:11 |
|
||
|
VBA и Exel, Описание свойств рабочего окна
|
|||
|---|---|---|---|
|
#18+
Извините - окно исчезает не при удалении, а после завершения процедуры CommandButton4_Click() , так как если ставим Msgbox - то при выскакивании диалогового окна Msgbox - окно еще существует... но... вот потом... что происходит потом? почему оно пропадает ? Private Sub CommandButton4_Click() For Each objOle In Worksheets(2).OLEObjects If objOle.Name <> UserForm6.Name Then objOle.delete Next objOle MsgBox ("stop") End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2007, 14:53 |
|
||
|
VBA и Exel, Описание свойств рабочего окна
|
|||
|---|---|---|---|
|
#18+
Проблема заключается в следующем: Если окно Userform1 выводиться со следующим свойством: UserForm1.Show vbModeless то появляется косяк... - при выполнении процедуры удаления OLE объектов, закрывается и само окно UserForm1. Если же окно UserForm1 открывать со стандартной настройкой: UserForm1.Show vbModal то все работает нормально - окно не закрывается... Но мне то надо, чтобы был режим vbModeless - чтобы с запуском диалогового окна можно было бы обращаться к ячейкам книги Exel'a. Подскажите пожайлуста решение данной проблемы? Является ли это мой косяк? или же это косяк VB? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 07:02 |
|
||
|
VBA и Exel, Описание свойств рабочего окна
|
|||
|---|---|---|---|
|
#18+
VBAworms, это не твой косяк. При добавлении/удалении OLE-объектов на лист VBA-шный проект ресетится, со всеми вытекающими. Возможные выходы: 1) сделать вид, что удаляешь: делаешь OLE-объекты невидимыми вместо удаления, реально удаляешь по закрытию формы; 2) удалить, но сохранение состояния/переходы между состояниями сделать помимо VBA-проекта (что-нибудь связанное с таймерами или SendKeys и сохранением состояния во временном файле). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 12:41 |
|
||
|
VBA и Exel, Описание свойств рабочего окна
|
|||
|---|---|---|---|
|
#18+
Меня вот ещё интересует: не решает ли поставленную задачу своя панель инструментов, а не UserForm? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 12:44 |
|
||
|
VBA и Exel, Описание свойств рабочего окна
|
|||
|---|---|---|---|
|
#18+
Спасибо большое, 1. Панель инструментов - впринципе можно переделать, но это будет каряво, так как у меня в этом Userform находятся не только командные кнопки, но и поля информации. В добавок - есть один случай, который предусматривает создание и удаление кнопок в этом диалоговом окне... 2. А есть какой-то патч или может все корректно будет работать на MS Office 2007 ? 3. Если не создавать OLE объекты, а делать их невидимыми - насколько это может отрозиться на работоспособности, когда все объекты невидимые и не используются... Как быстро прорисовывается окно ? Так же как и обычно или же это отразится на скорости прорисовки окна, даже если они будут невидимыми... Дело в том, что у меня в зависимости от выборки могут создаваться до 2000 ComboBox'ов, и CkeckBox'ов - это означает, что мне зачастую придеться держать 2000 объектов невидимыми. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 13:39 |
|
||
|
|

start [/forum/topic.php?fid=60&fpage=244&tid=2164435]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 370ms |

| 0 / 0 |
