none
Dúvida no Listbox RRS feed

  • Pergunta

  • Amigos.

    Tirem-me por favor esta dúvida.

    Na imagem 1, o Listindex é -1, certo?

    (1)

    Na Imagem 2, apesar do Listbox conter dados, não tem qualquer seleção. Portanto o Listindex é também -1. Correto?

    (2)

    imagem 2

    Então como diferencio em VBA as duas situações?

    É que se eu escrever para a imagem 1:

    If ListBox1.ListIndex < 0 And ListBox1.ListCount = 0 then

    a instrução dá-me erro de incompatibilidade.

    Obrigado


    M_A_S_L

    sábado, 13 de janeiro de 2018 15:10

Respostas

  • Problema resolvido com MsgBox tipo Y/N.

    A condição: "if listbox1.Listindex=0 and Listbox1.ListCount=1 then"não funciona porque independentemente do item selecionado o ListCount é sempre o nº de registos listados.

    Portanto, no Listbox só há básicamente duas hipóteses: ListCount="0" ou ListCount <> "0".

    Para estes casos, aprendi nas minhas pesquisas para resolver o problema antes de postar, que o termo "selected" pode dar imenso jeito.

    Como tal vou tentar aprofundar o assunto.

    Cumprimentos a todos.


    M_A_S_L


    • Marcado como Resposta M_A_S_L domingo, 14 de janeiro de 2018 16:39
    • Editado M_A_S_L domingo, 14 de janeiro de 2018 16:41
    domingo, 14 de janeiro de 2018 16:38

Todas as Respostas

  • If ListBox1.ListIndex < 0  then


    A melhor forma de agradecer e votar como util e / ou marcar como resposta. Anderson Diniz diniabr2011@gmail.com

    sábado, 13 de janeiro de 2018 15:24
  • If ListBox1.ListCount = 0 then


    A melhor forma de agradecer e votar como util e / ou marcar como resposta. Anderson Diniz diniabr2011@gmail.com

    sábado, 13 de janeiro de 2018 15:25
  • Anderson eu preciso de jogar com as duas condições da forma que expus:

    If ListBox1.ListIndex < 0 And ListBox1.ListCount = 0 then

    A razão é a seguinte:

    Se o Listbox não contém dados, o ListIndex é -1 e o Listcount é "0", então fará o registo como 1º Item.

    Se o Listbox contém dados, mesmo sem nenhuma seleção, o ListIndex será -1 mas o ListCount será diferente de "0" e o registo de dados seria feito como Item 2.

    Como posso então associar estas duas condições?


    M_A_S_L

    sábado, 13 de janeiro de 2018 18:57
  • Estranho, testei aqui e não obtive erro para o código que postou:
    If ListBox1.ListIndex < 0 And ListBox1.ListCount = 0 then
    Tem alguma particularidade?

    Filipe Magno

    sábado, 13 de janeiro de 2018 19:11
  • Percebi aqui uma exceção: Caso utilize o "RowSource" e no primeiro caso tenha a linha de título no intervalo o "ListCount" retornará "1", mesmo sem dados.

    Para testar veja o valor. Seria isso?


    Filipe Magno

    sábado, 13 de janeiro de 2018 19:15
  • Boa noite Filipe.

    A mim, e porventura depende do resto do código, dava-me erro de "Type mismatch".

    Não sei bem o que é o "RowSource" mas todos os dados são introduzidos via Userform e o Listbox não tem Linha de título. O título é constituído por Label's.

    Também havia no meu código 2 erros que já corrigi, que ao obter o valor da 3ª coluna, encontrava 5 valores iguais. Resolvi unindo os valores das colunas 2 e 3 numa string. O outro erro estava no listindex+1 atribuido a uma variável, que ao selecionar a última linha me apresentava erro.

    Vou testar de novo a condição e tentar perceber o que está a falhar.

    Agora veja o seguinte:

    No caminho: ThisWorkbook.Path & "\FOTOS\" & "2018" & ".JPG" existem as imagens 1, 2 e 3.

    Posso ter necessidade de selecionar o primeiro item do Listbox (Listindex 0) para criar um novo arquivo com o nº 1, renomeando o 1 para 2, o 2 para 3 e o 3 para 4.

    É nesta parte que eu necessitava estabelecer a diferença. Se o Lisbox não contiver dados, é gerado o 1º arquivo e está feito.

    Mas, conforme o exemplo acima, se o 1º registo for "ÁUSTRIA", vou depois de precisar de inserir antes pelo menos 5 registos.

    Aí, ao selecionar a 1ª linha e se escrever "if listbox1.Listindex=0 and Listbox1.ListCount=1 then" o VBA tem obrigação de responder corretamente?

    Neste momento ao selecionar a 1ª linha, vai ser gerado o arquivo 2.

    Cumprimentos



    M_A_S_L



    • Editado M_A_S_L sábado, 13 de janeiro de 2018 21:11
    sábado, 13 de janeiro de 2018 21:09
  • Problema resolvido com MsgBox tipo Y/N.

    A condição: "if listbox1.Listindex=0 and Listbox1.ListCount=1 then"não funciona porque independentemente do item selecionado o ListCount é sempre o nº de registos listados.

    Portanto, no Listbox só há básicamente duas hipóteses: ListCount="0" ou ListCount <> "0".

    Para estes casos, aprendi nas minhas pesquisas para resolver o problema antes de postar, que o termo "selected" pode dar imenso jeito.

    Como tal vou tentar aprofundar o assunto.

    Cumprimentos a todos.


    M_A_S_L


    • Marcado como Resposta M_A_S_L domingo, 14 de janeiro de 2018 16:39
    • Editado M_A_S_L domingo, 14 de janeiro de 2018 16:41
    domingo, 14 de janeiro de 2018 16:38