Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Maximizar e minimizar form vba

Dúvidas gerais sobre Excel
caleonel
Colaborador
Colaborador
Mensagens: 43
Registrado em: Sáb Mai 13, 2017 10:42 pm

Maximizar e minimizar form vba

Mensagem por caleonel »

Pessoal, preciso de uma ajuda.
Meu form tem uma imagem e um status bar. Quando tento redimensionar o form (aumentando ou diminuindo o tamanho) o status bar não acompanha.
Modulo:

Código: Selecionar todos

Option Explicit

Declare PtrSafe Function FindWindowA& Lib "User32" (ByVal lpClassName$, ByVal lpWindowName$)
Declare PtrSafe Function GetWindowLongA& Lib "User32" (ByVal hWnd&, ByVal nIndex&)
Declare PtrSafe Function SetWindowLongA& Lib "User32" (ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&)


' Déclaration des constantes
Public Const GWL_STYLE As Long = -16
Public Const WS_MINIMIZEBOX = &H20000
Public Const WS_MAXIMIZEBOX = &H10000
Public Const WS_FULLSIZING = &H70000

'Attention, envoyer après changement du caption de l'UF
Public Sub InitMaxMin(mCaption As String, Optional Max As Boolean = True, Optional Min As Boolean = True _
        , Optional Sizing As Boolean = True)
Dim hWnd As Long
    hWnd = FindWindowA(vbNullString, mCaption)
    If Max Then SetWindowLongA hWnd, GWL_STYLE, GetWindowLongA(hWnd, GWL_STYLE) Or WS_MAXIMIZEBOX
    If Min Then SetWindowLongA hWnd, GWL_STYLE, GetWindowLongA(hWnd, GWL_STYLE) Or WS_MINIMIZEBOX
    If Sizing Then SetWindowLongA hWnd, GWL_STYLE, GetWindowLongA(hWnd, GWL_STYLE) Or WS_FULLSIZING
End Sub
No Form

Código: Selecionar todos

Option Explicit
Dim Lg As Single
Dim Ht As Single
Dim Fini As Boolean
Private Sub UserForm_Initialize()
    InitMaxMin Me.Caption
    Ht = Me.Height
    Lg = Me.Width
    
   stmostra.Panels(1).Text = "Desenvolvido por Carlos Alberto Leonel & Shirley Jorge | Diretoria Tecnologia e Sistemas| AeC"
   stmostra.Panels(1).AutoSize = sbrSpring
   stmostra.Panels(1).Bevel = sbrRaised
   txtlogado.Text = USUARIO
End Sub

Private Sub UserForm_Resize()
    Dim RtL As Single, RtH As Single
    If Me.Width < 300 Or Me.Height < 200 Or Fini Then Exit Sub
    RtL = Me.Width / Lg
    RtH = Me.Height / Ht
    Me.Zoom = IIf(RtL < RtH, RtL, RtH) * 100
End Sub

Private Sub UserForm_Terminate()
    Fini = True
End Sub


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: Maximizar e minimizar form vba

Mensagem por Mikel Silveira Fraga »

Caleonel, boa noite e seja bem vindo ao fórum.

Bem, não existe uma função que realize essa tarefa automaticamente.

Para realizar esse redimensionamento, será necessário o desenvolvimento de uma rotina que avalie todos os elementos existentes no Userform e, conforme tamanho do formulário, os mesmo vão se redimensionando.

Essa não é uma rotina fácil de se montar, mas pode ser que encontre algo pronto na internet.

Dúvidas, a disposição;


caleonel
Colaborador
Colaborador
Mensagens: 43
Registrado em: Sáb Mai 13, 2017 10:42 pm

Re: Maximizar e minimizar form vba

Mensagem por caleonel »

Pessoal obrigado pelo ajuda mas resolvi de outra forma.


ironxqueiroz
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Qui Abr 11, 2019 11:12 am

Re: Maximizar e minimizar form vba

Mensagem por ironxqueiroz »

Olá Pessoal

Sou novo por aqui, mais acompanho o site a bastante tempo.
Eu utilizei esses mesmos comando para maximizar e minimizar meu form.

Só que o porém e que meu form eu incluir uma imagem pelo Picture e quando maximizo a imagem não fica enquadrada no form.

como eu faço pra enquandrar a imagem juntamente com o form ?

Espero contar com a ajuda de vcs


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


srobles
Jedi
Jedi
Mensagens: 805
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: Maximizar e minimizar form vba

Mensagem por srobles »

ironxquieroz,

Se o problema for apenas com o controle Image/Picture, basta editar o evento Form_Resize, adicionando algumas linhas de código, exemplo:

Código: Selecionar todos

Private Sub UserForm_Resize()
  With Me.Picture1 'Altere para o nome do controle
     .Top = .Top 'Mantém a altura atual
     .Left = .Left 'Mantém o alinhamento á esquerda atual
     .Height = Me.Height - 50 'Aqui, pegamos a altura do Form e subtraímos 50px
     .Width = Me.Width - 25   'Aqui, pegamos o comprimento do Form e subtraímos 25px
  End With
End Sub
Altere principalmente as propriedades Left, Height e Width conforme necessidade.

Espero ter ajudado.

Abs


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder