Vamos pintar uma pintura Monalisa e deixar Picasso para trás usando VBA. Prepare-se, prepare-se …
Esperar! Esperar! Tenha calma. Vamos apenas usar o VBA para fazer formatação condicional e é mais fácil do que pintar isso? pássaro em forma.
A sintaxe genérica da formatação condicional VBA
Se a condição for Range (range) .Interior.ColorIndex = 1-56
Dê sua verificação de condição na condição e, em seguida, formate seu intervalo usando a propriedade .iteriour.colorindex do objeto Range. O índice de cores possui 56 cores. Vá jogar Holi com eles e explore qual número contém qual cor.
Agora vamos entender com um exemplo
Exemplo: código VBA para formatar células condicionalmente
Então, esse é o cenário, temos uma lista de pessoas aleatórias com sua idade e faixa etária.
Como seria fácil se pudéssemos dizer a faixa etária de uma pessoa apenas olhando seus nomes.
Agora para fazer isso, eu quero o formato VBA Nome VERMELHO se ele for um adulto, AMARELO se ele for um adolescente e VERDE se ele for uma criança e nada se a célula estiver em branco.
Sub FormatUsingVBA () Dim rng As Range Dim lastRow As Long lastRow = Células (Rows.Count, 3) .End (xlUp) .Row Set rng = Range ("C2: C" & lastRow) Para Cada célula In rng Se célula. Value2 = "Adulto" Então Intervalo (cell.Address) .Offset (0, -2) .Interior.ColorIndex = 3 ElseIf cell.Value2 = "KID" Então Intervalo (cell.Address) .Offset (0, -2). Interior.ColorIndex = 4 ElseIf cell.Value2 = "Adolescente" Then Range (cell.Address) .Offset (0, -2) .Interior.ColorIndex = 6 Else Range (cell.Address) .Offset (0, -2). Interior.ColorIndex = 0 End If Next célula End Sub
Para executar esse código diretamente da planilha, desenhei um botão na mesma planilha e atribuí essa macro a ele. Agora, sempre que você clicar no botão “Formatar”, seu código será executado e atualizará as células de nome com cores dependendo de sua faixa etária. Como? Vamos descobrir.
Explicação do código:
Dim rng As RangeDim lastRow As LongEstas duas linhas são declarações de variáveis. rng para Intervalo que contém a faixa etária e lastRow para obter o número da última linha não vazia.
lastRow = Cells (Rows.Count, 3) .End (xlUp) .RowThis linha retorna o último número da linha na variável lastRow.
Set rng = Range ("C2: C" & lastRow) Esta linha define o intervalo começando em C2 e até a última linha. Isso torna seu código dinâmico. Você adiciona novas linhas aos seus dados e ele detectará e armazenará em um novo intervalo na variável rng.
Para cada célula In rng Se cell.Value2 = "Adulto" Then Range (cell.Address) .Offset (0, -2) .Interior.ColorIndex = 3 ElseIf cell.Value2 = "KID" Then Range (cell.Address). Offset (0, -2) .Interior.ColorIndex = 4 ElseIf cell.Value2 = "Adolescente" Então Intervalo (cell.Address) .Offset (0, -2) .Interior.ColorIndex = 6 Outro Intervalo (cell.Address). Offset (0, -2) .Interior.ColorIndex = 0 End If Next cell
Este é o segmento principal.
Para cada célula em rng
A primeira linha executa o loop para todas as células em seu intervalo. Se cell.Value2 = "Adulto" Então
A próxima linha é uma verificação de condição. Ele verifica se o valor da célula atual é Adulto ou não.
Se sim, a próxima linha é executada, caso contrário, pula para a próxima se instrução.Range (cell.Address) .Offset (0, -2) .Interior.ColorIndex = 3
Agora, se a condição IF retornar TRUE, esta linha define a cor da célula para ColorIndex 3 que é para RED.
Da mesma forma, as instruções IF a seguir são executadas e executadas conforme especificado.
Então, sim, você pode formatar intervalos condicionalmente usando VBA. O método interior do objeto Range controla muitas outras propriedades de formatação. Você deve brincar com eles, não fará mal nenhum, mas você aprenderá definitivamente. E se você enfrentar qualquer dificuldade do que a que estou aqui. Faça suas perguntas na seção de comentários.
⇬ Fazer download do arquivo
Formatação condicional usando VBA no Microsoft ExcelArtigos populares:
50 atalhos do Excel para aumentar sua produtividade
Como usar a função PROCV no Excel
Como usar a função CONT.SE no Excel
Como usar a função SUMIF no Excel