Como usar a instrução Call no VBA?

A instrução `Call` no VBA (Visual Basic for Applications) é usada para chamar um procedimento Sub ou Function. Embora o uso do `Call` seja opcional na maioria dos casos, ele pode ser útil em determinados contextos, especialmente quando você deseja tornar seu código mais legível ou quando está chamando uma função que precisa omitir a palavra-chave `Call` por um requisito específico.

Aqui está um exemplo simples de como usar a instrução `Call` no VBA:

Exemplo de uso com um Sub

Imaginemos que você tem um procedimento Sub chamado `MostrarMensagem` que exibe uma mensagem em uma caixa de mensagem:

Sub MostrarMensagem()
    MsgBox "Olá, este é um procedimento Sub!"
End Sub

Para chamar esse Sub usando a instrução `Call`, você faria:

Sub ChamarSub()
    Call MostrarMensagem
End Sub

Exemplo de uso com uma Function

Se você estiver usando uma função, o uso do `Call` é um pouco diferente porque você estará chamando e não retornando o valor. No entanto, é importante lembrar que o `Call` geralmente não é usado para funções que têm um valor de retorno:

Function SomarNumeros(ByVal a As Integer, ByVal b As Integer) As Integer
    SomarNumeros = a + b
End Function

Para chamar essa função, você faria:

Sub ChamarFuncao()
    Dim resultado As Integer
    resultado = SomarNumeros(5, 10)
    MsgBox "O resultado é " & resultado
End Sub

Ou, usando `Call` (embora isso não aproveite o valor de retorno):

Sub ChamarFuncao()
    Call SomarNumeros(5, 10)
End Sub

Neste último exemplo, o valor de retorno da função é descartado porque não está sendo armazenado ou usado.

Quando usar ou não usar `Call`

  • Usar `Call`: Pode ser útil por razões de clareza ou quando obrigatório por uma regra de estilo. Também é necessário se estiver chamando uma rotina de asserção e estiver visualizando a lista de argumentos entre parênteses.
  • Não usar `Call`: Em muitos casos, especialmente ao chamar funções que retornam um valor, o `Call` não é usado, e a chamada é feita diretamente, porque o retorno tem de ser capturado diretamente ou a chamada é feita para processos sem retorno significativo que precisa ser manipulado.

Lembre-se, o uso do `Call` é, principalmente, uma questão de estilo e preferência na maioria dos contextos dentro do VBA.

Unlock Your Potential

Excel

Basic - Advanced

Access

Access Basic - Advanced

Power BI

Power BI Basic - Advanced

Help us grow the project