Usuário com melhor resposta
Eliminar (Remover) Item da ComboBox

Pergunta
-
Mais uma vez peço a ajuda dos mestres do VBA para resolver meu problema.
Tenho uma planilha onde na coluna A se encontram vários itens. Os itens vão de A2:A241. Só que minhas células estão mescladas, tipo A2 com A3; A4 com A5; e assim consecutivamente.
E eis meu grande problema. Fiz um userform que quando inicia ele faz um RowSource da coluna A para fazer a lista no combobox. Até ae tudo certo, ele inicia e me carrega todos os itens que tem na planilha, porém, como existe mescla ele aparece entre os itens um espaço vazio e acredito que esse item vazio se refere sempre ao par da mescla que está realmente vazio.
Como faço para excluir estes itens vazios da lista do combobox?
Agradeço a ajuda desde já.
Respostas
-
Segue o código comentado, ele percorre a coluna A e ignora células vazias, como por exemplo as que estão mescladas:
Sub carregaCombo() 'declaração de variáveis Dim lngLastRow As Long 'Seleciona a guia da planilha Sheets("Plan1").Select 'descobre o número da linha da última celula preenchida lngLastRow = Sheets("Plan1").Range("A1").SpecialCells(xlLastCell).Row 'laço de repetição que percorre os dados da coluna For i = 1 To lngLastRow 'se o valor for diferente de vazio If Cells(i, 1).Value <> "" Then 'adiciona o item na combobox UserForm1.ComboBox1.AddItem Cells(i, 1).Value End If 'próxima repetição Next i End Sub
- Editado André Santo segunda-feira, 7 de dezembro de 2015 16:00
- Marcado como Resposta Diego.Tj segunda-feira, 7 de dezembro de 2015 17:33
Todas as Respostas
-
Diego,
Você pode iterar sobre os elementos do combo box e remover os que estão com Text vazio:
Dim intComboItem As Integer For intComboItem = 0 To Me.ComboBox1.ListCount - 1 if StrComp (Me.ComboBox1.Value, "") == 0 then Me.ComboBox1.RemoveItem intComboItem end if Next
Att. Andre de Mattos Ferraz - www.iamferraz.com.br - http://mbsy.co/ldecrespigny/19022985
-
-
Oi André, obrigado pelas linhas de código, mas agora está me aparecendo o seguinte erro:
_______________________________________________
Erro em tempo de execução '-2147467259 (80004005)':
Erro não especificado.
_______________________________________________
Na hora que debuguei o código vi que ele passa no primeiro item, porém quando aparece o item vazio (que é o item 1 do combobox) e ele passa pra linha de remover, dá este erro.
Alguma solução?
- Editado Diego.Tj segunda-feira, 7 de dezembro de 2015 15:42
-
Outra abordagem possível seria preencher o combo utilizando o método additem ao invés de Rowsource e verificando o valor da célula antes de inserir
E como eu faria isso? Não sei usar a função additem ainda. Usaria Range mais additem e colocaria uma condição para não pegar as células vazias?
Só a critério de reforço as células que aparecem vazias são as mescladas com as que tem os items para aparecer na lista do combobox.
- Editado Diego.Tj segunda-feira, 7 de dezembro de 2015 15:53
-
Segue o código comentado, ele percorre a coluna A e ignora células vazias, como por exemplo as que estão mescladas:
Sub carregaCombo() 'declaração de variáveis Dim lngLastRow As Long 'Seleciona a guia da planilha Sheets("Plan1").Select 'descobre o número da linha da última celula preenchida lngLastRow = Sheets("Plan1").Range("A1").SpecialCells(xlLastCell).Row 'laço de repetição que percorre os dados da coluna For i = 1 To lngLastRow 'se o valor for diferente de vazio If Cells(i, 1).Value <> "" Then 'adiciona o item na combobox UserForm1.ComboBox1.AddItem Cells(i, 1).Value End If 'próxima repetição Next i End Sub
- Editado André Santo segunda-feira, 7 de dezembro de 2015 16:00
- Marcado como Resposta Diego.Tj segunda-feira, 7 de dezembro de 2015 17:33
-