VBA Fórmulas


É possível a utilização de fórmulas prontas do Excel no VBA. Tratam-se de propriedades que podem ser usadas com Range ou Cells.


VBA Formula

Formula adiciona fórmulas pré-definidas do Excel a planilha. Estas fórmulas deverão ser escritas em inglês mesmo se você tiver um pacote de idiomas instalado.

    Range("F2").Formula = "=SUM(B2:C7)"
    Range("F3").Formula = "=SUM($B$2:$C$7)"
Exemplo VBA Formula

Não se preocupe se o idioma do seu Excel não for inglês, pois,como no exemplo, ele fará a tradução para planilha automaticamente.


Múltiplas fórmulas

Pode-se inserir múltiplas fórmulas ao mesmo tempo utilizando a propriedade de Formula. Para isso basta definir um objeto Range maior que uma única célula e a fórmula pré-definida será "arrastada" por todo intervalo.

"Arrastando" manualmente:

VBA Múltiplas Fórmulas Manual

"Arrastando" pelo VBA:

    Range("D2:D7").Formula = "=SUM(B2:C2)"
VBA Múltiplas Fórmulas

Outra forma de realizar a mesma ação seria utilizando o método FillDown.

    Range("D2").Formula = "=SUM(B2:C2)"
    Range("D2:D7").FillDown

VBA FormulaLocal

FormulaLocal também adiciona fórmulas pré-definidas do Excel a planilha, porém deverão ser escritas no idioma local do Excel (no caso do Brasil, em português).

    Range("F2").FormulaLocal = "=SOMA(B2:C7)"

Da mesma forma que a propriedade Formula, FormulaLocal pode ser usada para fazer múltiplas fórmulas.


VBA FormulaR1C1

FormulaR1C1, assim como Formula e FormulaLocal, também adiciona fórmulas pré-definidas do Excel a planilha, contudo, a utilização das notações relativa e absoluta apresentam diferentes regras. A fórmula utilizada deverá ser escrita em inglês.

FormulaR1C1 é a maneira de se utilizar fórmulas prontas do Excel no VBA integrando-as com facilidade em loops e variáveis de contagem.

Nas notações:

  • R refere-se a rows, tratando-se do deslocamento vertical
  • C refere-se a columns, tratando-se do deslocamento horizontal
  • N simboliza um número inteiro que indica o quanto deve ser deslocado em número de linhas e/ou colunas

O formato da fórmula relativa é: R[N]C[N]:R[N]C[N].

    Range("F2").FormulaR1C1 = "=SUM(R[0]C[-4]:R[5]C[-3])" 'Equivale a linha de baixo
    Range("F2").FormulaR1C1 = "=SUM(RC[-4]:R[5]C[-3])"

Quando N é omitido, assume-se o valor 0.

No exemplo, RC[-4]:R[5]C[-3] resulta em "B2:C7". Estas células são obtidas: retrocedendo 4 colunas RC[-4] a partir do Range("F2") para se obter "B2" e avançando 5 linhas e retrocedendo 3 colunas R[5]C[-3] a partir do Range("F2") para se obter "C7".

O formato da fórmula absoluta é: RNCN:RNCN.

    Range("F2").FormulaR1C1 = "=SUM(R2C2:R7C3)" 'Resulta em "$B$2:$C$7"

N negativo só pode ser utilizado na notação relativa.

As duas notações (relativa e absoluta) podem ser mescladas.

    Range("F2").FormulaR1C1 = "=SUM(RC[-4]:R7C3)" 'Resulta em "B2:$C$7"

VBA WorksheetFunction

As fórmulas do Excel também podem ser acessadas como métodos do objeto WorksheetFunction.

    Range("F2") = WorksheetFunction.Sum(Range("B2:C7"))

Funcionam de maneira similar a funções criadas no VBA.

As fórmulas derivadas de WorksheetFunction estão todas em inglês.

Uma das grandes vantagens dessa maneira de acessar as fórmulas do Excel é poder utilizá-las com maior facilidade no ambiente do VBA.

    MsgBox (WorksheetFunction.Sum(3, 4, 5))
    Custo=4
    MsgBox (WorksheetFunction.Sum(3, 4, 5,-Custo))

Para listar as fórmulas do Excel disponíveis neste formato, basta digitar WorksheetFunction. que automaticamente um menu de opções irá aparecer:

Acessando o VBE


Fixando o Aprendizado

Exercício Sugerido

Região Atual


SuperExcelVBA.com é um site voltado ao aprendizado de VBA. Exemplos e explicações podem ter sido simplificados para maior e mais veloz compreensão. Estamos constantemente nos atualizando e corrigindo erros, porém não existe garantia sobre o conteúdo disponível no site. Todos os direitos reservados.

Excel ® é uma marca registrada da Microsoft Corporation.

© 2019 SuperExcelVBA | SOBRE

Protected by Copyscape