none
Problema Preencher combobox vba excel RRS feed

  • Pergunta

  • Boa tarde Pessoal;

    Seguindo sugestões do msdn usei o seguinte código pra popular meus comboboxes:

    Private Sub Preenche()
    
     Dim k As Long
     Dim n As Long
     Dim nLast As Long
    
     With Sheets("Dados")
      nLast = .Cells(.Rows.Count, "A").End(xlUp).Row 'Ler última célula preenchida da coluna A e atribuir a nLast.
      For n = 1 To nLast
       For k = 1 To 12
        If n = 1 Then 'Se é a primeira vez que os ComboBox serã povoados, limpá-los.
         Controls("ComboBox" & k).Clear
        End If
        Controls("ComboBox" & k).AddItem .Cells(n, "A")
       Next k
      Next n
     End With
    End Sub

     

    Antes eu selecionava a planilha, a celula a e varria ate achar a celula vazia. Me orientaram a não faze-lo pois nao era recomendado.

    Fiz toda a programação e tals.... testei tudo, porém com a planilha "Dados" selecionada no excel...funcionou tudo. Mas qnd mudei a planilha no excel para uma que tinha a imagem do lab("Fundo") os combos nao preencheram... Achei que tinha feito algum bobagem... e fiz vários testes... mas qnd voltei a selecionar a planilha "Dados" no excel os combos carregaram normalmente.

     

    Gostaria de um help...

     

    Abraços  todos.

     

    IJ

    domingo, 17 de outubro de 2010 21:06

Respostas

  • Olá Pessoal....

    Pisei na bola...Estava lendo as ajudas do vba e fui revisar...

    No local que começa o with o valor de nLast é seguido por ".cells".... eu me esqueci de por o ponto....

    Foi mal.... Descobri isso Qnd acrescentei Sheets("Dados"). ao cells... e funcionou....

    Antes:

    nLast = Cells(.Rows.Count, "A").End(xlUp).Row 'Ler última célula preenchida da coluna A e atribuir a nLast.

    Agora:

    nLast = .Cells(.Rows.Count, "A").End(xlUp).Row 'Ler última célula preenchida da coluna A e atribuir a nLast.

     

    Desculpem a furada....

     

    um grande abraço a todos e ótimo final de domingo...

    IJ

    • Marcado como Resposta Ilário Júnior domingo, 17 de outubro de 2010 22:02
    domingo, 17 de outubro de 2010 22:02

Todas as Respostas

  • Olá Pessoal....

    Pisei na bola...Estava lendo as ajudas do vba e fui revisar...

    No local que começa o with o valor de nLast é seguido por ".cells".... eu me esqueci de por o ponto....

    Foi mal.... Descobri isso Qnd acrescentei Sheets("Dados"). ao cells... e funcionou....

    Antes:

    nLast = Cells(.Rows.Count, "A").End(xlUp).Row 'Ler última célula preenchida da coluna A e atribuir a nLast.

    Agora:

    nLast = .Cells(.Rows.Count, "A").End(xlUp).Row 'Ler última célula preenchida da coluna A e atribuir a nLast.

     

    Desculpem a furada....

     

    um grande abraço a todos e ótimo final de domingo...

    IJ

    • Marcado como Resposta Ilário Júnior domingo, 17 de outubro de 2010 22:02
    domingo, 17 de outubro de 2010 22:02
  • Bom dia amigo !

    Estou tentando usar, mas está dando que o objeto não existe ou erro indefinido.

    Como se o combo não estivesse sido criado.

    Estou chamando a função no evento enter do combo, passando combo, planilha e coluna direitinho.

    Ao debugar, vejo o nome do combo na variável combo, mas não estou obtendo êxito.

    Por favor, gostaria de saber se estou fazendo algo errado. Veja o código por gentileza.

     

    Private Function preencheCombo(planilha As String, coluna As String, combo As String)

      Dim x As Long
      Dim registro As Long
      Dim ultimoRegistro As Long

      With Sheets(planilha)
      ultimoRegistro = .Cells(.Rows.Count, coluna).End(xlUp).Row

      For registro = 1 To ultimoRegistro
       For x = 1 To 12
        If registro = 1 Then
         Controls(combo).Clear
        End If
         Controls(combo).AddItem .Cells(registro, coluna)
        Next x
        Next registro

      End With


    End Function

    sexta-feira, 30 de setembro de 2011 14:12