PREENCHENDO COMBOBOX

 Tópico anterior Próximo tópico Novo tópico

PREENCHENDO COMBOBOX

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#487957 - 28/03/2019 20:55:24

IVANPI
GUAPIARA
Cadast. em:Janeiro/2017


Estou com o seguinte cdigo abaixo:

Private Sub CarregaAnosEscolares2()
    Dim mycontrol As Object
    Dim nome_objeto As String
    Dim intLinha As Integer
  
    intLinha = 7
[]LAO PROCURANDO OS OBJETOS
    For Each mycontrol In Controls
        nome_objeto = TypeName(mycontrol)
        If mycontrol.Tag = []Ano_Escolar[] Then
          If nome_objeto = []ComboBox[] Then
            mycontrol.AddItem [][]
[]LOOP PARA PREENCHER OS OBJETOS
            Do Until shtConfig.Cells(intLinha, 4) = [][]
              mycontrol.AddItem (shtConfig.Cells(intLinha, 4))
              intLinha = intLinha + 1
            Loop
          End If
        End If
    Next
End Sub

Como podem perceber, o cdigo faz um lao e teoricamente pegaria todas as comboboxes e preencheria com os dados. Ocorre, que ele s est populando apenas uma combobox, deixando os outros em branco. Tenho umas dez comboboxes que iro os mesmos dados, mas s preenche um. Algum poderia me dar uma luz? :)

Desde j muito obrigado.




#487962 - 28/03/2019 23:17:25

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Por acaso o nico que ele preenche o que tem a tag com o valor []Ano_Escolar[]?

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


Resposta escolhida #487969 - 29/03/2019 07:50:36

EPISCOPAL
VARZEA GRANDE
Cadast. em:Maio/2009


Private Sub CarregaAnosEscolares2()
    Dim mycontrol As Object
    Dim intLinha As Integer
  
    intLinha = 7
[]LAO PROCURANDO OS OBJETOS
    For Each mycontrol In Controls
        If mycontrol.Tag = []Ano_Escolar[] and TypeName(mycontrol) = []ComboBox[] Then
            mycontrol.AddItem [][]
[]LOOP PARA PREENCHER OS OBJETOS
            Do Until shtConfig.Cells(intLinha, 4) = [][]
              mycontrol.AddItem (shtConfig.Cells(intLinha, 4))
              intLinha = intLinha + 1
            Loop
        End If
    Next
End Sub

____________________________________________________________________
Episcopal Studios


#487970 - 29/03/2019 07:52:02

EPISCOPAL
VARZEA GRANDE
Cadast. em:Maio/2009


Citação:
Por acaso o nico que ele preenche o que tem a tag com o valor []Ano_Escolar[]?


Ivanpi a logica que vc implantou diz isso!

____________________________________________________________________
Episcopal Studios


#487976 - 29/03/2019 12:01:39

IVANPI
GUAPIARA
Cadast. em:Janeiro/2017


Citação:
:
Por acaso o nico que ele preenche o que tem a tag com o valor []Ano_Escolar[]?


Boa tarde! Exatamente, que tambm o form tem comboxes, que iro outras informaes, que no Anos Escolares.

:)



#487978 - 29/03/2019 12:29:15

IVANPI
GUAPIARA
Cadast. em:Janeiro/2017


Citação:
:
Private Sub CarregaAnosEscolares2()
    Dim mycontrol As Object
    Dim intLinha As Integer
  
    intLinha = 7
[]LAO PROCURANDO OS OBJETOS
    For Each mycontrol In Controls
        If mycontrol.Tag = []Ano_Escolar[] and TypeName(mycontrol) = []ComboBox[] Then
            mycontrol.AddItem [][]
[]LOOP PARA PREENCHER OS OBJETOS
            Do Until shtConfig.Cells(intLinha, 4) = [][]
              mycontrol.AddItem (shtConfig.Cells(intLinha, 4))
              intLinha = intLinha + 1
            Loop
        End If
    Next
End Sub


Oi Episcoal, deu o mesmo resultado, o que pude perceber fazendo um breakpoint, ele faz o lao, acha o 1 combobox e popula com o loop. Porm, quando volta o lao, ele acha o 2 combobox, mas pula o loop indo direto para o End If



#487980 - 29/03/2019 13:14:48

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Ele pula o lao por que as condies do if no foram satisfeitas...

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#487984 - 29/03/2019 16:09:33

EPISCOPAL
VARZEA GRANDE
Cadast. em:Maio/2009


Citação:
Oi Episcoal, deu o mesmo resultado, o que pude perceber fazendo um breakpoint, ele faz o lao, acha o 1 combobox e popula com o loop. Porm, quando volta o lao, ele acha o 2 combobox, mas pula o loop indo direto para o End If


Eu sei ... eu s encurtei o seu logaritimo.

O kerp est falando que somente uma combo tem essa tag ano_escolar ... o programa nao faz o que a gente quer, e sim o que escrevemos.

____________________________________________________________________
Episcopal Studios


#487985 - 29/03/2019 16:21:01

IVANPI
GUAPIARA
Cadast. em:Janeiro/2017


Citação:
:
Oi Episcoal, deu o mesmo resultado, o que pude perceber fazendo um breakpoint, ele faz o lao, acha o 1 combobox e popula com o loop. Porm, quando volta o lao, ele acha o 2 combobox, mas pula o loop indo direto para o End If

Eu sei ... eu s encurtei o seu logaritimo.

O kerp est falando que somente uma combo tem essa tag ano_escolar ... o programa nao faz o que a gente quer, e sim o que escrevemos.



Eu sei, todas as comboboxes, que necessitam, tem a tag Ano_Escolar. Ainda estou tentando, com a ajuda de vocs, entender o porqu de no estar populando as outras comboboxes, uma vez que as necessidades esto sendo satisfeitas, ele no est pulando o lao, mas sim o Do Until -- loop. :)



#487986 - 29/03/2019 17:30:01

EPISCOPAL
VARZEA GRANDE
Cadast. em:Maio/2009


Última edição em 29/03/2019 17:44:43 por EPISCOPAL

http://www.vbforums.com/showthread.php?832903-How-to-loop-through-all-INDIVIDUAL-controls-on-a-form-especially-with-control-arrays


Se por acaso os seus controles estiver com mesmo nome diferenciando apenas o index nao vai funcionar ... isto e o que diz este link mas tem uma solucao neste link mas parece ser programacao de nivel avanado.

Se for controles com mesmo nome vc pode percorrer assim:

Dim i as integer

For i = combobox1.lbound for combobox1.ubound

   If combobox1(i).tag = oQueVoceQuer then

   Endif

Next i


____________________________________________________________________
Episcopal Studios


#487987 - 29/03/2019 18:19:46

IVANPI
GUAPIARA
Cadast. em:Janeiro/2017


Última edição em 29/03/2019 18:26:25 por IVANPI

Citação:
:
Private Sub CarregaAnosEscolares2()
    Dim mycontrol As Object
    Dim intLinha As Integer
  
    intLinha = 7
[]LAO PROCURANDO OS OBJETOS
    For Each mycontrol In Controls
        If mycontrol.Tag = []Ano_Escolar[] and TypeName(mycontrol) = []ComboBox[] Then
            mycontrol.AddItem [][]
[]LOOP PARA PREENCHER OS OBJETOS
            Do Until shtConfig.Cells(intLinha, 4) = [][]
              mycontrol.AddItem (shtConfig.Cells(intLinha, 4))
              intLinha = intLinha + 1
            Loop
        End If
    Next
End Sub


A persistncia e a ajuda de pessoas bem intencionadas, faz a diferena:

    Dim mycontrol As Object
    Dim intLinha As Integer
  
[]LAO PROCURANDO OS OBJETOS
    For Each mycontrol In Controls
      intLinha = 7
      If mycontrol.Tag = []Ano_Escolar[] and TypeName(mycontrol) = []ComboBox[] Then
            mycontrol.AddItem [][]
[]LOOP PARA PREENCHER OS OBJETOS
            Do Until shtConfig.Cells(intLinha, 4) = [][]
              mycontrol.AddItem (shtConfig.Cells(intLinha, 4))
              intLinha = intLinha + 1
            Loop
        End If
    Next

Perceba que coloquei a varivel, intLinha dentro do lao. Por algum motivo, quando o loop chegava na linha vazia, e depois voltava a fazer o loop, ao invs de ir para a linha 7, ele ficava estacionado na linha vazia.

Mais uma agradeo a voc, ao Kerp e todo pessoal aqui do frum, pela disponibilidade de tempo e pacincia. :)

Estou colocando tambm, la no grupo do Whats, pro pessoal que estavam me ajudando.

Valeu!




 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por IVANPI em 30/03/2019 00:38:06