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!