Cores No VBA – Tutorial
Recentemente recebi uma dúvida sobre o assunto cores no vba. Inicialmente após pensar em uma resposta simples percebi que seria interessante dividir com todos. Talvez seja a dúvida de outra pessoa.
Com este artigo pretendo demonstrar:
- Como evitar a armadilha da macro
- Duvida de um leitor: como verificar/contar as cores pintadas nas celulas
- Várias formas de se fazer
Cores No Vba: Armadilha na macro
Pintar celulas, guias ou fontes não é difícil visto que é possível fazer com macros, mas neste atalho pode te levar em situações complicadas.
Por mais que o seu código seja simples você poderá ver no vídeo a brutal diferença do código feito manualmente e o gerado automaticamente pelo Excel.
E como consequência:
- Código muito grande
- Difícil interpretação
- Difícil manutenção
Formas Simplificadas de Usar as Cores
Por padrão as macros irão trazer qualquer cor no formato decimal, mas além deste podemos utilizar mais três formas:
- Decimal
- RGB
- Tabela ColorIndex
- Cores no vba padrões
Ou seja, podemos utilizar destas 4 maneiras para colorir as celulas, guias (sheet) e fontes. Abaixo segue exemplos.
Codigos para Mudar Cor da Celula
Veja como é simples pintar uma celula!
Primeiro selecionamos a célula (range ou cells), depois no referimos ao seu interior (.interior) e depois a sua cor (.color ou .colorindex):
Cores no VBA Básicas
Range("A2").Interior.Color = vbBlue Range("a3").Interior.Color = vbYellow Range("a4").Interior.Color = vbMagenta Range("a5").Interior.Color = vbRed Range("a6").Interior.Color = vbGreen Range("a7").Interior.Color = vbCyan Range("a8").Interior.Color = vbWhite Range("a9").Interior.Color = vbBlack
ColorIndex
Indice de 56 Cores (tabela de cores no material exclusivo ebook):
Range("a2").Interior.ColorIndex = 43
RGB
Range("a2").Interior.Color = RGB(153, 204, 0)
Forma Decimal
Range("a2").Interior.Color = 51510
Alterar Cor Das Fontes
Para altera a coloração da fonte através da do vba basta usar uma das maneiras já descritas anteriormente como nas células:
Range("B2").Font.ColorIndex = 23 'ou Range("B2").Font.Color= vbRed
Formatar Cor das Sheets
Nas guias do excel também não precisamos utilizar macros basta identificar a guia seguido da palavra TAB, exemplo:
Sheets("Plan1").Tab.Color = 51510 ou Sheets("Plan1").Tab.Color = RGB(153, 204, 0)
Como Identificar as Cores
A seguir vou colocar alguns exemplos para verificar as cores nas células.
Verificar cor basica
If Range("A2").Interior.Color = vbBlue Then MsgBox "Azul" End if
Verificar RGB
varCor = Range("a2").Interior.Color varVm = varCor Mod 256 varVd = (varCor \ 256) Mod 256 varAz = (varCor \ 65536) Mod 256 varRGB = "Vermelho =" & varVm & ", Verde =" & varVd & ", Azul =" & varAz MsgBox varRGB
Verificar cor tabela indice
If Range("A2").Interior.ColorIndex = 41 Then MsgBox "Azul Médio" End if
Observações:
Evitar verificar cores por colorIndex pois se a cor (rgb) estiver fora do alcance o vba indicará a cor mais próxima.
Para retirar qualquer “pintura” basta colocar xlColorIndexNone
Enfim para maior entendimento eu sugiro fortemente a visualização do vídeo.
Vídeo:
Exemplo de ‘Do While’ – qual a ultima linha preenchida
Este artigo é bem simples, pois o intuito é demonstrar o uso do do while.
Conforme imagem e código abaixo é possível verificar com VBA linha em branco (vazia) e também como usar o “do while” na planilha:
Como o Do while é uma estrutura de repetição (faça enquanto) e com esta vamos usar para repetir a contagem das linhas (contaLinha = contaLinha + 1) enquanto a linha atual não for vazio (verificaCel)
Codigo Ultima Linha com Do while
Sub teste() contaLinha = 1 'Esta variavel irá servir para pular de linha verificaCel = Cells(contaLinha, 1).Value 'Variável para gravar o conteúdo da célula Do While verificaCel "" 'Faça enquanto conteudo da celula diferente de vazio '... contaLinha = contaLinha + 1 'soma ela mesma, pula para próxima linha verificaCel = Cells(contaLinha, 1).Value 'verifica novo conteudo Loop 'volta para o while MsgBox "A linha vazia é " + CStr(contaLinha) 'Mostra mensagem, qual linha é a vazia End Sub
Armazenar Textos, Numeros e Datas
Você já sabe como armazenar textos, numeros e datas?
Até então estávamos lidando com variáveis armazenando números e trabalhando com estes.
Mas talvez você queira abrir mais as possibilidades, e queira que no resultado exiba além do número um texto que acompanhe.
Agora cabe acrescentar que as variáveis de textos não armazenam números juntos da mesma forma e mesma coisa vale para data.
Um exemplo rápido para exemplificar:
Você monta um formulário onde existe um campo que solicita a data de aniversário, e como resposta de um relatório você deseja apresentar a idade. Com este exemplo vamos ver as 3 formas de armazenamento e no final como armazenar texto e número juntos usando conversão.
Código Armazenar Textos, Numeros e Datas
Sub Macro1() 'armazena o valor (value) da célula, o aniversário aniver = Cells(2, 2).Value 'abaixo na mesma variavel eu substituo o próprio valor, gravando somente o ano (year) aniver = Year(aniver) 'crio uma variável (hoje) que armazena a data de hoje de seu pc hoje = Date 'na mesma variável, eu substituo o próprio valor, mas gravando somente o ano hoje = Year(hoje) '.calculo a diferença entre anos para ver a idade (armazeno número) idade = hoje - aniver 'ate então foram armazenados somente valores... ' na celula "B3" vamos apresentar ou armazenar texto, note que para texto é necessário usar aspas ' e como não há como juntar textos e números, a idade foi convertida pra texto Cells(3, 2).Value = "Você possui " + CStr(idade) + " anos" End Sub
Condição Se
Bem, agora começa a ficar show!
Com o uso da condição SE , podemos definir diferentes ações conforme o valor da célula.
Exemplo: Se minha conta bancaria for positiva mostre em azul, Senão mostre em vermelho!
Agora voltando ao exemplo da soma, na planilha:
Armazene dois valores em duas células distintas (como nos exemplos anteriores), mas dessa vez vamos verificar se o resultado é positivo ou negativo.
Abra seu código e edite:
var1 = Cells(1, 2).Value
var2 = Cells(2, 2).Value
varSoma = var1 + var2
If varSoma >= 0 Then
MsgBox “Numero positivo”
Else
MsgBox “Numero negativo”
End If
Cells(4, 2).Value = varSoma
Você pode usar AND ou OR junto com o IF
exemplo:
IF varSoma >= 0 AND varSoma > 1000 Then
…
else
….
End If
E mais, você pode utilizar Elself
exemplo:
IF varSoma >= 0 Then
…
ElseIf varSoma >=1000 Then
…
Else
…..
End If
A partir desse exemplo você pode verificar se a celula esta vazia, verificar formulas e etc.
Pegar valores no vba dentro do excel
Como pegar valores e guardar eles? Se você já fez macros com certeza já deve ter visto e talvez não reconheu
Creio que após as dicas iniciais, ter vivenciado os código e depurado você tenha já algumas noções sobre os códigos.
Bem, agora é o momento de começar a largar o método de gravar macros e começar a programar.
Quanto menos usar movimentações na sua planilha e uso de fórmulas mais fica ágil sua macro.
Portanto vamos sempre que possivel fazer os cálculos e armazenamento de valores na própria programação.
Apartir deste momento vamos pegar os valores nas células em apelidos (variáveis).
Exemplo pegar valores:
var1 = range("B1").value'............... (armazena o valor da primeira célula, A1) var2 = range("B2").value'...............(armazena o valor da segunda célula, A2) varSoma = var1 + var2'............... (codigo que armazena a soma dos valores das celulas) Cells(4, 2).Value = varSoma'....... (codigo que informa o valor da soma na celula "B4")
Veja que com este exemplo usamos tanto o cells como o range
Vamos lá, abra a sua macro de soma, edite ela!!
______________
Veja também: Armazenando números e textos
Bloqueio de segurança
Você deve ter percebido que ao fazer a macro, salvar e abrir o documento, o excel interrompe sua utilização por segurança.
Portanto para livre utilização, mas com prudencia vamos diminuir a segurança contra macros no excel.
Depurar Código VBA
Depurar Código é um método legal para entendermos os códigos e verificarmos onde erramos durante a programação
Segue abaixo como depurar código vba:
Assim agora fica mais fácil de analisar seus códigos e verificar erros.
Conhecendo o codigo VBA
Após ter feito suas macros, está na hora de olhar e conhecer o codigo VBA
Vá no excel na guia <Exibição>, em <Macros>, clique em <Exibir Macro> e Clique sobre uma macro que você tenha feito e Editar
Caso tenha dúvidas volte no post anterior e veja o vídeo!!! Extremamente importante!!!
Agora começa a diversão, ao abrir a janela você verá o código, perceba que toda referência de células que você clicou o Excel coloca como: Range(“B4”).Select (sendo o “B4” um exemplo meu, cliquei na célula B4 durante a macro). Você poderia ter selecionado a célula A4, A2, B5 e etc .
Ou seja, você já sabe que uma das maneiras de selecionar uma célula é escrever:
range(“coluna , linha”).select
Conhecendo o codigo VBA
Outra maneira que gosto muito é utilizar é: cells(1,1).select ( neste caso escolhi a célula A1)
Você talvez deve ter notado caso tenha feito a soma de dois números, que conforme exemplo do post anterior (Primeiros Passos) é o código: ActiveCell.FormulaR1C1 = “=R[-2]C+R[-1]C” neste caso é a fórmula de soma da célula que você selecionou. Mas isso você não precisa decorar e nem saber.
Bem, você sabe que este código faz a soma, mas pra não complicar e de maneira grosseira você pode simplesmente colocar:
.
1 Modo Soma VBA:
Cells(4, 2).Value = Cells(1, 2).Value + Cells(2, 2).Value
traduzindo o valor (value) da célula B4 = soma das células B1 + B2
.
2 Modo Soma VBA:
Range(“B4”).Value = Range(“B1”).Value + Range(“B2”).Value
Bem… agora faça alguns testes!!!!!!!!!!!!!!
Gostou deste artigo? Então que tal simplificar mais ainda o aprendizado?
Veja meu [button link=”http://excelevba.com.br/curso-vba/” type=”big”] Curso VBA[/button]
Veja também: Armazenando valores !!!!!!!!
Primeiros Passos
Olá Pessoal, vamos ver com é fácil começar a mexer com VBA
De início, vamos fazer uma macro utilizando a forma automática do excel para depois conhecermos mais profundamente
(excel 2007)
Neste exemplo acima, criamos uma macro que sempre somará dois números.
Agora crie macros para multiplicação, eliminar linhas, apagar os números…
Bem apartir disto e usando sua criatividade você irá se familiar com a facilidade do VBA.