Olá Fábio,
No seu caso, você deverá criar um módulo de classe que se comportará como uma coleção de outra classe que representará os seus dados. Vou dar um exemplo, crie um módulo de classe e chame de cRegistro e coloque o seguinte código dentro dele:
'**************************************************
'Esta classe representa cada registro de sua tabela
'**************************************************
Option Explicit
'Cada campo de sua tabela deve estar descrito aqui como Private
'com seus respectivos tipos de dados
Private mCodigo As String, mNome As String
'Cada campo de sua tabela será uma propriedade da sua classe.
'Para que as propriedades sejam lidas e escritas, você deve
'ter dois procedimentos, um para escrita (Let) e outro para
'leitura (Get)
'Este é o de escrita, quando você atribui um valor a um campo:
Public Property Let Codigo(nCodigo As String)
mCodigo = nCodigo
End Property
'Este é o de leitura, quando você lê o valor de um campo:
Public Property Get Codigo() As String
Codigo = mCodigo
End Property
Public Property Let Nome(nNome As String)
mNome = nNome
End Property
Public Property Get Nome() As String
Nome = mNome
End Property
Agora, crie um outro módulo de classe, chame de colRegistros e coloque este código:
'**********************************************************
'Esta classe representa a sua coleção de registros (tabela)
'**********************************************************
Option Explicit
'Você deverá ter uma coleção padrão para armazenar cada instância
'da classe cRegistro que representa cada registro de sua tabela
Private mRegistros As Collection
'Método de adição de um registro
Public Function Add(Codigo As String, Nome As String) As cRegistro
Dim ObjRegistro As cRegistro
Set ObjRegistro = New cRegistro
'Cada propriedade (campo) de seu registro deve estar aqui, ou pelo menos o básico
'parea ser preenchido mais tarde
ObjRegistro.Codigo = Codigo
ObjRegistro.Nome = Nome
Set Add = ObjRegistro
Set ObjRegistro = Nothing
End Function
'Obtém um item específico, dado o seu índice
Public Property Get Item(Indice As Variant) As cRegistro
Set Item = mRegistros(Indice)
End Property
'Fornece a quantidade de registros da coleção
Public Property Get Count() As Long
Count = mRegistros.Count
End Property
'Remove um registro da coleção
Public Sub Remove(Indice As Variant)
mRegistros.Remove Indice
End Sub
'Isto é usado quando você usa o loop For Each...Next
Public Property Get NewEnum() As IUnknown
Set NewEnum = mRegistros.[_NewEnum]
End Property
'inicia a coleção
Private Sub Class_Initialize()
Set mRegistros = New Collection
End Sub
'Destrói a coleção, liberando memória
Private Sub Class_Terminate()
Set mRegistros = Nothing
End Sub
Pronto, você agora tem uma coleção de registros. Neste exemplo, eu crio um registro bem simples com um código alfa e um nome, mas você pode expandir isso para quantos campos quiser. Cada campo de sua tabela será uma propriedade da sua classe cRegistro.
Para instanciar a sua coleção, faça assim:
Dim MinhaColecao as colRegistros
Set MinhaColecao = New colRegistros
Para adicionar registros a ela, faça assim:
MinhaColecao.Add "001", "Fabio"
MinhaColecao.Add "002", "Sandro"
Agora você tem uma coleção com dois registros de dois campos cada, um código e um nome.
Para alterar o nome, faça assim:
MinhaColecao(2).Nome = "José"
Você pode acrescentar quantos campos quiser, mas lembre-se para cada campo você deverá criar uma variável dentro da classe cRegistro e duas procedures de propriedades, uma Let para receber os dados e outra Get para ler os dados gravados nela.
Ah!, não se esqueça de destruir a sua colelção quando não precisar mais dela:
Set MinhaColecao = Nothing
Qualquer dúvida, pode mandar.
um abraço,
Sandro.