none
EXCEL VBA - Contar quantidade de linhas selecionadas em uma listview RRS feed

  • Pergunta

  • Bom Dia, caros.....

    Meu Problema é o seguinte:

    Tenho uma listview no excel vba com vários registros.

    Desejo contar a quantidade de registros selecionados e que esse valor

    apareça em uma label logo abaixo da listview e que o valor seja atualizado em tempo real, tipo, vai aumentando de acordo com que as seleções são feitas e diminuindo quando elas são desfeitas.

    Desde Já agradeço à atenção.... Um grande abraço a todos....

    quinta-feira, 7 de agosto de 2014 12:16

Respostas

  • Também ajudando a ajudar, segue minha sugestão.

    Criar uma função que conte e retorne a quantidade de itens selecionados em um listview.

    Function funSelectionCount(lsv As ListView) As Long
    
      Dim q As Long
      q = 0
      For i = 1 To lsv.ListItems.Count
        
        If lsv.ListItems.Item(i).Selected Then
          q = q + 1
        End If
      
      Next i
      
      funSelectionCount = q
    End Function

    Colocar essa função no Evento Click, assim sempre que um item for selecionado ou desselecionado a função será chamada.

    Private Sub ListView1_Click()
      
      Label1.Caption = funSelectionCount(ListView1)
      
    End Sub


    Natan


    quinta-feira, 7 de agosto de 2014 14:27
  • Bom dia,

    Vê se ajuda.... colocando dois botões, sendo um pra preencher e outro para verificar os seleiconados


    Private Sub CommandButton1_Click()

        'parametriza
        With ListView1
            .View = lvwReport
            .ColumnHeaders.Clear
            .ColumnHeaders.Add , , "Coluna 1"
            .ColumnHeaders.Add , , "Coluna 2"
            .MultiSelect = True
        End With

        'adiciona alguns itens
        For a = 1 To 10
            With ListView1.ListItems.Add(, , "Item " & a)
                .SubItems(1) = CStr(a)
            End With
        Next

    End Sub

    Private Sub CommandButton2_Click()

        Dim linhaSeleciona As String
        linhaSeleciona = ""

        'visita os itens selecionados
        For a = 1 To ListView1.ListItems.Count
            If ListView1.ListItems.Item(a).Selected = True Then
                linhaSeleciona = linhaSeleciona & ListView1.ListItems.Item(a) & vbNewLine
            End If
        Next

        'exibe
        MsgBox linhaSeleciona

    End Sub

    Eduardo Alves

        
    quinta-feira, 7 de agosto de 2014 12:37

Todas as Respostas

  • Bom dia,

    Vê se ajuda.... colocando dois botões, sendo um pra preencher e outro para verificar os seleiconados


    Private Sub CommandButton1_Click()

        'parametriza
        With ListView1
            .View = lvwReport
            .ColumnHeaders.Clear
            .ColumnHeaders.Add , , "Coluna 1"
            .ColumnHeaders.Add , , "Coluna 2"
            .MultiSelect = True
        End With

        'adiciona alguns itens
        For a = 1 To 10
            With ListView1.ListItems.Add(, , "Item " & a)
                .SubItems(1) = CStr(a)
            End With
        Next

    End Sub

    Private Sub CommandButton2_Click()

        Dim linhaSeleciona As String
        linhaSeleciona = ""

        'visita os itens selecionados
        For a = 1 To ListView1.ListItems.Count
            If ListView1.ListItems.Item(a).Selected = True Then
                linhaSeleciona = linhaSeleciona & ListView1.ListItems.Item(a) & vbNewLine
            End If
        Next

        'exibe
        MsgBox linhaSeleciona

    End Sub

    Eduardo Alves

        
    quinta-feira, 7 de agosto de 2014 12:37
  • Use o código abaixo para adaptar o seu:

    Private Sub ListBox1_Change()
    
    Dim lngItem As Long
    Dim intCont As Integer
    intCont = 0
    
    For lngItem = 0 To ListBox1.ListCount - 1
        
            If ListBox1.Selected(lngItem) Then
                intCont = intCont + 1
            End If
            
        Next lngItem
    
    
    Label1.Caption = intCont
    
    End Sub


    Rafael Kamimura

    quinta-feira, 7 de agosto de 2014 13:00
  • Também ajudando a ajudar, segue minha sugestão.

    Criar uma função que conte e retorne a quantidade de itens selecionados em um listview.

    Function funSelectionCount(lsv As ListView) As Long
    
      Dim q As Long
      q = 0
      For i = 1 To lsv.ListItems.Count
        
        If lsv.ListItems.Item(i).Selected Then
          q = q + 1
        End If
      
      Next i
      
      funSelectionCount = q
    End Function

    Colocar essa função no Evento Click, assim sempre que um item for selecionado ou desselecionado a função será chamada.

    Private Sub ListView1_Click()
      
      Label1.Caption = funSelectionCount(ListView1)
      
    End Sub


    Natan


    quinta-feira, 7 de agosto de 2014 14:27
  • Resolvido.....

    Muito Obrigado a Atenção de Todos.....

    :)

    sexta-feira, 8 de agosto de 2014 22:15