Что-то я никак не соображу. Подскажите плиз. При вызове формы надо свернуть окно Excel, но чтобы форма осталась видна. .visible=false не катит При [vba]
Код
Application.WindowState = xlMinimized
[/vba] сворачивает и окно Ecxel и форму. Причем не важно в какой последовательности выполнить WindowState и UserForm1.Show ИЛИ WindowState засунуть в UserForm_Initialize.
Сейчас обнаружил что на разных компах (офис один и тот же, и винда хр у всех) ведет себя по разному. На одних форма остается видна на других сворачивается вместе с окном.
День добрый.
Что-то я никак не соображу. Подскажите плиз. При вызове формы надо свернуть окно Excel, но чтобы форма осталась видна. .visible=false не катит При [vba]
Код
Application.WindowState = xlMinimized
[/vba] сворачивает и окно Ecxel и форму. Причем не важно в какой последовательности выполнить WindowState и UserForm1.Show ИЛИ WindowState засунуть в UserForm_Initialize.
Сейчас обнаружил что на разных компах (офис один и тот же, и винда хр у всех) ведет себя по разному. На одних форма остается видна на других сворачивается вместе с окном.devilkurs
Грандиозно! ))))))))))))))) Про свойство ShowModal совсем забыл. На других компах тоже норм начало отображать форму.
Чисто наблюдение: Если открыты окна разных программ, то при сворачивании Excel, инициативу перехватывают окна некоторых программ. А форма под ними остается. Но мне это сейчас непринципиально. Если пользователи просить начнут - потом буду думать )))))) наверно в сторону API смотреть надо будет.
Спасибо Александр. И Марине за участие )))))
Грандиозно! ))))))))))))))) Про свойство ShowModal совсем забыл. На других компах тоже норм начало отображать форму.
Чисто наблюдение: Если открыты окна разных программ, то при сворачивании Excel, инициативу перехватывают окна некоторых программ. А форма под ними остается. Но мне это сейчас непринципиально. Если пользователи просить начнут - потом буду думать )))))) наверно в сторону API смотреть надо будет.
Спасибо Александр. И Марине за участие )))))devilkurs
Ну да, в сторону API , примерно так: "HWND_TOPMOST" - всегда поверх всех окон [vba]
Код
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function SetWindowPos Lib "user32" (ByVal Hwnd As Long, ByVal hWndInsertAfter As Long, _ ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Const SWP_NOSIZE = &H1 Const HWND_TOPMOST = -1 Dim Hwnd As Long
Ну да, в сторону API , примерно так: "HWND_TOPMOST" - всегда поверх всех окон [vba]
Код
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function SetWindowPos Lib "user32" (ByVal Hwnd As Long, ByVal hWndInsertAfter As Long, _ ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Const SWP_NOSIZE = &H1 Const HWND_TOPMOST = -1 Dim Hwnd As Long
У формы свойство ShowModal = True и такие обработчики событий
И я так делаю . У такого подхода есть несколько плюсов: Обработка данных происходит быстрее(в моей программе примерно на 20% - проверял для интереса) Пользователи не видят окно программы и как следствие не могут там ничего менять пока запущена форма. Это иногда очень важно - а то бывает понаклацают всякое
У формы свойство ShowModal = True и такие обработчики событий
И я так делаю . У такого подхода есть несколько плюсов: Обработка данных происходит быстрее(в моей программе примерно на 20% - проверял для интереса) Пользователи не видят окно программы и как следствие не могут там ничего менять пока запущена форма. Это иногда очень важно - а то бывает понаклацают всякое SLAVICK