Página 1 de 1

ListBox Excel x Access - ListBox com mais de 10 colunas

Enviado: Qui Jul 25, 2019 11:55 am
por ludehenrique2cia
Bom dia a todos!
Primeiramente quero agradecer a ajuda do Reinaldo (Jedi), no tópico anterior!

Usando novamente a planilha exemplo disponibilizada por Renam Fernado Ruthes, pergunto se é possível carregar o ListBox com mais de 10 colunas, com dados de uma planilha do acccess.

Sub Preenche_Listbox()

'Cria variável que armazena os comandos SQL
Dim ComandoSQL As String

'Armazena na variável o comando que fará a consulta SQL no BD Access
ComandoSQL = "select * from tabela_clientes"

'Chama a rotina que faz a conexão com o BD
Call Conecta

'Atribui a variável objeto de BD a execução dos comandos SQL
Set consulta = banco.OpenRecordset(ComandoSQL)

'Tratamento de erro de acesso aos dados. Se houver erro, desvia o comando para o rótulo Sai
On Error Resume Next

'Populando o listbox
linhalistbox = 0

While Not consulta.EOF

With Me.ListBox1
.AddItem
.List(linhalistbox, 0) = consulta(0) 'ID
.List(linhalistbox, 1) = consulta(1) 'nome
.List(linhalistbox, 2) = consulta(2) 'Sobrenome
.List(linhalistbox, 3) = consulta(3) 'CPF
.List(linhalistbox, 4) = consulta(4) 'RG
.List(linhalistbox, 5) = consulta(5) 'Endereço
.List(linhalistbox, 6) = consulta(6) 'Numero
.List(linhalistbox, 7) = consulta(7) 'Cidade
.List(linhalistbox, 8) = consulta(8) 'Estado
.List(linhalistbox, 9) = consulta(9) 'Data
End With

linhalistbox = linhalistbox + 1

consulta.MoveNext
Wend


Call Desconecta

Me.lbl_registros = Me.ListBox1.ListCount

End Sub

Re: ListBox Excel x Access - ListBox com mais de 10 colunas

Enviado: Qui Jul 25, 2019 2:36 pm
por Reinaldo
De uma "olhada" no artigo no Blog https://www.tomasvasquez.com.br/blog/mi ... 0-colunas/
e no modelo viewtopic.php?t=4631
Experimente adaptá-lo a sua realidade, se não conseguir retorne especificando qual foi sua dificuldade.
Outro https://social.msdn.microsoft.com/Forum ... orum=vbapt

Re: ListBox Excel x Access - ListBox com mais de 10 colunas

Enviado: Qua Ago 07, 2019 4:15 pm
por ludehenrique2cia
Adicionei ColumnCount - Foi a ultima tentativa, como o banco é do access não consegui

While Not consulta.EOF

With Me.ListBox1
.ColumnCount = 20 'Define a qde de Colunas no Listbox
.AddItem
.List(linhalistbox, 0) = consulta(0) 'ID
.List(linhalistbox, 1) = consulta(1) 'nome
.List(linhalistbox, 2) = consulta(2) 'Equipe
.List(linhalistbox, 3) = consulta(3) 'RE

Re: ListBox Excel x Access - ListBox com mais de 10 colunas

Enviado: Qua Ago 07, 2019 8:39 pm
por Reinaldo
Bom, muito lacônico seu retorno, "..como e do accesss..."
Independente da origem dos registros, para preenchimento direto o limite é 10 colunas (columnCount tb somente aceita até 10).
Vamos tentar:
No tópico https://social.msdn.microsoft.com/Forum ... orum=vbapt, e proposto utilizar uma área da planilha como
sendo origem de dados, essa área provavelmente deverá estar vazia e corresponder aproximadamente com a quantidade de registros/colunas esperado (é preciso testar a quantidade de registros); talvez não seja o mais recomendado, mas funciona.
Como não tenho um banco access disponivel segue modelo utilizando o modelo do Tomás no tópico viewtopic.php?t=4631 que tambem remete ao artigo do forum https://www.tomasvasquez.com.br/blog/mi ... 0-colunas/
Nesse artigo/topico e focado na "construção" de um Array ("Dim arrayItems()"), dimensionando/redimensionando com o tamanho dos registros desejados:
("ReDim arrayItems(1 To .UsedRange.Rows.Count, 1 To .UsedRange.Columns.Count), no seu caso UsedRows.rows deve ser substituido provavelmente por Consulta.RecordCount.
carregando-o com os registros desejados
Não testei nas creio que deverá ser algo +/- assim:

Código: Selecionar todos

Private Sub UserForm_Initialize()
Dim arrayItems()
Dim Linha As Integer, Coluna As Integer
Dim x As Integer, y As Integer
'obtem o numero de colunas do recordset
Coluna = consulta.Fields.Count
'move até o ultimo registro e obtem o quantidade total
consulta.MoveLast
Linha = consulta.RecordCount
'Redimensiona o array
ReDim arrayItems(1 To Linha, 1 To Coluna)
ListBox1.ColumnCount = Coluna

    With consulta
        For x = 1 To Linha
            Me.ListBox1.AddItem
            For y = 1 To Coluna
                arrayItems(x, y) = consulta(y - 1)
            Next y
        Next x
    End With
ListBox1.List = arrayItems()
End Sub