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
       uLinha = Plan1.Cells(Plan1.Cells.Rows.Count, "a").End(xlUp).Row
       lsLista.ListItems.Clear
       For x = 2 To uLinha
           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.


12 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. 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.

    ResponderExcluir
  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
  5. Olá! Estou a teclar a partir de Angola.
    Dizer que gosto muito de trabalhar com Excel, mas tenho dificuldade em criar ficheiros utilizando fórmulas com condições. Depois de acessar este site, acredito que conseguirei aprender muita coisa. As explicações são muito claras e objetivas.
    Obrigado.

    ResponderExcluir

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

Ivair Claudio Ferrari