Formatação condicional no Excel VBA

No Excel, todos nós usamos Formatação Condicional para destacar valores duplicados. Formatação principalmente condicional é usada para obter valores duplicados. Podemos destacar valores duplicados de várias maneiras. Podemos destacar os valores duplicados, variar valores específicos e também podemos definir a regra para concluir os critérios de formatação. Abaixo estão as funções variáveis ​​disponíveis em Formatação condicional.

Mas e se pudermos automatizar esse processo de destacar valores duplicados ou qualquer tipo de valor conforme nossa exigência. Os critérios que podemos definir usando a Formatação Condicional no Excel também podem ser feitos no VBA. Para aplicar a formatação condicional, podemos escolher qualquer célula, intervalo disponível na planilha do Excel. A formatação condicional funciona apenas quando os critérios definidos atendem ao requisito. Senão, não mostrará nenhuma alteração de cor. Com a ajuda da Formatação condicional no VBA, podemos alterar a cor de qualquer célula ou conteúdo de célula, excluir a cor da célula ou remover a cor também. Além de alterar a cor da célula, podemos alterar o conteúdo da célula para texto em negrito ou itálico . Uma vez feito, também podemos desfazer todas as alterações.

Como usar a formatação condicional no Excel VBA?

Abaixo estão os diferentes exemplos para usar a Função de formatação condicional no Excel usando o código VBA.

Você pode fazer o download deste modelo do Excel de formatação condicional do VBA aqui - Modelo do Excel de formatação condicional do VBA

Formatação Condicional VBA - Exemplo # 1

Temos dados de alguns números e texto, como mostrado abaixo nas colunas A e B. Agora já categorizamos a cor que precisamos fornecer ao número e ao texto que está na célula D2. Identificamos a cor amarela para o número 1 e o alfabeto A e a cor verde para o número 2 e o alfabeto B.

Embora a formatação condicional do VBA possa ser implementada no módulo, escrever o código para formatação condicional na planilha fará com que o código funcione apenas nessa planilha. Para isso, em vez de ir para a opção Módulo, clique na guia Inserir para inserir um módulo.

Etapa 1: agora, no primeiro menu suspenso, selecione Planilha, que será Geral por padrão e, no menu suspenso, selecione automaticamente a opção SelectionChange, como mostrado abaixo.

Etapa 2: quando fizermos isso, ela ativará automaticamente a subcategoria privada e a célula de destino será como Intervalo.

Código:

 Sub Privado Worksheet_SelectionChange (destino de ByVal como intervalo) End Sub 

Etapa 3: Agora escreva o código, primeiro defina uma variável MyRange como Range . Ou você pode escolher qualquer outro nome em vez de MyRange conforme sua escolha.

Código:

 Private Sub Worksheet_SelectionChange (destino ByVal como intervalo) Dim MyRange As Range End Sub 

Etapa 4: Use Set e escolha o intervalo definido, como mostrado abaixo.

Código:

 Private Sub Worksheet_SelectionChange (destino ByVal como intervalo) Dim MyRange As Range Set MyRange = End Sub 

Etapa 5: depois disso, selecione a planilha na qual queremos aplicar a formatação condicional. Aqui nossa planilha é Sheet1. Também podemos colocar a sequência como 1 em vez de escrever a Folha1. E, em seguida, selecione o intervalo dessas células que precisamos formatar. Aqui nosso intervalo é da célula A1 a B8.

Código:

 Sub privado Worksheet_SelectionChange (destino ByVal como intervalo) Dim MyRange como intervalo definido MyRange = Worksheets ("Sheet1"). Range ("A1: B8") End Sub 

Etapa 6: Agora abra um loop For Each-Next, como mostrado abaixo. E comece com a seleção da variável definida por célula MyRange .

Código:

 Submarino particular Worksheet_SelectionChange (destino ByVal como intervalo) Dim MyRange como intervalo definido MyRange = Worksheets ("Sheet1"). Range ("A1: B8") para cada célula no MyRange Next End Sub 

Etapa 7: Agora, abra novamente um loop If-Else.

Código:

 Submarino particular Worksheet_SelectionChange (destino ByVal como intervalo) Dim MyRange As Range Defina MyRange = Worksheets ("Sheet1"). Range ("A1: B8") Para cada célula em MyRange Se terminar se o próximo final Sub for 

Essa é a região em que atribuímos as cores a todos os números e alfabetos disponíveis em nosso intervalo.

Etapa 8: escreva o código, se o valor da célula for 1 cor interior e a célula do intervalo selecionado, que é de A1 a B8, será verde. E para o verde, temos o código de cores atribuído a ele como 6.

Código:

 Sub-planilha_SelectionChange privada (destino ByVal como intervalo) Dim MyRange como intervalo Defina MyRange = Worksheets ("Sheet1"). Range ("A1: B8") Para cada célula em MyRange If Cell.Value Like "1" Então Cell.Interior.ColorIndex = 6 Fim Se Próximo Fim Sub 

Etapa 9: Agora, para o valor número da célula 2. Caso contrário, se o valor da célula de qualquer célula do intervalo selecionado for 2, a cor interna dessa célula será amarela. E para o amarelo, temos o código de cores atribuído a ele como 4.

Código:

 Sub-planilha_SelectionChange privada (destino ByVal como intervalo) Dim MyRange como intervalo Defina MyRange = Worksheets ("Sheet1"). Range ("A1: B8") Para cada célula em MyRange If Cell.Value Like "1" Então Cell.Interior.ColorIndex = 6 ElseIf Cell.Value Like "2" Então Cell.Interior.ColorIndex = 4 End If Next End Sub 

Para cada cor, temos códigos de cores diferentes atribuídos a eles, começando de 1 a 56. Enquanto o código de número 1 é atribuído à cor Preta e o número 56 é atribuído à cor cinza escuro. No meio, temos outros tons de cores diferentes, que podemos encontrar nos Documentos da Microsoft.

Etapa 10: se alguma das opções acima

condição é FALSE, então teríamos outro Else se condição em que se o valor da célula for A, a cor interior da célula será amarela. E para amarelo novamente, atribuiremos o código como 6.

Código:

 Sub-planilha_SelectionChange privada (destino ByVal como intervalo) Dim MyRange como intervalo Defina MyRange = Worksheets ("Sheet1"). Range ("A1: B8") Para cada célula em MyRange If Cell.Value Like "1" Então Cell.Interior.ColorIndex = 6 ElseIf Cell.Value Like "2" Então Cell.Interior.ColorIndex = 4 ElseIf Cell.Value Like "A" Então Cell.Interior.ColorIndex = 6 End If Next End Sub 

Etapa 11: faça o mesmo para o valor da célula B, com o código de cor 4 como Verde.

Código:

 Sub-planilha_SelectionChange privada (destino ByVal como intervalo) Dim MyRange como intervalo Defina MyRange = Worksheets ("Sheet1"). Range ("A1: B8") Para cada célula em MyRange If Cell.Value Like "1" Então Cell.Interior.ColorIndex = 6 ElseIf Cell.Value Como "2" Então Cell.Interior.ColorIndex = 4 ElseIf Cell.Value Como "A" Então Cell.Interior.ColorIndex = 6 ElseIf Cell.Value Como "B" Então Cell.Interior.ColorIndex = 4 Fim Se Próximo Fim Sub 

Etapa 12: se alguma das condições não for VERDADEIRA, então para Else, preferimos selecionar o código de cores como Nenhum .

Código:

 Sub-planilha_SelectionChange privada (destino ByVal como intervalo) Dim MyRange como intervalo Defina MyRange = Worksheets ("Sheet1"). Range ("A1: B8") Para cada célula em MyRange If Cell.Value Like "1" Então Cell.Interior.ColorIndex = 6 ElseIf Cell.Value Como "2" Então Cell.Interior.ColorIndex = 4 ElseIf Cell.Value Como "A" Então Cell.Interior.ColorIndex = 6 ElseIf Cell.Value Como "B" Então Cell.Interior.ColorIndex = 4 Else Cell.Ineterios.ColorIndex = xlNone End If Next End Sub 

Etapa 13: como o código é grande, para compilar cada etapa do código, pressione a tecla funcional F8. Se nenhum erro for encontrado, clique no botão play para executar o código inteiro de uma só vez. Veremos, de acordo com a regra de formatação condicional definida no código VBA, a cor das células foi alterada para os códigos de cores selecionados, como mostrado abaixo.

Etapa 14: esta formatação está corrigida. Se quisermos ver as alterações de cor, para teste, alteremos o valor de qualquer célula, considere A1 de 1 para 2. Veremos que a cor da célula A1 é alterada para Verde.

Isso ocorre porque declaramos que no intervalo A1 a B8, qualquer célula que contenha os números 1 e 2 e os alfabetos A e B será formatada em amarelo e verde, conforme mostrado nas células D2 a E3.

Prós e contras

  • Dá saída instantânea se tivermos dados enormes. Considerando que, se aplicarmos o mesmo na opção de menu do Excel, levará um tempo para limpar a formatação do conjunto de big data.
  • Também podemos executar todos os tipos de funções disponíveis no Excel para formatação condicional no VBA.
  • Não é recomendável aplicar a formatação condicional do VBA para um pequeno conjunto de dados.

Coisas para lembrar

  • Existem muitas outras funções além de destacar duplicatas e células com o mesmo valor. Podemos alterar o formato da célula de qualquer maneira, como negrito e itálico, alterando a cor da fonte, alterando a cor do plano de fundo, destacando os valores entre algum intervalo específico.
  • Depois de aplicada a formatação condicional, podemos alterar a regra; de fato, também podemos excluir as condições de formatação. Para que nossos dados voltem ao normal.
  • Podemos aplicar mais de uma condição em uma macro.

Artigos recomendados

Este é um guia para formatação condicional do VBA. Aqui discutimos como usar a função Formatação condicional do VBA do Excel, juntamente com exemplos práticos e modelo de excel para download. Você também pode consultar nossos outros artigos sugeridos -

  1. Copiar Colar Função no VBA
  2. Função Excel de Substring
  3. Subscrito VBA fora do intervalo
  4. Fórmula ISNUMBER do Excel
  5. Formatação condicional para datas no Excel

Categoria: