Neste artigo vais aprender a definir o âmbito de uma variável (VBA) no Microsoft Excel. Vamos lá?
Uma variável em VBA permite-nos armazenar um valor que pode mudar ao longo de uma rotina, e ao qual atribuímos um nome e um tipo de dados. Por exemplo, uma string (texto) ou um valor numérico (integer).
Quando executamos código VBA, a variável é normalmente definida no âmbito da rotina que estamos a executar. Significa que o valor armazenado está apenas disponível enquanto essa rotina está a ser executada. Caso tenhamos necessidade de utilizar esse mesmo valor noutra rotina, ou até mesmo noutro módulo, não será possível. Para tal acontecer, temos que alterar o âmbito de aplicação da variável, de modo a podermos utilizar o valor noutras rotinas ou módulos.
Não percas aqui todo o processo passo-a-passo e aprende a definir o âmbito de uma variável (VBA) no Microsoft Excel. Alguma dúvida envia-nos a tua mensagem... ficamos à tua espera!
Passo 1: Definir a variável no âmbito da rotina.
Vamos iniciar a criação de um módulo com uma variável simples que permite guardar os anos do utilizador.
Começamos por iniciar um novo módulo dentro do Visual Basic Editor, que pode ser executado com o atalho [ALT] + [F11].
De seguida vamos criar 2 sub-rotinas:
uma para definir a Idade, que terá a variável e que é armazenada numa Inputbox para o utilizador colocar um valor.
A segunda sub-rotina terá apenas uma caixa de mensagem MsgBox que deverá apresentar a idade colocada pelo utilizador na rotina inicial.
Sub ColocarIdade() Dim idade as integer idade = InputBox("Introduza a sua idade!") MensagemIdade End Sub Sub MensagemIdade() MsgBox Prompt:="A sua idade é: " & idade & " anos" End Sub
Executando as duas rotinas, a variável idade apresenta um erro que indica que a variável não está definida.
Isto significa que o âmbito da variável está definido apenas ao nível da primeira rotina, e a mesma só pode ser guardada na rotina inicial. Quando chamada na segunda rotina, esta não é reconhecida.
Passo 2: Definir a variável no âmbito do módulo.
Caso a variável seja definida no âmbito do módulo, todas as rotinas presentes no mesmo módulo podem utilizar a variável e o seu valor guardado. Obviamente esta lógica de implementação de variáveis terá vantagens ou desvantagens conforme a preferência do utilizador. Contudo caso pretenda aceder ao valor guardado, este deverá ser o procedimento.
Para definir a variável no âmbito do módulo, basta defini-la com a expressão Dim antes de qualquer rotina do módulo, ou seja, no início do módulo.
Option Explicit Dim idade As Integer Sub ColocarIdade() idade = InputBox("Introduza a sua idade!") MensagemIdade End Sub Sub MensagemIdade() MsgBox Prompt:="A sua idade é: " & idade & " anos" End Sub
Executando a primeira rotina, é solicitada a idade do utilizador.
Após colocação da idade o valor é armazenado na variável. Quando passamos para o novo módulo “MensagemIdade” os valores mantêm-se e é apresentado sobre a forma de uma Caixa de Mensagem MsgBox.
Passo 3: Definir a variável como pública.
Quando definimos a variável com a expressão Public significa que o seu valor é armazenado e fica disponível em vários módulos no mesmo ficheiro.
Option Explicit Public idade As Integer
Desta forma podemos então criar outro módulo. Neste novo módulo vamos criar uma nova rotina, que irá apresentar sobre a forma de uma Caixa de Mensagem - MsgBox, na qual será apresentada a data de aniversário e será adicionado 1 ano ao valor da variável inicial.
Sub Aniversario() MsgBox "A 16 de outubro a sua idade será: " & idade + 1 & " anos" End Sub
Para terminar a aplicação final será composta por 3 rotinas:
- Rotina que armazena o valor da variável idade, agora pública.
- Rotina que mostra o valor da variável idade numa Caixa de Mensagem
- Rotina que mostra o valor da variável idade mais um ano, numa Caixa de mensagem.
Módulo 1
Option Explicit Public idade As Integer Sub ColocarIdade() idade = InputBox("Introduza a sua idade!") MensagemIdade End Sub Sub MensagemIdade() MsgBox Prompt:="A sua idade é: " & idade & " anos" Aniversario End Sub
Módulo 2
Option Explicit Sub Aniversario() MsgBox "A 16 de outubro a sua idade será: " & idade + 1 & " anos" End Sub
Consulte outros conteúdos relevantes:
VBA e função FILTRAR: Exportar um relatório para PDF
Neste novo vídeo, vou mostrar-te como podes usar a função FILTRAR para obter um conjunto de dados sobre um determinado critério.
Envie emails personalizados no Microsoft Excel, com VBA?!
Perde muito tempo a enviar emails personalizados com anexos para uma lista de emails? Então saiba que existe uma forma fácil...