A presença de Userforms foi uma benção para usuários do Microsoft Excel. Isso ninguém discute. Mas a pergunta que não quer calar é:
Como Posicionar Controles no Userform?
Sei bem como é, pois já me perguntei isso muitas vezes no passado.
Fico feliz que você agora esteja procurando pela mesma resposta. Sinal de que está comprometido(a) com cada detalhe do seu projeto, algo raro de encontrar. Comprometimento que irá impactar positivamente sua carreira.
Acesse também nosso canal para assistir a aula completa neste link.
E vamos ao que interessa: descobrir como posicionar controles no userform.
O Userform
Em primeiro lugar, se você está com dificuldades em posicionar controles no userform é porque o tamanho do userform é dinâmico. Correto?
Do contrário, seria fácil posicionar os controles num userform de tamanho estático.
Pois bem, caso seu userform seja ainda estático e você queira implementar esse dinamismo (por exemplo, para que ocupe a tela inteira), pode acessar esta aula onde explico no detalhe como fazer isso.
Pronto!
Isso feito, seu próximo problema será o objeto deste post, ou seja, como posicionar esses controles para que fiquem bem distribuídos na abertura do Userform.
Embora o foco aqui seja o userform, vale a dica: usar o objeto Msgbox junto ao userform vai deixar seu projeto mais agradável e interativo para o usuário. Veja aqui como dominar este recurso.
Criando um modelo
Antes de mais nada, é preciso criar um modelo-base de como serão distribuídos os controles.

Sobretudo, é muito importante que você analise e ajuste corretamente as PROPRIEDADES do seu modelo. Isso vai determinar o sucesso do resultado final.
A propósito, a janela de propriedades pode ser visualizada usando a tecla F4, e aqui as propriedades Height, Width, Left e Top serão fundamentais.

Para melhor exemplificar, seguem as propriedades de Nomes, Tamanho e Posicionamento do Userform do Modelo, bem como os controles presentes no mesmo.
Aliás, para ficar ainda mais fácil trabalhar com esses dados, sugiro que vocês registrem essas propriedades em uma Tabela, da seguinte forma:

Embora a posição dos controles esteja definida pelo modelo, este userform possui um código que ajusta seu tamanho em tela cheia.
Private Sub UserForm_Activate()
Dim vAltura As Long
Dim vLargura As Long
vAltura = Application.Height
vLargura = Application.Width
'CODIGO PARA ABRIR O USERFORM EM TELA CHEIA
With usfModeloUserform
.Width = vLargura
.Height = vAltura
.Left = Application.Left
.Top = Application.Top
End With
'Abaixo codigos de Como Posicionar Controles no Userform
End Sub
Sendo assim, veja abaixo o que ocorre quando pressionamos a tecla F5 para executar o Userform:

Nossos controles ficaram completamente isolados no canto do Userform.
Perderam, desse modo, a harmonia que havíamos elaborado no modelo inicial.
Vamos resolver esse problema?
Solução: Posicionar Controles no Userform de modo dinâmico
Precisamos posicionar os controles de modo que suas localizações oscilem de acordo com o tamanho do Userform. Mas primeiro vamos adequar o posicionamento utilizando os objetos txtNome e lblNome.

Visto que o Label lblNome é um “satélite” do TextBox txtNome, definimos o posicionamento do txtNome antes e depois o lblNome, respeitando a proporção do campo.
Como mencionado antes, o textBox txtNome tem propriedade Top igual a 20. Este valor, em relação a propriedade Height (Altura) do userform de valor 200, representa 10%.
Ou seja, independente do tamanho do userform, podemos utilizar este percentual para garantir o posicionamento correto do textBox.
Faremos o mesmo em relação a propriedade Left (igual a 50). Ela corresponde a 12,5% da propriedade Width (Largura) de valor igual a 400 do userform.
'Abaixo codigos de Como Posicionar Controles no Userform
'NOME
'TEXTBOX
txtNome.Top = 0.1 * vAltura
txtNome.Left = 0.125 * vLargura
Porém, a mesma lógica não se aplica ao Label lblNome. Devido à proporção, ficará distante do Textbox.
Mas calma, é ainda mais fácil trabalhar com ele.
O lblNome possui exatamente a mesma propriedade Top do txtNome, de modo que basta igualá-los. Quanto a propriedade Left, no modelo o lblNome era 20, enquanto do txtNome era 50, ou seja, 30 de diferença.
Então nosso código fica assim.
'Abaixo codigos de Como Posicionar Controles no Userform
'NOME
'TEXTBOX
txtNome.Left = 0.125 * vLargura
txtNome.Top = 0.1 * vAltura
txtNome.Width = 0.25 * vLargura
'LABEL
lblNome.Top = txtNome.Top
lblNome.Left = txtNome.Left - 30

Encontramos agora um padrão (conforme a tabela) que podemos aplicar aos demais controles. Feito isso, observe só o impacto no resultado final!
Multiplicando o Padrão para Posicionar Controles no Userform
Aplicado aos demais controles, seus futuros projetos terão muito mais dinamismo, precisão e interação… além de você ganhar uma boa dose de “paz no coração” (rs).
(Faça uma pausa e contemple o resultado em tela. Aproveite o momento para tomar aquele cafezinho)
Bem, voltando, vamos detalhar a aplicação dessa lógica aos demais controles.
Vem comigo!

Apesar de estar mais à direita no Userform, podemos calcular a diferença entre as propriedades Left do lblDataNasc (Left: 190) e do txtDataNasc (Left: 270). Resultado igual “-80”.
Uma vez que a propriedade Top de ambos for igual, o problema está resolvido.

Em seguida, podemos calcular o percentual da propriedade Left do txtDataNasc (igual a 270) em relação a propriedade Width (igual a 400) do userform. Total: proporção de 67,50%.
A propriedade Top será igual aos controles referente ao Nome, ou seja, 10%.
'DATA DE NASCIMENTO
'TEXTBOX
txtDataNasc.Left = 0.675 * vLargura
txtDataNasc.Top = 0.1 * vAltura
txtDataNasc.Width = 0.25 * vLargura
'LABEL
lblDataNasc.Top = txtDataNasc.Top
lblDataNasc.Left = txtDataNasc.Left - 80
Do mesmo modo, vamos aplicar os conceitos aos controles referentes ao campo “Cidade”.

De fato, termos um comboBox aqui não impacta em nada. Calcularemos o percentual da propriedade Left de cboCidade (igual a 133,85) em relação a propriedade Width (igual a 400) do userform. Total: proporção de 33,46%.
A propriedade Top será igual a 90 para ambos os controles, ou seja, 45%.

De acordo com nosso padrão, agora basta calcular a diferença entre as propriedades Left do lblCidade (Left : 100) e do cboCidade (Left : 133,85), resultando em “- 33,85”.
'CIDADES
'COMBOBOX
cboCidade.Left = 0.335 * vLargura
cboCidade.Top = 0.45 * vAltura
cboCidade.Width = 0.3 * vLargura
'LABEL
lblCidade.Top = cboCidade.Top
lblCidade.Left = cboCidade.Left - 33.85
Assim encerramos as adequações, implementando o padrão e ajustando nosso commandButton cmdOK.
'BOTAO OK
cmdOK.Left = 0.395 * vLargura
cmdOK.Top = 0.66 * vAltura
cmdOK.Width = 0.18 * vLargura
Projeto Pronto
Enfim, este é o método que encontramos para trazer harmonia ao posicionamento dos controle em seu userform.
Quer mais detalhada? Vem comigo neste vídeo onde explico o passo a passo de como implementar esse recurso.
Acompanhe nosso canal e fique por dentro das novidades e truques do Excel.
Bons estudos e lembre-se: As soluções evoluem dos problemas.