As Diferenças Entre Sub e Function VBA
As Diferenças Entre Sub e Function VBA
As Diferenças Entre Sub e Function VBA
Introdução
Sub
Function
onde:
[modificador] são palavras chave que definem o nível de acesso à estrutura de
código.
[parâmetros] são variáveis que são passadas na chamada da função e utilizadas
dentro. Podem existir vários ou mesmo nenhum parâmetro.
[tipo] é o que informa o tipo de dado a ser retornado pela Function. Pode ser
qualquer tipo de dados válido do VBA.
[valor] uma valor que representa o retorno da função. Pode ser uma variável ou um
valor constante.
Como saber qual utilizar? Isto depende do contexto da sua aplicação. Quando sua
rotina precisar simplesmente executar uma processamento sem emitir qualquer
tipo de informação, é aconselhável usar uma Sub. Já quando seu processamento
necessitar devolver algum resultado, sem dúvida uma Function � necess�ria.
Supondo uma situa��o em que voc� precisa criar fun��es que
executassem opera��es aritm�ticas, elas precisariam depois de efetuar os
c�lculos, devolver o resultado para ser utilizado.
1
Public Function SomaSimplesF(x As Long, y As
2
Long) As Long
3
SomaSimplesF = x + y
End Function
O código efetua uma operação simples recendo duas variáveis do tipo Long como
parâmetro e devolve também um Long (definido na construção da Function)
através da chama SomaSimples na linha 2. Para testar as função, basta ir a uma
célula da planilha e digitar =SomaSimplesF(1;3). É possível também testar a
função através de código VBA, como no código abaixo:
Já se este exemplo fosse construído usando uma Sub, não seria possível
diretamente retornar o valor como é feito na Function. A solução então seria
mostrá-lo ao usuário, por exemplo em uma caixa de mensagem. Veja este
exemplo:
Para testar a função, é precisa criar outro bloco de código que faça a chamada a
este. Crie a seguinte função para testar o SomaSimplesS:
Veja que o Sub não tem sequer a opção de mencionar o tipo de dado que pode ser
retornado.
Comentários
Alguns podem pensar que por segurança, é melhor sempre criar Functions ao
invés de Subs. Porém, para termos de organização de código e padronização de
suas rotinas em VBA, procure usar a estrutura correta para ter um bom
funcionamento de seu aplicativo.
Tomás Vásquez