Тема: UserForm теряет фокус при открытии другого окна
Проблема: Userform (установлено свойство showmodal = false, дабы можно было работать с текстом в фоне) при открытии другого документа по кнопке на форме теряется. Как можно вернуть форму в фокус?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Проблема: Userform (установлено свойство showmodal = false, дабы можно было работать с текстом в фоне) при открытии другого документа по кнопке на форме теряется. Как можно вернуть форму в фокус?
Показать ещё раз:
Private Sub CommandButton1_Click()
UserForm2.Show 0
Me.Show
End SubПоказать ещё раз:
Была же такая мысль! Спасибо.
И вдогонку: я тут излазил все свойства userform, но не нашел возможности превратить ее в самостоятельное окошко с кнопочками свернуть/развернуть. Вероятно, это касается только "полноценных", скомпилированных VB приложений? В VB6, по крайней мере, помнится, это задавалось.
Да, стандартной такой возможности нет, но можно сделать самому при помощи WinAPI
В модуль:
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const WS_MINIMIZEBOX = &H20000
Private Const WS_MAXIMIZEBOX = &H10000
Private Const GWL_STYLE = (-16)
Public Sub ChangeWindow(f As UserForm)
Dim hwnd As Long
Dim retval As Long
hwnd = FindWindow("ThunderDFrame", f.Caption)
If hwnd <> 0 Then
retval = SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX)
End If
If retval = 0 Then MsgBox "Fail"
End SubВ форме:
Private Sub UserForm_Initialize()
Call ChangeWindow(Me)
End SubВот это да! Огромное спасибо.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться