• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

joseA

[Resolvido] Listview

22 mensagens neste tópico

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:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como faço p/ carregar dados?

Excel ? Access ? Word ? ...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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()

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

Não entendi ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

: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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

Deverá ser:

Format(Folha1.Cells(x, "a").Value, "0000")

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Deverá ser:

Format(Folha1.Cells(x, "a").Value, "0000")

Tentei assim e não deu certo.

0

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