LISTVIEW VBA EXCEL
Pessoal, tenho um listview criado no vba do excel, onde faço um select no banco access e busco os resultados. Gostaria de alterar as cores de algumas linhas de acordo com um determinado criterio, exemplo: tenho um campo com a informação da data de vencimento, gostaria que quando essa data de vencimento fosse menor que a data atual a toda a linha do listview ficasse com a cor vermelha. Alguem tem alguma ideia de como fazer isso?
aguardo auxilio dos companheiros.
tks.
aguardo auxilio dos companheiros.
tks.
Poste ai como vc está fazendo o select no Banco e adicionando na planilha...
Segue abaixo parte do meu codigo.
[ô]Esse Código monta o cabeçalho do listview----------------------------------
lstmostra.FullRowSelect = True
lstmostra.ColumnHeaders. _
Add , , [Ô]ID[Ô], lstmostra.Width / 17
lstmostra.ColumnHeaders. _
Add , , [Ô]Data Cadastro[Ô], lstmostra.Width / 8
lstmostra.ColumnHeaders. _
Add , , [Ô]Modalidade[Ô], lstmostra.Width / 10
lstmostra.ColumnHeaders. _
Add , , [Ô]Espécie[Ô], lstmostra.Width / 18
lstmostra.ColumnHeaders. _
Add , , [Ô]VÃnculo Contr.[Ô], lstmostra.Width / 17
lstmostra.ColumnHeaders. _
Add , , [Ô]ID Forn.[Ô], lstmostra.Width / 15
lstmostra.ColumnHeaders. _
Add , , [Ô]Nome Forn.[Ô], lstmostra.Width / 8
[ô]---------------Fim-------------------------------------
[ô]Abaixo segue o Select que é feito no meu banco em access e onde é demonstrado os resultados------------------------------------------------------------------------------------
tabela.Open [Ô]SELECT * FROM Contratos WHERE ID_FORNECEDOR LIKE [ô]%[Ô] & ID_FORNECEDOR & [Ô]%[ô] AND CNPJ_FORNECEDOR LIKE [ô]%[Ô] & CNPJ_FORNECEDOR & [Ô]%[ô] AND NOME_FORNECEDOR LIKE [ô]%[Ô] & NOME_FORNECEDOR & [Ô]%[ô] AND ESPECIE_CONTR LIKE [ô]%[Ô] & ESPECIE_CONTR & [Ô]%[ô] AND DESCR_MODAL LIKE [ô]%[Ô] & DESCR_MODAL & [Ô]%[ô] AND DATA_VENCIMENTO BETWEEN # [Ô] & Format(Me.DATA_MAIOR, [Ô]MM,DD,YYYY[Ô]) & [Ô] # and # [Ô] & Format(Me.DATA_MENOR, [Ô]MM,DD,YYYY[Ô]) & [Ô] # ORDER BY ID_LANCAMENTO DESC[Ô], Conexao
lstmostra.ListItems.Clear
Do While Not tabela.EOF
Set Lista = lstmostra.ListItems.Add(, , tabela!ID_LANCAMENTO)
Lista.SubItems(0) = tabela!ID_LANCAMENTO
Lista.SubItems(1) = tabela!DT_INSERT
Lista.SubItems(2) = tabela!DESCR_MODAL
Lista.SubItems(3) = tabela!ESPECIE_CONTR
Lista.SubItems(4) = tabela!NUM_VINC_CONTR
Lista.SubItems(5) = tabela!ID_FORNECEDOR
Lista.SubItems(6) = tabela!NOME_FORNECEDOR
tabela.MoveNext
Loop
---------------------------------Fim------------------------------------------------------
[txt-color=#e80000]Segue em anexo o print da tela do meu listview[/txt-color]
[ô]Esse Código monta o cabeçalho do listview----------------------------------
lstmostra.FullRowSelect = True
lstmostra.ColumnHeaders. _
Add , , [Ô]ID[Ô], lstmostra.Width / 17
lstmostra.ColumnHeaders. _
Add , , [Ô]Data Cadastro[Ô], lstmostra.Width / 8
lstmostra.ColumnHeaders. _
Add , , [Ô]Modalidade[Ô], lstmostra.Width / 10
lstmostra.ColumnHeaders. _
Add , , [Ô]Espécie[Ô], lstmostra.Width / 18
lstmostra.ColumnHeaders. _
Add , , [Ô]VÃnculo Contr.[Ô], lstmostra.Width / 17
lstmostra.ColumnHeaders. _
Add , , [Ô]ID Forn.[Ô], lstmostra.Width / 15
lstmostra.ColumnHeaders. _
Add , , [Ô]Nome Forn.[Ô], lstmostra.Width / 8
[ô]---------------Fim-------------------------------------
[ô]Abaixo segue o Select que é feito no meu banco em access e onde é demonstrado os resultados------------------------------------------------------------------------------------
tabela.Open [Ô]SELECT * FROM Contratos WHERE ID_FORNECEDOR LIKE [ô]%[Ô] & ID_FORNECEDOR & [Ô]%[ô] AND CNPJ_FORNECEDOR LIKE [ô]%[Ô] & CNPJ_FORNECEDOR & [Ô]%[ô] AND NOME_FORNECEDOR LIKE [ô]%[Ô] & NOME_FORNECEDOR & [Ô]%[ô] AND ESPECIE_CONTR LIKE [ô]%[Ô] & ESPECIE_CONTR & [Ô]%[ô] AND DESCR_MODAL LIKE [ô]%[Ô] & DESCR_MODAL & [Ô]%[ô] AND DATA_VENCIMENTO BETWEEN # [Ô] & Format(Me.DATA_MAIOR, [Ô]MM,DD,YYYY[Ô]) & [Ô] # and # [Ô] & Format(Me.DATA_MENOR, [Ô]MM,DD,YYYY[Ô]) & [Ô] # ORDER BY ID_LANCAMENTO DESC[Ô], Conexao
lstmostra.ListItems.Clear
Do While Not tabela.EOF
Set Lista = lstmostra.ListItems.Add(, , tabela!ID_LANCAMENTO)
Lista.SubItems(0) = tabela!ID_LANCAMENTO
Lista.SubItems(1) = tabela!DT_INSERT
Lista.SubItems(2) = tabela!DESCR_MODAL
Lista.SubItems(3) = tabela!ESPECIE_CONTR
Lista.SubItems(4) = tabela!NUM_VINC_CONTR
Lista.SubItems(5) = tabela!ID_FORNECEDOR
Lista.SubItems(6) = tabela!NOME_FORNECEDOR
tabela.MoveNext
Loop
---------------------------------Fim------------------------------------------------------
[txt-color=#e80000]Segue em anexo o print da tela do meu listview[/txt-color]
Pessoal alguem sabe como colorir as linhas de acordo com algum criterio????????????
Veja se assim funciona. Não testei, mas acredito que essa seja a idéia.
Dim N as Integer
tabela.Open [Ô]SELECT * FROM Contratos WHERE ID_FORNECEDOR LIKE [ô]%[Ô] & ID_FORNECEDOR & [Ô]%[ô] AND CNPJ_FORNECEDOR LIKE [ô]%[Ô] & CNPJ_FORNECEDOR & [Ô]%[ô] AND NOME_FORNECEDOR LIKE [ô]%[Ô] & NOME_FORNECEDOR & [Ô]%[ô] AND ESPECIE_CONTR LIKE [ô]%[Ô] & ESPECIE_CONTR & [Ô]%[ô] AND DESCR_MODAL LIKE [ô]%[Ô] & DESCR_MODAL & [Ô]%[ô] AND DATA_VENCIMENTO BETWEEN # [Ô] & Format(Me.DATA_MAIOR, [Ô]MM,DD,YYYY[Ô]) & [Ô] # and # [Ô] & Format(Me.DATA_MENOR, [Ô]MM,DD,YYYY[Ô]) & [Ô] # ORDER BY ID_LANCAMENTO DESC[Ô], Conexao
lstmostra.ListItems.Clear
Do While Not tabela.EOF
Set Lista = lstmostra.ListItems.Add(, , tabela!ID_LANCAMENTO)
Lista.SubItems(0) = tabela!ID_LANCAMENTO
Lista.SubItems(1) = tabela!DT_INSERT
Lista.SubItems(2) = tabela!DESCR_MODAL
Lista.SubItems(3) = tabela!ESPECIE_CONTR
Lista.SubItems(4) = tabela!NUM_VINC_CONTR
Lista.SubItems(5) = tabela!ID_FORNECEDOR
Lista.SubItems(6) = tabela!NOME_FORNECEDOR
tabela.MoveNext
[txt-color=#007100] [ô] Faça aqui uma condição[/txt-color]
If tabela!DATA_VENCIMENTO = [Ô]Condição[Ô] Then
lstmostra.ListItems(N).ForeColor = vbRed
End If
N = N + 1
Loop
JONATHANSTECKER, funcionou! porém só está colorindo a primeira coluna, como faria pra colorir toda a linha que está dentro da condição?
Jogando dentro de um outro [txt-color=#0000f0]For[/txt-color], você conseguirá resolver isso.
Não tenho certeza, mas acho que alterando algumas propriedades da Lista ele mudaria a cor da linha toda. (Mas ai teria que fazer uns testes.)
Não tenho certeza, mas acho que alterando algumas propriedades da Lista ele mudaria a cor da linha toda. (Mas ai teria que fazer uns testes.)
Dim I as Integer
If tabela!DATA_VENCIMENTO = [Ô]Condição[Ô] Then
For I = 0 To lstmostra.ColumnHeaders.Count - 1
lstmostra.ListItems(N).ListSubItems(I).ForeColor = vbRed
Next
End If
Agora está colorindo a linha completa, porém pelo que percebi, quando é encontrado a condição if correta, ela só pinta quando encontra a proxima condição e pinta a linha anterior, ou seja ele faz um -1. O que pode estar ocorrendo?
Dim N As Integer
Dim I As Integer
Dim DT As Date
DT = Format(Date, [Ô]DD,MM,YYYY[Ô])
Lista.SubItems(9) = Format(tabela!DATA_ASSINATURA, [Ô]DD/MM/YYYY[Ô])
Lista.SubItems(10) = Format(tabela!DATA_VENCIMENTO, [Ô]DD/MM/YYYY[Ô])
Lista.SubItems(11) = tabela!OBJETO_CONTRATO
Lista.SubItems(12) = tabela!CHAVE_CONTRATO
Lista.SubItems(13) = tabela!VERSAO
Lista.SubItems(14) = tabela!ID_OPRID
If tabela!DATA_VENCIMENTO < DT Then
For I = 0 To lstmostra.ColumnHeaders.Count - 0
lstmostra.ListItems(N).ListSubItems(I).ForeColor = vbRed
Next
End If
N = N + 1
tabela.MoveNext
Loop
Dim N As Integer
Dim I As Integer
Dim DT As Date
DT = Format(Date, [Ô]DD,MM,YYYY[Ô])
Lista.SubItems(9) = Format(tabela!DATA_ASSINATURA, [Ô]DD/MM/YYYY[Ô])
Lista.SubItems(10) = Format(tabela!DATA_VENCIMENTO, [Ô]DD/MM/YYYY[Ô])
Lista.SubItems(11) = tabela!OBJETO_CONTRATO
Lista.SubItems(12) = tabela!CHAVE_CONTRATO
Lista.SubItems(13) = tabela!VERSAO
Lista.SubItems(14) = tabela!ID_OPRID
If tabela!DATA_VENCIMENTO < DT Then
For I = 0 To lstmostra.ColumnHeaders.Count - 0
lstmostra.ListItems(N).ListSubItems(I).ForeColor = vbRed
Next
End If
N = N + 1
tabela.MoveNext
Loop
Dê um valor para o N antes de usar ele.
Dim N As Integer
N = 0
Ok! deu certo mano, o codigo ficou da seguinte forma.
Private Sub carregalistview()
Dim N As Integer
Dim I As Integer
Dim DT As Date
DT = Date
N = 1
If tabela!DATA_VENCIMENTO < DT Then
For I = 0 To lstmostra.ColumnHeaders.Count - 1
lstmostra.ListItems(N).ListSubItems(I).ForeColor = vbRed
lstmostra.ListItems(N).ForeColor = vbRed
lstmostra.ListItems(N).Bold = True
Next
End If
N = N + 1
Tenho somente mais uma dúvida, é possivel inserir e apresentar no listview do vba algum tipo de imagem, icone em uma determinada coluna? Se for possivel, me passe por favor o caminho ou o codigo de como fazer isso.
Desde já agradeço o apoio.
Private Sub carregalistview()
Dim N As Integer
Dim I As Integer
Dim DT As Date
DT = Date
N = 1
If tabela!DATA_VENCIMENTO < DT Then
For I = 0 To lstmostra.ColumnHeaders.Count - 1
lstmostra.ListItems(N).ListSubItems(I).ForeColor = vbRed
lstmostra.ListItems(N).ForeColor = vbRed
lstmostra.ListItems(N).Bold = True
Next
End If
N = N + 1
Tenho somente mais uma dúvida, é possivel inserir e apresentar no listview do vba algum tipo de imagem, icone em uma determinada coluna? Se for possivel, me passe por favor o caminho ou o codigo de como fazer isso.
Desde já agradeço o apoio.
Tenho somente mais uma dúvida, é possivel inserir e apresentar no listview do vba algum tipo de imagem, icone em uma determinada coluna? Se for possivel, me passe por favor o caminho ou o codigo de como fazer isso.
Desde já agradeço o apoio.
Desde já agradeço o apoio.
Tópico encerrado , respostas não são mais permitidas