Usando o VBA no Excel nossos limites na ferramenta se ampliam até onde a imaginação e o conhecimento de programação permitirem irmos. É possível ampliar em muito os recursos do próprio Excel além de até mesmo criarmos novos recursos.
Uma das coisas possíveis de se fazer, por exemplo, é colorir de forma automática, ou seguindo regras previamente programadas, células no Excel.
A linguagem VBA utiliza dois comandos diferentes para colorir células, fontes, entre outros. Temos a propriedade Color que utiliza cores hexadecimais e a propriedade ColorIndex que utiliza 56 cores pré-definidas no VBA, acessadas por números como segue na tabela abaixo.
1 | 29 | ||
2 | 30 | ||
3 | 31 | ||
4 | 32 | ||
5 | 33 | ||
6 | 34 | ||
7 | 35 | ||
8 | 36 | ||
9 | 37 | ||
10 | 38 | ||
11 | 39 | ||
12 | 40 | ||
13 | 41 | ||
14 | 42 | ||
15 | 43 | ||
16 | 44 | ||
17 | 45 | ||
18 | 46 | ||
19 | 47 | ||
20 | 48 | ||
21 | 49 | ||
22 | 50 | ||
23 | 51 | ||
24 | 52 | ||
25 | 53 | ||
26 | 54 | ||
27 | 55 | ||
28 | 56 |
Podemos usar o próprio excel para criar esta tabela e consultá-la posteriormente. Segue um exemplo, no excel 2013, para montarmos a tabela acima, usando VBA.
Habilitando a guia desenvolvedor no Excel
Para iniciarmos nosso código, precisamos habilitar a área do VBA no Excel. Para isso basta habilitar a guia desenvolvedor caso a mesma não esteja aparecendo.
Em seguida clique em Visual Basic.
Na nova janela que se abrirá clique no menu Inserir > Módulo (figura abaixo).
Com isso estaremos criando uma macro.
Dentro do módulo digite o seguinte código.
Sub tab_cores() Dim i, j As Integer For i = 1 To 28 Range("A" & i).Select Selection.Interior.ColorIndex = i Cells(i, 2) = i Next For i = 1 To 28 Range("C" & i).Select Selection.Interior.ColorIndex = i + 28 Cells(i, 4) = i + 28 Next End Sub
Feche a janela e retorne ao excel.
Na guia Desenvolvedor clique no botão Macros.
Na janelá que abrirá aparecerá a nossa Macro. Clique em Executar.
Pronto. Nosso código será executado e a tabela de cores montada no excel.
No código criado, repare no seguinte trecho:
Selection.Interior.ColorIndex = i
Como estamos dentro de um For o valor de i assumirá valores de 1 até 28, estes valores serão recebidos pela propriedade ColorIndex, colorindo assim o interior da seleção no momento.
Caso fosse utilizado a propriedade Color deveríamos trabalhar com cores Hexadecimais, os números de 1 a 56 só serão executados como cores na propriedade ColorIndex.
Dúvidas? Fique a vontade nos comentários.
Até a próxima!
Blog Comments
Luiz
17/01/2015 at 16:58
Ola, Na minha deu um erro na 4ª linha. Cheguei a trocar o ponto e virgula por uma virgula e deu outro erro. Tem como mostrar solução?
Alexander
02/03/2015 at 22:00
Olá Luiz. Perdoe a demora. Vou retomar o site agora, estive um tempo parado.
Estava olhando o código, e por um erro na codificação do HTML, acabou saindo “Range(“A” & i)”, não sei se foi esse o caso, mas retire este “amp”. Já acertei no site, verifique agora por favor.
Qualquer dúvida pode entrar em contato pelo e-mail “[email protected]”.
Obrigado.
Jb Paulo
11/01/2016 at 15:49
Prez amigo.
Na minha macro que já tinha feito para colorir uma sequência de
células o 3 é preto. Pode me explicar?
Alexander
20/01/2016 at 18:17
Olá Jb Paulo.
Qual a versão do seu Excel? Pode enviar o código que usou na macro. Pois o 3 costuma ser a cor vermelha mesmo. Pesquisei rapidamente na internet e todas as outras referências que encontrei o 3 é vermelho. Seguem alguns links:
http://www.databison.com/wp-content/uploads/2009/08/excel-color-index-excel-2003.png
http://dmcritchie.mvps.org/excel/colors.htm
https://msdn.microsoft.com/pt-br/library/office/ff840443.aspx
Se puder cola aqui o código para eu analisar e ver se descubro.
Abraço.