Sub Soma() Range("A1:A3").Select Range("A3").Activate ActiveCell.FormulaR1C1 = "=SUM(R[-2]C:R[-1]C)" Range("A3").Select End Sub
Sub Soma() Range("A1:A3").Select Range("A3").Activate ActiveCell.FormulaR1C1 = "=SUM(R[-2]C:R[-1]C)" Range("A3").Select End Sub
Esse é o formato padrão que o VBA utiliza para montar o código quando vc grava usando o gravador de macro.
R[-1] quer dizer que ele vai pegar 1 linha acima. R[-2] quer dizer que ele vai pegar 2 linhas acima. C quer dizer que é a mesma coluna.
Logo, como a fórmula está sendo aplicada a célula ativa, que é "Range("A3")", a soma será de 2 linhas acima até a linha acima, na mesma coluna (A1:A2).
Esse trecho (ActiveCell.FormulaR1C1 = "=SUM(R[-2]C:R[-1]C)"
) , poderia ser escrito da seguinte forma:
ActiveCell.FormulaLocal = "=SOMA(A1:A2)"
muito bom!