... Assinatura do site por 1 ano + Kit MontaRibbons + 3 Livros em PDF + Diversas Revistas (pdf) de brinde, por apenas R$100,00
(
podendo parcelar em até 10 vezes no cartão de crédito)...

Clique aqui e obtenha mais detalhes do nosso kit completo e de como comprar.


Formatação de formulário usando Referência Cruzada

Usuário Oliveira:

Preciso de ajuda!

Fiz um formulário com base numa consulta de Referência Cruzada, com "Column Headings" pré definidas.  O que pretendo é que ao abrir o formulário, a cor de fundo de cada célula ( row, column ), seja definida com base num valor armazenado na mesma célula.

Penso que envolve um Loop Do, For Each ou While mas como não tenho muita experiência em programação, não consigo resolver.  Tenho visto vários códigos Vba aqui no site, mas ainda não consegui adaptar nenhum.

Obrigado!

Suporte:

Oliveira, creio que o caminho seja o uso de Formatação Condicional.  Veja na imagem, um formulário usando Referência Cruzada em que o campo Março fica em vermelho, se o valor for menor que 100 mil.

Formatação Condicional


Veja um pouco de Formatação Condicional AQUI neste meu artigo.

Usuário Oliveira:

Agradeço a disponibilidade e a rapidez na resposta, mas a solução que apresenta é parte do que eu preciso, mas não é tudo.  Preciso de um loop que percorra cada coluna e por cada célula diferente cria um "formatcondition" para a mesma.

Ou seja, se na mesma coluna houver 10 resultados diferentes preciso criar um "formatcondition" para cada.  Resumindo, pintar cada resultado de uma cor diferente que está armazenada nesse mesmo campo em forma de nº de cor do Access.

Suporte:

Oliveira, segue o exemplo e o código utilizado. Observe que usei o evento Ao Pintar da seção detalhe, para chamar a função fncCor().   O uso do evento Ao pintar é semelhante a você usar um loop pelos registros.

Observe também que usei o nome dos campos envolvidos, na variável strSeq.

Private Sub Detalhe_Paint()
Dim k
Dim strSeq$
Dim j%
strSeq = "[Total de ValorCompra];jan;fev;mar;abr;mai;jun;jul;ago"
k = Split(strSeq, ";")
'Todos os campos são analisados para pintura a cada registro
For j = 0 To UBound(k)
    Call fncCor(Me(k(j)))
Next

End Sub
 
'--------------------------------------------------------------

Public Function fncCor(ctl As control)
Select Case ctl.Value
    Case Is < 100000
        ctl.ForeColor = 255
    Case 200001 To 300000
        ctl.ForeColor = vbYellow
    Case 100000 To 200000
        ctl.ForeColor = vbGreen
    Case 600000 To 900000
        ctl.ForeColor = vbBlue
    Case Else
        ctl.ForeColor = 0
End Select
End Function

Usuário Oliveira:

Muito obrigado! Resolveu perfeitamente.

Download

 


 

 


Não há comentário

Envie seu comentário: