Série: ListView para Excel e VBA - Modificando Dados (2) | Excelmax Soluções e Controles

sexta-feira, dezembro 09, 2016

Série: ListView para Excel e VBA - Modificando Dados (2)

Série: ListView para Excel e VBA - Modificando Dados (2)


Excel, ListView, Formulário, Vba, Macro



Na postagem: Série: ListView para Excel e VBA - Modificando Dados (1) foram abordados vários aspectos para a utilização de um objeto ListView.

Esta postagem dará continuidade e será composta pelas macros (códigos)   com as opções: Incluir, Alterar, Excluir, Limpar e Sair.




Macro: Inicialize (Initialize)

Esta macro preenche o campo 'cdSexo', cria as colunas do objeto ListView e preenche o Objeto ListView com os dados contidos na base. Para atribuir a macro ao formulário 'CxCadstro', de dois cliques sobre o formulário (cxCadastro) e altere o evento sugerido para o evento 'Initialize'.

   Private Sub UserForm_Initialize()
       cdSexo.AddItem "M"
       cdSexo.AddItem "F"

       'Adiciona as colunas
       With lsLista
           .Gridlines = True
           .View = lvwReport
           .FullRowSelect = True

           .HotTracking = True     'Bloqueia a primeira coluna da ListView
           .ColumnHeaders.Add Text:="ID", Width:=40
           .ColumnHeaders.Add Text:="Nome", Width:=100
           .ColumnHeaders.Add Text:="Sexo", Width:=30
           .ColumnHeaders.Add Text:="Data Nasc.", Width:=70
           .ColumnHeaders.Add Text:="Email", Width:=135
       End With

       'Adiciona os itens no ListView
       ultimaLinha = Plan1.Cells(Plan1.Cells.Rows.Count, "a").End(xlUp).Row
       lsLista.ListItems.Clear
       For x = 2 To ultimaLinha
           Set li = lsLista.ListItems.Add(Text:=Plan1.Cells(x, "a").Value)
           li.ListSubItems.Add Text:=Plan1.Cells(x, "b").Value
           li.ListSubItems.Add Text:=Plan1.Cells(x, "c").Value
           li.ListSubItems.Add Text:=Plan1.Cells(x, "d").Value
           li.ListSubItems.Add Text:=Plan1.Cells(x, "e").Value
       Next
   End Sub

Macro: ListView Item Click

Esta macro preenche os campos TextBox e ComboBox, ou seja, Ao clicar em um item na ListView, todos os objetos: ID, Nome, Sexo, Data Nascimento e E-mail são preenchidos com suas respectivas informações. Para atribuir a macro ao formulário 'cxCadastro', de dois cliques sobre o formulário (cxCadastro) e altere o evento sugerido para o evento 'ItemClick'.

  Private Sub lsLista_ItemClick(ByVal Item As MSComctlLib.ListItem)
       cdID = lsLista.SelectedItem
       cdNome = lsLista.SelectedItem.ListSubItems.Item(1)
       cdSexo = lsLista.SelectedItem.ListSubItems.Item(2)
       cdDataNasc = lsLista.SelectedItem.ListSubItems.Item(3)
       cdEmail = lsLista.SelectedItem.ListSubItems.Item(4)
   End Sub


Botão: Incluir

Este botão faz a inclusão de novos dados na base de dados. O 'ID' é inserido automaticamente não permitindo a repetição utilizando como base o 'ID' inserido para o item anterior (último item inserido na base). Para atribuir a macro ao botão 'btIncluir', de dois cliques sobre o botão (btIncluir).

   Private Sub btIncluir_Click()
       ultimaLinha = Plan1.Cells(Plan1.Cells.Rows.Count, "a").End(xlUp).Row + 1
       If ultimaLinha - 1 = "ID" Then
            Cells(ultimaLinha, 1) = Format(1, "00000")
            ID = Format(1, "00000")
       Else
            Cells(ultimaLinha, 1) = Format(Cells(ultimaLinha - 1, 1) + 1, "00000")
            ID = Format(Cells(ultimaLinha - 1, 1) + 1, "00000")
       End if

       Plan1.Cells(ultimaLinha, 2) = UCase(cdNome)
       Plan1.Cells(ultimaLinha, 3) = UCase(cdSexo)
       Plan1.Cells(ultimaLinha, 4) = CDate(cdDataNasc)
       Plan1.Cells(ultimaLinha, 5) = cdEmail

       i = lsLista.ListItems.Count + 1
       Set li = lsLista.ListItems.Add(Text:=ID)
       li.ListSubItems.Add Text:=UCase(cdNome)
       li.ListSubItems.Add Text:=UCase(cdSexo)
       li.ListSubItems.Add Text:=CDate(cdDataNasc)
       li.ListSubItems.Add Text:=cdEmai
   End Sub


Botão: Alterar

Este botão faz a alteração de um item selecionado na base de dados. O 'ID' não pode ser alterado. Para atribuir a macro ao botão 'btAlterar', de dois cliques sobre o botão (btAlterar).

   Private Sub btAlterar_Click()
       ultimaLinha = Plan1.Cells(Plan1.Cells.Rows.Count, "a").End(xlUp).Row + 1
       For i = 2 To ultimaLinha
           If cdID = Plan1.Cells(i, 1) Then
                Plan1.Cells(i, 2) = UCase(cdNome)
                Plan1.Cells(i, 3) = UCase(cdSexo)
                Plan1.Cells(i, 4) = CDate(cdDataNasc)
                Plan1.Cells(i, 5) = cdEmail
                Exit For
           End If
       Next

       For i = 1 To lsLista.ListItems.Count
           If lsLista.ListItems.Item(i) = cdID Then
                lsLista.ListItems.Item(i).SubItems(1) = UCase(cdNome)
                lsLista.ListItems.Item(i).SubItems(2) = UCase(cdSexo)
                lsLista.ListItems.Item(i).SubItems(3) = CDate(cdDataNasc)
                lsLista.ListItems.Item(i).SubItems(4) = cdEmail
                Exit For
           End If
       Next
   End Sub

Botão: Excluir

Este botão faz a exclusão de um item selecionado na base de dados. Para atribuir a macro ao botão 'btExcluir', de dois cliques sobre o botão (btExcluir).

   Private Sub btExcluir_Click()
       ultimaLinha = Plan1.Cells(Plan1.Cells.Rows.Count, "a").End(xlUp).Row + 1
       For i = 2 To ultimaLinha
           If cdID = Plan1.Cells(i, 1) Then
               Plan1.Cells(i, 2).EntireRow.Delete
               Exit For
           End If
       Next

       For i = 1 To lsLista.ListItems.Count
           If lsLista.ListItems.Item(i) = cdID Then
               lsLista.ListItems.Remove lsLista.ListItems(i).Index
               Exit For
           End If
       Next
   End Sub

Botão: Limpar

Este botão limpa todos os objetos: TextBox e ComboBox que estão no formulário. Para atribuir a macro ao botão 'btLimpar', de dois cliques sobre o botão (btLimpar).

   Private Sub btLimpar_Click()
       For Each myControl In Controls
           nome_objeto = TypeName(myControl)
           If nome_objeto = "TextBox" Then
               myControl.Value = ""
           ElseIf nome_objeto = "ComboBox" Then
               myControl.Value = ""
           End If
       Next
   End Sub

Botão: Sair

Este botão fecha o formulário. Para atribuir a macro ao botão 'btSair', de dois cliques sobre o botão (btSair).

   Private Sub btSair_Click()
       Unload Me
   End Sub


As postagens: Dicas de Excel - VBA e Dicas de Excel - VBA II podem ser utilizadas para implementar o exemplo aqui apresentado. Também há muitas outras matérias publicadas no ExelMax® Soluções que podem ajudar no seu aprendizado.

DownLoad: ListView - Excel e VBA



Compartilhe com seus amigos enviando-lhes e-mails, divulgando nas Redes Sociais, por telefone, falando-lhes pessoalmente ou da forma que puder e desejar.

Você pode fazer parte da Comunidade ExcelMax® Soluções. Para isso, basta acessar e inscrever-se. Desta forma, a cada nova publicação você estará recebendo informações em seu e-mail.

Abraço a Todos!
Professor e Consultor: Ivair Claudio Ferrari.


Sobre o autor: Ivair Ferrari é Certificado: Microsoft Office Excel Specialist; Consultoria e Desenvolvimento de Soluções e Softwares em Excel/VBA, Bancos de dados Access, Firebird, Oracle, Interação com SAP/R3 e Treinamentos In-Company. YouTube | Facebook | LinkedIn | Twitter | Google Plus

8 comentários :

  1. Esta matéria é a campeã. Completíssima. Meus sinceros parabéns professor Ivair !!!

    Seu amigo e admirador. Solano.

    ResponderExcluir
    Respostas
    1. Valeu Solano. Continue acessando. Novas e excelentes matérias vem aí .... Abraço!

      Prof. Ivair

      Excluir
  2. Nunca vi uma explicação tão bem dividida. Me ajudou muitíssimo. Parabéns pelo site e principalmente pela didática do professor Ivair.

    ResponderExcluir
    Respostas
    1. Valeu pelo comentário. Obrigado e continue acessando e divulgue a seus amigos.

      Professor e Consultor: Ivair Claudio Ferrari

      Excluir
  3. Meu caro, muito boa matéria... Continue assim... Gostaria de saber como posso classificar datas no list view... Abç

    ResponderExcluir
    Respostas
    1. Olá caro amigo Jobson ! Você pode classificar dados em um ListView, porém, datas e números são entendidos como texto (no listview).

      Com isso, qdo for classificar datas ou números os mesmos obedecerão a ordem alfabetica, ou seja, veja o exemplo no caso de números: 1, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20 ,21 ,22 ,23 ,24 ,25 ,26 ,27 ,28, 29, 3, 30, 31 .... e assim por diante.

      Se não souber como fazer para classificar, mande um e-mail sugerindo a publicação de uma matéria referente a este assunto: ivairferrari@gmail.com).

      Obrigado por acessar o ExcelMax Soluções.

      Excluir
  4. Ivair, seus ensinamentos e artigos publicados têm feito a diferença no mundo da programação. O momento é de agradecer... Um feliz Natal e que o ano vindouro te traga mais sucesso e felicidade com sua equipe.

    ResponderExcluir

Seja um participante desta comunidade !
Deixe aqui seu comentário e/ou sugestão.
Obrigado !

Ivair Claudio Ferrari

atualizar, excel, excelmax, ivair ferrari
topo, excelmax, excel, ivair ferrari