Como usar o sum no excel via vba?

No Excel, você pode usar o VBA para calcular a soma dos valores de um intervalo de células ou de vários intervalos. E, neste tutorial, aprenderemos as diferentes maneiras de usá-lo.

Soma em VBA usando WorksheetFunction

No VBA, existem diversas funções que você pode utilizar, mas não existe uma função específica para essa finalidade. Isso não significa que não possamos fazer uma soma. No VBA, existe uma propriedade chamada WorksheetFunction que pode ajudá-lo a chamar funções no código VBA.

soma em vba usando planilha

Considere a soma dos valores no intervalo A1:A10.

  1. Primeiro insira a propriedade da função da planilha e selecione a função SUM na lista.
    enter-worksheet-function
  2. Em seguida, você deve inserir um parêntese inicial, como faz ao inserir uma função na planilha.
    starting-parenthesis
  3. Depois disso, precisamos usar o objeto range para nos referirmos ao intervalo para o qual queremos calcular a soma.
    use-the-range-object
  4. Ao final, digite um parêntese de fechamento e atribua o valor de retorno da função à célula B1.
    closing-parenthesis
 Range ("B1") = Application.WorksheetFunction.Sum(Range("A1:A10"))

Agora ao executar esse código ele calcula a soma dos valores que você tem no intervalo A1:A10 e insere o valor na célula B1.

execute o código para calcular

Soma dos valores de uma coluna ou linha inteira

Neste caso, basta especificar uma linha ou coluna em vez do intervalo que usamos no exemplo anterior.

 ' for the entire column A Range ("B1") = Application.WorksheetFunction.Sum( Range ("A:A")) ' for entire row 1 Range ("B1") = Application.WorksheetFunction.Sum( Range ("1:1"))

Use VBA para adicionar valores de seleção

Agora, suponha que você queira somar o valor das células selecionadas apenas porque pode usar um código como este.

 Sub vba_sum_selection() Dim sRange As Range Dim iSum As Long On Error GoTo errorHandler Set sRange = Selection iSum = WorksheetFunction.Sum(Range(sRange.Address)) MsgBox iSum errorHandler: MsgBox "make sure to select a valid range of cells" End Sub

No código acima, usamos a seleção, depois especificamos na variável “sRange”, depois usamos o endereço dessa variável de intervalo para obter a soma.

Soma VBA de todas as células acima

O código a seguir extrai todas as células e soma os valores e insere o resultado na célula selecionada.

 Sub vba_auto_sum() Dim iFirst As String Dim iLast As String Dim iRange As Range On Error GoTo errorHandler iFirst = Selection. End (xlUp). End (xlUp).Address iLast = Selection. End (xlUp).Address Set iRange = Range(iFirst & ":" & iLast) ActiveCell = WorksheetFunction.Sum(iRange) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub

Adicione faixa dinâmica usando VBA

E da mesma forma, você pode usar faixa dinâmica ao usar VBA para adicionar valores.

 Sub vba_dynamic_range_sum() Dim iFirst As String Dim iLast As String Dim iRange As Range On Error GoTo errorHandler iFirst = Selection.Offset(1, 1).Address iLast = Selection.Offset(5, 5).Address Set iRange = Range(iFirst & ":" & iLast) ActiveCell = WorksheetFunction.Sum(iRange) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub

Adicione uma coluna ou linha dinâmica

Da mesma forma, se quiser usar uma coluna dinâmica, você pode usar o código a seguir que pegará a coluna da célula ativa e somará todos os valores que você tem lá.

 Sub vba_dynamic_column() Dim iCol As Long On Error GoTo errorHandler iCol = ActiveCell.Column MsgBox WorksheetFunction.Sum(Columns(iCol)) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub

E por uma fileira.

 Sub vba_dynamic_row() Dim iRow As Long On Error GoTo errorHandler iRow = ActiveCell.Row MsgBox WorksheetFunction.Sum(Rows(iCol)) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub

Use SUMIF com VBA

Assim como a soma, você pode usar a função SUMIF para adicionar valores com critérios como no exemplo a seguir.

sumif-com-vba
 Sub vba_sumif() Dim cRange As Range Dim sRange As Range Set cRange = Range ("A2:A13") Set sRange = Range ("B2:B13") Range ("C2") = _ WorksheetFunction.SumIf(cRange, "Product B", sRange) End Sub

Adicione um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *