Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
  • Avatar do usuário
#27703
Meus caros colegas aqui do fórum, gostaria de agradecer, por todas as ajudas prestadas.
Recentemente comecei meus estudos em vba e não era familiarizado com nada de programação...sou apenas um curioso que deseja otimizar o tempo de trabalho dos meus colegas aqui do trabalho.
Entrei nessa empreitada e estou concluindo meu primeiro projeto em vba; trata-se de um formulário de cadastro simples.

Porém, estou com um problema capital, que deve ser a dúvida de muitas pessoas que irão utilizar o formulário em rede ou em outras máquinas que possuem os mais diversos tipos de resolução de tela...já pesquisei aqui no fórum e em outros..de diversas formas, mas não consegui testar nada que desse certo!

Alguém sabe algum código de ajuste de resolução automática que se ajuste à resolução da tela sem conhece-lá.
Meu UserForm foi criado na resolução recomendável do meu monitor (1280x1024)
As resoluções que irão executar meu form são:
1280 x 1024 - original, aonde foi feito o userform
1366 X 768
1440 x 900
Meu form em alguns monitores não aparece os botões de controles..e nem da pra ajustar o tamanho do form com o mause.
Mas uma vez meu muitíssimo obrigado!
Você não está autorizado a ver ou baixar esse anexo.
Editado pela última vez por AMORIM123 em 26 Out 2017 às 09:16, em um total de 1 vez.
#27715
Amorim
Bom dia,

Cara eu tive um problema desses um tempo atras e resolvi reduzindo as dimensões do meu form e incluindo uma barra de rolagem...
Sei que não é a melhor solução para o problema, mas resolvi desta forma e dei continuidade ao desenvolvimento.

Aqui no fórum existe uma galera bem fera, possivelmente surjam melhores soluções... De qualquer forma segue ai minha contribuição!!!
#27747
Amorim
Bom dia novamente,

Andei estudando sobre teu problema. Encontrei esta solução:

> Cole o código abaixo no Form:
Código: Selecionar todos
Private Declare Function GetSystemMetrics32 Lib "User32" _
    Alias "GetSystemMetrics" (ByVal nIndex&) As Long

Private Sub UserForm_Initialize()
    Dim nFator As Single
    nFator = 0.75
    Me.Width = GetSystemMetrics32(0) * nFator
    Me.Height = GetSystemMetrics32(1) * nFator
End Sub
#27781
Amorim

Observe que ele foi dimensionado ao tamanho da tela cheia, porém pude observar que o teu problema está no Height e não no Width, acredito que a barra de rolagem continua sendo a melhor das opções!!!

Vamos aguardar pra ver se mais alguem aqui do Forum tem uma solução.
#27786
Caro Wesley, ainda não encontrei minha solução..continuo pesquisando!
Em uma dessas minhas pesquisas achei uma planilha bacana..nessa planilha, cujos créditos são de Andy Pope, o cara escreveu um código em que o UserForm VBA assume as propriedades ANCHOR(TOP+LEFT por padrão, porém pode ser configurado) que esta disponível no windows forms e em outras linguagens (acho que é esse o termo). Enfim da uma conferida nessa planilha que achei é bem interessante...tentarei adaptar, com meus conhecimentos ao que desejo.

Segue anexo!
Você não está autorizado a ver ou baixar esse anexo.
#27884
Meu caro amigo wesleyribeiro123
Não pude deixar de compartilhar esse arquivo!
O projeto anteriormente compartilhado realmente era incrível,porém bem extenso e difícil de ajustar às necessidades subjetivas (principalmente se for um calouro em vba, como eu!); encontrei esse código abaixo e realmente é muito massa! Ele possibilita um redimensionamento em qualquer direção com autoajuste de todos os controles de formulário.
Analisem é incrível mesmo!
Código: Selecionar todos
 
' No módulo
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
Código: Selecionar todos
'no cód do form
Option Explicit

Dim Lg As Single
Dim Ht As Single
Dim Fini As Boolean


Private Sub UserForm_Initialize()
Dim i As Integer, L As Integer, TB

    InitMaxMin Me.Caption
    Ht = Me.Height
    Lg = Me.Width

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
Em anexo o arquivo para apreciação, espero ter ajudado!
Você não está autorizado a ver ou baixar esse anexo.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord