Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Свернуть окно Excel, а форму показать - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Свернуть окно Excel, а форму показать (Макросы/Sub)
Свернуть окно Excel, а форму показать
devilkurs Дата: Четверг, 18.02.2016, 13:10 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 167
Репутация: 43 ±
Замечаний: 0% ±

Excel 2007, 2010
День добрый.

Что-то я никак не соображу. Подскажите плиз. При вызове формы надо свернуть окно Excel, но чтобы форма осталась видна.
.visible=false не катит
При
[vba]
Код
Application.WindowState = xlMinimized
[/vba]
сворачивает и окно Ecxel и форму. Причем не важно в какой последовательности выполнить WindowState и UserForm1.Show ИЛИ WindowState засунуть в UserForm_Initialize.

Сейчас обнаружил что на разных компах (офис один и тот же, и винда хр у всех) ведет себя по разному. На одних форма остается видна на других сворачивается вместе с окном.
К сообщению приложен файл: 0404920.xlsm (15.2 Kb)


 
Ответить
СообщениеДень добрый.

Что-то я никак не соображу. Подскажите плиз. При вызове формы надо свернуть окно Excel, но чтобы форма осталась видна.
.visible=false не катит
При
[vba]
Код
Application.WindowState = xlMinimized
[/vba]
сворачивает и окно Ecxel и форму. Причем не важно в какой последовательности выполнить WindowState и UserForm1.Show ИЛИ WindowState засунуть в UserForm_Initialize.

Сейчас обнаружил что на разных компах (офис один и тот же, и винда хр у всех) ведет себя по разному. На одних форма остается видна на других сворачивается вместе с окном.

Автор - devilkurs
Дата добавления - 18.02.2016 в 13:10
Manyasha Дата: Четверг, 18.02.2016, 13:20 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
devilkurs, можно сначала свернуть окно, а потом форму показать:

не важно в какой последовательности

не увидела :(


ЯД: 410013299366744 WM: R193491431804

Сообщение отредактировал Manyasha - Четверг, 18.02.2016, 13:21
 
Ответить
Сообщениеdevilkurs, можно сначала свернуть окно, а потом форму показать:

не важно в какой последовательности

не увидела :(

Автор - Manyasha
Дата добавления - 18.02.2016 в 13:20
_Boroda_ Дата: Четверг, 18.02.2016, 13:29 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Посмотрите вот так.
Ваш родной файл у меня не работал, а вот если сделать форму немодальной, то заработал. Свойство ShowModal
К сообщению приложен файл: 0404920_1.xlsm (20.7 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеПосмотрите вот так.
Ваш родной файл у меня не работал, а вот если сделать форму немодальной, то заработал. Свойство ShowModal

Автор - _Boroda_
Дата добавления - 18.02.2016 в 13:29
devilkurs Дата: Четверг, 18.02.2016, 13:49 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 167
Репутация: 43 ±
Замечаний: 0% ±

Excel 2007, 2010
Грандиозно! ))))))))))))))) Про свойство ShowModal совсем забыл. На других компах тоже норм начало отображать форму.

Чисто наблюдение: Если открыты окна разных программ, то при сворачивании Excel, инициативу перехватывают окна некоторых программ. А форма под ними остается. Но мне это сейчас непринципиально. Если пользователи просить начнут - потом буду думать )))))) наверно в сторону API смотреть надо будет.

Спасибо Александр. И Марине за участие )))))


 
Ответить
СообщениеГрандиозно! ))))))))))))))) Про свойство ShowModal совсем забыл. На других компах тоже норм начало отображать форму.

Чисто наблюдение: Если открыты окна разных программ, то при сворачивании Excel, инициативу перехватывают окна некоторых программ. А форма под ними остается. Но мне это сейчас непринципиально. Если пользователи просить начнут - потом буду думать )))))) наверно в сторону API смотреть надо будет.

Спасибо Александр. И Марине за участие )))))

Автор - devilkurs
Дата добавления - 18.02.2016 в 13:49
al-Ex Дата: Четверг, 18.02.2016, 18:05 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 190
Репутация: 59 ±
Замечаний: 0% ±

Excel 2010
наверно в сторону API смотреть надо будет.

Ну да, в сторону 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

Private Sub UserForm_Initialize()

CommandButton1.Caption = "Lya Lya"

Application.WindowState = xlMinimized
Hwnd = FindWindow(vbNullString, "UserForm1")
SetWindowPos Hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE

End Sub
[/vba]
К сообщению приложен файл: 5284118.xlsm (19.9 Kb)


Сообщение отредактировал al-Ex - Пятница, 19.02.2016, 02:11
 
Ответить
Сообщение
наверно в сторону API смотреть надо будет.

Ну да, в сторону 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

Private Sub UserForm_Initialize()

CommandButton1.Caption = "Lya Lya"

Application.WindowState = xlMinimized
Hwnd = FindWindow(vbNullString, "UserForm1")
SetWindowPos Hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE

End Sub
[/vba]

Автор - al-Ex
Дата добавления - 18.02.2016 в 18:05
devilkurs Дата: Пятница, 19.02.2016, 00:35 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 167
Репутация: 43 ±
Замечаний: 0% ±

Excel 2007, 2010
al-Ex, завтра на работе посмотрю. Спасибо!


 
Ответить
Сообщениеal-Ex, завтра на работе посмотрю. Спасибо!

Автор - devilkurs
Дата добавления - 19.02.2016 в 00:35
Gustav Дата: Пятница, 19.02.2016, 12:51 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2731
Репутация: 1132 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
ПрИмите в тусовку? Я решал похожую задачу в 2000 году. С тех пор вроде работало как надо во всех последующих версиях Excel, вот уже 15 лет:
[vba]
Код
Sub Макрос1()
    UserForm1.Show
End Sub
[/vba]

У формы свойство ShowModal = True и такие обработчики событий:
[vba]
Код
Private Sub UserForm_Initialize()
    ...
    Application.Visible = False
    ...    
End Sub

Private Sub UserForm_Terminate()
    ...
    Application.Visible = True
    ...
End Sub
[/vba]С деталями можно поиграться (в буквальном смысле - там "Игра в 15") по ссылке: http://www.axforum.info/forums/showpost.php?p=107513&postcount=5


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеПрИмите в тусовку? Я решал похожую задачу в 2000 году. С тех пор вроде работало как надо во всех последующих версиях Excel, вот уже 15 лет:
[vba]
Код
Sub Макрос1()
    UserForm1.Show
End Sub
[/vba]

У формы свойство ShowModal = True и такие обработчики событий:
[vba]
Код
Private Sub UserForm_Initialize()
    ...
    Application.Visible = False
    ...    
End Sub

Private Sub UserForm_Terminate()
    ...
    Application.Visible = True
    ...
End Sub
[/vba]С деталями можно поиграться (в буквальном смысле - там "Игра в 15") по ссылке: http://www.axforum.info/forums/showpost.php?p=107513&postcount=5

Автор - Gustav
Дата добавления - 19.02.2016 в 12:51
SLAVICK Дата: Пятница, 19.02.2016, 14:33 | Сообщение № 8
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
У формы свойство ShowModal = True и такие обработчики событий

И я так делаю ^_^ beer .
У такого подхода есть несколько плюсов:
Обработка данных происходит быстрее(в моей программе примерно на 20% - проверял для интереса)
Пользователи не видят окно программы и как следствие не могут там ничего менять пока запущена форма. Это иногда очень важно - а то бывает понаклацают всякое :D


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
У формы свойство ShowModal = True и такие обработчики событий

И я так делаю ^_^ beer .
У такого подхода есть несколько плюсов:
Обработка данных происходит быстрее(в моей программе примерно на 20% - проверял для интереса)
Пользователи не видят окно программы и как следствие не могут там ничего менять пока запущена форма. Это иногда очень важно - а то бывает понаклацают всякое :D

Автор - SLAVICK
Дата добавления - 19.02.2016 в 14:33
StoTisteg Дата: Воскресенье, 21.02.2016, 00:55 | Сообщение № 9
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
[offtop]О, да... Юзвери, которых надо Мелкософту в рабство продавать в качестве тестеров — глубоко отдельная тема :) [/offtop]


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
Сообщение[offtop]О, да... Юзвери, которых надо Мелкософту в рабство продавать в качестве тестеров — глубоко отдельная тема :) [/offtop]

Автор - StoTisteg
Дата добавления - 21.02.2016 в 00:55
StoTisteg Дата: Понедельник, 22.02.2016, 22:28 | Сообщение № 10
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
У формы свойство ShowModal = True и такие обработчики событий

Gustav, а зачем, кстати? Если ShowModal = True даёт возможность тыкаться по Экселю, а Application.Visible = False как раз его-то и скрывает?


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
Сообщение
У формы свойство ShowModal = True и такие обработчики событий

Gustav, а зачем, кстати? Если ShowModal = True даёт возможность тыкаться по Экселю, а Application.Visible = False как раз его-то и скрывает?

Автор - StoTisteg
Дата добавления - 22.02.2016 в 22:28
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Свернуть окно Excel, а форму показать (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!