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 uma sub não pode. Funções e subs tornam-se muito úteis conforme o tamanho do programa aumenta.
Função
Se quiser que o Excel VBA execute uma tarefa que retorna 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 o nome Área.
Área de função (x como duplo, y como duplo) como duplo
Área = x * y
Função Final
Explicação: Esta função possui dois argumentos (do tipo Double) e um tipo de retorno (a parte após As também é do tipo Double). Você pode usar o nome da função (Área) em seu código para indicar qual resultado 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 fornecendo 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 = Área (3, 5) + 2
MsgBox z
Explicação: A função retorna um valor, portanto, você deve 'capturar' esse valor em seu código. Você pode usar outra variável (z) para isso. Em seguida, você pode adicionar outro valor a esta variável (se desejar). Finalmente, exiba o valor usando um MsgBox.
Resultado quando você clica no botão de comando na planilha:
Sub
Se quiser que o Excel VBA execute algumas ações, você pode usar uma sub-rotina. Coloque um sub em um módulo (No Editor do Visual Basic, clique em Inserir, Módulo). Por exemplo, o sub com o nome Area.
Subárea (x como duplo, y como duplo)
MsgBox x * y
End Sub
Explicação: Este sub tem dois argumentos (do tipo Double). Não tem 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 em sua planilha e adicione a seguinte linha de código:
Área 3, 5
Resultado quando você clica no botão de comando na planilha:
Você pode ver a diferença entre a função e o sub? A função retornou o valor 15. Adicionamos o valor 2 a esse resultado e exibimos o resultado final. Quando chamamos o sub, não tínhamos mais controle sobre o resultado (15) porque um sub não pode retornar um valor!