Campos dinâmicos em...
 
Notifications
Clear all

Campos dinâmicos em tempo de execução

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

Boa Tarde,

Estou precisando criar campos dinâmicos em tempo de execução em um formulário VBA.
De acordo com a resposta do usuário em um combo box, irá surgir alguns text box.

Se alguem puder me ajudar, eu agradeço

 
Postado : 26/07/2016 10:48 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

israelmpb,

Boa tarde!

Segue um pequeno exemplo que faz o que você quer. Veja se é isso.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 26/07/2016 11:28 am
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Olá, Israelmpb, seja bem vindo!

Criar um controle em tempo de execução, pura e simplesmente até que é simples. Exemplo:

Private Sub UserForm_Click()
  Dim ctl1 As MSForms.TextBox, ctl2 As MSForms.TextBox
  Set ctl1 = Me.Controls.Add("Forms.TextBox.1", "myTxtBox1", True)
  Set ctl2 = Me.Controls.Add("Forms.TextBox.1", "myTxtBox2", True)
  ctl1.Top = 30: ctl1.Left = 100
  ctl2.Top = 50: ctl2.Left = 100
  ctl1.Value = "Teste"
  ctl2.Value = ctl1.Value & "B"
End Sub

Só que assim teria pouca utilidade, pois as textboxes criadas não responderiam a nenhum evento (veja que ao rodar o código, mudando o valor da primeira caixa não atualiza a segunda, pois não existe um evento "Change" nas caixas recém-criadas para que se possa codificar seu comportamento).

A saída então seria criar uma classe com os eventos desejados (num módulo de classe) aí sim pode-se fazer com que seus textboxes respondam aos eventos escolhidos. Nosso colega Mauro Coutinho já discorreu muito bem sobre esse assunto no seguinte tópico: http://www.planilhando.com.br/forum/viewtopic.php?f=10&t=21088.

Procure adaptar às suas necessidades que dará certo.
_______

Outra alternativa seria vc criar normalmente todos os controles que irá usar mas deixá-los invisíveis até que determinada resposta do usuário faça-os surgir durante a execução (propriedade Visible).

_______

Edson

 
Postado : 26/07/2016 12:14 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Vai desculpando, Wagner. Quando abri o tópico não tinha resposta ainda, quando enviei vc já tinha respondido.

 
Postado : 26/07/2016 12:17 pm
(@israelmpb)
Posts: 3
New Member
Topic starter
 

Ok pessoal
Vou dar uma olhada nos exemplos que vcs postaram.
Obrigado pela disponibilidade.

 
Postado : 26/07/2016 12:39 pm
(@israelmpb)
Posts: 3
New Member
Topic starter
 

Ok Wagner
Usei o seu exemplo e deu certo.
O problema é que quando os campos são criados dinamicamente eles ficam por cima dos demais campos que existem no formulario.
Alguém sabe dizer a melhor maneira para contornar esse problema?

 
Postado : 26/07/2016 5:40 pm