NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!
UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI
FILTRO DE TUTORIAIS:
Durante os dois últimos tutoriais enquanto aprendíamos sobre os procedimentos Sub e Function, você notou que o Visual Studio adiciona automaticamente à frente dos argumentos a palavra ByVal, como no exemplo que criamos:
Sub SomaNumeros(ByVal a As Integer, ByVal b As Integer, ByVal c As Integer)
End Sub
ou
Function PercentualVitorias(ByVal Total As Short, ByVal vitorias As Short) As String
End Function
ByVal significa que estamos passando o conteúdo da variável por valor (Padrão). Então como no exemplo acima, se passamos uma variável ele pega apenas uma cópia do valor da variável e passa para o procedimento, se o dado for alterado o conteúdo da variável original não é alterado.
ByRef significa que estamos passando uma referência ao conteúdo da variável. Então, se mudamos o valor, alteramos também o conteúdo da variável original.
Para entender melhor vamos fazer um exemplo bem simples, mas que ilustra bem isso.
ByVal ou ByRef
Vamos usar um projeto novo desta vez.
1 - Crie um projeto no Visual Studio do tipo Windows Application, chamado ByVal ou ByRef.
2 - Arraste para o Form1 os seguintes controles:
» 1 Button
» 1 TexBox
3 - Organize-os como a imagem:
4 - Na classe do Form1, crie o seguinte procedimento Sub:
Sub Teste(ByVal a As Integer)
a += 10
MsgBox(a.ToString)
End Sub
Nossa sub simplesmente soma 10 ao valor que foi passado a ela como parâmetro e mostra uma caixa de diálogo com o valor. Deve ficar assim no painel de código:
5 - Agora no modo Design, de um clique duplo sobre o Button1 e digite o seguinte código:
Dim numero As Integer = 5
Teste(numero)
Label1.Text = numero.ToString
A primeira linha declara uma variável chamada numero do tipo Integer e atribui 5 a ela A segunda faz a chamada ao procedimento Teste que criamos. A terceira linha simplesmente pega o conteúdo da variável numero e exibe no Label1. Deve ficar assim no painel de código:
6 - Execute a aplicação.
7 - Clique no Button1.
É exibida a caixa de diálogo da Sub como a figura abaixo:
Como passamos a variável numero como parâmetro e o conteúdo dela é 5, esse valor somado a 10 na Sub é o valor exibido pela caixa de diálogo.
8 - Clique em OK.
Depois que ele executa a Sub ele pega o valor da variável e exibe na Label1, perceba que o valor permanece sendo 5, ou seja ele efetuou a soma na Sub mais não alterou o valor da variável número.
9 - Pare a execução do programa.
10 - No painel de código, altere o ByVal da Sub Teste para ByRef, como no exemplo abaixo:
Sub Teste(ByRef a As Integer)
11 - Execute novamente a aplicação.
12 - Clique no Button1.
A mensagem é exibida como anteriormente.
13 - Clique em OK.
Só que desta a Sub alterou o conteúdo da variável número, porque usamos o ByRef. Essa é a diferença entre os dois.
Fique a vontade para usar o Debug do Visual Studio para analisar esse exemplo passo-a-passo.
Confira todos os artigos de Certificações .NET:
Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434
Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208
Todos os direitos reservados, Júlio Battisti 2001-2025 ®
LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO
DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI