Ir ao conteúdo
  • Cadastre-se

Minimizar Userform VBA Excel


Felipe86

Posts recomendados

Boa Tarde Pessoal!

Gostaria de ajuda de vocês...

Tenho um Userform que preenche todo a tela do computador...

esse form está com ShowModal = false, porém quando eu tento abrir um outro arquivo em excel, esse arquivo não sobrepõe meu form. Isso só acontece quando eu abro uma nova aplicação do excel (novo arquivo).

Alguém sabe como resolver esse problema? Alguma forma de minimizar o form e o workbook ao mesmo tempo?

Obrigado pela ajuda.

Felipe

Link para o comentário
Compartilhar em outros sites

Boa Tarde Pessoal!

Gostaria de ajuda de vocês...

Tenho um Userform que preenche todo a tela do computador...

esse form está com ShowModal = false, porém quando eu tento abrir um outro arquivo em excel, esse arquivo não sobrepõe meu form. Isso só acontece quando eu abro uma nova aplicação do excel (novo arquivo).

Alguém sabe como resolver esse problema? Alguma forma de minimizar o form e o workbook ao mesmo tempo?

Obrigado pela ajuda.

Felipe

Olá Felipe86.

Antes disso você precisa de uma API de manipulação de formulários que cria o botão de minimizar.

Ponha esta código no módulo do formulário.

Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
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 Declare Function GetSystemMenu Lib "user32" _
(ByVal hWnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32" _
(ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) _
As Long

Private Const GWL_STYLE As Long = (-16)
Private Const WS_SYSMENU As Long = &H80000
Private Const WS_MINIMIZEBOX As Long = &H20000
Private Const WS_MAXIMIZEBOX As Long = &H10000
Private Const SC_CLOSE As Long = &HF060

Private Sub CommandButton1_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()

Dim lngFrmHndl As Long, lngStyle As Long
lngFrmHndl = FindWindow(vbNullString, Me.Caption)
lngStyle = GetWindowLong(lngFrmHndl, GWL_STYLE)
lngStyle = lngStyle Or WS_SYSMENU Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX
SetWindowLong lngFrmHndl, GWL_STYLE, lngStyle
DrawMenuBar lngFrmHndl

End Sub

abraço.

Link para o comentário
Compartilhar em outros sites

Olá Felipe86.

Antes disso você precisa de uma API de manipulação de formulários que cria o botão de minimizar.

Ponha esta código no módulo do formulário.

Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
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 Declare Function GetSystemMenu Lib "user32" _
(ByVal hWnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32" _
(ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) _
As Long

Private Const GWL_STYLE As Long = (-16)
Private Const WS_SYSMENU As Long = &H80000
Private Const WS_MINIMIZEBOX As Long = &H20000
Private Const WS_MAXIMIZEBOX As Long = &H10000
Private Const SC_CLOSE As Long = &HF060

Private Sub CommandButton1_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()

Dim lngFrmHndl As Long, lngStyle As Long
lngFrmHndl = FindWindow(vbNullString, Me.Caption)
lngStyle = GetWindowLong(lngFrmHndl, GWL_STYLE)
lngStyle = lngStyle Or WS_SYSMENU Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX
SetWindowLong lngFrmHndl, GWL_STYLE, lngStyle
DrawMenuBar lngFrmHndl

End Sub

abraço.

Muito Obrigado pela ajudo AlmirSilva!!

Só mais uma dica...

Eu não sou programador, apenas fiz um curso de VBA excel....então quando foge disso, fico completamente perdido...

Gostaria de saber como posso aprender mais sobre API's...existe algum livro ou curso que possa me indicar?

Abraço,

Felipe

Link para o comentário
Compartilhar em outros sites

Muito Obrigado pela ajudo AlmirSilva!!

Só mais uma dica...

Eu não sou programador, apenas fiz um curso de VBA excel....então quando foge disso, fico completamente perdido...

Gostaria de saber como posso aprender mais sobre API's...existe algum livro ou curso que possa me indicar?

Abraço,

Felipe

Felipe86 , existem poucos livros em português sobre API's , pesquise na net sobre tutoriais de programadores aqui do Brasil.

Grande abraço e qualquer coisa estamos ai.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!