none
UserForm combobox loop RRS feed

  • Pergunta

  • Galera, estou montando um userfor o qual tem 30 ComboBox (ComboBox1, ComboBox2, etc) e gostaria reduzir as linhas (pensei em utilizar um For i=1 to 30).

    Atualmente tenho:

    Private Sub UserForm_Initialize()

    ComboBox1.clear

    With ComboBox1
        .AddItem "A"
        .AddItem "B"
        .AddItem "C"
        .AddItem "D"
    End With

    ComboBox2.clear

    With ComboBox2
        .AddItem "A"
        .AddItem "B"
        .AddItem "C"
        .AddItem "D"
    End With

    ...

    Sou totalmente leigo no assunto pelo que agradeço sua colobaração da forma  mais didatica possivel.

    Sds

    terça-feira, 24 de janeiro de 2017 13:43

Respostas

  • Ajudando também:

    um método simples para preencher um combobox:  

    ComboBox1.List = Array("A", "B", "C")

    Dessa forma, como seus forms são listados por números você pode fazer assim:

      For i = 1 To 30
        Set c = Me.Controls("combobox" & i)
        c.List = Array("A", "B", "C")
      Next i
    
    Abraço!


    Natan

    terça-feira, 24 de janeiro de 2017 21:03

Todas as Respostas

  • Olá!

    Se vocÊ está usando um UserForm, pode fazer assim:

    Dim x As Control
    'Varre todos os controles do formulário
    For Each x In Me.Controls
       'Para verificar o nome do controle
       If x.Name = "ComboBox1" Then
           MsgBox (x.Name)
       End If
       'Para verificar o tipo do controle
       If TypeName(x) = "ComboBox" Then
           Dim c As ComboBox
           'Converte no tipo verificado
           Set c = x
           'Adiciona as Opções
           c.AddItem "Teste"
       End If
    Next


    Fabio Rosa.

    terça-feira, 24 de janeiro de 2017 16:07
  • Ajudando também:

    um método simples para preencher um combobox:  

    ComboBox1.List = Array("A", "B", "C")

    Dessa forma, como seus forms são listados por números você pode fazer assim:

      For i = 1 To 30
        Set c = Me.Controls("combobox" & i)
        c.List = Array("A", "B", "C")
      Next i
    
    Abraço!


    Natan

    terça-feira, 24 de janeiro de 2017 21:03
  • Muito Obrigado Fabio!! Porém tenho outros comboboxs (do 31 ao 60) nas quais devem ser agregados outros itens. Entendo que se aplico seu código serão adicionados para todas as combóoboxs os mesmos itens. Certo?
    terça-feira, 24 de janeiro de 2017 23:47
  • Muito Obrigado Natan... deu certo!!
    quarta-feira, 25 de janeiro de 2017 00:35
  • Olá!

    Sim, da forma como coloquei, todos serão atualizados igualmente... mas que bom que o Natan já postou a forma de fazer para que você consiga atualizar somente alguns com um valor e outros com outro. No código que postei pode utilizar também a mesma forma de verificação sugerida pelo Natan, utilizando a comparação do nome do controle.

    Att,


    Fabio Rosa.

    quarta-feira, 25 de janeiro de 2017 10:10