Arquivo

Posts Tagged ‘Aprender Vba’

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

 

cores no vba

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

 

codigo vba cor

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

 

mudar cor

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

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:

formatar cor

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:

VBA linha em branco

 

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.

Habilitar Macro no Excel

Habilitar Macro 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/&#8221; 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.