Para quem gosta de desenvolver formulários no VBA, talvez o listview seja a maneira mais adequada de apresentar dados em forma de tabela, pois o listview permite uma aparência mais amigável, assemelhando-se a visualização da planilha, diferentemente de um listbox. Veja um exemplo de visualização de um listview num userform:
O controle Listview não vem habilitado por padrão, por isso é preciso habilitá-lo, clicando com o botão direito do mouse na caixa de ferramentas e selecionando “Controles adicionais…” e então selecionar o controle “Microsoft Listview Control, Version 6.0”:
Após habilitar a opção e dar OK, você notará que a opção do Listview aparecerá na sua caixa de ferramentas:
Agora você pode inserir o controle no seu userform e começar a desenvolver a programação para populá-lo com dados desejáveis da sua planilha. Para aprendizado, vou utilizar um exemplo simples, populando com um intervalo na Plan1 do endereço A1:C9, como visto na primeira imagem. O userform será o nome padrão userform1 e o Listview será o nome padrão Listview1
É importante também que a referência Microsoft Windows Common Controls esteja ativa para que o Listview funcione adequadamente. Veja a imagem:
Para começar, dê duplo clique sobre o userform para abrir a tela do módulo dele para iniciar a edição do código. Vou adotar um código no evento Initialize do Userform (ou dependendo da aplicação também poderia ser no evento Activate) para que ao carregar o userform o Listview já venha populado. Para facilitar o desenvolvimento, vou deixar separado o procedimento de carregar o listview (vou chamar de “PopularListView”), para que ele seja chamado num comando dentro do evento Initialize do Userform.
Veja o código do evento:
Private Sub UserForm_Initialize() 'Ajustes de algumas propriedades importantes do ListView With Me.ListView1 .Gridlines = True 'linhas de grade visíveis (true) .HideColumnHeaders = False 'False para cabeçalho visível e True para invisível .View = lvwReport 'Ajustar visualização do listview End With 'se quiser detalhes da propriedade .view consulte: https://msdn.microsoft.com/en-us/library/aa733652(v=vs.60).aspx) 'Chamar o procedimento para popular o Listview1 Call PopularListView End Sub
O procedimento para popular o listview chamarei de “PopularListView” e o código será o seguinte:
Private Sub PopularListView() 'Declaração de variáveis Dim wksOrigem As Worksheet Dim rData As Range Dim rCell As Range Dim LstItem As ListItem Dim linCont As Long Dim colCont As Long Dim i As Long Dim j As Long 'Definição da planilha de origem Set wksOrigem = Worksheets("Plan1") 'Definição do range de origem Set rData = wksOrigem.Range("A1").CurrentRegion 'Adicionar cabeçalho no listview com laço de repetição 'For' For Each rCell In rData.Rows(1).Cells Me.ListView1.ColumnHeaders.Add Text:=rCell.Value, Width:=90 Next rCell 'Alimentar variável linCont com número de linhas do intervalo fonte linCont = rData.Rows.Count 'Alimentar variável colCont com número de linhas do intervalo fonte colCont = rData.Columns.Count 'Popular o ListView For i = 2 To linCont Set LstItem = Me.ListView1.ListItems.Add(Text:=rData(i, 1).Value) For j = 2 To colCont LstItem.ListSubItems.Add Text:=rData(i, j).Value Next j Next i End Sub
Para usar um elemento da Listview, você pode, por exemplo, usar o evento Click do Listview e a propriedade SelectedItem. Essa propriedade trará o valor da primeira coluna da linha clicada do listview. Se quiser usar um valor das outras colunas é preciso adicionar a propriedade SubItems com o índice desejado iniciando a partir de 1. Veja um exemplo de código para trazer uma msgbox para cada item da linha:
Private Sub ListView1_Click() MsgBox "NOME: " & ListView1.SelectedItem MsgBox "IDADE: " & ListView1.SelectedItem.SubItems(1) MsgBox "SEXO: " & ListView1.SelectedItem.SubItems(2) End Sub
Baixe o exemplo deste artigo no link: Download Exemplo de Listview
bom dia parabéns pelo artigo, uma pergunta se na minha primeira coluna tenho o tipo data como popular o listview em ordem de data (crescente por exemplo)
CurtirCurtir
Não consegui abrir o listview
CurtirCurtir
Caros, estou com um pequeno problema parecido com o tema do tópico.
Tenho uma listbox e preciso verificar se alguns arquivo tiveram sucesso em seu download, a questão é: A cada download com sucesso a lista correspondente deverá ser verde e a cada download falho a linha em questão deverá ser vermelha.
Alguem apto a “helpar” este iniciante?
CurtirCurtir
Boa tarde!!
Amigo sou novato aqui e preciso de sua ajuda, visto que você é fera!!!
Preciso criar um formulário de cadastro para controle da seguinte forma:
1º Criar um Combobox com uma lista de informações
– Ao selecionar algum ítem, ir para a Listview incluir informações nos
campos, conforme abaixo:
2º Criar um Listview com os campos:
Nº DO PALETT
LOCAL
VOLUME
NOTA FISCAL
DATA DE ENVIO
Criar botões ao lado dos campos:
Inclui uma linha quando tiver mais informaçoes e deixar os campos
somente para leitura
Deixar os campos em modo para fazer alterações
3º Criar condições:
No campo PALET: Caso o Nº DO PALET já exista, exibir a msg: “Palet já
cadastrado para o local…” e cancelar
Se o campo “DATA DE ENVIO” estiver preenchido liberar nº de Palet em duplicidade
No campo LOCAL: Caso o LOCAL já exista, exibir a msg: “Este local já está
em uso para o Palet nº…”
Se o campo “DATA DE ENVIO” estiver preenchido liberar LOCAL em duplicidade
4º Criar botões no rodapé do listview:
“Confirma as informaçoes?”
“Deseja cancelar?”
Obrigado e Deus abençoe!!!
CurtirCurtir
Boa tarde Senhores!!!
Está acontecendo o seguinte:
1º – Na planilha que enviei pra voce eu criei a seguinte macro:
Sub Proteger_Formulas()
Range(“D2843:D5000″).Select
On Error Resume Next
Selection.SpecialCells(xlCellTypeFormulas, 23).Select
With Selection.Validation
.Delete
.Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=”>1″
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = “”
.ErrorTitle = “Existe Fórmula – não digite!”
.InputMessage = “”
.ErrorMessage = “Célula com Fórmula está protegida!!”””
.ShowInput = True
.ShowError = True
End With
End Sub
2º – Adicionei essa macro no Desenvolvedor dentro da Planilha que enviei pra voce em anexo, na: Plan6(Banco de Dados).
3º – Salvei a planilha com essa macro.
4º – Fiz o teste, então verifiquei que a macro está protegendo todas as células que contém Fórmulas.
5º – Então entrei no código da macro e fiz uma alteração: coloquei o sinal de apóstrofo ” ‘ ” antes de cada linha do código para evitar que a macro seria executada até que eu corrigisse o código para proteger apenas a faixa de ceulas desejada.
6º – Salvei novamente a planilha com o código alterado.
7º – Então verifiquei que a macro continuou executando mesmo com a lteração.
8º – Ai entrei no desenvolvedor para excluir a macro, FIZ O PROCESSO NORMAL: CLIQUEI na Plan6(Banco de Dados), então não apareceu mais o código da macro.
É isso aí amigo. Por favor me ajuda localizar essa macro, para resolver esse problema.
Obrigado
CurtirCurtir
obg
CurtirCurtir
só não consigo regular o tamanho das colunas
CurtirCurtir
Muito bom !! Direto au ponto…
Obrigado… Salvou minha vida…ou melhor… meu emprego..rsrs
CurtirCurtir