Dicas de Excel - VBA III - Preenchendo ComboBox | Excelmax Soluções e Controles

quinta-feira, novembro 15, 2012

Dicas de Excel - VBA III - Preenchendo ComboBox

Dicas de Excel - VBA III - Preenchendo ComboBox

excel, vba, soluçõesTempo é algo que não temos de sobra em dias tão corridos que vivemos. As atividades do dia-a-dia da maioria das pessoas consomem boa parte deste tempo. Para podermos ganhar tempo,  podemos desenvolver soluções que permitam agilidade com eficácia em nossas atividades.

Para ajudar nisso, esta matéria apresenta duas dicas / lembretes importantes que podem ajudar no desenvolvimento de soluções em Excel e VBA (Macros).


As macros a seguir podem ser utilizadas ou adaptadas a sua necessidade:

1. Preencher um ComboBox com dados Classificados

A macro (código) a seguir preenche um ComboBox quando o formulário (UserForm) é inicializado. Primeiro os dados são classificados e por fim, o ComboBox é preenchido. No exemplo, o ComboBox recebeu o nome: 'cdUF'. 


    Private Sub UserForm_Initialize()
        Dim i As Long, j As Long, area As Variant
        Dim temp As Variant
        ultimaLinha = Plan1.Cells(Rows.Count, "a").End(xlUp).Row
    
        area = Range(Cells(2, 1), Cells(ultimaLinha, 1)).Value
        For i = 1 To UBound(area, 1)
             For j = i + 1 To UBound(area, 1)
                 If area(i, 1) > area(j, 1) Then
                      temp = area(i, 1)
                      area(i, 1) = area(j, 1)
                      area(j, 1) = temp
                 End If
             Next
        Next
        cdUF.List = area
    End Sub


2. Preencher um ComboBox com dados Únicos

A macro (código) a seguir preenche um ComboBox quando o formulário (UserForm) é inicializado. Os dados repetidos são ignorados e o ComboBox é preenchido. No exemplo, o ComboBox recebeu o nome: 'cdDadosUnicos'. 


    Private Sub UserForm_Initialize()
         Dim ultimaLinha As Long, area As New Collection
         Dim Value As Variant, temp() As Variant

         On Error Resume Next
         ultimaLinha = Plan1.Range("A" & Rows.Count).End(xlUp).Row
         temp = Plan1.Range("A2:A" & ultimaLinha).Value

         For Each Value In temp
             If Len(Value) > 0 then area.Add Value, CStr(Value)
         Next Value

         For Each Value In area
             cdDadosUnicos.AddItem Value
         Next Value

         Set area = Nothing

    End Sub

As postagensDicas de Excel - VBA e Dicas de Excel - VBA II possuem outras dicas que podem ajudar no aprendizado.

Compartilhe com seus amigos enviando-lhes e-mails, divulgando nas Redes Sociais, por telefonefalando-lhes pessoalmente ou da forma que puder e desejar.

Você pode fazer parte da Comunidade ExcelMax® Soluções. Para isso, basta acessar e inscrever-se. Desta forma, a cada nova publicação você estará recebendo informações em seu e-mail.

Abraço a Todos!
Professor e Consultor: Ivair Claudio Ferrari.

2 comentários:

  1. Parabéns professor. Excelentes materiais publicados. Estes últimos são os melhores.

    Sylvia!

    ResponderExcluir

Seja um participante desta comunidade !
Deixe aqui seu comentário e/ou sugestão.
Obrigado !

Ivair Claudio Ferrari