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 ExcelExcel 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 -
- Guia da função VBA UBound
- OFFSET Função Excel (exemplo, usos)
- Criar hiperlink no Excel VBA
- Como usar o identificador de preenchimento do Excel?