Série: ListView para Excel e VBA - Modificando Dados (2)
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
|
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.
Esta matéria é a campeã. Completíssima. Meus sinceros parabéns professor Ivair !!!
ResponderExcluirSeu amigo e admirador. Solano.
Valeu Solano. Continue acessando. Novas e excelentes matérias vem aí .... Abraço!
ExcluirProf. Ivair
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.
ResponderExcluirValeu pelo comentário. Obrigado e continue acessando e divulgue a seus amigos.
ExcluirProfessor e Consultor: Ivair Claudio Ferrari
Olá caro amigo Jobson ! Você pode classificar dados em um ListView, porém, datas e números são entendidos como texto (no listview).
ResponderExcluirCom 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.
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.
ResponderExcluirValeu amigo. Grande abraço !!!
ExcluirFeliz Natal Professor!!!
ExcluirDeus abençoe ricamente!!!
a
ResponderExcluirOlá! Estou a teclar a partir de Angola.
ResponderExcluirDizer 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.
Obrigado! Amigo Bernardo!
ExcluirMuito obrigado. Excelente
ResponderExcluir