Ir para conteúdo
Fórum Script Brasil
  • 0

Como listar informações em listbox?


adriano944

Pergunta

Pessoal

Bom.. mais uma vez estou aqui solicitando a ajuda de vocês....

o problema agora é o seguinte...

eu tenho uma ListBox que eu gostaria de preenche-la....porem o que está ocorrendo é o seguinte...na planilha de onde eu vou buscar as informações, sempre é alterada, modificando a quantidade de celulas...

Eu preciso de um codigo que pegue desde a celula A1 da planilha "Provisoria" até a ultima célula que sempre é alterada...e eu queria saber se tem como colocar no listbox dividido em 3 colunas, pois são sempre mais de 200 informações em todas as vezes...

Uma outra coisa que eu gostaria de saber é: Como que eu faço para pegar os valores que o usuario selecionou e coloca-los em outro campo da planilha "provisoria"? por exemplo na coluna B

Bom pessoa...desde já agradeço a ajuda de todos..

Link para o comentário
Compartilhar em outros sites

16 respostass a esta questão

Posts Recomendados

  • 0

No caso da planilha que sempre altera o numero de linhas você pode utilizar uma função para capturar a ultima linha:

Private Function UltimaLinha()

Dim i, j As Integer

i = 1

j = 1

'o 10 é utilizado como contador, quando o sistema encontra 10 linhas vazias ele para de verificar

While (j <> 10)

'defina uma coluna para servir como ponto de verificação, de preferencia uma coluna principal que não recena muitas células em branco.

If (Plan1.Range("a" & i).Value <> "") Then

j = 1

i = i + 1

Else

j = j + 1

i = i + 1

End If

Wend

'ajusta a posição da linha

UltimaLinha= i - 11

End Function

para testar é só fazer um campo qualquer receber a função UltimaLinha e ajustar caso o valor não fique correto.

plan1.range("b1").value = ultimalinha

só tenha cuidado que se a função for utilizada varias vzs o sistema pode ficar lento, uma saida é fazer uma outra variavel receber o valor da função e a partir dai utilizar a variavel.

aux = ultimalinha

plan1.range("b1").value = aux

no caso do list box você pode utilizar o evento ListBox1.List (linha,coluna) e um contador para dividir os valores entre as colunas, com a ajuda da função ultimalinha não fica tão dificil.

segue um exemplo de como trabalha com a propriedade:

Private Sub cmdteste_click()

Dim i As Single

ListBox1.ColumnCount = 3

For i = 0 To 5

MyArray(i, 0) = i

MyArray(i, 1) = Rnd

MyArray(i, 2) = Rnd

Next i

ListBox1.List() = MyArray

end sub

espero ter ajudado.

Link para o comentário
Compartilhar em outros sites

  • 0

Renato,

Bom Dia

Concerteza você ajudou sim, e muito. Porem não conseguir entender direito a opção de listar no listbox...pois quando eu coloquei no meu script..eu um erro assim: "Erro de Compilação: Sub ou Function não Definida." e foi selecionado o codigo: MyArray(i, 0) =

outra coisa.... em alguma parte do codigo é necessário inserir a seguinte instrução?:

(plan1.range("b1").value = ultimalinha

aux = ultimalinha

plan1.range("b1").value = aux)

Sei que para você isto deve ser fácil de se resolver mais eu não tenho muito conhecimento...e gostaria da sua ajuda mais uma vez...

desde já agradeço muito a sua atençao disperdiçada!

Editado por adriano944
Link para o comentário
Compartilhar em outros sites

  • 0

Boa tarde Adriano,

Primeiramente habilite a propriedade Column Count do List, colocando as 3 colunas que você precisa.

E depois insira o código abaixo no evento Initiliaze do FORM:

Dim linha As Integer

On Error GoTo ErrHandler

linha = Plan1.Range("A65000").End(xlUp).Row

i = 0

With ThisWorkbook.Worksheets("NOME")

While linha <> 1

Me.ListBox1.AddItem , ListIndex

ListBox1.List(i, 0) = Sheets("nome").Cells(linha, 1)

ListBox1.List(i, 1) = Sheets("nome").Cells(linha, 2)

ListBox1.List(i, 2) = Sheets("nome").Cells(linha, 3)

ListBox1.ListIndex = 0

linha = linha - 1

Wend

End With

ExitHere:

Exit Sub

ErrHandler:

MsgBox Err.Description

Resume ExitHere

End Sub

Link para o comentário
Compartilhar em outros sites

  • 0

A funçaõ que descrvi faz uma verificação na sua planilha apenas para saber qual é a ultima linha, quando eu digo que alguma variavel vai receber UltimaLinha, ou seja o nome da função, significa que onde o parametro estiver escrito ele vai executar a função e vai retornar o valor que encontrou.

quando eu digo:

plan1.range("a1").value = ultimalinha

nesse caso a celula A1, vai receber o resultado da função que foi executada.Foi só para testar se estava ok, se não estiver é só aumentar ou diminuir o numero que é subtraido na função ( de uma olhada lá um coloquei ajusta posição).

entendeu para que serve uma função?

agora imagina o seguinte, digamos que em seu codigo você vai precisar de repitir isso 100 vzs, ai você vai lá e chama a função essas 100 vzs, vai ficar pesado. por isso sugeri que usasse o parametro:

aux = ultimalinha

ou seja, uma variavel vai receber o resultado obtido pela verificação da função (que será executada apenas uma vez) e a partir dai você pode usar a variavel (que tem o valor que você quer) sem pesar o programa.

deu pra entender ou compliquei mais ainda?

no caso do listbox a dica da Michele ajuda.

Link para o comentário
Compartilhar em outros sites

  • 0

Boa tarde pesoal,

Estou com um problema similar, quero que o listbox liste os dados de um determinado intervalo de 5 colunas e que este intervalo possa crescer ou diminuir, tentei colocar o codigo da MICHELLE, porém não estou sabendo adapta-lo na minha planilha, se algém puder me ajudar.

O intervalo de dados começa na coluna M1, e colei o script assim:

Dim linha As Integer

On Error GoTo ErrHandler

linha = Plan11.Range("A65000").End(xlUp).Row

i = 0

With ThisWorkbook.Worksheets("Graf-Geral")

While linha <> 1

Me.ListBox1.AddItem , ListIndex

ListBox1.List(i, 0) = Sheets("Graf-Geral").Cells(linha, 1)

ListBox1.List(i, 1) = Sheets("Graf-Geral").Cells(linha, 2)

ListBox1.List(i, 2) = Sheets("Graf-Geral").Cells(linha, 3)

ListBox1.List(i, 3) = Sheets("Graf-Geral").Cells(linha, 4)

ListBox1.List(i, 4) = Sheets("Graf-Geral").Cells(linha, 5)

ListBox1.ListIndex = 0

linha = linha - 1

Wend

End With

ExitHere:

Exit Sub

ErrHandler:

MsgBox Err.Description

Resume ExitHere

End Sub

Meu palpite é que erro esteja na configurações de de linhas e colunas.

Att.

Link para o comentário
Compartilhar em outros sites

  • 0

Baixei Vitor,

Alguns pontos para ressaltar:

- Você colocou o procedimento num módulo e não fez associação nenhuma dele com o Listbox. Esse procedimento deve ser associado ao evento Initialize do Form.

- Na planilha Graf-Geral, só tem gráficos.... quais os dados você precisa que sejam exibidos no Listbox afinal ??

Link para o comentário
Compartilhar em outros sites

  • 0

Michelle, testando aqui pelo Form deu certo,porém percebi que o intervalo de dados tem que estar apartir da célula a1. Então fica como eu tinha faldo com você, de qual maneira podemos colocar o listbox na planilha sem pelo Form e sim como objeto,e pegando o intervalo sem que esteja na célula a1. Estamos quase la!

Origado!!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...