Como usar variáveis de sub-procedures do Excel em Visual Basic for Applications

Traduções de Artigos Traduções de Artigos
Artigo: 843144 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

INTRODUÇÃO

Este artigo descreve como usar variáveis em Microsoft Sub-procedures no Microsoft Visual Basic para o Excel Aplicativos.

Mais Informação

Variáveis em um procedimento sub

Um recurso poderoso de linguagens de programação é a capacidade armazenar algo em uma variável que pode ser usado o conteúdo da variável ou pode ser alterada posteriormente no procedimento. Este documento discute o seguinte uso de variáveis em Visual Basic:
  • Como as variáveis são declaradas.
  • Os procedimentos e os projetos podem usar o variável.
  • O tempo de vida de uma variável.

Declare uma variável em uma macro

A maneira mais simples de declarar uma variável em uma macro é usar a instrução Dim . A linha a seguir declara duas variáveis x e y, como Inteiros:
Dim x As Integer, y As Integer
Com x e y especificadas como inteiros, informando o Visual Basic Definir reservar memória suficiente para uma variável integer (2 bytes cada, x e y) e que as informações armazenadas no x ou y são um número inteiro entre -32768 e 32767.

Observação Se você declarar mais de uma variável usando uma única declaração Dim , você deve especificar o tipo de dados para cada variável.

Se você não especificar o tipo de dados para cada variável, como em o seguinte código de Visual Basic, apenas a variável y é configurada como um inteiro variável. A variável x será um tipo variant:
Dim x, y As Integer
Para obter informações adicionais, consulte "tipo de dados Variant" seção.

Para executar um teste de variável, siga estas etapas:
  1. Salvar e fechar qualquer abrir pastas de trabalho e abra um novo pasta de trabalho.
  2. Inicie o Editor de Visual Basic (pressione ALT + F11).
  3. Sobre o Inserir menu, clique emMódulo.
  4. Digite o seguinte código:
    Sub Variable_Test()
    Dim x As Integer, y As Integer
    x = 10
    y = 100
    MsgBox "the value of x is " & x & _
    Chr(13) & "the value of y is " & y
    End Sub
  5. Execute a macro Variable_Test . Você recebe a seguinte mensagem:
    o valor de x é 10
    o valor de y é 100
  6. Clique em OK.
  7. Na macro Variable_Test altere a seguinte linha:
    x = 10
    

    para:
    x = "error"
    
  8. Execute a macro Variable_Test .
Você receberá um erro de tempo de execução como "erro" não é um inteiro e você está tentando atribuir esse valor de seqüência de caracteres à variável de inteiro x.

Resumo de tipo de dados

A tabela a seguir lista os tipos comuns de dados da variável:

Reduzir esta tabelaExpandir esta tabela
Tipo de dadosTamanho do armazenamentoIntervalo permitido
Boolean 2 bytes VERDADEIRO ou falso
Número inteiro 2 bytes -32.768 a 32.767
Longo 4 bytes -2.147.483.648 a 2.147.483.647
Duplo 8 bytes -1, 79769313486232E308 para -4, 94065645841247E-324 para valores negativos; 4, 94065645841247E-324 a 1, 79769313486232E308 para valores positivos
Moeda 8 bytes -922.337.203.685.477,5808 a 922.337.203.685.477,5807
Data 8 bytes 1 De janeiro de 100 a 31 de dezembro 9999
Seqüência de caracteres 10 bytes + comprimento

Tipo de dados Variant

Se você não especificar um tipo de dados quando você declara uma variável, ou Você não pode declarar uma variável em todos os, Visual Basic Especifica automaticamente o tipo de dados Variant para esta variável. Estas são as vantagens do variáveis que são declaradas como este tipo de dados:
  • As variáveis podem conter a seqüência de caracteres, data, hora, Boolean, ou valores numéricos.
  • As variáveis podem converter os valores que elas contêm automaticamente.
A desvantagem é que as variáveis variant requerem pelo menos 16 bytes de memória. 16 bytes de memória podem ser significativas nos procedimentos grandes ou módulos complexos.

Para ver como isso funciona na macro Variable_Test , siga estas etapas:
  1. Altere o código da macro Variable_Test para:
    Sub Variable_Test()
    Dim x, y
    x = "string"
    y = 1.23
    MsgBox "the value of x is " & x & _
    Chr(13) & "the value of y is " & y
    End Sub
    
  2. Execute a macro Variable_Test .
Você não receberá um erro porque você pode atribuir qualquer coisa para as variante variáveis x e y.

Observação Você também pode deixar a linha seguinte e a macro será ainda funcionam como as variáveis x e y são tratados como tipos de dados variante:
Dim x, y

Escopo de uma variável

Quando você declara uma variável, ele pode ou não pode ser visto por outros macros no mesmo módulo em outros módulos ou em outros projetos. Isso disponibilidade de uma variável em módulos é chamada de escopo. Os três tipos de de escopo são particular, nível de procedimento nível de módulo e pública de nível de módulo. O escopo depende de como e onde você declarar a variável ou variáveis.

Escopo de nível de procedimento

Uma variável com escopo de nível de procedimento não é vista fora do procedimento onde ele é declarado. Se você definir o valor de uma variável que possui escopo de nível de procedimento, que o conteúdo da variável não serão vistos por outros macros.

Para verificar se uma variável com escopo de nível de procedimento não é visto fora do procedimento onde ele é declarado, siga estas etapas:
  1. Inserir um novo módulo no seu projeto.
  2. Digite as seguintes macros para este módulo:
    Sub Macro1()
    Dim x As Integer
    x = 10
    MsgBox "x, as seen by Macro1 is " & x
    'the next line runs Macro2
    Macro2
    End Sub
    Sub Macro2()
    MsgBox "x, as seen by Macro2 is " & x
    End Sub
    
  3. Execute Macro1.

    Você recebe a seguinte mensagem:
    x, conforme visto por Macro1 é 10
  4. Clique em OK.

    Você recebe a mensagem a seguir:
    x, conforme visto por Macro2 é
  5. Clique em OK.
Macro2 não exibe um valor para a variável x porque a variável x é local Macro1.

Escopo de nível de módulo privado e público

Você pode definir as variáveis na seção declarações de um módulo (na parte superior de um módulo, acima de todos os procedimentos sub) e definir o escopo de sua variável usando a instrução pública , a instrução Dim ou instrução particular . Se você colocar a instrução Public na frente de sua variável, a variável será disponível para todas as macros em todos os módulos do projeto. Se você colocar a instrução Dim ou a instrução Private antes sua variável, a variável está disponível somente a macros no módulo onde é declarado.

Para ver o diferença entre a instrução pública e a instrução Dim , siga estas etapas:
  1. Salvar e fechar qualquer abrir pastas de trabalho e abra um novo pasta de trabalho.
  2. Inicie o Editor de Visual Basic.
  3. Inserir um módulo no seu projeto.
  4. Digite o seguinte código para este módulo:
    Public x As Integer
    Sub Macro_1a()
    x = 10
    MsgBox x
    Macro_1b
    End Sub
    Sub Macro_1b()
    x = x * 2
    MsgBox x
    Macro2
    End Sub
    
  5. Insira outro módulo no seu projeto.
  6. Digite o seguinte código para este módulo:
    Sub Macro2()
    x = x * 3
    MsgBox x
    End Sub
    
  7. Execute a macro Macro_1a no primeiro módulo.

    Com a variável x declarado como "Public x As Integer", todos os três macros no projeto tem acesso para o valor de x. A primeira caixa de mensagem exibe um valor de 10. A segunda mensagem caixa exibe um valor de 20 (porque x é multiplicada por 2 em Macro_1b). A terceira caixa de mensagem exibe um valor de 60 (porque o valor de x foi alterado para 20 em Macro_1b e, em seguida, ele foi multiplicado por 3 no Macro2).
  8. Altere a linha de declaração no primeiro módulo de:
    Public x As Integer

    para:
    Dim x As Integer
  9. Execute a macro Macro_1a .

    Com a variável x declarado como 'Dim x como Integer", apenas as macros no primeiro módulo tem acesso ao valor de x. Portanto a primeira caixa de mensagem exibe um valor de 10, a segunda caixa de mensagem exibe um valor de 20, (porque x é multiplicada por 2 em Macro_1b) e a terceira caixa de mensagem exibe o valor 0 (porque Macro2 não verá o valor de x e não inicializado o valor zero é usada pela Macro 2).
  10. Altere a linha de declaração no primeiro módulo de:
    Dim x As Integer

    para:
    Private x As Integer
  11. Execute a macro Macro_1a .
As mesmas caixas de mensagem são exibidas usando o escopo da instrução particular como eles estavam usando a instrução Dim . A variável x tem o mesmo escopo particular para o módulo onde ele é declarado.

Observação Se você deseja que o escopo de sua variável para ser limitado a módulo onde é declarado, use a instrução Private em vez da instrução Dim . Ambos atingir o mesmo efeito, mas o escopo é mais claro ao ler o código se você usar a instrução Private .

Tempo de vida de uma variável

O tempo durante o qual uma variável reterá seu valor é conhecido como seu tempo de vida. O valor de uma variável pode mudar ao longo de sua vida útil, mas ele será manter um valor. Além disso, quando uma variável perde o escopo, ele não tem mais um valor.

Inicializar o valor de uma variável

Quando você executar uma macro, todas as variáveis são inicializadas em um valor. Uma variável numérica que é inicializada para zero, é uma seqüência de caracteres de comprimento variável inicializado para uma seqüência de comprimento zero (""), e uma seqüência de comprimento fixo é preenchida com o código ASCII 0. Variáveis Variant são inicializados para vazio. Um vazio variável é representado por um zero em um contexto numérico e uma seqüência de comprimento zero ("") em um contexto de seqüência de caracteres.

Variáveis de nível de procedimento

Se você tiver uma variável declarada em uma macro usando a instrução Dim , a variável reterá seu valor como a macro é em execução. Se esta macro chama outras macros, o valor da variável é retido (não disponível para outras macros embora), desde que esses outros também executando macros.

Para demonstrar o nível de procedimento como variáveis de trabalho, siga estas etapas:
  1. Inserir um novo módulo no seu projeto.
  2. Digite as seguintes macros para este módulo:
    Sub Macro1()
    'set x as a procedure level variable
    Dim x As Integer
       MsgBox "the initialized value of x is " & x
    x = 10
    MsgBox "x is " & x
    'the next line runs Macro2
    Macro2
    MsgBox "x is still " & x
    End Sub
    Sub Macro2()
    MsgBox "x, as seen by Macro2 is " & x
    End Sub
    
  3. Execute Macro1.

    Você recebe a seguinte mensagem:
    inicializado o valor de x é 0
  4. Clique em OK.

    Você recebe a mensagem a seguir:
    x é 10
  5. Clique em OK.

    Você recebe a mensagem a seguir:
    é x, como visto por Macro2
  6. Clique em OK.

    Macro2 não exibe um valor para a variável x porque a variável x é local Macro1. Você recebe a seguinte mensagem:
    x é ainda 10
  7. Clique em OK.
  8. Execute Macro1.
Você recebe as mensagens que estão descritas nas etapas 3 a 6 porque assim Macro1 interrompidos na etapa 6, o valor da variável x foi perdido. Portanto, quando você executa novamente Macro1 na etapa 7, a primeira mensagem mostra o valor de x como zero (o valor inicializado).

Palavra-chave static

Se uma variável de nível de procedimento é declarada usando estática palavra-chave, a variável reterá seu valor até que seu projeto seja redefinido. Portanto, Se você tiver uma variável estática, na próxima vez que você chamar o procedimento, o variável estática é inicializada para seu último valor.

Para ver como o Palavra-chave static works, execute essas etapas:
  1. Altere o código em Macro1 para:
    Sub Macro1()
    'set x as a procedure level variable
    Static x As Integer
       MsgBox "the initialized value of x is " & x
    x = x + 10
    MsgBox "x is " & x
    End Sub
    
  2. Execute Macro1.

    Você recebe a seguinte mensagem:
    inicializado o valor de x é 0
  3. Clique em OK.

    Você recebe a mensagem a seguir:
    x é 10
  4. Clique em OK.
  5. Execute Macro1.

    Você recebe a seguinte mensagem:
    o valor de x inicializado é 10
  6. Clique em OK.

    Você recebe a mensagem a seguir:
    x é 20
  7. Clique em OK.
Os valores que aparecem nas mensagens são diferentes a segunda porque a variável x é declarada como uma variável estática e a variável de tempo mantém seu valor após executar Macro1 na primeira vez.

Observação Se você tiver uma variável de nível de módulo, sua vida útil é o mesmo que Se ela fosse uma variável estática de nível de procedimento.

Para verificar o tempo de vida de uma variável de nível de módulo, execute estas etapas:
  1. Altere o código no módulo que contém Macro1 à seguinte:
    Dim x As Integer  'create a module-level variable
    Sub Macro1()
       MsgBox "the initialized value of x is " & x
    x = x + 10
    MsgBox "x is " & x
    End Sub
    
  2. Execute Macro1.

    Você recebe a seguinte mensagem:
    inicializado o valor de x é 0
  3. Clique em OK.

    Você recebe a mensagem a seguir:
    x é 10
  4. Clique em OK.
  5. Execute Macro1.

    Você recebe a seguinte mensagem:
    o valor de x inicializado é 10
  6. Clique em OK.

    Você recebe a mensagem a seguir:
    x é 20
  7. Clique em OK.
Os valores que aparecem nas mensagens são diferentes a segunda tempo porque a variável x é declarada como uma variável estática e mantém o seu valor após executar Macro1 na primeira vez.

Redefinir um projeto para redefinir as variáveis

Se você deseja redefinir o valor de uma variável estática ou de um nível de módulo variável, clique no Redefinir botão a Padrão barra de ferramentas ou clique em Redefinir sobre o Executar menu.

Se isso para o projeto Macro1 e, em seguida, execute novamente a Macro1, o valor da variável x é inicializado para zero e você receba a primeira mensagem:
o valor de x inicializado é 0
Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
843145Descrição do sub-procedures do Excel em Visual Basic for Applications (Arrays)
Voltar para o parte superior

Propriedades

Artigo: 843144 - Última revisão: 4 de novembro de 2012 - Revisão: 5.0
A informação contida neste artigo aplica-se a:
  • Microsoft Office Excel 2007
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
Palavras-chave: 
kbvba kbprogramming kbinfo kbmt KB843144 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 843144

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com