Série: ListView para Excel e VBA - Modificando Dados (2)
Autor: Ivair Ferrari | Publicado: 2016-12-09T10:07:00-02:00



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













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



Esta postagem dará continuidade e será composta pelas macros (códigos) &nbsp; 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'.






&nbsp; &nbsp;Private Sub&nbsp;UserForm_Initialize()&nbsp; &nbsp; &nbsp; &nbsp;cdSexo.AddItem "M"&nbsp; &nbsp; &nbsp; &nbsp;cdSexo.AddItem "F"&nbsp; &nbsp; &nbsp; &nbsp;'Adiciona as colunas&nbsp; &nbsp; &nbsp; &nbsp;With lsLista&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.Gridlines = True&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.View = lvwReport&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.FullRowSelect = True
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.HotTracking = True &nbsp; &nbsp; 'Bloqueia a primeira coluna da ListView&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.ColumnHeaders.Add Text:="ID", Width:=40&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.ColumnHeaders.Add Text:="Nome", Width:=100&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.ColumnHeaders.Add Text:="Sexo", Width:=30&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.ColumnHeaders.Add Text:="Data Nasc.", Width:=70&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.ColumnHeaders.Add Text:="Email", Width:=135&nbsp; &nbsp; &nbsp; &nbsp;End With&nbsp; &nbsp; &nbsp; &nbsp;'Adiciona os itens no ListView&nbsp; &nbsp; &nbsp; &nbsp;ultimaLinha = Plan1.Cells(Plan1.Cells.Rows.Count, "a").End(xlUp).Row&nbsp; &nbsp; &nbsp; &nbsp;lsLista.ListItems.Clear&nbsp; &nbsp; &nbsp; &nbsp;For x = 2 To ultimaLinha&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Set li = lsLista.ListItems.Add(Text:=Plan1.Cells(x, "a").Value)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;li.ListSubItems.Add Text:=Plan1.Cells(x, "b").Value&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;li.ListSubItems.Add Text:=Plan1.Cells(x, "c").Value&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;li.ListSubItems.Add Text:=Plan1.Cells(x, "d").Value&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;li.ListSubItems.Add Text:=Plan1.Cells(x, "e").Value&nbsp; &nbsp; &nbsp; &nbsp;Next&nbsp; &nbsp;End Sub





Macro: ListView Item Click
Esta macro preenche os campos TextBox e ComboBox,&nbsp;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',&nbsp;de dois cliques sobre o formulário (cxCadastro) e altere o&nbsp;evento&nbsp;sugerido para o evento 'ItemClick'.



&nbsp; Private Sub lsLista_ItemClick(ByVal Item As MSComctlLib.ListItem)&nbsp; &nbsp; &nbsp; &nbsp;cdID = lsLista.SelectedItem&nbsp; &nbsp; &nbsp; &nbsp;cdNome = lsLista.SelectedItem.ListSubItems.Item(1)&nbsp; &nbsp; &nbsp; &nbsp;cdSexo = lsLista.SelectedItem.ListSubItems.Item(2)&nbsp; &nbsp; &nbsp; &nbsp;cdDataNasc = lsLista.SelectedItem.ListSubItems.Item(3)&nbsp; &nbsp; &nbsp; &nbsp;cdEmail = lsLista.SelectedItem.ListSubItems.Item(4)&nbsp; &nbsp;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).



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

&nbsp; &nbsp; &nbsp; &nbsp;Plan1.Cells(ultimaLinha, 2) = UCase(cdNome)

&nbsp; &nbsp; &nbsp; &nbsp;Plan1.Cells(ultimaLinha, 3) = UCase(cdSexo)

&nbsp; &nbsp; &nbsp; &nbsp;Plan1.Cells(ultimaLinha, 4) = CDate(cdDataNasc)

&nbsp; &nbsp; &nbsp; &nbsp;Plan1.Cells(ultimaLinha, 5) = cdEmail




&nbsp; &nbsp; &nbsp; &nbsp;i = lsLista.ListItems.Count + 1

&nbsp; &nbsp; &nbsp; &nbsp;Set li = lsLista.ListItems.Add(Text:=ID)

&nbsp; &nbsp; &nbsp; &nbsp;li.ListSubItems.Add Text:=UCase(cdNome)

&nbsp; &nbsp; &nbsp; &nbsp;li.ListSubItems.Add Text:=UCase(cdSexo)

&nbsp; &nbsp; &nbsp; &nbsp;li.ListSubItems.Add Text:=CDate(cdDataNasc)

&nbsp; &nbsp; &nbsp; &nbsp;li.ListSubItems.Add Text:=cdEmai

&nbsp; &nbsp;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).



&nbsp; &nbsp;Private Sub&nbsp;btAlterar_Click()&nbsp; &nbsp; &nbsp; &nbsp;ultimaLinha = Plan1.Cells(Plan1.Cells.Rows.Count, "a").End(xlUp).Row + 1&nbsp; &nbsp; &nbsp; &nbsp;For i = 2 To ultimaLinha&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;If cdID = Plan1.Cells(i, 1) Then&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Plan1.Cells(i, 2) = UCase(cdNome)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Plan1.Cells(i, 3) = UCase(cdSexo)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Plan1.Cells(i, 4) = CDate(cdDataNasc)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Plan1.Cells(i, 5) = cdEmail&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Exit For&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;End If&nbsp; &nbsp; &nbsp; &nbsp;Next &nbsp; &nbsp; &nbsp; &nbsp;For i = 1 To lsLista.ListItems.Count&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;If lsLista.ListItems.Item(i) = cdID Then&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lsLista.ListItems.Item(i).SubItems(1) = UCase(cdNome)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lsLista.ListItems.Item(i).SubItems(2) = UCase(cdSexo)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lsLista.ListItems.Item(i).SubItems(3) = CDate(cdDataNasc)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lsLista.ListItems.Item(i).SubItems(4) = cdEmail&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Exit For&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;End If&nbsp; &nbsp; &nbsp; &nbsp;Next&nbsp; &nbsp;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).



&nbsp; &nbsp;Private Sub&nbsp;btExcluir_Click()&nbsp; &nbsp; &nbsp; &nbsp;ultimaLinha = Plan1.Cells(Plan1.Cells.Rows.Count, "a").End(xlUp).Row + 1&nbsp; &nbsp; &nbsp; &nbsp;For i = 2 To ultimaLinha&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;If cdID = Plan1.Cells(i, 1) Then&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Plan1.Cells(i, 2).EntireRow.Delete&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Exit For&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;End If&nbsp; &nbsp; &nbsp; &nbsp;Next&nbsp; &nbsp; &nbsp; &nbsp;For i = 1 To lsLista.ListItems.Count&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;If lsLista.ListItems.Item(i) = cdID Then&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lsLista.ListItems.Remove lsLista.ListItems(i).Index&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Exit For&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;End If&nbsp; &nbsp; &nbsp; &nbsp;Next&nbsp; &nbsp;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).



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









Botão: Sair
Este botão fecha o&nbsp;formulário. Para atribuir a macro ao botão 'btSair', de dois cliques sobre o botão (btSair).



&nbsp; &nbsp;Private Sub&nbsp;btSair_Click()&nbsp; &nbsp; &nbsp; &nbsp;Unload Me&nbsp; &nbsp;End Sub









As postagens: Dicas de Excel - VBA&nbsp;e Dicas de Excel - VBA II&nbsp;podem ser utilizadas para implementar o exemplo aqui apresentado. Também há muitas outras matérias publicadas no ExelMax®&nbsp;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.