VBA Excel - Somando valores em Planilhas (para novatos)


 Neste artigo vou mostrar como podemos somar valores em planilhas Excel automatizando essas tarefas com a ajuda do VBA e da função Sum do Excel.

Se você já precisou realizar somas de células em planilhas Excel sabe que pode fazer isso usando o mouse e a função SOMA(SUM) de maneira simples e direta.

Você pode também criar uma macro usando o gravador de macros do Excel.

Dependendo do contexto isso pode não ser tão simples como parece, neste caso podemos usar os recursos do VBA - Visual Basic for Applications - para automatizar a tarefa.

Os recursos usados no projeto deste artigo foram:

Preparando o ambiente

Antes de iniciar temos que realizar duas configurações no Microsoft Excel 2007 (clique no link para acessar):

Obs: A necessidade de habilitar a execução de macros é que por padrão, o Excel coloca um nível de segurança mais elevado pois códigos maliciosos podem ser executados em scripts através de macros no Excel.

Após realizar os procedimentos acima você estará pronto para acompanhar o artigo.

1- Somando valores em células e apresentando o resultado em outra célula (quantidade fixa de células)

Você precisa somar os valores de um determinado número fixo de células em uma coluna e apresentar o resultado em outra coluna.

Veja a planilha Excel abaixo onde queremos calcular a soma das células A1 a A10 e exibir o resultado na célula C1.

Para resolver esse problema vamos fazer o seguinte:

1- Clique na Guia do Desenvolvedor e a seguir clique em Inserir e da janela Controles de Formulário clique no controle Botão:

2- Desenhe o botão de comando abaixo da coluna C e na janela Atribuir Macro informe o nome Calcular_Soma e clique no botão Novo:

Será aberto o Editor Visual Basic onde veremos que foi criado o módulo Modulo1 contendo a assinatura da rotina Calcular_Soma, que é a nossa macro.

Digite o código mostrado ao lado da figura:

Sub Calcular_Soma()    
    Dim minhaRange
    Dim Resultado

     minhaRange = Worksheets("Plan1").Range("A1", "A10")
    Resultado = WorksheetFunction.Sum(minhaRange)
    Range("C1") = Resultado  
End Sub

 

Após  isso clique no menu Arquivo -> Fechar e Voltar para o Microsoft Excel do Editor VBA;

Altere o texto do botão de comando para : Calcular Soma

Clique no botão e verifique o resultado:

O código é elementar:

1- Define o intervalo de células para calcular : minhaRange = Worksheets("Plan1").Range("A1", "A10")
2- Utiliza a função Sum do Excel para calcular a soma:     Resultado = WorksheetFunction.Sum(minhaRange)
3- Exibe o resultado na célula C1 : Range("C1") = Resultado 

2- Somando valores em células e apresentando o resultado em outra célula (quantidade variável de células)

Para tornar o código mais inteligente suponha que agora você tem que somar um determinado número de células que pode variar.

Neste caso vamos usar uma célula B1 da planilha para informar quantas células vamos calcular;

A seguir inclua um novo Botão de comando na planilha, informe o nome Calcular_Soma2() para a macro e a seguir defina o código VBA abaixo a respectiva macro:

Sub Calcular_Soma2()    
    Dim r As Integer
    r = Range("B1").Value
    Range("C1").Value = WorksheetFunction.Sum(Range("A1:A" & r))
End Sub

Agora obtemos a quantidade de células que desejamos calcular a partir da célula inicial A1 e somamos os valores atribuindo o resultado à célula C1.

3- Somando valores em células de diversas colunas apresentando o resultado em outra célula (quantidade variável de células)

Para concluir vamos agora realizar a soma de várias células de colunas diferentes e exibir o resultado em outra célula.

Na planilha abaixo vamos calcular a soma das células D1 a D8 , depois das células E1 a E3 e a seguir das células F1 a F5 e exibir o resultado na célula H1:

Inclua um novo Botão de comando na planilha, informe o nome Calcular_Soma3() para a macro e a seguir defina o código VBA abaixo a respectiva macro:

Sub Calcular_Soma3()
    Dim meuRange1
    Dim meuRange2
    Dim meuRange3

    Dim Resultado1
    Dim Resultado2
    Dim Resultado3
    meuRange1 = Worksheets("Plan1").Range("D1", "D8")
    meuRange2 = Worksheets("Plan1").Range("E1", "E3")
    meuRange3 = Worksheets("Plan1").Range("F1", "F5")    
    Resultado1 = WorksheetFunction.Sum(meuRange1)
    Resultado2 = WorksheetFunction.Sum(meuRange2)
    Resultado3 = WorksheetFunction.Sum(meuRange3)          
    Range("H1") = Resultado1 + Resultado2 + Resultado3 
End Sub

A seguir vemos o resultado:

Os conceitos mostrados aqui podem ser aplicados em diversos cenários e com diversas variações.

Agora imagine que você queira fazer a soma selecionando um número variável de células. Para fazer isso basta usar o método End do objeto Range.

O código abaixo mostra a soma de um intervalo iniciando na célula D1 com o intervalo selecionado de D1 até o fim da seleção e exibindo o resultado na célula J1:

Sub Calcular_Soma4()
    Dim meuRange1
    meuRange1 = ActiveSheet.Range("D1", Range("D1").End(xlDown))
    Range("J1") = WorksheetFunction.Sum(meuRange1)
End Sub

Pegue a planilha com o código VBA aqui:  Calcular_Soma_Celulas.zip

Disse Jesus: "Na verdade, na verdade vos digo que quem ouve a minha palavra, e crê naquele que me enviou, tem a vida eterna, e não entrará em condenação, mas passou da morte para a vida"
João 5:24

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Referências:


José Carlos Macoratti