/ / Excel VBA Function e Sub

Função VBA do Excel e Sub

Função | Sub

A diferença entre um função e um sub em Excel VBA é que uma função pode retornar um valor enquanto um sub não pode. Funções e subs tornam-se muito úteis à medida que o tamanho do programa aumenta.

Função

Se você quiser que o Excel VBA execute uma tarefa queretorna um resultado, você pode usar uma função. Coloque uma função em um módulo (no Editor do Visual Basic, clique em Inserir, Módulo). Por exemplo, a função com nome Area.

Function Area(x As Double, y As Double) As Double

Area = x * y

End Function

Explicação: Esta função tem dois argumentos (do tipo Double) e um tipo de retorno (a parte depois de As também do tipo Double). Você pode usar o nome da função (Área) em seu código para indicar o resultado que deseja retornar (aqui x * y).

Agora você pode se referir a esta função (em outras palavras chamar a função) de algum outro lugar em seu código simplesmente usando o nome da função e dando um valor para cada argumento.

Coloque um botão de comando em sua planilha e adicione as seguintes linhas de código:

Dim z As Double

z = Area(3, 5) + 2

MsgBox z

Explicação: A função retorna um valor, então você tem que "pegar" esse valor em seu código. Você pode usar outra variável (z) para isso. Em seguida, você pode adicionar outro valor a essa variável (se quiser). Finalmente, exiba o valor usando uma MsgBox.

Resultado quando você clica no botão de comando na folha:

Resultado da função do Excel VBA

Sub

Se você quiser que o Excel VBA execute algumas ações, você pode usar um sub. Coloque um sub em um módulo (no Editor do Visual Basic, clique em Inserir, módulo). Por exemplo, o sub com nome Area.

Sub Area(x As Double, y As Double)

MsgBox x * y

End Sub

Explicação: Este sub tem dois argumentos (do tipo Double). Não tem um tipo de retorno! Você pode se referir a este sub (chame o sub) de algum outro lugar em seu código simplesmente usando o nome do sub e dando um valor para cada argumento.

Coloque um botão de comando na sua planilha e adicione a seguinte linha de código:

Area 3, 5

Resultado quando você clica no botão de comando na folha:

Resultado Sub VBA do Excel

Você pode ver a diferença entre a funçãoe o sub? A função retornou o valor 15. Adicionamos o valor 2 a este resultado e exibimos o resultado final. Quando chamamos o sub, não temos mais controle sobre o resultado (15) porque um sub não pode retornar um valor!

Leia também: