Notifications
Clear all

Criando Textbox com CommandButton

6 Posts
3 Usuários
0 Reactions
1,976 Visualizações
(@gomesgp)
Posts: 4
New Member
Topic starter
 

Bom dia pessoal!
Sou novo no fórum e estou tentando aprender um pouco de VBA...

Minha dúvida é a seguinte:
Tenho uma userform com uma textbox e um commandbutton, gostaria que cada vez que eu clicar nesse botão, uma nova textbox fosse criada abaixo da já existente, formando uma coluna.

Utilizei o seguinte código:

Private Sub CommandButton1_Click()
X = Me.Controls.Count + 1
Set xx = Controls.Add("Forms.TextBox.1", "CtrlName" & X)
xx.Top = X * 20
xx.Left = 30

End Sub

Funcionou bem, porém, quando insiro uma linha de textbox, não consigo fazer com que aconteça o mesmo com todos... Minha intenção é criar a primeira linha com 6 textbox e conforme eu vá precisando inserir dados, vá formando as 6 colunas simultaneamente de acordo com os cliques...

Se alguém puder me ajudar, agradeço desde já!

Boas festas a todos!

 
Postado : 30/12/2014 11:53 pm
sandroh
(@sandroh)
Posts: 40
Eminent Member
 

Bom dia,
Pode enviar o teu arquivo pra eu dar uma olhada?
Acredito que com um "While" nós resolvemos isso...

Caso tenha resolvido, não esqueça de clicar na mãozinha ao lado da ferramenta "citar" e fechar o tópico ;)

 
Postado : 31/12/2014 5:35 am
(@gomesgp)
Posts: 4
New Member
Topic starter
 

Boa tarde Sandroh,

Envio sim, assim que chegar em casa pela tarde te envio pois está no meu computador, ok?

Agradeço desde já pela atenção e ajuda.

 
Postado : 12/01/2015 12:23 pm
themrl16
(@themrl16)
Posts: 60
Trusted Member
 

Boa tarde Gomes!

Eu havia criado algo semelhante ao que você solicitou para um outro usuário do fórum. Eu posso definir via projeto do VBA quantos quartos eu quero para a minha UserForm... quando o form hotel for iniciado, ele olhará o valor da variável qtdQuartos e criará as CommandButtons/ComboBoxes de acordo com a quantidade que eu coloquei na variável.
Caso a quantidade ultrapasse 14, será gerada uma linha abaixo dos primeiros objetos, inserindo novamente a partir da esquerda.... quanto maior o nº de linhas, maior será a minha UserForm para que a mesma fique ajustada na tela.

Esse tipo de macro é mais chata de fazer, visto que você deverá definir tanto a Altura/Largura dos objetos como o Top e a posição a partir da esquerda, além de aumentar o tamanho da UserForm para adaptá-la ao nº de objetos criados... se você deseja ativar eventos nas CommandButtons (um OnClick, por exemplo), fica ainda mais complexo (será necessário criar objetos de classe, conforme segue no exemplo também).

Deixei o exemplo mais para você ter uma ideia geral do que deve ser feito. Conforme forem surgindo dúvidas é só gritar.

OBS: É importante que você defina de alguma forma qual será o nº de CommandButtons na sua linha... a partir dessa informação, você deve definir no seu código o momento de gerar uma nova linha e zerar o seu contado de CommandButtons na linha... assim, quando você atingir o limite da segunda linha, será gerada a terceira, e assim vai...

Por favor, verifique o exemplo em anexo.

Leia as REGRAS
Utilize arquivos COMPACTADOS
PESQUISE
AGRADEÇA clicando na mãozinha ao lado da ferramenta citar.
Marque o tópico como [Resolvido], clicando no ao lado do botão citar.

Abraços,

Murilo L
------------
e-mail: [email protected]
skype: fareva_mlima

 
Postado : 12/01/2015 1:40 pm
(@gomesgp)
Posts: 4
New Member
Topic starter
 

Boa tarde Sandro,

Segue um exemplo do que estou tentado fazer, peço desculpas de antemão pois sou beeem iniciante...
O que gostaria é que o acontece na userform 3 clicando no botão que fiz para exemplo, aconteça na userform 2 em todas as colunas simultâneamente...

É uma linha com 6 colunas, então quando eu clicar, aparecerá mais uma linha com 6 colunas...

Grato desde já

 
Postado : 15/01/2015 11:48 am
(@gomesgp)
Posts: 4
New Member
Topic starter
 

Muito obrigado themrl16,

Vou dar uma olhada e já retorno, pelo que li, parece ser bem complexo rs
Mas parece ser parecido com o que preciso, espero conseguir entender hahaha

Grato desde já

 
Postado : 15/01/2015 11:51 am