Formatação de formulário usando Referência Cruzada
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.
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.
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 |