Usando funções de planilha do Microsoft Excel no Visual Basic

Você pode usar a maioria das funções de planilha do Microsoft Excel em suas instruções de Visual Basic. Para ver uma lista das funções de planilha que você pode usar, consulte Lista de funções de planilha disponíveis para o Visual Basic.

Nota Algumas funções de planilha não são úteis no Visual Basic. Por exemplo, a função Concatenate não é necessária, pois no Visual Basic você pode usar o operador & para agrupar vários valores de texto.

Chamar uma função de planilha a partir do Visual Basic

No Visual Basic, as funções de planilha do Microsoft Excel estão disponíveis através do objeto WorksheetFunction.

O procedimento Sub a seguir usa a função de planilha Min para determinar o menor valor em um intervalo de células. Primeiro, a variável myRange é declarada como um objeto Range, e, em seguida, é definida com o intervalo A1:C10 de Sheet1. A uma outra variável, answer, é atribuído o resultado de se aplicar a função Min a myRange. Finalmente, o valor de answer é exibido em uma caixa de mensagem.

Sub UseFunction()
Dim myRange As Range
Set myRange = Worksheets("Sheet1").Range("A1:C10")
answer = Application.WorksheetFunction.Min(myRange)
MsgBox answer
End Sub

Se você usar uma função de planilha que requer uma referência de intervalo como argumento, você precisará especificar um objeto Range. Por exemplo, você pode usar a função de planilha Match para pesquisar um intervalo de células. Em uma célula de planilha, você digitaria uma fórmula tal como =CORRESP(9;A1:A10;0). Entretanto, em um procedimento do Visual Basic, você especificaria um objeto Range para obter o mesmo resultado.

Sub FindFirst()
myVar = Application.WorksheetFunction _
.Match(9, Worksheets(1).Range("A1:A10"), 0)
MsgBox myVar
End Sub

Observação As funções do Visual Basic não usam o qualificador WorksheetFunction. Uma função pode ter o mesmo nome que uma função do Microsoft Excel e ainda assim funcionar de maneira diferente. Por exemplo, Application.WorksheetFunction.Log e Log retornam valores diferentes.

Inserir uma função de planilha em uma célula

Para inserir uma função de planilha em uma célula, especifique a função como valor da propriedade Formula do objeto Range correspondente. No exemplo seguinte, a função de planilha ALEATÓRIO (que gera um número randômico) é atribuída à propriedade Formula do intervalo A1:B3 de Sheet1 na pasta de trabalho ativa.

Sub InsertFormula()
Worksheets("Sheet1").Range("A1:B3").Formula = "=RAND()"
End Sub

Exemplo

Este exemplo usa a função de planilha Pmt para calcular a prestação da hipoteca de um imóvel. Observe que este exemplo usa o método InputBox em vez da função InputBox para que o método possa efetuar uma verificação de tipo. As instruções Static fazem o Visual Basic manter os valores das três variáveis, que serão exibidos como valores padrão na próxima vez em que você executar o programa.

Static loanAmt
Static loanInt
Static loanTerm
loanAmt = Application.InputBox _
(Prompt:="Loan amount (100,000 for example)", _
Default:=loanAmt, Type:=1)
loanInt = Application.InputBox _
(Prompt:="Annual interest rate (8.75 for example)", _
Default:=loanInt, Type:=1)
loanTerm = Application.InputBox _
(Prompt:="Term in years (30 for example)", _
Default:=loanTerm, Type:=1)
payment = Application.WorksheetFunction _
.Pmt(loanInt / 1200, loanTerm * 12, loanAmt)
MsgBox "Monthly payment is " & Format(payment, "Currency")