none
Como eu removo itens em um ComboBox? RRS feed

  • Pergunta

  •   Olá, tenho o seguinte problema. Criei um ComboBox a partir de uma coluna em que algumas células estavam mescladas. Usei ComboBox1.AddItem ActiveCell.Offset(i, 0).FormulaR1C1 para adicionar os itens; no entanto, ao encontrar células mescladas, ele adiciona um item em branco.

       Para remover os itens em branco, tentei o seguinte código:

      
      'remove itens vazios
      For i = 0 To ComboBox1.ListCount - 1
        If ComboBox1.List(i) = "" Or IsNull(ComboBox1.List(i)) Then
          ComboBox1.RemoveItem i
        End If
      Next
    
       No entanto, ele não remove todos; por algum motivo deixa alguns. Além disso, aparece uma série de itens em branco ao final do combobox. Como resolver este problema?
    terça-feira, 11 de janeiro de 2011 14:43

Todas as Respostas

  • Troque seu teste condicional por:

    If Len(ComboBox1.List(i)) = 0 Then


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br
    quarta-feira, 12 de janeiro de 2011 00:56
    Moderador
  •    Benzadeus, muito obrigado; isso resolveu os espaços em branco, embora apareçam muitos espaços em branco ao fina do ComboBox. Talvez seja porque o for que atribui os itens ao ComboBox vai de 1 até um número maior que a quantidade de linhas na coluna A. No entanto, não consigo acertar este número porque retiro a quantidade de linhas de
    While ActiveCell.MergeCells = True
        count = count + 1
        ActiveCell.Offset(count, 0).Select
      Wend
      
      numlin = ActiveCell.Row
    

       uma vez que, na coluna considerada, há apenas células mescladas de tamanhos distintos.

     

    Ainda assim, obrigado.

    quarta-feira, 12 de janeiro de 2011 13:15
  • "Talvez seja porque o for que atribui os itens ao ComboBox vai de 1 até um número maior que a quantidade de linhas na coluna A."

    Essa suposição não é correta porque efetivamente só é adicionado ao ComboBox células que possuem comprimento maior que 0.

     

    Se existem itens em branco sendo adicionados, é porque existem células que possuem um valor igual à um ou mais espaços em branco. Visualmente falando, uma célula com um espaço em branco e uma célula com valor vazio não apresentam diferença, mas a primeira é adicionada ao ComboBox. É esse seu caso?


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br
    quarta-feira, 12 de janeiro de 2011 20:51
    Moderador
  • Pode ser esse o caso, no entanto, se for isso mesmo, todas as vezes que um usuário digitasse um espaço sem querer na mesma coluna teríamos itens em branco no combobox, "estragando" o programa. Talvez se existisse uma função do tipo Len() que verificasse se os dados são válidos...
    sexta-feira, 14 de janeiro de 2011 12:38
  • Faça o seguinte: disponibilize uma Pasta de Trabalho apenas com a coluna que os dados são importados ao ComboBox para que possamos analisar.
    Felipe Costa Gualberto - http://www.ambienteoffice.com.br
    sexta-feira, 14 de janeiro de 2011 20:35
    Moderador
  • '  REMOVE ITENS VAZIOS DO COMBOBOX
      For i = 1 To ComboBox1.ListCount - 1
        If Len(ComboBox1.List(i)) = 0 Then
          ComboBox1.RemoveItem i
        End If
      Next
    
    Voltei a este problema. Esta parte do código está dando erro. Vou disponibilizar um exemplo de como é esta parte do banco de dados. Mas como faço isso?
    domingo, 27 de março de 2011 17:18