CONSTRUINDO UM EVENTO CHANGE DE UM COMBOBOX

BUDTAYLOR 04/10/2013 10:54:50
#429551
Pessoal, bom dia.
Tenho um formulário no qual eu construo todos os combos através do comando [Ô]CONTROLS[Ô] e.x Frm_MeuForm.controls([Ô]Combo1[Ô])

Minha pergunta como que eu construo um evento [Ô]change[Ô] da combo onde conforme eu for adicionando os combos ele atribua o evento change ao combo criado.

Obrigado pela atenção !

Att

Gustavo Abud.
MARCELO.TREZE 04/10/2013 12:05:56
#429555
Resposta escolhida
no general do form declare o combo como withevents assim

Private WithEvents Combo1 As ComboBox

depois inclua o combo no form, abaixo fiz da minha maneira mas utilize a sua

Private Sub Command1_Click()
[ô] aqui adiciono a combo
Set Combo1 = Form1.Controls.Add([Ô]VB.ComboBox[Ô], [Ô]Combo[Ô])

With Combo1
.Top = 100
.Left = 100
.AddItem [Ô]linha 1[Ô]
.AddItem [Ô]Linha 2[Ô]
.AddItem [Ô]linha 3[Ô]
.Visible = True
End With

End Sub


e agora é so fazer o evento change

Private Sub Combo1_Change()
MsgBox [Ô]teste do change[Ô]
End Sub

BUDTAYLOR 04/10/2013 12:38:50
#429556
Marcelo, primeiramente obrigado !

Mas o que eu precisava é deixar isso dinamico:

Private Sub Combo1_Change()
MsgBox [Ô]teste do change[Ô]
End Sub

Por exemplo, se o usuário inserir 10 combobox, como eu posso criar 10 eventos change dinamicamente ?

é como se eu coloca-se uma variável no lugar do número 1, exemplo :

[Ô]Private Sub Combo[Ô]& i [Ô]_Change()[Ô]
MsgBox [Ô]teste do change[Ô]
End Sub

Tem como ?

vlw !
MARCELO.TREZE 04/10/2013 13:19:13
#429557
posso dar uma dica pra agilizar seu processo.

adicione um combobox como o nome que desejar, nele coloque tudo o que deseja, na propriedade index coloque 0 (zero) e visible = false

agora vem a parte de criar os demais combos dinamicamente porém de outra maneira, veja

primeiro declare uma variavel para criar os numeros da combo

Dim Cont As Integer


agora criando as combos

Private Sub Command1_Click()
Cont = Cont + 1
Load Combo1(Cont)
Combo1(Cont).Top = Combo1(Cont).Top
Combo1(Cont).Left = Combo1(Cont - 1).Left + 1000
Combo1(Cont).Visible = True
End Sub



a vantagem desta maneira é a seguinte, você vai precisar de um unico evento que identificara qual combo foi clicado pelo index do mesmo veja


Private Sub Combo1_Change(Index As Integer)
MsgBox [Ô] este é o combo [Ô] & Index
End Sub


qualquer duvida pergunte


BUDTAYLOR 04/10/2013 14:53:54
#429561
Marcelo, onde eu coloco o index ? é um propriedade do combo VBA ?

MARCELO.TREZE 04/10/2013 15:12:30
#429564
caramba colega ai complica vba nao tem como fazer isso, deixa eu pensar em algo e ja te digo
BUDTAYLOR 04/10/2013 16:47:24
#429569
O Marcelo foi mal velho, mas cara aquele seu primeiro post funciona, logo se você ver que não vai rolar eu vou usar ele mesmo.

Mais uma vez peço desculpas !!
Tópico encerrado , respostas não são mais permitidas