Jump to content
Fórum Script Brasil
  • 0

Como listar informações em listbox?


Question

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 to post
Share on other sites

16 answers to this question

Recommended Posts

  • 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 to post
Share on other 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!

Edited by adriano944
Link to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      149405
    • Total Posts
      645894
×
×
  • Create New...