O que é o ByRef no VBA?

Byref no VBA significa "Por referência". Com a ajuda do VBA Byref, podemos segmentar o valor original sem alterar o valor armazenado nas variáveis. Em outras palavras, passaremos diretamente o valor para os procedimentos Sub, em vez de seguirmos os métodos regulares de definir e atribuir os valores às variáveis.

No VBA ByRef, definimos o sub-procedimento após definir a regra para ByRef. Isso pode ser feito abaixo do subprocedimento em que queremos escrever o código. No ByRef, redefinimos a variável usada no procedimento Sub. E isso só funciona corretamente quando chamamos a condição ByRef em nosso subprocedimento.

Como usar a função ByRef no Excel VBA?

Abaixo estão os diferentes exemplos para usar a função ByRef no Excel usando o código VBA.

Você pode fazer o download deste modelo do VBA ByRef Excel aqui - Modelo do VBA ByRef Excel

Excel VBA ByRef - Exemplo # 1

Primeiro, vamos aprender como inserir um ByRef no VBA, para isso, siga as etapas abaixo. Neste exemplo, veremos como usar o VBA ByRef para um trabalho simples de subtração matemática. Para isso, precisaríamos de um módulo.

Etapa 1: acesse o VBA e abra um módulo na opção de menu Inserir, como mostrado abaixo.

Etapa 2: no módulo recém-aberto, escreva a subcategoria do VBA ByRef, como mostrado abaixo.

Código:

 Sub VBA_ByRef1 () End Sub 

Etapa 3: Agora defina uma variável, digamos que seja um A como Inteiro.

Código:

 Sub VBA_ByRef1 () Dim A como número inteiro final Sub 

Etapa 4: Atribua qualquer número à variável A. Deixe esse número ser 1000.

Código:

 Sub VBA_ByRef1 () Dim A como número inteiro A = 1000 End Sub 

Etapa 5: para imprimir o valor armazenado na variável A, usaríamos Msgbox.

Código:

 Sub VBA_ByRef1 () Dim A como número inteiro A = 1000 MsgBox A End Sub 

Etapa 6: Agora compilamos e executamos esse código clicando no botão Reproduzir, como mostrado abaixo. Obteremos uma caixa de mensagem com o valor armazenado na variável A como 1000 .

Agora aplique o VBA ByRef, crie outra subcategoria abaixo da primeira e atribua a variável definida da primeira subcategoria ao ByRef.

Etapa 7: com isso, permitiremos que a segunda subcategoria use os valores armazenados na variável A.

Código:

 Sub VBA_ByRef1 () Dim A como número inteiro A = 1000 MsgBox A End Sub Sub VBA_ByRef2 (ByRef A como número inteiro) End Sub 

Etapa 8: Agora chame a variável A aqui novamente e subtraia qualquer valor da variável A para obter o valor de saída na mesma variável. Vamos subtrair 100 do valor da variável A para obtermos um número mensurável.

Código:

 Sub VBA_ByRef1 () Dim A como número inteiro A = 1000 MsgBox A End Sub Sub VBA_ByRef2 (ByRef A como número inteiro) A = A - 100 End Sub 

Etapa 9: Agora, se compilarmos cada etapa do código, perceberemos que quando o cursor atingir a variável A, veremos que ele possui apenas 0 armazenado.

Etapa 10: quando o cursor alcançou End Sub, a saída será igual a 1000 na caixa de mensagem.

Etapa 11: é porque não atribuímos o ByRef à primeira subcategoria. Agora, atribuiremos o nome da subcategoria antes da função de caixa de mensagem da primeira subcategoria e veremos o que acontecerá.

Código:

 Sub VBA_ByRef1 () Dim A como número inteiro A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A como número inteiro) A = A - 100 End Sub 

Etapa 12: e agora, execute o código completo novamente. Veremos que o segundo valor armazenado na variável A como 100 foi subtraído do primeiro valor 1000. Como resultado, obtivemos a mensagem de saída como 900.

Etapa 13: esta é a principal vantagem do uso de ByRef. Não precisamos definir várias variáveis ​​para um único trabalho. Apenas uma variável é suficiente para executar toda a tarefa de maneiras diferentes. Podemos usar mais de um ByRef em um único módulo.

Para justificar o que entendemos, vamos adicionar outro ByRef no mesmo módulo.

Código:

 Sub VBA_ByRef1 () Dim A como número inteiro A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A como número inteiro) A = A - 100 End Sub sub VBA_ByRef3 (ByRef A como número inteiro) End Sub 

Etapa 14: nesta subcategoria, vamos usar a multiplicação.

Código:

 Sub VBA_ByRef1 () Dim A como número inteiro A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A como número inteiro) A = A - 100 End Sub Sub VBA_ByRef3 (ByRef A como número inteiro) A = A * 2 End Sub 

Etapa 15: Compile novamente e execute o código novamente. Veremos que o valor obtido das etapas acima como 900 agora é multiplicado por 2 para obter 1800 como saída.

Excel VBA ByRef - Exemplo # 2

Neste exemplo, veremos como o ByRef funciona com outro tipo de números inteiros.

Etapa 1: Abra um módulo e escreva a subcategoria, como mostrado abaixo.

Código:

 Sub VBA_ByRef4 () End Sub 

Etapa 2: Agora defina uma variável A como Dupla. Isso nos permitirá usar valores decimais.

Código:

 Sub VBA_ByRef4 () Dim A como sub de extremidade dupla 

Etapa 3: atribua qualquer valor decimal à variável A.

Código:

 Sub VBA_ByRef4 () Dim A como duplo A = 1, 23 End Sub 

Etapa 4: Agora, novamente, use a caixa de mensagem para ver o valor armazenado na variável A.

Código:

 Sub VBA_ByRef4 () Dim A como duplo A = 1, 23 MsgBox A End Sub 

Agora, se executarmos o código, obteremos 1, 23 como saída.

Etapa 5: De uma maneira diferente, usaremos Function para definir ByRef como Double com a variável A.

Código:

 Sub VBA_ByRef4 () Dim A como duplo A = 1, 23 MsgBox A End Sub função AddTwo (ByRef A como duplo) como duplo End Function 

Etapa 6: Agora adicione qualquer número à variável A. Digamos que seja 10.

Código:

 Sub VBA_ByRef4 () Dim A como duplo A = 1, 23 MsgBox A End Sub função AddTwo (ByRef A como duplo) Como duplo A = A + 10 End Function 

Etapa 7: E, novamente, use essa função ByRef definida na primeira subcategoria. Aqui veremos duas caixas de mensagem, uma para a variável A e outra para ByRef.

Código:

 Sub VBA_ByRef4 () Dim A como duplo A = 1, 23 MsgBox AddTwo (A) MsgBox A End Sub Function Sub AddTwo (ByRef A como Double) Como Double A = A + 10 End Function 

Etapa 8: O mesmo também será refletido na caixa de mensagem.

Etapa 9: E na próxima execução, fornecerá o valor agregado de 10 no valor da variável original de 1, 23, como mostrado abaixo.

É assim que o VBA Byref pega a referência do valor definido uma vez e preenche a saída de acordo com a nova condição.

Prós e contras do VBA ByRef

  • Ao escrever códigos grandes, economiza muito tempo considerando a variável já definida, para que seu valor possa ser usado repetidamente.
  • Não precisamos definir muitas variáveis ​​conforme a fórmula que queremos aplicar.
  • Podemos aplicar muitas condições de ByRef em um único módulo sem sequer atrapalhar o processo.
  • Não podemos usar o VBA Byref na estrutura de código complexa.

Coisas para lembrar

  • Ao considerar mais de uma condição ByRef, a saída será baseada no último subprocedimento ByRef que definimos, mas também considera todas as condições ByRef usadas anteriormente.
  • A saída final terá saída processada sequencial. Não é apenas o mais recente.
  • Este processo não pode ser feito gravando a macro.
  • Podemos ver o valor armazenado em cada estágio da variável compilando o código.
  • Uma vez feito, salve o arquivo do Excel no formato de Excel habilitado para macro, para que não percam o código no futuro.

Artigos recomendados

Este é um guia para o VBA ByRef. Aqui discutimos como usar a função ByRef no Excel usando o código VBA, juntamente com exemplos práticos e modelo de excel para download. Você também pode consultar os seguintes artigos para saber mais -

  1. Guia da função VBA UBound
  2. OFFSET Função Excel (exemplo, usos)
  3. Criar hiperlink no Excel VBA
  4. Como usar o identificador de preenchimento do Excel?

Categoria: