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

Вход

Регистрация

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

 

= Мир MS Excel/Как свернуть пользовательскую форму? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Как свернуть пользовательскую форму?
flash708 Дата: Понедельник, 29.12.2014, 11:08 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Всех с наступающим праздником)
Прошу подсказать как с помощью макросов в VBA сделать так, чтобы в пользовательской форме появилась возможность свернуть (свернуть форму, оставить значок на панели задач). я находил в интернете решение задачи для Excel 97 (не привожу ссылку чтобы не сочли за рекламу), привожу сами строчки:

[vba]
Код
Private Declare Function FindWindow _
Lib "user32.dll" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow _
Lib "user32.dll" ( _
ByVal hWnd As Long, _
ByVal nCmdShow As Long) As Long
Private Declare Function GetWindowLong _
Lib "user32.dll" Alias "GetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong _
Lib "user32.dll" Alias "SetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long

Private Sub UserForm_Show()
Dim ihWnd As Long, iStyle As Long

ihWnd = FindWindow(vbNullString, U#serForm1.Caption)

iStyle = GetWindowLong(ihWnd, -16&)
SetWindowLong ihWnd, -16&, iStyle Or &H20000
iStyle = GetWindowLong(ihWnd, -20&)
SetWindowLong ihWnd, -20&, iStyle Or &H40000

ShowWindow ihWnd, 5&
End Sub
[/vba]

но это не работает для более поздних версий Excel (отображается форма без кнопки свернуть)
Спасибо)

[moder]Кнопка # есть на панели инструментов в форме, где Вы пишете сообщение. Исправила. А значки # на досуге поубираете[/moder]
[ответ модеру] Спасибо большое! С наступающим! [/ответ модеру]


Сообщение отредактировал flash708 - Понедельник, 29.12.2014, 13:22
 
Ответить
СообщениеВсех с наступающим праздником)
Прошу подсказать как с помощью макросов в VBA сделать так, чтобы в пользовательской форме появилась возможность свернуть (свернуть форму, оставить значок на панели задач). я находил в интернете решение задачи для Excel 97 (не привожу ссылку чтобы не сочли за рекламу), привожу сами строчки:

[vba]
Код
Private Declare Function FindWindow _
Lib "user32.dll" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow _
Lib "user32.dll" ( _
ByVal hWnd As Long, _
ByVal nCmdShow As Long) As Long
Private Declare Function GetWindowLong _
Lib "user32.dll" Alias "GetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong _
Lib "user32.dll" Alias "SetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long

Private Sub UserForm_Show()
Dim ihWnd As Long, iStyle As Long

ihWnd = FindWindow(vbNullString, U#serForm1.Caption)

iStyle = GetWindowLong(ihWnd, -16&)
SetWindowLong ihWnd, -16&, iStyle Or &H20000
iStyle = GetWindowLong(ihWnd, -20&)
SetWindowLong ihWnd, -20&, iStyle Or &H40000

ShowWindow ihWnd, 5&
End Sub
[/vba]

но это не работает для более поздних версий Excel (отображается форма без кнопки свернуть)
Спасибо)

[moder]Кнопка # есть на панели инструментов в форме, где Вы пишете сообщение. Исправила. А значки # на досуге поубираете[/moder]
[ответ модеру] Спасибо большое! С наступающим! [/ответ модеру]

Автор - flash708
Дата добавления - 29.12.2014 в 11:08
RAN Дата: Понедельник, 29.12.2014, 11:15 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Понедельник, 29.12.2014, 14:34
 
Ответить
Сообщениеhttp://excelvba.ru/articles/WinAPI

Автор - RAN
Дата добавления - 29.12.2014 в 11:15
RAN Дата: Понедельник, 29.12.2014, 14:35 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Вернул ответ


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеВернул ответ

Автор - RAN
Дата добавления - 29.12.2014 в 14:35
flash708 Дата: Понедельник, 29.12.2014, 15:50 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Спасибо за ссылку но к сожалению не получилось (выводится сообщение Compile Error) Если не трудно, не могли бы вы привести листинг конкретной программы, добавляющей кнопку Свернуть
 
Ответить
СообщениеСпасибо за ссылку но к сожалению не получилось (выводится сообщение Compile Error) Если не трудно, не могли бы вы привести листинг конкретной программы, добавляющей кнопку Свернуть

Автор - flash708
Дата добавления - 29.12.2014 в 15:50
DJ_Marker_MC Дата: Понедельник, 29.12.2014, 16:15 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
flash708, Добрый день. Вам нужно чтоб у формы была кнопка свернуть?
Так?
К сообщению приложен файл: 0797119.xlsm (32.5 Kb)
 
Ответить
Сообщениеflash708, Добрый день. Вам нужно чтоб у формы была кнопка свернуть?
Так?

Автор - DJ_Marker_MC
Дата добавления - 29.12.2014 в 16:15
Leanna Дата: Понедельник, 29.12.2014, 17:08 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 189
Репутация: 78 ±
Замечаний: 0% ±

excel 2010
Как альтернатива, если не получится, можно запустить окно в режиме UserForm1.Show vbModeless, тогда у вас несмотря на открытую форму будет доступ к ячейкам.


Лучше день потерять, потом за пять минут долететь!
 
Ответить
СообщениеКак альтернатива, если не получится, можно запустить окно в режиме UserForm1.Show vbModeless, тогда у вас несмотря на открытую форму будет доступ к ячейкам.

Автор - Leanna
Дата добавления - 29.12.2014 в 17:08
flash708 Дата: Понедельник, 29.12.2014, 20:51 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
спасибо, свернуть/развернуть получилось) но почему-то крестик (закрыть) перестал работать. может добавить простую кнопку с процедурой типа Unload me? хотя если добавите функционирование на крестик (закрыть) то было бы еще интересней) заранее спасибо.
 
Ответить
Сообщениеспасибо, свернуть/развернуть получилось) но почему-то крестик (закрыть) перестал работать. может добавить простую кнопку с процедурой типа Unload me? хотя если добавите функционирование на крестик (закрыть) то было бы еще интересней) заранее спасибо.

Автор - flash708
Дата добавления - 29.12.2014 в 20:51
RAN Дата: Понедельник, 29.12.2014, 21:04 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
если добавите функционирование на крестик

Может проще отключить добавленный функционал игнорировыния нежатия крестика?
[vba]
Код
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
' If CloseMode = 0 Then Cancel = 1
  End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
если добавите функционирование на крестик

Может проще отключить добавленный функционал игнорировыния нежатия крестика?
[vba]
Код
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
' If CloseMode = 0 Then Cancel = 1
  End Sub
[/vba]

Автор - RAN
Дата добавления - 29.12.2014 в 21:04
Лиза Дата: Суббота, 27.01.2018, 15:11 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
DJ_Marker_MC, Здравствуйте, интересует такой вопрос, какая строка в коде отвечает за ширину формы. При свернутой форме не видно название формы.
 
Ответить
СообщениеDJ_Marker_MC, Здравствуйте, интересует такой вопрос, какая строка в коде отвечает за ширину формы. При свернутой форме не видно название формы.

Автор - Лиза
Дата добавления - 27.01.2018 в 15:11
  • Страница 1 из 1
  • 1
Поиск:

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