É 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.
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)"
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.
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:
"Arrastando" pelo VBA:
Range("D2:D7").Formula = "=SUM(B2:C2)"
Outra forma de realizar a mesma ação seria utilizando o método FillDown.
Range("D2").Formula = "=SUM(B2:C2)"
Range("D2:D7").FillDown
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.
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"
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:
Exercício Sugerido
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.
© 2024 SuperExcelVBA | SOBRE