Boa noite amigos!
Estou com uma dificuldade, pode ser simples mas não consegui resolve-la. Então, tenho um userform com duas textbox e uma listbox, essa listbox recebe os dados de duas colunas, Coluna Q e R, até aí tudo bem, porém o código que estou usando trás para a listbox todas as linhas, mesmo que não preenchidas, das colunas Q e R, e eu gostaria que retornasse apenas as linhas conforme forem sendo preenchidas. Será que alguém consegue me ajudar?
Obs: Com um duplo click sobre um dos dados, eles devem continuar retornando para as textbox.
Segue em anexo minha planilha.
Agradeço desde já!
Para preencher o listbox somente com os dados ignorando as linhas em branco abaixo, substitua a rotina que preenche o listbox pela a abaixo.
Uma observação sobre o cabeçalho, é que o mesmo só aparece quando utilizamos o Rowsource, e na rotina que estou passando você em de adicionar dois Labels acima e preenche-lo :
Private Sub UserForm_Initialize() Dim cell As Range Dim Rng As Range With ThisWorkbook.Sheets("BD_Lavoura") Set Rng = .Range("Q2", .Range("Q2").End(xlDown)) End With 'Altere os nomes dos Label de acordo com os que adicionar Label26.Caption = Range("Q1").Value Label27.Caption = Range("R1").Value For Each cell In Rng.Cells With Me.ListBox1 .ColumnCount = 2 'Define a qde de Colunas no Listbox .AddItem cell.Value .List(.ListCount - 1, 1) = cell.Offset(0, 1).Value 'Coluna 1 .List(.ListCount - 1, 2) = cell.Offset(0, 2).Value 'Coluna 2 End With Next cell End Sub
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Boa noite Mauro!
Substituí a rotina, porém, não consigo executar, pois está dando o seguinte erro: "Erro em tempo de execução 424: O objeto é obrigatório"
Você alterou os nomes dos Label26 e Label27 pelos nomes dos que você adicionou ?
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Desculpa Mauro, foi um erro de digitação.. deu certo agora! Muito Obrigado.
Reabri o tópico devido a msg em PVT :
Boa noite Mauro!
Desculpa te chamar no particular, mas me surgiu uma dificuldade sobre o preenchimento da listbox que me ajudaste. Está funcionando muito bem tendo 2 ou mais dados na planilha, porém, se excluir da planilha deixando apenas 1 talhão e 1 hectare da erro e o excel trava, teria como me ajudar com mais essa?
Schramm, o erro se dá devido eu não ter feito nenhum tratamento quanto a qde de itens, fiz e não tstei, e mesmo que não tenha nenhum dado tambem teremos o erro.
Explicando o porque do erro :
Como temos a instrução : Set Rng = .Range("Q1", .Range("Q1").End(xlDown)), ela define o Range iniciando em Q1, e na linha : For Each cell In Rng.Cells é preenchido o listbox, só que, se tivermos somente dados na linha 2 ou se não tivermos, o Range será definido de "Q1" até a última linha da planilha.
Então para evitarmos futuros problemas, troque a rotina pela a abaixo, veja que nesta eu não coloquei instrução para preencher os Labels com o cabeçalho, pois, já que será sempre o mesmo, é só definir o caption de cada um direto na propriedade.
Private Sub UserForm_Initialize() Dim UltimaLinha, i As Integer ListBox1.ColumnCount = 2 ListBox1.Clear UltimaLinha = Sheets("BD_Lavoura").Cells(Cells.Rows.Count, 17).End(xlUp).Row If UltimaLinha <= 1 Then Exit Sub For i = 2 To UltimaLinha With Me.ListBox1 .AddItem Sheets("BD_Lavoura").Range("Q" & i).Value .List(ListBox1.ListCount - 1, 1) = Sheets("BD_Lavoura").Range("R" & i).Value End With Next End Sub
Faça os testes e veja se agora está correto.
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Boa noite Mauro! Entendi tua explicação, agora funcionou perfeitamente! Aos poucos vou aprendendo e pegando o jeito, sou leigo nesse assunto ainda.. Muito Obrigado pela ajuda e pela paciência, Te agradeço mesmo!