Não quero ser reclamão agradeço seus esforços em estar disponibilizando esses macetes parar nós desde já agradeço pelos materiais que tem postado tem ajudado a mim e muitos outros também.
Olá, obrigada pelo vídeo! Eu uso o Office 365 e quando rodo a macro ele diz que FindWindow não foi declarada. Meu código está identico ao seu. Pode ajudar por favor?
Para alguns formulários do meu projeto o código funciona perfeitamente, mas para os meu formulários Login e Menu (que são os principais a terem essa função) não estão aparecendo os botões de minimizar e maximizar, saberia dizer o pq?
Funcionou bem, apenas um imprevisto, ao maximizar o form ele dá o zoom e altera o "tamanho" dos objetos corretamente, aplicando o zoom que eu especifiquei com o seu código: If Me.Height < 429 Then Me.Zoom = 100 Else Me.Zoom = 135 End If Mas ao minimizar o UserForm de volta para o tamanho original logo em seguida, o zoom da tela cheia ainda fica aplicado, ou seja, os objetos ficam maiores que o form em si, entende? Ficam com as configurações/zoom de tela cheira em um form padrão. Diferente do seu, que quando foi maximizado o zoom foi aplicado e logo em seguida quando voltou para o tamanho normal o zoom mudou junto. Você já recebeu alguma duvida semelhante a essa Luan? Se tiver uma solução em mente poderia escrever aqui por gentileza?
Boa tarde, deve ter errado alguma linha de código, segue código utilizado: Private Declare PtrSafe Function DrawMenuBar Lib "USER32" (ByVal hwnd As Long) As Long Private Declare PtrSafe Function FindWindow Lib "USER32" Alias "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare PtrSafe Function GetWindowLong Lib "USER32" Alias "GetWindowLongA" _ (ByVal hwnd As Long, ByVal nIndex As Long) As Long Private Declare PtrSafe Function SetWindowLong Lib "USER32" Alias "SetWindowLongA" _ (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare PtrSafe Function GetSystemMenu Lib "USER32" _ (ByVal hwnd As Long, ByVal bRevert As Long) As Long Private Declare PtrSafe Function DeleteMenu Lib "USER32" _ (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlaga 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 = &HF60 Private Sub UserForm_Initialize() Dim lngFrnMndl As Long, lngStyle As Long lngFrnMndl = FindWindow(vbNullString, Me.Caption) lngStyle = GetWindowLong(lngFrnMndl, GWL_STYLE) lngStyle = lngStyle Or WS_SYSMENU Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX SetWindowLong lngFrnMndl, GWL_STYLE, lngStyle DrawMenuBar lngFrnMndl End Sub Private Sub UserForm_Resize() 'If GetScreenResolution = "800x600" Then 'Me.Zoom = 100 'Else 'Me.Zoom = 190 'End If If Me.Height < 429 Then Me.Zoom = 100 Else Me.Zoom = 190 End If End Sub
Olá então quando consegui fazer rodar os controles da tela maximiza de forma desproporcional não acompanhando o tamanho máximo da tela como acontece na forma normal antes de maximizar? sabe como resolvo esse problema? sei que as vezes quando encontramos algum problema ou falha na aplicação na arquitetura 64bts é difícil ser resolvido mas peço que se possível nos ajude , pois creio que minha dificuldade também é a mesma de muitos
Boa tarde amigo, por favor tem como fazer esse procedimento de maximizar e minimizar no sistema de 64 bits? se sim como faço? me ajuda por favor obrigado.
Estes códigos somente em computador de 32 bits, mas sem o botão maximizar e minimizar tem outro códigos, veja o vídeo anterior: ua-cam.com/video/gSuItx-WP3k/v-deo.html
Boa tarde, na verdade o comando para fazer essas Declarações rodar em Office 64 Bits é bem fácil, basta acrescentar o argumento "PTRSAFE" antes da palavra Function e após a palavra declare assim sendo "Declare Ptrsafe Function" assim funciona em ambas as versões do Office
Não quero ser reclamão agradeço seus esforços em estar disponibilizando esses macetes parar nós desde já agradeço pelos materiais que tem postado tem ajudado a mim e muitos outros também.
Bom dia, tranquilo.
Luan, outra(s) planilha(s) Excel pode(m) ser utilizada(s) enquanto o formulário está minimizado?
Boa noite, se o formulário estiver com vbmodeles depois de .show acredito que possa utilizar outras planilhas.
@@CanalSGP coloquei FALSE depois do Show e deu certo. Outra opção é colocar FALSE na propriedade show modal. Muito obrigado pela disposição de sempre.
Que bom que conseguiu.
Olá, obrigada pelo vídeo!
Eu uso o Office 365 e quando rodo a macro ele diz que FindWindow não foi declarada. Meu código está identico ao seu. Pode ajudar por favor?
Boa noite, este procedimento funciona apenas para versão de 32 bits. Verifique se a sua versão Excel é de 64 bits, ai não vai funcionar.
@@CanalSGP funciona colocando o PtrSafe antes do Function. Mas mesmo assim o Vba não está identificando o lpWindowName.
Boa tarde, já tentei adaptar este código para 64 bits, mas sem sucesso por enquanto.
Muchas gracias, pero yo quiero que el userform este "activo" (ventana activa) mientras minimizo hoja Excel ¿Qué debo hacer?
Bom dia, obrigado, até o momento não fiz nada assim, não sei se é possível.
@@CanalSGP Gracias. Ya pude encontrar solucion.
@@churchun Holaa, cual es la soluion?
@@jhonedisonquinones4589 busca un codigo para el useform
meu Windows e 64 bits posso utilizar ? agradeço pela atenção.
Estes códigos funcionam somente em computador de 32 bits.
Aqui funcionou os Botões de Manimizar e Minimizar mesmo no sistema 64bits Windows 10, porém o Zoom não funcionaou .
Bom dia, infelizmente não sei o que pode ser.
Para alguns formulários do meu projeto o código funciona perfeitamente, mas para os meu formulários Login e Menu (que são os principais a terem essa função) não estão aparecendo os botões de minimizar e maximizar, saberia dizer o pq?
Descobri! É pq o formulário estava sem Caption, tem que ter o Caption do Formulário para o código funcionar.
Boa tarde, que bom que descobriu.
Funcionou bem, apenas um imprevisto, ao maximizar o form ele dá o zoom e altera o "tamanho" dos objetos corretamente, aplicando o zoom que eu especifiquei com o seu código:
If Me.Height < 429 Then
Me.Zoom = 100
Else
Me.Zoom = 135
End If
Mas ao minimizar o UserForm de volta para o tamanho original logo em seguida, o zoom da tela cheia ainda fica aplicado, ou seja, os objetos ficam maiores que o form em si, entende? Ficam com as configurações/zoom de tela cheira em um form padrão.
Diferente do seu, que quando foi maximizado o zoom foi aplicado e logo em seguida quando voltou para o tamanho normal o zoom mudou junto.
Você já recebeu alguma duvida semelhante a essa Luan? Se tiver uma solução em mente poderia escrever aqui por gentileza?
Boa tarde, deve ter errado alguma linha de código, segue código utilizado:
Private Declare PtrSafe Function DrawMenuBar Lib "USER32" (ByVal hwnd As Long) As Long
Private Declare PtrSafe Function FindWindow Lib "USER32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare PtrSafe Function GetWindowLong Lib "USER32" Alias "GetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare PtrSafe Function SetWindowLong Lib "USER32" Alias "SetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare PtrSafe Function GetSystemMenu Lib "USER32" _
(ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare PtrSafe Function DeleteMenu Lib "USER32" _
(ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlaga 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 = &HF60
Private Sub UserForm_Initialize()
Dim lngFrnMndl As Long, lngStyle As Long
lngFrnMndl = FindWindow(vbNullString, Me.Caption)
lngStyle = GetWindowLong(lngFrnMndl, GWL_STYLE)
lngStyle = lngStyle Or WS_SYSMENU Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX
SetWindowLong lngFrnMndl, GWL_STYLE, lngStyle
DrawMenuBar lngFrnMndl
End Sub
Private Sub UserForm_Resize()
'If GetScreenResolution = "800x600" Then
'Me.Zoom = 100
'Else
'Me.Zoom = 190
'End If
If Me.Height < 429 Then
Me.Zoom = 100
Else
Me.Zoom = 190
End If
End Sub
@@CanalSGP Foi aqui, o problema era o Height eu acho, as medidas do meu código não e Form não estavam condizentes, obrigado pela atenção.
Ao minimizar o userform a planilha ainda fica aberta e não minimiza, como posso fazer para que a planilha minimize junto com o userform ?
Olá, vou estudar o assunto, se for possível gravo vídeo aula de como minimizar a planilha via códigos.
Boa tarde Professor
Não sei se concorda, mas seria interesse atualizar esse vídeo
Boa tarde, estamos atualizando um vídeo por semana, mas vai longe para trocar todos os mais antigos.
Olá então quando consegui fazer rodar os controles da tela maximiza de forma desproporcional não acompanhando o tamanho máximo da tela como acontece na forma normal antes de maximizar? sabe como resolvo esse problema? sei que as vezes quando encontramos algum problema ou falha na aplicação na arquitetura 64bts é difícil ser resolvido mas peço que se possível nos ajude , pois creio que minha dificuldade também é a mesma de muitos
Bom dia, pode tentar o procedimento da vídeo no link a seguir, talvez seja melhor: ua-cam.com/video/gSuItx-WP3k/v-deo.html
Estou muito interessado em aprender tudo sobre vba excel
Boa tarde amigo, por favor tem como fazer esse procedimento de maximizar e minimizar no sistema de 64 bits? se sim como faço? me ajuda por favor obrigado.
Boa tarde, é o mesmo código, mas vai precisar acrescentar o comando ptrsafe em todas as function, veja exemplo abaixo:
Declare PtrSafe Function
@@CanalSGP resolvido... Não acrescentei o A maiúsculo "FindWindowA". Muito bom. Amando VBA. ❤
você já teria o código pra 64 bits?
se tiver gostaria de recebê-lo
Obrigado!!!
Fizemos ajustes nos códigos, favor informar se funcionou no 64 bits.
@@CanalSGP
poderia me enviar o cód para funcionar em ambos? pois tenho maquina 32 e 64 que usarão o formulario
Boa tarde, este procedimento funciona apenas em versão de 32. Qual e-mail para envio da planilha.
tenho um vba de cliente e produtos mas nao estou conseguindo fazer de orçamento tem como vc me ajudar
só funciona na sistema de 32 bits vc teria um código para usar nos dois ao mesmo tempo?
Estes códigos somente em computador de 32 bits, mas sem o botão maximizar e minimizar tem outro códigos, veja o vídeo anterior: ua-cam.com/video/gSuItx-WP3k/v-deo.html
Boa tarde, na verdade o comando para fazer essas Declarações rodar em Office 64 Bits é bem fácil, basta acrescentar o argumento "PTRSAFE" antes da palavra Function e após a palavra declare assim sendo "Declare Ptrsafe Function"
assim funciona em ambas as versões do Office
Olá, assim que possível vamos testar.
Excelente! Funcionou perfeitamente para 64 bits
ok.