Jump to content
Sign in to follow this  
joseA

Listview II

Recommended Posts

joseA

Boas,

Aprendí um pouco sobre Listview aquí http://www.portugal-a-programar.pt/index.php?showtopic=25527

😲

Gostaria de obter orientações de como editar:

Selecionar e buscar os dados para Textbox, fazer alterações nos Textbox e ao clicar no botão Alterar (alterar diretamente na folha).

Segue Ficheiro: http://www.4shared.com/file/113076271/92555fa3/Treino_Listview_II.html

Abraços

EDIT: Corrigidos links

Share this post


Link to post
Share on other sites
jpaulino

Mas ainda não tens nada feito no exemplo que mostraste !!!

O que já tentaste ?

Segundo o que me pareceu, só tens de procurar na lista pelo ID, e caso encontre modifica os dados, caso contrário, insere.

Share this post


Link to post
Share on other sites
joseA

Muito obrigado pela atenção Paulino.

Na verdade este exemplo é a única referência que tenho sobre Listview. O que pretendo é clicar em um dado e os dados daquela linha me retorne nos textbox's, alteraria se necessário no textbox devido, clicaria no botão alterar e alteraria diretamente na folha.

Recentemente conseguí este código que me traz no listview os dados quando digito ID no TextBox1

Private Sub TextBox1_Change()
Dim strObjetoBuscar As String
Dim lngResultado As Long
Dim lngColumna As Long, lngFila As Long
Dim x As Integer, ab As Integer

ListView1.ListItems.Clear
strObjetoBuscar = TextBox1.Value
If strObjetoBuscar = "" Then GoTo 99
strObjetoBuscar = LCase(strObjetoBuscar)
    For a = 2 To 2010
        lngResultado = InStr(1, Folha1.Cells(a, 1), strObjetoBuscar, vbTextCompare)
            If lngResultado > 0 Then
                ListView1.ListItems.Add 1, , Format(Folha1.Range("A" & a).Value, "0000")
                ListView1.ListItems(1).ListSubItems.Add 1, , Folha1.Range("B" & a).Value
                ListView1.ListItems(1).ListSubItems.Add 2, , Folha1.Range("C" & a).Value
                ListView1.ListItems(1).ListSubItems.Add 3, , Format(Folha1.Range("D" & a).Value, "#,##0.00")
            End If
    Next a
99:
End Sub

Abraços.

Share this post


Link to post
Share on other sites
joseA

Boas :cheers:  :cheesygrin:  ;D  😆 :bounce:

Deu para fazer,

Conseguí resolver o problema pesquisando. Alterei o layout na Folha1:

Id Nome Endereço Valor 1 *

001 Silva Rua A 1000 2 1

002 Reis Rua B 12,5 3 1

003 Paulo Rua C 4,25 4 1

004 Cristino Rua X 2500 5 1

005 José Rua J 10 6 1

*em F1 =CONT.VALORES(A:A)

Alterei o layout do UserForm inserindo:

LblIndex e TextBox5

Alterei também o código:


Private Sub UserForm_Initialize()
    ' Adiciona as colunas
'adicionei em propriedades>personalizar>ColumnHeaders
   With ListView1
        .FullRowSelect = True 'seleciona linha
        .View = lvwReport
    '    .ColumnHeaders.Add Text:="Id", Width:=40
     '   .ColumnHeaders.Add Text:="Nome", Width:=80
     '   .ColumnHeaders.Add Text:="Endereço", Width:=80
     '   .ColumnHeaders.Add Text:="Valor", Width:=70
     '   .ColumnHeaders.Add Text:="Index", Width:=40
        .Gridlines = True 'efeito grade

    End With
    '...................................................................
' Adiciona itens
Dim i As Integer
For i = 2 To Folha1.Range("F1").Value
ListView1.ListItems.Add 1, , Format(Folha1.Range("A" & i).Value, "000")
ListView1.ListItems(1).ListSubItems.Add 1, , Folha1.Range("B" & i).Value
ListView1.ListItems(1).ListSubItems.Add 2, , Folha1.Range("C" & i).Value
ListView1.ListItems(1).ListSubItems.Add 3, , Format(Folha1.Range("D" & i).Value, "#,##0.00")
ListView1.ListItems(1).ListSubItems.Add 4, , Folha1.Range("E" & i).Value
Next i
End Sub

Private Sub ListView1_Click()
Dim j As Integer
j = ListView1.SelectedItem.ListSubItems.Item(4).Text
Me.TextBox1.Text = Format(Folha1.Range("A" & j).Value, "000")
Me.TextBox3.Text = Folha1.Range("C" & j).Value
Me.TextBox4.Text = Format(Folha1.Range("D" & j).Value, "#,##0.00")
Me.TextBox2.Text = Folha1.Range("B" & j).Value
Me.LblIndex.Caption = Folha1.Range("E" & j).Value
Me.TextBox2.SetFocus
End Sub

Private Sub TextBox5_Change()
Dim strObjetoBuscar As String
Dim lngResultado As Long
Dim lngColumna As Long, lngFila As Long
Dim x As Integer, n As Integer

ListView1.ListItems.Clear
strObjetoBuscar = TextBox5.Value
If strObjetoBuscar = "" Then GoTo 99
strObjetoBuscar = LCase(strObjetoBuscar)
    For a = 2 To 2010
        lngResultado = InStr(1, Folha1.Cells(a, 2), strObjetoBuscar, vbTextCompare)
            If lngResultado > 0 Then
                ListView1.ListItems.Add 1, , Format(Folha1.Range("A" & a).Value, "000")
                ListView1.ListItems(1).ListSubItems.Add 1, , Folha1.Range("B" & a).Value
                ListView1.ListItems(1).ListSubItems.Add 2, , Folha1.Range("C" & a).Value
                ListView1.ListItems(1).ListSubItems.Add 3, , Format(Folha1.Range("D" & a).Value, "#,##0.00")
                ListView1.ListItems(1).ListSubItems.Add 4, , Folha1.Range("E" & a).Value
            
            End If
    Next a
99:
End Sub

Private Sub CommandButton1_Click()
If Me.LblIndex.Caption = "Index" Then
    MsgBox "Pesquise os dados.", 64, "Treino Listview"
  Exit Sub
End If

Folha1.Range("B" & LblIndex.Caption).Value = TextBox2.Text
Folha1.Range("C" & LblIndex.Caption).Value = TextBox3.Text
Folha1.Range("D" & LblIndex.Caption).Value = CDbl(TextBox4.Value)
Unload Me
End Sub

Conseguí o desejado clicando no item no Listview p/ buscar dados e mais uma pesquisa por nome.

Ficheiro Download:http://www.sendspace.com/file/tk1u9d

P.S.: Se Tiver material sobre o tema favor informar.  O0

Abraços

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
Sign in to follow this  

×
×
  • Create New...

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.