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

joseA

[Resolvido] Listview

Recommended Posts

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?

😲

Share this post


Link to post
Share on other sites
José Lopes

provavelmente será access... rowsource


Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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:

Share this post


Link to post
Share on other sites
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()

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
jpaulino

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

Não entendi ?

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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!

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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 :)

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
jpaulino

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

Deverá ser:

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

Share this post


Link to post
Share on other sites
joseA

Deverá ser:

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

Tentei assim e não deu certo.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.