OS MELHORES VÍDEOS

 

Pesquisar

segunda-feira, 18 de fevereiro de 2013

10 macros muito úteis.

    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.escolaexcel.com.br"
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




5) Como substituir o texto em uma célula

Às vezes é necessário substituir um trecho de um texto por um outro trecho. Por exemplo, na frase "Carro Número 1", podemos querer substituir "Carro" por "Automóvel", ficando "Automóvel Número 1". Para isso, podemos utilizar o comando Replace. Veja um exemplo que substitui todos os underlines (_) do texto da célula A1 por um espaço em branco. O resultado será escrito na célula A2.


Sub removerUnderline()
    Range("A2") = Replace(Range("A1"), "_"" ")
End Sub



6) Executar uma mesma ação em cada célula selecionada

Às vezes você precisa executar uma ação em todas as células que foram selecionadas pelo usuário. Por exemplo, você pode querer contar quantas das células começam com a letra A, ou apagar as células com valor menor que 10, passar o texto para maiúsculas, etc. O exemplo abaixo mostra uma mensagem com o texto de cada uma das células selecionadas:


Sub fazerAlgoACadaCelula()
    For Each cell In Selection.Cells
        MsgBox cell
    Next
End Sub


7) Executar uma mesma ação em TODAS as células selecionadas

Se você irá fazer uma mesma ação em todas as células selecionadas, e essa ação não precisa ser feita uma de cada vez, existe uma forma mais eficiente do que a mostrada acima. Esta forma consiste em alterar as propriedades das células selecionadas (Selection.Cells), da mesma forma que faríamos com cada célula individualmente. O exemplo abaixo escreve "ok" em todas as células, e em seguida muda a cor das células para um tom de verde.


Sub fazerAlgoATodasAsCelulas()
    Selection.Cells.Value = "ok"
    Selection.Cells.Font.Color = RGB(10, 200, 10)
End Sub


8) Como saber se uma célula possui uma fórmula

É recomendável verificar se uma célula possui uma fórmula, antes de fazer alguma modificação na célula. Para isso você pode utilizar o comando HasFormula. Veja um exemplo:


Sub verificarSeTemFormula()
    If Range("A1").HasFormula = True Then
        MsgBox "sim"
    Else
        MsgBox "não"
    End If
End Sub


9) Como copiar células de uma planilha para outra

Você sempre tem que copiar um pedaço de uma planilha para outra planilha. Copie a macro abaixo.


Sub copiar()
Sheets("Plan1").Range("A1:A3").Copy Destination:=Sheets("Plan2").Range("A1")
End Sub


Esse exemplo copia as células A1, A2 e A3 (A1:A3) da planilha Plan1 para a célula A1 da planilha Plan2.

  •  Substitua "Plan1" pelo nome da planilha que contém as células que você quer copiar.
  •  Substitua "A1:A3" pelas células que você quer copiar. Por exemplo, "B5" copia apenas a célula B5, "A1:E1" copia as células de A1 até E1.
  •  Substitua "Plan2" pelo nome da planilha que irá receber as células copiadas
  •  Substitua "A1" pela célula na qual as células serão copiadas.



10) Como evitar que a tela pisque durante a execução da macro

Cada comando executado na sua macro é exibido na tela do computador. Como a macro é executada muito rapidamente, não dá pra gente realmente ver o que está acontecendo, mas eventualmente a tela fica piscando de forma estranha. Isso acontece, por exemplo, quando trocamos de uma planilha pra outra. Para evitar isso, e de quebrar deixar suas macros um pouco mais rápidas, você pode evitar a atualização da tela no começo da tela usando a propriedade Application.ScreenUpdating. No entanto, é preciso ter o cuido de reativar a atualização da tela ao final da macro.

Veja um exemplo que faz a tela piscar:


Sub trocarPlanilha()   
    Sheets(2).Select
    Sheets(1).Select
    Sheets(2).Select
    Sheets(1).Select
End Sub

Agora, utilizando o comando Application.ScreenUpdating.


Sub trocarPlanilhaSemPiscar()
    Application.ScreenUpdating = False
    
    Sheets(2).Select
    Sheets(1).Select
    Sheets(2).Select
    Sheets(1).Select
    
    Application.ScreenUpdating = True
End Sub

Resumindo, utilize Application.ScreenUpdating = False no começo da macro, e Application.ScreenUpdating = True no final da macro.

5 comentários:

  1. Gostei muito das publicações acima; mas gostaria de saber se tem como fazer algo com uma macro que faça um relatorio na mesma planta com foto e descrição em seguencia ???? Faça uma materia assim !

    ResponderExcluir
  2. cara parabéns, mais seria possivel essa planilha separar por “cidade”.
    nessa planilha contem codigo, cliente, razao social, cnpj,bairro, cidade e telefone.
    e uma lista de cliente por cidade

    ResponderExcluir
  3. seria possivel uma macro para selecionar e copiar e colar no e-mail

    ResponderExcluir
  4. Este comentário foi removido pelo autor.

    ResponderExcluir