10 macros muito úteis

por João Henrique

Lista com 10 macros pequenas mas muito úteis, que você pode utilizar e modificar para automatizar pequenas ações nas suas planilhas. Os trechos em vermelho mostram o que precisa ser modificado para adequar a macro à sua necessidade específica.


1) Como mostrar uma mensagem informativa

Utilize na sua macro o comando MsgBox, da seguinte forma:

MsgBox "texto da mensagem"

Pode ser utilizado para avisar que a macro foi concluída, mostrar o resultado da macro, informar se há algum erro na planilha, etc.


2) Executar macro ao abrir a planilha

Para isso, basta criar uma macro chamada  Auto_Open()

Exemplo:

Sub Auto_Open()
   MsgBox "Para ver dicas de Excel, acesse www.planilhasexcel.com"
End Sub


Nesse exemplo, ao abrir a planilha será exibida uma mensagem. Vale lembrar que, para executar a macro, as macros deverão estar habilitadas.


3) Como inserir uma linha com VBA

Sub adicionarLinha()
   Rows(2).Insert
End Sub

O exemplo acima insere uma nova linha na segunda linha da planilha


4) Escrever data e hora atuais na planilha

Esse exemplo escreve a data e hora atuais na célula A1. Veja também a função AGORA.


Sub escreverDataEHora()
   Range("A1") = Now
End Sub




Macro - Mover linha para outra planilha

por João Henrique

Atendendo a um leitor aqui do Planilhas Excel, criei uma macro para mover uma linha de uma planilha para outra. A idéia é clicar em uma célula qualquer na linha que deverá ser movida, e em seguida executar a macro. Ao executar a macro, a linha será removida da planilha inicial para uma outra planilha.

Caso você ainda não saiba como criar macros, veja Como Programar no Excel e Como Inserir uma Macro no Excel.

Segue a macro:


Sub moverLinha()
   'Macro de planilhasexcel.com
   Dim linhaOriginal, planilhaOriginal
   linhaOriginal = ActiveCell.Row
   planilhaOriginal = ActiveSheet.Name
   
   Rows(linhaOriginal).Cut
   Sheets("planilhaAlvo").Select
   Range("A65536").End(xlUp).Offset(1, 0).Select
   ActiveSheet.Paste
   
   Sheets(planilhaOriginal).Select
   Rows(linhaOriginal).Delete
End Sub



Importante: Você precisa alterar onde tem escrito "planilhaAlvo" para o nome da planilha para a qual a linha será movida. Por exemplo, se for para Plan2, ficará assim: Sheets("Plan2").Select

Importante-2: Para que a macro funcione corretamente, é preciso que a primeira célula de cada linha não seja em branco.

Importante-3: Antes de usar qualquer macro, é recomendável testar bem para saber se ela está funcionando conforme esperado

Como usar a macro

Há diferentes formas de executar a macro, veja em como executar uma macro, ou então crie um botão na sua planilha.

Explicando a macro

O que a macro faz é selecionar a linha da célula que foi selecionada, recortar (cut), ir para a planilha alvo e colar (paste). A linha Range("A65536").End(xlUp).Offset(1, 0).Select é um truque para ir para a primeira linha em branco da planilha.

Ao terminar de recortar e colar, eu queria voltar para a planilha original e excluir a linha que foi recortada. Para isso, foi preciso criar as variáveis linhaOriginal e planilhaOriginal.



Como criar um botão no Excel

por João Henrique

A gente já sabe que criar macros no Excel é ótimo para automatizar o trabalho com as planilhas, e também já sabe como executar as macros. Hoje vou mostrar pra vocês uma forma mais prática de executar macros, que é através de um botão na própria planilha.

Para seguir esta dica é preciso utilizar a guia Desenvolvedor, como mostrado na figura abaixo. Se essa opção não aparece no seu Excel, veja primeiro como mostrar a guia Desenvolvedor no Excel 2007.

Pronto, uma vez na guia Desenvolvedor, clique no botão "Inserir", e em seguida no botão que tem um retângulo cinza (é o primeiro botão). Esses botões estão destacados na figura a seguir:


Ao fazer isso, o ponteiro do mouse ficará em forma de cruz. Nesse momento, você precisa clicar na planilha e, sem soltar o botão do mouse, arrastar o mouse para os lados - isso desenhará um retângulo com o formato do botão que você está criando, quando o retângulo estiver no formato que você deseja, solte o botão do mouse. Ao fazer isso, irá aparecer uma janelinha como essa:





Como saber se um texto é um número? (VBA)

por João Henrique

Nada mais comuns em uma macro do que fazer contas. A gente pega o valor de uma célula, ou de uma caixa de texto, multiplica com o de outra célula, soma com o de outra, e assim vai. Mas o que acontece quando a gente manda multiplicar A1 por 10 e em A1 está escrito uma palavra?


É isso mesmo, aparece uma mensagem de erro dizendo "Tipos incompatíveis". Afinal, multiplicar um texto por um número, hmmmm... não tem como dar certo, né? O que a gente pode fazer para evitar esse tipo de erro é verificar se o dado em questão é realmente um número.

Para isso, a gente pode fazer um pequeno if como esse:
If IsNumeric(dado) And Not IsEmpty(dado) Then comando
, onde a gente vai substituir 'dado' pelo dado que queremos usar e 'comando' pelo comando ou conta que queremos fazer.

Agora explicando: a função IsNumeric diz se o valor passado como argumento (entre parênteses) é um número. No entanto, ela também considera como número a célula em branco, ou a variável vazia, por isso que usamos também a função IsEmpty. A função IsEmpty diz se o valor passado como argumento é vazio.

Traduzindo o IF: Se o dado é um número, e o dado NÃO é vazio, então execute o comando.

Exemplos com célula:
Sub exemplo1()
If IsNumeric(Range("a1")) And Not IsEmpty(Range("a1")) Then MsgBox "O valor de A1 é número e a célula não está em branco"
End Sub
Traduzindo: se o valor da célula a1 for realmente um número, mostre uma mensagem dizendo que O valor de A1 é número e a célula não está em branco

Sub exemplo2()
If IsNumeric(Range("a1")) And Not IsEmpty(Range("a1")) Then MsgBox A1*10
End Sub
Traduzindo: se o valor da célula a1 for realmente um número, mostre uma mensagem com o resultado da multiplicação do valor de A1 por 10

Exemplo com variável:

Sub exemplo3()
Dim variavel1
variavel1 = 5
If IsNumeric(variavel1) And Not IsEmpty(variavel1) Then MsgBox "A variável1 é número e não é vazia"
End Sub
Traduzindo: se o valor da variável1 for realmente um número, mostre uma mensagem dizendo que A variavel1 é número e não é vazia

Quando uma caixa de texto está em branco, a função IsNumeric dá False, ou seja, ela diz que o valor da caixa de texto NÃO é um número. Por isso não precisamos usar a função IsEmpty ao usar caixas de texto.

Exemplo com caixa de texto:

Sub CommandButton1_Click()
If IsNumeric(TextBox1) Then MsgBox "O valor da caixa de texto é mesmo um número, e ela não está em branco"
End Sub
Traduzindo: se o valor da TextBox1 for realmente um número, mostre uma mensagem dizendo que O valor da caixa de texto é mesmo um número e ela não está em branco



Quebra de linha no VBA - Underline

por João Henrique

Um assunto que costuma gerar muitas dúvidas, apesar de ser simples, é o uso do Underline (esse tracinho: _ )

Ele fica fácil quando pensamos nas quebras de linha do nosso português normal. Quando você está escrevendo uma palavra e o espaço da linha acaba, você usa o hífen ( - ) e continua a palavra embaixo, certo?

De forma similar, no VBA, quando a gente está escrevendo uma linha e ela já está muito grande, podemos colocar o Underline e continuar na linha abaixo. Veja o exemplo de uma macro sem e, depois, com Underline.


Com o Underline fica mais fácil de ler, né? Ok, mas ao contrário do português, a gente não pode colocar o Underline no meio de uma palavra, e sim entre uma palavra e outra. E sempre, SEMPRE, tem que haver um espaço antes do Underline. Veja a mesma macro, com mais quebras de linhas, todas válidas.


Public Sub exemploCorreto()
If Range("A1") = "a" Or Range("A1") = "e" Or _
Range("A1") = "i" Or Range _
("A1") = _
"o" Or Range("A1") = "u" _
Then MsgBox _
"O texto em A1 é uma vogal"
End Sub

Também não é possível quebrar a linha no meio de um texto (string), ou seja, entre aspas. Veja agora um exemplo onde TODAS as quebras de linha são INVÁLIDAS.

Public Sub exemploErrado()
If Range("A1") = "a" Or Range("A1") = "e" Or_
Range("A1") = "i" Or Range("A1") = "o" Or Ran _
ge("A1") = "u" Then MsgBox "O texto em A1 é _
uma vogal"
End Sub

A primeira quebra de linha é inválida por que não foi digitado o espaço antes do Underline. A segunda quebra de linha é inválida por que o Underline foi colocado no meio da palavra Range. A última quebra de linha é inválida por que está dentro de um texto.

PS: normalmente, o Underline se escreve apertando Shift + hífen



Como escrever uma função para o Excel - Parte 3

por João Henrique

Já vimos como escrever uma função sem argumentos, com 1 argumento, e agora veremos como escrever uma função em VBA com mais de 1 argumento.

Como assim? Argumentos são os valores que a gente informa à função, para que ela possa dar um resultado. Por exemplo, para calcular a velocidade média de um carro nós precisamos saber de duas coisas: o tempo que ele levou para percorrer uma certa distância, e a distância. Dessa forma, se quisermos definir uma função que calcule a velocidade média, teremos que definí-la de forma a receber essas duas informações (que são os argumentos).

Já vimos que os argumentos de uma função ficam dentro dos parênteses logo após o nome da função. Para definir mais de um argumento, basta separá-los por vírgulas:

Private Function calcularVelocidadeMedia(tempo, distancia)
     calcularVelocidadeMedia = tempo/distancia
End Function


Tendo definido a função, podemos usá-la na nossa planilha, respeitando a ordem dos argumentos (no caso, primeiro o tempo, depois a distância).


OBS: na hora de definir a função separamos os argumentos com vírgula (,) mas na hora de usar a função (na planilha) usamos o ponto-e-vírgula (;)



Como escrever uma função para o Excel - Parte 2

por João Henrique

No post anterior vimos como escrever uma função simples no Excel. Agora a coisa vai ficar mais divertida, pois escreveremos funções com argumentos.

Vamos supor que, na empresa ABC, o salário líquido dos seus funcionários corresponde a 82% dos seus salários brutos. Para facilitar o trabalho da equipe de recursos humanos da ABC, vamos criar uma função no Excel que calcula o valor do salário líquido dos seus funcionários.

Para fazer a conta, precisamos saber 2 coisas: o salário e o porcentual. O porcentual a gente já sabe, é 82%. Já o salário, vai depender - cada funcionário tem o seu salário de acordo com o cargo, tempo de casa, etc. Como o salário não é sempre o mesmo, podemos definir ele como um argumento da função - ou seja, é um valor que será informado pela pessoa que estiver usando a função.

No VBA, tudo que precisamos fazer é colocar o nome do argumento entre parênteses, após o nome da função. Aí na hora de dizer qual o resultado da função, podemos usar o argumento, dizendo que será o salário bruto multiplicado por 0,82.
Private Function calcularSalarioLiquido(SalarioBruto)
    calcularSalarioLiquido = SalarioBruto * 0.82
End Function


Feito isso, as pessoas poderão usar as funções nas suas planilhas, como mostra a figura abaixo.


Como escrever uma função para o Excel - Parte 3



Como escrever uma função para o Excel

por João Henrique

O Excel possui diversas funções que usamos nas nossas planilhas, como MÉDIA, SOMA, PROCV, etc. Mas o que acontece se quisermos usar uma função que não exista no Excel? Nós podemos criar nossas próprias funções, escrevendo código em VBA.

Em "Como escrever uma macro", vimos que o formato básico de um código de macro é assim:
Private Sub primeiraMacro()

End Sub


As funções são muito parecidas com as macros. Observe:
Private Function primeiraFuncao()

End Function


Simples, né? Onde tinha "Sub" escrevemos "Function". Agora falta só dizer qual o resultado da função; para isso, utilizamos o nome da função (no caso, primeiraFuncao):
Private Function primeiraFuncao()
primeiraFuncao = 10
End Function


Com isso, dizemos que o resultado da função primeiraFuncao será 10.

Para que possamos usar a função, é preciso que ela esteja em um módulo de código. Para isso, abra o editor VBA, clique em Inserir/Módulo, e escreva o código da função na janela que aparece, como mostra a figura abaixo.

Com isso nós podemos usar a função como qualquer outra função do Excel, como mostra a figura abaixo.


Como escrever uma função para o Excel - Parte 2



Como alterar o valor de uma célula com VBA - Comando Range

por João Henrique

Às vezes queremos utilizar o nosso código VBA para alterar o valor de alguma(s) célula(s) na planilha. Uma forma de se fazer isso é usando o comando Range, assim:

Range("nomeDaCélula").Value = valor

o nomeDaCélula indica qual a célula que terá o valor alterado (A1, B5, C3, etc.). O valor é o que deverá ser escrito na célula. Por exemplo, para escrever o texto "exemplo" na célula A3, escrevemos o seguinte código: Range("A3").Value = "exemplo"

Lembrando que em VBA, o texto é sempre escrito entre aspas. Veja alguns exemplos a seguir.


Da mesma forma, podemos usar o comando Range para "ler" o valor de uma célula. Veja o exemplo abaixo, usando os comando MsgBox e Range juntos.



Se lembra que a MsgBox exibe uma janelinha com o que está à sua direita? Nesse caso, o que está à direita de MsgBox é Range("A3").Value, ou seja, o valor da célula A3. Durante a execução da macro, o computador vê qual o valor da célula A3 e exibe a mensagem com esse valor. Experimente alterar o valor da célula A3, para ver os resultados!



Como escrever uma macro

por João Henrique

Depois de conhecer o editor de código VBA no Excel, Como inserir uma macro, a diferença entre macro e função e como executar uma macro, vamos começar a aprender como escrever as macros propriamente ditas.

Já vimos que o formato básico de um código de macro é assim:
Private Sub primeiraMacro()

End Sub

Tudo o que ficar entre essas duas linhas é o código da macro cujo nome é "primeiraMacro". É nesse espaço que a gente escreve os comandos VBA, as "ordens" que daremos ao computador (exatamente, escrever código de computador nada mais é do que dar um monte de ordens para o computador). Sendo que essas ordens não podem ser escritas de qualquer forma, senão o computador não entende. É preciso escrever de acordo com uma linguagem de programação, que no caso é VBA.

Em VBA, o computador vai ler o código da macro de cima pra baixo, linha a linha. Em cada linha você poderá escrever um comando VBA. Ao terminar de executar o comando da primeira linha, o computador irá executar o comando da segunda linha, depois o da terceira linha, e assim por diante, até chegar no "End Sub", que indica o final da macro.

Pra começar, que tal aprender a mandar o computador exibir uma mensagem na tela? Pra isso, é só usar uma função chamada MsgBox. Veja o exemplo:

Exemplo 1:
A função MsgBox exibe uma mensagem na tela com o que estiver escrito logo em seguida à ela, após o espaço. Então no exemplo acima aparece o texto "funcionou". Veja outros exemplos:

Reparou que às vezes eu escrevi a mensagem com aspas, e às vezes não? Quando usamos aspas em VBA, estamos dizendo que o que está dentro das aspas é simplesmente um texto. Para mostrar um número, não precisamos colocar as aspas, por isso que os exemplos 3 e 4 dão o mesmo resultado.

Já os exemplos 5 e 6 dão resultados diferentes. No exemplo 5, mandamos o Excel exibir a mensagem (MsgBox) 30+5, como 30+5 é igual a 35, a mensagem que aparece é o resultado dessa soma: 35. No exemplo 6, como usamos aspas, o que aparece na mensagem é o texto, exatamente como está escrito: 30 + 5 . Neste caso, não é realizada a soma.

Se lembra que eu disse que cada linha no Excel pode ter um comando, e os comandos são executados de cima para baixo? Então o que acontece se você executar o código abaixo?

Public Sub primeiraMacro()
 MsgBox "3..."
 MsgBox "2..."
 MsgBox "1..."
 MsgBox "Já!"
End Sub

Faça o teste no Excel, e deixe a resposta aqui nos comentários. Até mais



Como usar uma macro no Excel

por João Henrique

Uma coisa é criar a macro (ou copiar e colar). Outra coisa é executar a macro, que é o que vamos ver como fazer hoje.

Basicamente, são 3 as formas de se executar uma macro:
1) Pelo editor do VBA
2) Pela lista de macros
3) Usando um atalho

Executando uma macro pelo editor do VBA
No dia-a-dia, essa forma não é nada prática, mas ela é boa quando ainda estamos criando a macro e queremos testá-la. Para fazer isso, é preciso estar com o cursor do teclado dentro da macro que você quer executar, na janela de edição. Feito isso, é só clicar em um botão de "Play" na barra de ferramentas do editor, ou apertar F5, como mostra a figura abaixo (na verdade, o botão se chama "Executar Sub/UserForm").


Executando uma macro pela lista de macros
Estando com a planilha que contém a macro aberta, podemos apertar o botão "Macros", na guia "Exibição". Na janela que aparece, é só escolher a macro a ser executada e clicar em "Executar" (ou dar duplo-clique no nome da macro).

Executando uma macro via atalho
Na mesma janela em que mandamos executar a macro, podemos definir um atalho para ela, clicando em "Opções...". Na janela que aparece, podemos colocar o atalho (que pode ser Ctrl + uma letra, ou Ctrl + Shift + uma letra). Podemos também escrever uma descrição da macro. Clicando em Ok , o atalho da sua macro estará definido. Para usar a macro agora basta acionar o atalho, como se fosse qualquer outro atalho.


Se você estiver se perguntando "Mas como eu insiro uma macro na planilha?", veja esse post.



Diferença entre Macro e Função (Sub vs. Function)

por João Henrique

Em "Como inserir uma macro no Excel" vimos que, ao inserir um procedimento, podemos escolher entre Sub (Macro) e Função. E qual a diferença entre Macro e Função?

Segundo a ajuda do Excel, macro é "uma ação ou um conjunto de ações que você pode usar para automatizar tarefas. As macros são gravadas na linguagem de programação Visual Basic for Applications". Ou seja, quando queremos que alguma ação seja feita automaticamente, definimos uma macro. Já a função, além de realizar ações, dá algum resultado.

Resumindo: a diferenção entre macro e função é que a função dá algum resultado, macro não.

Exemplo: se queremos inserir uma linha na planilha, podemos fazer uma macro. Se queremos calcular a determinante de uma matriz, usamos uma função.

Um detalhe interessante é que podemos usar nas fórmulas da nossa planilha as funções que escrevemos em VBA. É assim que conseguimos, por exemplo, deixar uma data por extenso.



Como inserir uma macro no Excel

por João Henrique

Antes de ler este post, é bom ler "Como programar no Excel".

Sabendo como abrir o editor de Visual Basic, podemos inserir a nossa primeira macro (lembrando que no Visual Basic as macros são chamadas de sub).

Para inserir uma macro, você deve abrir no editor de Visual Basic a planilha na qual a macro será inserida. Para isso, dê duplo-clique em uma planilha, no Project Explorer. Ao fazer isso, será aberta uma janela no lado direito do editor, como mostra a figura abaixo.


Repare na barra de título dessa janela: ela mostra o nome da pasta de trabalho e o nome da planilha à qual a janela está relacionada. O "(Código)" indica que nesta janela você pode escrever código VBA.

Para inserir uma macro, vá no menu "Inserir/Procedimento...". Na janela que aparecer, faça o seguinte:
- Em "Nome:", digite primeiraMacro (este será o nome da sua macro)
- Em "Tipo", escolha "Sub" (ou seja, macro)
- Em "Escopo", escolha "Público" (veremos o significado disso em aulas futuras)

Agora, ao clicar em OK, o seguinte código aparecerá na sua janela de código:

Public Sub primeiraMacro()

End Sub
A primeira linha do código indica o início da macro, enquanto a última linha indica o fim da macro. Tudo o que estiver entre essas duas linhas será o código da macro, que é o código que será executado quando mandarmos executar a macro.

Existe uma função em VBA que exibe uma mensagem na tela. Essa função se chama MsgBox (de Message Box - Caixa de Mensagem). Vamos utilizar essa função para construir nossa primeira macro:
Public Sub primeiraMacro()
    MsgBox "Funcionou!"
End Sub
Para mandar executar esse código, é só clicar no botão com um símbolo de "Play" (um triângulo verde, virado para a direita). Ao fazer isso, veremos a mensagem "Funcionou!" exibida na tela. Parabéns, você acabou de fazer a sua primeira macro!

Agora vamos entender cada linha do código:
Public Sub primeiraMacro() - Indica o início de uma Macro (Sub) chamada primeiraMacro
MsgBox "Funcionou!" - Manda exibir na tela uma mensagem com o texto que está entre aspas - Funcionou!
End Sub - Indica o fim da Macro

Amanhã tem mais aula sobre como programar no Excel - até lá



Como programar no Excel

por João Henrique

Começaremos hoje uma série de posts ensinando a programar no Excel, usando VBA. Passo-a-passo, você poderá aprender os comandos VBA e começar a escrever macros para aumentar sua produtividade, ou mesmo por diversão.

Para programar bem em VBA no Excel, é preciso antes de mais nada conhecer bem o Excel. Por isso, é bom revisar alguns conceitos básicos e dar uma olhada em outras dicas de Excel.

Para escrever código VBA, é precisar usar um editor próprio para isso, que faz parte do Excel - é o chamado Editor de Visual Basic. Para abrí-lo no Excel 2003, vá no menu Ferramentas/Macro/Editor do Visual Basic. No Excel 2007, é preciso primeiro exibir a guia Desenvolvedor. Com a guia Desenvolvedor aberta, clique no botão "Visual Basic".

Editor do Visual Basic - Excel
Na parte superior esquerda do editor de Visual Basic temos o Project Explorer. Lembra do Windows Explorer? É como se fosse ele, mas específico para o seu projeto (ou seja, para sua aplicação). Através do Project Explorer você pode alternar entre os elementos da sua aplicação - planilhas, formulários e módulos de código.

Abaixo do Project Explorer, temos a Janela 'Propriedades', que mostra as propriedades do componente selecionado (planilha, caixa de texto, botão, etc.).

No lado direito, a parte que está cinza, é onde serão exibidos os códigos e formulários que criarmos.

Dentro do editor de Visual Basic, as macros são chamadas de SUB. Assim, quando queremos inserir uma macro na nossa planilha, basta inserir uma SUB. Você insere as SUB nas suas planilhas, ou na sua pasta de trabalho, por isso que não podemos usar macros que estejam em outras planilhas.

Agora você já sabe como abrir o editor do Visual Basic, e quais os seus principais elementos. Aproveite para fuçar um pouco no editor, ele será o seu "companheiro" de programação. Amanhã veremos como inserir uma macro (SUB) na sua pasta de trabalho.



Como inserir formulários no Excel 2007 (ou como exibir a guia Desenvolvedor)

por João Henrique

De vez em quando aparece alguém por aqui perguntando como inserir formulários no Excel 2007. Na verdade, é praticamente a mesma coisa que no Excel 2003, só que é preciso fazer uma configuração prévia.

Os botões relacionados a formulários, no Excel 2007, ficam na guia Desenvolvedor. O problema é que essa guia, por padrão, não é exibida. Para que ela apareceça, siga esses passos:

1) Pressione o botão do Microsof Office
2) Pressione o botão "Opções do Excel"

3) Na janela que aparece, marque a opção "Mostrar guia Desenvolvedor na Faixa de Opções"

4) Aperte OK

Pronto, agora você pode acessar a guia Desenvolvedor na Faixa de Opções, e inserir seus formulários normalmente.



Como deixar os números por extenso

por João Henrique

Muitas vezes a gente precisa exibir um número por extenso, e não quer ter que digitar esse número por extenso. Um exemplo é uma planilha de pedido de vendas, em que o total da venda é calculada pela soma de todas as vendas, sendo o total exibido tanto como numeral normal quanto por extenso.

Para fazer isso no Excel, é só criar sua planilha utilizando esta planilha aqui. Uma vez que você habilitar as macros, é só usá-la assim: =NumeroExtenso(numero), onde numero será o número que você quer transformar. Veja o exemplo abaixo.


Se preferir, você pode inserir a macro na sua planilha manualmente. O código é esse:

Function NumeroExtenso(ByVal numero) ''Escreve numero por extenso
Dim Reais, Centavos, Temp
Dim PontoDecimal, Contar
ReDim lugar(9) As String
lugar(2) = " Mil "
lugar(3) = " Milhões "
lugar(4) = " Bilhões"
lugar(5) = " Trilhões"

numero = Trim(Str(numero))
''Posição da casa decimal se 0 numero inteiro
PontoDecimal = InStr(numero, ".")
''Converter centavos
If PontoDecimal > 0 Then
Centavos = GetDez(Left(Mid(numero, PontoDecimal + 1) & "00", 2))
numero = Trim(Left(numero, PontoDecimal - 1))
End If
Contar = 1
Do While numero <> ""
Temp = GetCem(Right(numero, 3))
If Temp <> "" Then Reais = Temp & lugar(Contar) & Reais
If Len(numero) > 3 Then
numero = Left(numero, Len(numero) - 3)
Else
numero = ""
End If
Contar = Contar + 1
Loop
Select Case Reais
Case ""
Reais = ""
Case " Um"
Reais = " Um Real"
Case Else
Reais = Reais & " Reais"
End Select
Select Case Centavos
Case ""
Centavos = ""
Case " Um"
Centavos = "Um centavo"
Case Else
Centavos = Centavos & " Centavos"
End Select
If Reais <> "" And Centavos <> "" Then
NumeroExtenso = Reais & " e " & Centavos
ElseIf Reais <> "" Then
NumeroExtenso = Reais
Else
NumeroExtenso = Centavos
End If
End Function

'' Converter um numero entre 100 e 999 em texto
Function GetCem(ByVal numero)
Dim resultado As String
If Val(numero) = 0 Then Exit Function
numero = Right("000" & numero, 3)
If Mid(numero, 1, 1) <> "0" Then
resultado = GetDigit(Mid(numero, 1, 1)) '' ALTERAR ESTÁ FUNÇÃO SE 1=CEM ; 2 = DUZENTOS
Select Case resultado
Case " Um": resultado = " Cento e "
Case " Dois": resultado = " Duzentos "
Case " Três": resultado = " Trezentos "
Case " Quatro": resultado = " Quatrocentos "
Case " Cinco": resultado = " Quinhentos "
Case " Seis": resultado = " Seiscentos "
Case " Sete": resultado = " Setecentos "
Case " Oito": resultado = " Oitocentos "
Case " Nove": resultado = " Novecentos "
End Select


End If
'' Converte um numero entre 01 e 10 em texto
If Mid(numero, 2, 1) <> "0" Then
resultado = resultado & GetDez(Mid(numero, 2))
Else
resultado = resultado & GetDigit(Mid(numero, 3))
End If
GetCem = resultado
End Function

'' Converte um numero de 10 a 99 em texto
Function GetDez(DezTXT)
Dim result As String
result = "" ''Nulo
If Val(Left(DezTXT, 1)) = 1 Then ''Se valor entre 10-19
Select Case Val(DezTXT)
Case 10: result = "Dez"
Case 11: result = "Onze"
Case 12: result = "Doze"
Case 13: result = "Treze"
Case 14: result = "Quatorze"
Case 15: result = "Quinze"
Case 16: result = "Dezesseis"
Case 17: result = "Dezesete"
Case 18: result = "Dezoito"
Case 19: result = "Dezenove"
Case Else
End Select
Else '' Valores entre 20-99
Select Case Val(Left(DezTXT, 1))
Case 2: result = " Vinte"
Case 3: result = " Trinta"
Case 4: result = " Quarenta"
Case 5: result = " Cinquenta"
Case 6: result = " Sessenta"
Case 7: result = " Setenta"
Case 8: result = " Oitenta"
Case 9: result = " Noventa"
Case Else
End Select
result = result & GetDigit(Right(DezTXT, 1)) '' retorna um unico valor
End If
GetDez = result
End Function
''Converte numeros entre 1 e 9 em texto
Function GetDigit(Digit)
Select Case Val(Digit)
Case 1: GetDigit = " Um"
Case 2: GetDigit = " Dois"
Case 3: GetDigit = " Três"
Case 4: GetDigit = " Quatro"
Case 5: GetDigit = " Cinco"
Case 6: GetDigit = " Seis"
Case 7: GetDigit = " Sete"
Case 8: GetDigit = " Oito"
Case 9: GetDigit = " Nove"
Case Else: GetDigit = ""
End Select
End Function


Função disponibilizada por Beluthi no Baboo Forum.

Para baixar:
Planilha com macro que converte número para extenso (Excel 97-2003)
Planilha com macro que converte número para extenso (Excel 2007)



Configurando as opções de segurança de macro no Excel 2007

por João Henrique




Como já vimos neste blog, nem todas as macros são seguras. Pessoas má-intencionadas podem inserir códigos maliciosos nas macros. Por isso, é importante saber configurar suas opções de segurança de macro.



Para acessar as opções de configuração, aperte o "Botão do Microsoft Office" e, em seguida, "Opções do Excel".

Continuando, escolha a opção "Central de Confiabilidade" e, em seguida, "Configurações da Central de Confiabilidade...".

Agora estamos quase lá. Na nova janela que aparece, aperte em "Configurações de Macro".

Agora é só você escolher o que fazer com as macros:

Desabilitar todas as macros sem notificação - Marque essa opção se quiser ignorar solenemente as macros. As macros não serão executadas e você não será notificado de que a planilha aberta possui macros.

Desabilitar todas as macros com notificação - É a opção padrão. Com ela você se protege, uma vez que as macros iniciam desabilitada, mas pode facilmente habilitar as macros como mostrado no post anterior.

Desabilitar todas as macros, exceto as digitalmente assinadas - É igual à primeira opção, sendo que permite macros que possam assinatura digital. Na prática, é inútil para a maioria dos usuários.

Habilitar todas as macros (não recomendado; códigos possivelmente perigosos podem ser executados) - Como a Microsoft fez questão de deixar claro, essa opção não é recomendada. Afinal, dessa forma, você nem saberá que as planilhas tem macros e poderá acionar códigos maliciosos inadvertidamente.

Sugestão: deixe a opção padrão (Desabilitar todas as macros com notificação).



Como habilitar macros

por João Henrique

Certas planilhas, para funcionar corretamente, precisam estar com as macros habilitadas. As macros permitem que certas tarefas sejam feitas automaticamente, e são muitos comuns nos jogos em Excel, por exemplo. Por padrão, quando você abre uma planilha que possui macros, ela é aberta com as macros desabilitadas. Para habilitá-las, basta seguir os passos a seguir.

Aperte o botão "Opções...", mostrado na figura abaixo.

Ao apertar em "Opções...", irá aparecer a janela abaixo. Escolha então a opção "Habilitar este conteúdo" e aperte o botão "OK".

Pronto, agora você poderá usar as macros dessa planilha. Na próxima vez que você abrir essa planilha, precisará seguir esses mesmos passos para habilitar as macros. Mas cuidado, pois as macros também podem conter código malicioso, então só habilite as macros em planilhas de procedência confiável.



O que é: Macros

por João Henrique



Macros são um recurso do Excel que permite que você faça tarefas repetitivas automaticamente. As macros podem ser criadas basicamente de duas formas:


  • Gravação: nesse caso, você irá realizar os passos enquanto o Excel grava a macro. Após a gravação, toda vez que você quiser realizar os mesmos passos, será só acionar as macros.
  • Codificação: você pode utilizar a linguagem VBA para definir os passos que serão realizados quando a macro for acionada. É dessa forma que são feitos os jogos no Excel, como Bejeweled. Requer habilidades de programação.

Apesar de permitir um grande ganho de produtividade, as macros também podem conter código malicioso, portanto só use macros de planilhas de origem confiável.

Fique ligado, nos próximos dias darei mais dicas sobre macros!