kilkus Posted September 9, 2013 at 09:52 AM Report #523888 Posted September 9, 2013 at 09:52 AM Boas Preciso de uma ajuda para resolver um problema. Eu tenho valores de 1 a 4 na coluna AL e preciso de formatar as colunas A, B e C da respectiva linha consoante os valores da Coluna AL. Assim: Se AL2=1, a cor de fundo de A2, B2 e C2 têm que ser verde; Se AL2=2, a cor de fundo de A2, B2 e C2 têm que ser amarelo; Se AL2=3, a cor de fundo de A2, B2 e C2 têm que ser laranja; Se AL2=4, a cor de fundo de A2, B2 e C2 têm que ser vermelho; Também tenho uma condição para as mesmas células, mas baseadas no conteúdo de outra célula, ou seja, Se I2="Fechado", a cor de fundo de A2, B2 e C2 é branco. Concluindo, preciso de 5 condições para formatar o mesmo conjunto de células e só através do VBA é que posso resolver, mas as minhas bases são nulas. PS: Estou a usar o Excel 2003.
sergio.costa Posted September 9, 2013 at 07:53 PM Report #523940 Posted September 9, 2013 at 07:53 PM Boa noite. Para poderes resolver o teu problema, de facto, terás de usar Vba. No meu entender devias investigar sobre este tipo de linguagem e sobre algoritmia pois e a base deste tipo de programação... Se ja conheces outras linguagem tais como C ou Pascal nao terás dificuldade em entender esta... podes dar uma olhadela em: www.excel-vba.com Uma boa maneira de aprender certas coisas é também o metodo de Gravar Macro e posteriormente analisar o codigo gerado para poder aproveitar so o que interessa... Podes dar uma olhadela em: https://www.youtube.com/embed/2he9usbvQV0?feature=oembed De qualquer das formas devias começar pelos comceitos de: Forms Modules Events subs Functions Dá uma vista de olhos neste tópico: http://www.portugal-a-programar.pt/topic/6645-iniciar-em-vba/ Espero que ajude Cumprimentos
kilkus Posted September 10, 2013 at 02:48 PM Author Report #523997 Posted September 10, 2013 at 02:48 PM Já está resolvido... Private Sub Worksheet_Change(ByVal Target As Range) Dim Celula As Range Dim lastRow As Long Dim x As Integer lastRow = Cells(Cells.Rows.Count, "AL").End(xlUp).Row For x = 2 To lastRow If Not LCase(Cells(x, "I")) = LCase("Fechado") Then If Cells(x, "AL") = 1 Then Range(Cells(x, "A"), Cells(x, "A").Offset(0, 2)).Interior.ColorIndex = 4 End If If Cells(x, "AL") = 2 Then Range(Cells(x, "A"), Cells(x, "A").Offset(0, 2)).Interior.ColorIndex = 6 End If If Cells(x, "AL") = 3 Then Range(Cells(x, "A"), Cells(x, "A").Offset(0, 2)).Interior.ColorIndex = 45 End If If Cells(x, "AL") = 4 Then Range(Cells(x, "A"), Cells(x, "A").Offset(0, 2)).Interior.ColorIndex = 3 End If If Cells(x, "AL") = Empty Then Range(Cells(x, "A"), Cells(x, "A").Offset(0, 2)).Interior.ColorIndex = 0 End If Else Range(Cells(x, "A"), Cells(x, "A").Offset(0, 2)).Interior.ColorIndex = 0 End If Next x End Sub
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now