LISTVIEW VBA EXCEL

LEONARDOSILVEIR 14/08/2010 19:41:29
#350283
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.
JONATHANSTECKER 14/08/2010 19:47:25
#350284
Resposta escolhida
Poste ai como vc está fazendo o select no Banco e adicionando na planilha...
LEONARDOSILVEIR 15/08/2010 19:39:45
#350322
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]
LEONARDOSILVEIR 18/08/2010 15:32:17
#350599
Pessoal alguem sabe como colorir as linhas de acordo com algum criterio????????????
JONATHANSTECKER 18/08/2010 16:02:15
#350600
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
LEONARDOSILVEIR 18/08/2010 16:33:12
#350604
JONATHANSTECKER, funcionou! porém só está colorindo a primeira coluna, como faria pra colorir toda a linha que está dentro da condição?
JONATHANSTECKER 18/08/2010 16:59:17
#350609
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.)

   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
LEONARDOSILVEIR 19/08/2010 01:06:55
#350650
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
JONATHANSTECKER 19/08/2010 01:38:24
#350651
Dê um valor para o N antes de usar ele.

Dim N As Integer
N = 0
LEONARDOSILVEIR 19/08/2010 13:45:57
#350695
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.
LEONARDOSILVEIR 22/08/2010 20:45:00
#350945
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.
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas