Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

joseA

[Resolvido] Listview

Mensagens Recomendadas

joseA    0
joseA

Amigos,

Nunca trabalhei com listview, alquém tem um ficheiro exemplo para download.

Suponhamos que na Folha um teríamos:

Id Nome Endereço Fone

Como faço p/ carregar dados?

:eek:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

Olá,

É relativamente simples de usar.

Exemplo:

' Adiciona as colunas
With ListView1
    .View = lvwReport
    .ColumnHeaders.Add Text:="Column1", Width:=80
    .ColumnHeaders.Add Text:="Column2", Width:=80
End With

Dim x As Byte
Dim li As ListItem

' Adiciona itens
For x = 0 To 40
    Set li = ListView1.ListItems.Add(Text:=x)
    li.ListSubItems.Add Text:="Item" & x
Next

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
joseA    0
joseA

Obrigado pela atenção,

Vejo que estamos perto. Na folha onde são lançados não tem um número exato de linhas, mas as colunas são definidas como:

Id  Nome  Endereço  Fone

Mas uma coisa, teria como formatar ao carregar os dados? Tipo: Id Format "000", etc. :wallbash:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

Obrigado pela atenção,

Vejo que estamos perto. Na folha onde são lançados não tem um número exato de linhas, mas as colunas são definidas como:

Id Nome Endereço Fone

O que te mostrei é só um exemplo geral ... é só adaptares!

Mas uma coisa, teria como formatar ao carregar os dados? Tipo: Id Format "000", etc.

Podes utilizar a instrução Format()

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
joseA    0
joseA

Desculpe-me Paulino,

Sob essas condições exemplificadas, não teria como postares o código?

Aquí conseguí:

' Adiciona as colunas

With ListView1

    .View = lvwReport

    .ColumnHeaders.Add Text:="Id", Width:=20

    .ColumnHeaders.Add Text:="Nome", Width:=80

    .ColumnHeaders.Add Text:="Endereço", Width:=80

    .ColumnHeaders.Add Text:="Fone", Width:=40

End With

'...................................................................

Se poderes colaborar agradeço.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
joseA    0
joseA

Bem,

Na folha1 teríamos, como exemplo:

Id Nome Endereço Fone

0001 Silva Rua X (31) 3845-7745

0002 Reis Rua Y (31) 3845-7746

0003 Paulo Rua Z (31) 3845-7747

0004 Cristino Rua W (31) 3845-7748

No entanto, esses dados seriam lançados diariamente e seriam actualizados no ListView. Não sei se fui claro.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

Então só tens de fazer um ciclo nas células e colocar o resultado de cada coluna da wortksheet na respectiva coluna da listview.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

Bem aqui vai a lógica de criar um ciclo em todas as linhas preenchidas.

Para dados na coluna A fazer o seguinte:

Dim lastRow As Long

Dim x As Long

' Verifica qual a ultima linha preenchida na coluna A
lastRow = Cells(Cells.Rows.Count, "a").End(xlUp).Row

' Ciclo na linhas
For x = 1 To lastRow
    Debug.Print Cells(x, "a").Value
    Debug.Print Cells(x, "b").Value
Next

Depois, como podes ver, tens a informação da coluna A, B e só precisas de utilizar esta lógica no teu código para preencher a listview

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

Como fizestes uns testes e não conseguiste, aqui vai:

Private Sub UserForm_Initialize()
Dim lastRow As Long
Dim li As ListItem
Dim x As Long

    ' Adiciona as colunas
    With ListView1
        .View = lvwReport
        .ColumnHeaders.Add Text:="Id", Width:=20
        .ColumnHeaders.Add Text:="Nome", Width:=80
        .ColumnHeaders.Add Text:="Endereço", Width:=80
        .ColumnHeaders.Add Text:="Fone", Width:=40
    End With
    '...................................................................
    
    lastRow = Folha1.Cells(Folha1.Cells.Rows.Count, "a").End(xlUp).Row
    
    ' Adiciona itens
    For x = 2 To lastRow
        Set li = ListView1.ListItems.Add(Text:=Folha1.Cells(x, "a").Value)
        li.ListSubItems.Add Text:=Folha1.Cells(x, "b").Value
        li.ListSubItems.Add Text:=Folha1.Cells(x, "c").Value
        li.ListSubItems.Add Text:=Folha1.Cells(x, "d").Value
    Next

End Sub

Faltava-te colocar a informação no sitio!

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
joseA    0
joseA

:cheesygrin:

Paulino,

Simplesmente Show, agora tenho algumas outras dúvidas em relção ao ListView, posso postar aquí mesmo ou teria que abrir um outro tópico?

Abraços

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

agora tenho algumas outras dúvidas em relção ao ListView, posso postar aquí mesmo ou teria que abrir um outro tópico?

Abre um novo tópico, mas explora primeiro um pouco :)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
joseA    0
joseA

Também concordo que seria melhor abrir um novo tópico, mas como o objetivo de um fórum seria a exploração de um tema irei prosseguir naquilo que foi citado:

Na 1ª coluna não conseguí formatar Format("0000"), da erro.

Pesquisando encontrei a penúltima linha desta parte do código, que adiciona um efeito de fundo.

  ' Adiciona as colunas
   With ListView1
        .View = lvwReport
        .ColumnHeaders.Add Text:="Id", Width:=20
        .ColumnHeaders.Add Text:="Nome", Width:=75
        .ColumnHeaders.Add Text:="Endereço", Width:=80
        .ColumnHeaders.Add Text:="Valor", Width:=80
        .Gridlines = True 'adiciona efeito de grade ao fundo
    End With

Abraços

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade