Estou tentando criar um script VBA que formate condicionalmente um intervalo de células que contenha qualquer string de texto com uma cor de preenchimento de minha escolha.
Até agora, uso uma regra de formatação condicional do Excel para conseguir isso e funciona; no entanto, arrastar e soltar o conteúdo das células de uma coluna para outra faz com que as regras de formatação condicional fiquem muito fragmentadas e rapidamente se tornem uma bagunça. O que começou como duas regras de formatação condicional, uma para a coluna A e outra para a coluna B, rapidamente se torna dezenas de regras separadas à medida que o Excel altera o campo "aplica-se a" das regras a cada cópia ou movimentação dos dados da célula.
Um script VBA capaz de alcançar o mesmo que minhas regras de formatação condicional seria muito melhor, pois não seria afetado por mover ou copiar e colar dados de células. Eu seria capaz de arrastar e soltar livremente meus dados na coluna apropriada sem que o código VBA subjacente fosse afetado.
Alguém aqui com alguma experiência básica em codificação VBA tem alguma ideia para um simples trecho de código que eu poderia usar para simplesmente alterar a cor de preenchimento de qualquer célula que contenha qualquer string? Isso se aplicaria às células A1:A200.
Se você não gostar de alguma coisa sobre minha pergunta por algum motivo, como David Postill fez recentemente, por favor, diga-me em um comentário e me dê alguns minutos para atualizá-lo com qualquer informação adicional que você acha que pode ser necessária, em vez de rejeitá-lo e fugindo.
Interessado apenas em ouvir pessoas com alguma experiência básica em VBA e um desejo de ser útil. Nenhum comentário sarcástico sobre "Não vamos depurar algum script aleatório que você encontrou online para você", por favor. Eu só quero ouvir pessoas positivas e ÚTEIS.
É irritante que a formatação condicional possa se tornar fragmentada, como você descreveu. Eu tento escrever regras de formatação condicional que se aplicam a uma coluna ou colunas inteiras. Então, posso alterar um endereço fragmentado como
$B$24,$B$25:$C$25,$B$27:$C$1048576,$B$26,$B$21:$C$23,$B$1:$C$19,$B$20
de volta para$B:$C
.Como você me lembrou desse aborrecimento, escrevi uma macro para corrigir endereços fragmentados em regras de formatação condicional. A macro ajudará apenas se as regras de formatação condicional se aplicarem a uma coluna ou colunas inteiras.
O pessoal do MrExcel.com conseguiu encontrar uma solução muito elegante.
Acontece que foi possível replicar a funcionalidade de minhas regras de formatação condicional existentes usando apenas cinco linhas de código VBA. A questão das regras sendo alteradas conforme os dados são movidos não pode mais acontecer, pois a lógica de formatação condicional agora é tratada por uma pequena macro.
Passei alguns minutos testando isso e funcionou bem. Agora excluí todas as minhas regras de formatação condicional e o mesmo comportamento de formatação condicional continua por meio deste código VBA:
Para contextualizar, aqui está todo o código VBA que agora uso nesta planilha.
A primeira seção lida com a alfabetização automática enquanto esta nova segunda seção lida com a formatação condicional: