Olá pessoal, desculpem a demora pelo post é que tive aí uns probleminhas…
Hoje vou falar de uma coisa muuuuuiiito doida, quem aí já ouviu falar em Lista Ligada????
pois bem no C/C++ aprendemos que uma lista ligada é: A implementação de uma lista através de PONTEIROS onde cada item da lista é encadeado com o item seguinte, este tipo de implementação é muito útil quando queremos fazer um ARRAY (ou lista) sem a necessidade de saber quantos itens vai ter esta ARRAY (ou lista, vetor etc, etc, etc) mas como fazer isso no Visual Basic???
Pois bem, eu em estava uma tarde bastante entediada, aí resolvi ir atrás justamente disso como criar uma lista encadeada em Visual Basic, pois como faço Ciência da Computação e estudei a linguagem C, onde nela aprendemos a criar este tipo de lista facilmente, pesquisei então no site da sua criadora lá achei uma implementação deste tipo de lista, quem quiser dar uma olhada no artigo:
http://support.microsoft.com/kb/166394/pt
Vamos a Lista
Para criarmos uma lista encadeada no Visual Basic precisamos utilizar a Classes, o que é uma class?? segundo o José Carlos Macoratti (um cara que manja muuuito de VB) “uma classe é um tipo a partir do qual podemos gerar muitas instâncias de objetos”, ou seja class é onde criamos um modelo criar objetos. entendeu???? não??? quando eu começar a explicar o código você entende… eu espero…
Inserindo uma CLASS
clique no menu PROJECT depois em ADD CLASS MODULE, clique em Abrir
agora renomei o Class Module para Ponteiro, pronto???, como já havia falado um Class Module serve como modelo de objetos, vamos criar um modelo que será o ponteiro, no Class Module digite
Public item As Integer ‘Item da Lista
Public prox As ponteiro ‘proximo elemento da lista
pronto criamos o objeto ponteiro que será a estrutura para nossa lista onde temos um lugar para armazenar dados no nosso caso um inteiro e um ponteiro que armazenará o endereço de memoria do próximo item da lista
Crie um formulário com esta aparência com um TEXT e um COMMANDBUTTON
Agora abra o código do formulário, antes de mais nada crie uma variável
‘Criando o Ponteiro
‘Esta variável apontará para o inicio da lista
Dim inicio As ponteiro
no Evento FORM_LOAD digite
Private Sub Form_Load()
‘Esta variável AUX apontará sempre para o proxímo Item
Dim aux As ponteiro
‘variável usada para o loop
Dim i As Integer
‘Criando a Lista
‘Criando um novo Ponteiro
Set inicio = New ponteiro
inicio.item = 0
‘dando um valor ao primeiro item do ponteiro inicio
Set aux = inicio
‘a variável aux apontará para o inicio da lista
For i = 1 To 20 ‘criando um loop de 1 a 20
‘inserindo um novo item na lista
Set aux.prox = New ponteiro
‘aux vai apontar para o proximo item
Set aux = aux.prox
‘adiciona um valor ao item que o aux esta apontando
aux.item = i
Next i
‘inserindo um novo item na lista
Set aux.prox = New ponteiro
‘aux vai apontar para o proximo item
Set aux = aux.prox
‘colocando o valor 0 no fim
aux.item = 0
‘agora aux vai apontar para ele mesmo para identificar o fim
Set aux.prox = aux
‘ imprimindo a lista no TEXT1
Text1.Text = Text1.Text & “Antes: ” & Me.ExibeLista(inicio) & vbCrLf
‘ imprimindo a lista no TEXT1
End Sub
Agora no command1 Digite
Private Sub Command1_click()
‘Chamando a lista reversa
‘passando o valor do ultimo item para a lista reversa aqui não precisa de parênteses
Me.ListaReversa inicio
Text1.Text = Text1.Text & “Depois: ” & DumpList(inicio) & vbCrLf
End Sub
agora vamos criar o procedimento ListaReversa
Public Sub ListaReversa(ByRef inicio As ponteiro)
‘ aqui vamos inverter a lista então o fim se torna o começo e o começo o fim
Dim aux As ponteiro ‘criando a variável que vai ser a cabeça
Dim proximo As ponteiro ‘criando o ponteiro que vai apontar sempre para o proximo item
Set aux = inicio.prox ‘aux vai apontar agora para o inicio
Set inicio.prox = inicio ‘quebra a ligação que o inicio tinha com o segundo
While Not aux.prox Is aux ‘vamos percorrer a lista
Set proximo = aux.prox ‘proximo vai ser igual ao aux.prox
Set aux.prox = inicio ‘aux vai apontar para inicio (sendo que na primeira vez do loop o next é o inicio)
Set inicio = aux ‘inicio vai ser igual a aux (sendo que na primeira vez do loop aux é o segundo)
Set aux = proximo ‘aux vai ser igual a próximo
Wend
Set aux.prox = inicio
Set inicio = aux
End Sub
E por ultimo criamos a função para exibir a nossa lista
Public Function ExibeLista(ByRef inicio As ponteiro) As String
‘vamos percorrer a lista
Dim strOut As String ‘criando uma variável para armazenar uma string
Dim aux As ponteiro ‘criando um ponteiro
Set aux = inicio.prox ‘aux aponta pro item que o inicio aponta
While Not aux.prox Is aux ‘percorre a lista
strOut = strOut & ” ” & CStr(aux.item)
‘ insere um espaço entre um item e outro
Set aux = aux.prox
‘ aux vai ser igual ao que ele aponta
Wend
ExibeLista = strOut ‘retorna a string
End Function
Bem pessoal é isso quem quiser fazer o download dos aquivos fique a vontade, o formulario form1 e o class module class-module, até a próxima…

Prezados Senhores;
Gostaria de saber como faço para inserir uma lista em um formulário que fiz no visual basic, no excel
Atenciosamente
Antonio Fernando
Por: Fernando em 05/02/2009
às 12:01 pm
bem se for para importar a lista do excel para o vb é um pouco complexo…
no site http://www.vbmania.com.br tem uns exemplos de como fazer.
Por: elzobrito em 05/02/2009
às 12:34 pm