Excel VBA ByRef e ByVal - Macros fáceis do Excel

Índice

Você pode passar argumentos para um procedimento (função ou sub) por referência ou por valor. Por padrão, Excel VBA passa argumentos por referência. Como sempre, usaremos um exemplo fácil para tornar as coisas mais claras.

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

Dim x As Integer
x = 10
MsgBox Triple (x)
MsgBox x

O código chama a função Triplo. É o resultado da segunda MsgBox em que estamos interessados. As funções precisam ser colocadas em um módulo.

1. Abra o Editor do Visual Basic e clique em Inserir, Módulo.

2. Adicione as seguintes linhas de código:

Função Triplo (ByRef x As Integer) As Integer
x = x * 3
Triplo = x
Função Final

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

3. Substitua ByRef por ByVal.

Função Triplo (ByVal x As Integer) As Integer
x = x * 3
Triplo = x
Função Final

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

Explicação: Ao passar argumentos por referência, estamos nos referindo ao valor original. O valor de x (o valor original) é alterado na função. Como resultado, o segundo MsgBox exibe um valor de 30. Ao passar argumentos por valor, estamos passando uma cópia para a função. O valor original não é alterado. Como resultado, o segundo MsgBox exibe um valor de 10 (o valor original).

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave