Visual Basic for Applications:
Organizando código em funções

Como fazer:

No VBA, as funções são definidas usando as instruções Function e End Function. Aqui está um exemplo simples de como criar uma função que calcula a área de um retângulo:

Function CalculateArea(comprimento As Double, largura As Double) As Double
    CalculateArea = comprimento * largura
End Function

Para chamar esta função no seu código VBA e exibir o resultado em uma caixa de mensagem, você usaria:

Sub ShowArea()
    Dim area As Double
    area = CalculateArea(10, 5)
    MsgBox "A área é " & area
End Sub

Quando executado, este código exibe uma caixa de mensagem informando: A área é 50.

Passando Variáveis por Referência e por Valor

O VBA permite passar variáveis para funções tanto por referência (ByRef) quanto por valor (ByVal). O primeiro significa que a variável original pode ser modificada pela função, enquanto o último passa uma cópia, protegendo a variável original de alterações.

Function ModifyValue(ByRef num As Integer)
    num = num + 5
End Function

Function PreserveValue(ByVal num As Integer) As Integer
    num = num + 5
    PreserveValue = num
End Function

Aprofundamento

O VBA, como uma linguagem de programação orientada a eventos, dá significativa ênfase em funções e sub-rotinas para lidar com diversas tarefas. Diferentemente de muitas linguagens modernas, o VBA tem uma característica única, onde a palavra-chave Function não apenas declara um bloco de código reutilizável, mas também permite um valor de retorno implícito diretamente atribuído ao nome da função.

Historicamente, o design das funções do VBA foi influenciado por paradigmas de programação anteriores, onde a encapsulação e a modularidade estavam sendo gradualmente reconhecidas por sua importância no desenvolvimento de software. Esse contexto histórico levou o VBA a adotar uma abordagem conservadora, ainda que funcional, para organizar o código.

Embora o VBA seja poderoso dentro de seus ambientes nativos (por exemplo, aplicativos do Microsoft Office), é essencial notar que o mundo da programação evoluiu. Linguagens como Python oferecem uma sintaxe mais simples e uma vasta biblioteca padrão, tornando-as uma alternativa favorável para várias aplicações fora do pacote Office. No entanto, quando se trabalha dentro dos produtos do Microsoft Office, as capacidades de integração e automação que o VBA proporciona são incomparáveis.

Vale ressaltar que, apesar de sua idade, a comunidade em torno do VBA permanece ativa, encontrando continuamente formas inovadoras de alavancar sua funcionalidade. No entanto, à medida que a indústria de software avança em direção a linguagens mais modernas, versáteis e robustas, os programadores familiarizados com o VBA são incentivados a explorar essas alternativas para tarefas não relacionadas ao Office, a fim de ampliar seu conjunto de ferramentas de codificação.