none
[RESOLVIDO] Índice errado do ListBox RRS feed

  • Pergunta

  • Boa noite, estou com uma rotina em um ListBox que não está levando os dados corretos para o formulário em Excel VBA.

    Quando seleciono um item, por exemplo, conforme a imagem 1, ele carrega no form imagem 2 o item 1 e não o 2.

    A imagem 3 são os dados que é enviado para o ListBox.

    Essa é a rotina do ListBox:

    Private Sub lsLista_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

    Dim codigo As Integer
    Dim selecao As Integer

    selecao = lsLista.ListIndex
    codigo = lsLista.List(selecao, 1)

    frmCadastrar.txtCodigo = codigo
    frmCadastrar.txtCodigo.SetFocus
    frmCadastrar.txtNome.SetFocus

    Unload Me

    End Sub

    Ou seja não sei onde estou errando que ele não coloca no form (imagem2) para que eu possa excluir ou alterar o item que eu selecionei na ListBox.

    Obs.: Minha tabela é igual ao ListBox com o incremento do ID.

    Como resolver isso e meu muito obrigado.

    imagem1

    imagem 2



    Carlos Rodrigues de Souza - Analista de Suporte



    • Editado Carosouza terça-feira, 25 de novembro de 2014 03:47
    segunda-feira, 24 de novembro de 2014 02:01

Respostas

  • Carosouza,

    pela sua imagem, está sendo enviado o "ID=1" e não 2. Imagino que o erro ainda seja pelo que já relatei: observe que vc está enviando a coluna "1", que na verdade corresponde à coluna "Código". Além disso, parece-me que seu formulário de destino recebe o campo "codigo" e não "ID":

    selecao = lsLista.ListIndex
    codigo = lsLista.List(selecao, 1 - 1)
    
    frmCadastrar.txtCodigo = codigo

    Para enviar a primeira coluna, basta fazer como acima. Para verificar qual o campo de destino (segunda marcação), não tenho como confirmar sem ter o seu projeto, mas isso é fácil de vc mesmo verificar.

    Qualquer dúvida estou a disposição.


    Filipe Magno

    segunda-feira, 24 de novembro de 2014 15:32

Todas as Respostas

  • Boa noite CaroSouza.

    Acho que seu problema é bastante simples de resolver: o índice do ListBox começa em "0" e não em "1", ou seja, basta deslocar em "1" unidade o índice procurado.

    Abraço.


    Filipe Magno

    segunda-feira, 24 de novembro de 2014 02:30
  • Olá Filipe, infelizmente já usei assim e não dá. Se eu colocar 0, ele me dá que o meu aluno não está cadastrado onde seu código que é verificado e não pela ID que tive que criar para ter como usar o campo de código do aluno para várias parcelas. Além disso ele não me leva nenhum dado para o formulário.




    Carlos Rodrigues de Souza - Analista de Suporte

    segunda-feira, 24 de novembro de 2014 12:30
  • Bom dia Carosouza.

    Acho que agora compreendi seu problema. O que parece estar ocorrendo é que vc está utilizando o "codigo" como chave primária, mas existem múltiplos lançamentos para cada um deles. Assim, não há como distinguir qual dos lançamentos foi solicitado. Perceba que para o "codigo=1000" existem 3 lançamentos distintos, mas a única identificação que vc utiliza é:

    frmCadastrar.txtCodigo = codigo

    Ou seja, vc precisa vincular a um identificador que seja único para cada linha de seu ListBox, de forma que seja possível identificá-lo inequivocamente. Como não tenho seu projeto, não consigo avançar muito mais que isso, mas se tiver mais dúvidas é só perguntar.

    Abraço.


    Filipe Magno

    segunda-feira, 24 de novembro de 2014 13:04
  • Olá Filipe, foi por isso que eu criei um ID automático, só que quando eu seleciono a linha do listbox para que eu possa enviar para o form, ele apenas envie o numero do ID correto, mas não preenche os demais campos. 

    Como estou quase na hora de ir para casa, tentarei isso lá, e caso alguém possa me dar uma luz fico agradecido.

    Obrigado por enquanto Filipe

    Carosouza


    Carlos Rodrigues de Souza - Analista de Suporte

    segunda-feira, 24 de novembro de 2014 14:41
  • Carosouza,

    pela sua imagem, está sendo enviado o "ID=1" e não 2. Imagino que o erro ainda seja pelo que já relatei: observe que vc está enviando a coluna "1", que na verdade corresponde à coluna "Código". Além disso, parece-me que seu formulário de destino recebe o campo "codigo" e não "ID":

    selecao = lsLista.ListIndex
    codigo = lsLista.List(selecao, 1 - 1)
    
    frmCadastrar.txtCodigo = codigo

    Para enviar a primeira coluna, basta fazer como acima. Para verificar qual o campo de destino (segunda marcação), não tenho como confirmar sem ter o seu projeto, mas isso é fácil de vc mesmo verificar.

    Qualquer dúvida estou a disposição.


    Filipe Magno

    segunda-feira, 24 de novembro de 2014 15:32
  • Olá Filipe, caso tenha tempo disponível posso te enviar o arquivo.

    Muito obrigado

    Carosouza

     

    Carlos Rodrigues de Souza - Analista de Suporte

    segunda-feira, 24 de novembro de 2014 17:57
  • Boa noite Carlos.

    Esta semana está meio corrido para mim, mas se quiser e puder, poste seu projeto (ou parte dele) aqui no fórum que tenho achar um tempinho para dar uma olhada. Assim também terá a chance de outras pessoas te ajudarem.

    Abraço.


    Filipe Magno

    segunda-feira, 24 de novembro de 2014 23:30
  • Olá Filipe, consegui resolver de uma outra forma que ao clicar na linha da listbox, ela é carregada em um outro form com todos os dados da linha clicada e assim pude tanto alterar como excluir o registro.

    Obrigado por sua ajuda!!


    Carlos Rodrigues de Souza - Analista de Suporte

    terça-feira, 25 de novembro de 2014 03:47