none
Como preencher, via vba, uma listbox em várias colunas, com dados da planilha, mas sem saber previamente quantas linhas e quantas colunas estão preenchidas na planilha? RRS feed

  • Pergunta

  • Preciso de um código único para preencher a listbox no formulário, independentemente de quantas linhas e quantas colunas estão preenchidas na planilha.

    Tenho um formulário com um botão e uma listbox.




    • Editado diniabr2012 quinta-feira, 3 de janeiro de 2013 20:05
    quinta-feira, 3 de janeiro de 2013 07:34

Respostas

  • Private Sub UserForm_Initialize()
        With Sheets("Plan1").UsedRange
            ListBox1.ColumnCount = .Columns.Count
            ListBox1.RowSource = .Address
        End With
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    • Marcado como Resposta diniabr2012 quinta-feira, 3 de janeiro de 2013 22:25
    quinta-feira, 3 de janeiro de 2013 22:10
    Moderador

Todas as Respostas

  • Não entendi quando disse que independe quantas colunas tem. Está querendo uma ListBox que tenha mais de uma coluna? Se for uma coluna, veja como ficaria:

    Private Sub UserForm_Initialize()
        Dim lLast As Long
        Dim lRow As Long
        
        With Sheets("Plan1")
            lLast = .Cells(.Rows.Count, "A").End(xlUp).Row
            
            'Considerando que a linha 1 é cabeçalho:
            For lRow = 2 To lLast
                ListBox1.AddItem .Cells(lRow, "A")
            Next lRow
            
        End With
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quinta-feira, 3 de janeiro de 2013 21:30
    Moderador
  • A listbox terá mais de uma coluna.

    Quando digo independente é que o mesmo código deve dar conta de diversos intervalos:

    A1:K28, por exemplo ou

    L12:N24, por exemplo ou

    I7:Z6, por exemplo ou

    H89:Y111, por exemplo 

    Preciso de um código genérico que seja válido para qualquer intervalo de linhas e colunas.

    quinta-feira, 3 de janeiro de 2013 22:03
  • Private Sub UserForm_Initialize()
        With Sheets("Plan1").UsedRange
            ListBox1.ColumnCount = .Columns.Count
            ListBox1.RowSource = .Address
        End With
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    • Marcado como Resposta diniabr2012 quinta-feira, 3 de janeiro de 2013 22:25
    quinta-feira, 3 de janeiro de 2013 22:10
    Moderador
  • Genial, genial, genial...
    quinta-feira, 3 de janeiro de 2013 22:25
  • Mano, valeu! não qualquer valeu. Muito valeu mesmo.Tipo muito obrigado mesmo, entende?!
    domingo, 4 de outubro de 2015 17:51
  • Private Sub UserForm_Initialize()
        With Sheets("Plan1").UsedRange
            ListBox1.ColumnCount = .Columns.Count
            ListBox1.RowSource = .Address
        End With
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    Obrigado Felipe, tão simples, mas não conhecia.
    terça-feira, 18 de outubro de 2016 18:26
  • mas como fica o cabeçalho?
    sábado, 9 de setembro de 2017 17:30
  • Cara, vc salvou minha vida!

    Muito Obrigado mesmo!

    terça-feira, 30 de janeiro de 2018 20:34
  • Boa noite

    Eu tenho um problema parecido mas a forma de inserir no listbox teria que ser atraves de caixas de texto e combobox, as informações são toda hora mudadas e posso lançar nas vendas só o pagamento, mudar o status de se foi entregue ou não, eu usava uma listview mas na ultima atualização do office ele não esta mais funcionando.

    Tem como fazer o lançamento com 24 colunas sem lançar os dados numa planilha 

    sexta-feira, 2 de março de 2018 00:25