Você está offline; aguardando reconexão

Como usar variáveis nos procedimentos Sub do Excel no Visual Basic para aplicações

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
INTRODUÇÃO
Este artigo descreve como utilizar variáveis em procedimentos Sub do Microsoft Excel no Microsoft Visual Basic for Applications.

regressar ao início
Mais Informação

Variáveis de um procedimento sub

Uma funcionalidade poderosa de linguagens de programação é a capacidade para guardar algo numa variável de modo a que o conteúdo da variável pode ser utilizado ou pode ser alterado mais tarde no processo. Este documento explica como utilizar seguinte variáveis no Visual Basic:
  • Como as variáveis são declaradas.
  • Os procedimentos e os projectos que podem utilizar thevariable.
  • A duração de uma variável.
regressar ao início

Declarar uma variável numa macro

É a forma mais simples para declarar uma variável numa macro utilizar a instrução Dim . A seguinte linha declara duas variáveis, x e y, como números inteiros:
Dim x As Integer, y As Integer
Com x e y especificadas como números inteiros, está a indicar ao Visual Basic para definir reservar memória suficiente para uma variável de número inteiro (2 bytes para x e y) e que as informações que são armazenadas em x ou y são um número inteiro entre -32768 e 32767.

Nota Se declarar mais de uma variável utilizando uma única instrução Dim , tem de especificar o tipo de dados para cada variável.

Se não especificar o tipo de dados para cada variável, tal como no seguinte código de Visual Basic, apenas a variável y está configurada como uma variável de número inteiro. A variável de x será um tipo de variante:
Dim x, y As Integer
Para obter informações adicionais, consulte a secção "Tipo de dados Variant".

Para efectuar um teste de variável, siga estes passos:
  1. Guardar e fechar todos os livros abertos e, em seguida, abra um newworkbook.
  2. Inicie o Editor do Visual Basic (prima ALT + F11).
  3. No menu Inserir , clique emmódulo.
  4. Escreva o seguinte código:
    Sub Variable_Test()Dim x As Integer, y As Integerx = 10y = 100MsgBox "the value of x is " & x & _Chr(13) & "the value of y is " & yEnd Sub
  5. Execute a macro Variable_Test . Recebe a seguinte mensagem:
    o valor de x é de 10
    o valor de y é de 100
  6. Clique em OK.
  7. A macro de Variable_Test , altere a seguinte linha:
    x = 10

    para:
    x = "error"
  8. Execute a macro Variable_Test .
Receberá um erro de tempo de execução porque "erro" não é um número inteiro e está a tentar atribuir este valor de cadeia para a variável de número inteiro x.

regressar ao início

Resumo de tipo de dados

A tabela seguinte lista os tipos de dados variável comuns:

Tipo de dadosTamanho de armazenamentoIntervalo permitido
Valor booleano 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 a-4, 94065645841247E-324 para valores negativos; 4, 94065645841247E-324 a 1.79769313486232 E308 para valores positivos
Moeda 8 bytes -e 922,337,203,685,477.5808-922.337.203.685.477,5807
Data 8 bytes 1 de Janeiro, de 100 a 31 de Dezembro, 9999
Cadeia de caracteres bytes de 10 + comprimento de cadeia

regressar ao início

Tipo de dados variante

Se não especificar um tipo de dados quando se declara uma variável ou não declarar uma variável, o Visual Basic especifica automaticamente o tipo de dados variante desta variável. Seguem-se as vantagens das variáveis sejam declaradas como este tipo de dados:
  • As variáveis podem conter a cadeia, data, hora, boleano, valores de ornumeric.
  • As variáveis podem converter os valores que containautomatically.
A desvantagem é que as variáveis variant requerem, pelo menos, de 16 bytes de memória. 16 bytes de memória pode ser significativas nos procedimentos de grandes dimensões ou complexo módulos.

Para ver como isto funciona na Variable_Test macro, siga estes passos:
  1. Altere o código de macro Variable_Test a:
    Sub Variable_Test()Dim x, yx = "string"y = 1.23MsgBox "the value of x is " & x & _Chr(13) & "the value of y is " & yEnd Sub
  2. Execute a macro Variable_Test .
Não receberá um erro porque pode atribuir qualquer coisa para as variáveis variant x e y.

Nota Também pode deixar a seguinte linha e a macro continuará a funcionar como as variáveis de x e y são tratados como tipos de dados variante:
Dim x, y

regressar ao início

Âmbito de uma variável

Quando declara uma variável, poderá ou não podem ser visualizado por outras macros no mesmo módulo, outros módulos ou de outros projectos. Esta disponibilidade de uma variável em módulos é referida como âmbito de aplicação. Os três tipos de âmbito são o nível de procedimento e privada-nível de módulo e pública de nível de módulo. O âmbito de aplicação depende de como e onde declarar a variável ou variáveis.

regressar ao início

Âmbito de nível de procedimento

Uma variável com âmbito de nível de procedimento não é visualizada fora do procedimento em que é declarado. Se definir o valor de uma variável com âmbito de nível de procedimento, conteúdo da variável que não será visto por outras macros.

Para verificar que uma variável com âmbito de nível de procedimento não é visualizada fora do procedimento em que é declarado, siga estes passos:
  1. Inserir um novo módulo no projecto.
  2. Escreva ambas as seguintes macros para este módulo:
    Sub Macro1()Dim x As Integerx = 10MsgBox "x, as seen by Macro1 is " & x'the next line runs Macro2Macro2End SubSub Macro2()MsgBox "x, as seen by Macro2 is " & xEnd Sub
  3. Execute Macro1.

    Recebe a seguinte mensagem:
    x, tal como visto por Macro1 é 10
  4. Clique em OK.

    Recebe a mensagem de thefollowing:
    x, tal como visto por Macro2is
  5. Clique em OK.
Macro2 não apresentar um valor da variável x uma vez que a variável x é o local para Macro1.

regressar ao início

Âmbito de aplicação privado e público de nível de módulo

Pode definir variáveis na secção declarations de um módulo (na parte superior de um módulo, acima de todos os procedimentos sub) e definir o âmbito da sua variável utilizando a instrução pública , a instrução Dim ou a instrução privada . Se colocar a instrução pública em frente a variável, a variável estará disponível para todas as macros em todos os módulos no projecto. Se colocar a instrução Dim ou a instrução privada em frente a variável, a variável só está disponível para macros no módulo em que está a ser declarada.

Para ver a diferença entre a instrução pública e a instrução Dim , siga estes passos:
  1. Guardar e fechar todos os livros abertos e, em seguida, abra um newworkbook.
  2. Inicie o Editor do Visual Basic.
  3. Insira um módulo no projecto.
  4. Escreva o seguinte código para este módulo:
    Public x As IntegerSub Macro_1a()x = 10MsgBox xMacro_1bEnd SubSub Macro_1b()x = x * 2MsgBox xMacro2End Sub
  5. Inserir outro módulo no projecto.
  6. Escreva o seguinte código para este módulo:
    Sub Macro2()x = x * 3MsgBox xEnd Sub
  7. Execute a macro de Macro_1a no primeiro módulo.

    Com a variável x declaredas "Pública x As Integer", todas as três macros no projecto têm acesso para o valor de x. A primeira caixa de mensagem apresenta um valor de 10. A segunda messagebox apresenta um valor de 20 (uma vez que x é multiplicada por 2 em Macro_1b). A terceira caixa de mensagem apresenta um valor igual a 60 (porque o estará x foi alterado para 20 em Macro_1b e, em seguida, foi multiplicado por 3 pol. Macro2).
  8. Altere a linha de declaração no módulo primeiro de:
    Public x As Integer

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

    Com o x variável declarada "Dim x AsInteger", apenas as macros no primeiro módulo tenha acesso ao valor de x. Sothe pela primeira vez, caixa de mensagem apresenta um valor de 10, a segunda caixa de mensagem apresenta avalue de 20, (uma vez que x é multiplicada por 2 em Macro_1b) e a terceira caixa de mensagem apresenta um valor de 0 (porque Macro2 não ver o valor de x e o valor não inicializado da zerois utilizada pela Macro 2).
  10. Altere a linha de declaração no módulo primeiro de:
    Dim x As Integer

    para:
    Private x As Integer
  11. Execute a macro Macro_1a .
As caixas de mensagem mesmo são apresentadas utilizando o âmbito da instrução privada , se estivesse a utilizar a instrução Dim . Variável x tem o mesmo âmbito, privado no módulo em que é declarado.

Nota Se pretender que o âmbito da sua variável é limitado no módulo em que é declarado, utilize a instrução privadas em vez da instrução Dim . Obter ambos o mesmo efeito, mas o âmbito é mais nítido quando lê o código, se utilizar a instrução privada .

regressar ao início

Duração de uma variável

O tempo durante o qual uma variável retém o respectivo valor é conhecido como a sua vida útil. O valor de uma variável pode mudar ao longo da sua vida útil, mas irá reter um valor. Além disso, quando uma variável perde o âmbito de aplicação, já não tem um valor.

regressar ao início

Inicializar o valor de uma variável

Quando executa uma macro, todas as variáveis são inicializadas para um valor. Uma variável numérica é inicializada como zero, uma cadeia de comprimento variável é inicializada como uma cadeia de comprimento zero (""), e uma cadeia de comprimento fixo é preenchida com o código ASCII de 0. Variáveis Variant são inicializadas para vazio. Uma variável vazia é representada por um zero no contexto numérico e uma cadeia de comprimento zero ("") num contexto de cadeia.

regressar ao início

Variáveis de nível de procedimento

Se tiver uma variável declarada na macro utilizando a instrução Dim , a variável retém o respectivo valor, desde que a execução da macro. Se esta macro exigir outras macros, o valor da variável será mantido (não disponível para as outras macros apesar), desde que essas outras macros também estão em execução.

Para demonstrar o nível de procedimento como variáveis de trabalho, siga estes passos:
  1. Inserir um novo módulo no projecto.
  2. Escreva ambas as seguintes macros para este módulo:
    Sub Macro1()'set x as a procedure level variableDim x As Integer   MsgBox "the initialized value of x is " & xx = 10MsgBox "x is " & x'the next line runs Macro2Macro2MsgBox "x is still " & xEnd SubSub Macro2()MsgBox "x, as seen by Macro2 is " & xEnd Sub
  3. Execute Macro1.

    Recebe a seguinte mensagem:
    o inicializar valor de x é 0
  4. Clique em OK.

    Recebe a mensagem de thefollowing:
    x é de 10
  5. Clique em OK.

    Recebe a mensagem de thefollowing:
    Se x, tal como visto por Macro2
  6. Clique em OK.

    Macro2 não apresentar um valor da variável x porque o variablex é o local para Macro1. Recebe a seguinte mensagem:
    x isstill 10
  7. Clique em OK.
  8. Execute Macro1.
Receberá as mesmas mensagens que são descritas os passos 3 a 6, porque assim Macro1 parado no passo 6, o valor da variável x foi perdido. Por conseguinte, quando executar novamente Macro1 no passo 7, a primeira mensagem mostra o valor de zero (o inicializar valor x).

regressar ao início

Palavra-chave estática

Uma variável de nível de procedimento é declarado utilizando a palavra-chave estática, a variável retém o respectivo valor até o projecto é reposto. Por conseguinte, se tiver uma variável estática, da próxima vez que chamar o procedimento, é inicializada a variável estática para o último valor.

Para ver como funciona a palavra-chave estática, siga estes passos:
  1. Altere o código na Macro1 para:
    Sub Macro1()'set x as a procedure level variableStatic x As Integer   MsgBox "the initialized value of x is " & xx = x + 10MsgBox "x is " & xEnd Sub
  2. Execute Macro1.

    Recebe a seguinte mensagem:
    o inicializar valor de x é 0
  3. Clique em OK.

    Recebe a mensagem de thefollowing:
    x é de 10
  4. Clique em OK.
  5. Execute Macro1.

    Recebe a seguinte mensagem:
    o inicializar valor de x é de 10
  6. Clique em OK.

    Recebe a mensagem de thefollowing:
    x é de 20
  7. Clique em OK.
Os valores apresentados nas mensagens são diferentes pela segunda vez porque a variável x é declarada como uma variável estática e a variável retém o respectivo valor depois de executar Macro1 pela primeira vez.

Nota Se tiver uma variável de nível de módulo, sua vida útil é a mesma como se fosse uma variável de nível de procedimento estática.

Para verificar a validade de uma variável de nível de módulo, siga estes passos:
  1. Altere o código no módulo que contém Macro1 à seguinte:
    Dim x As Integer  'create a module-level variableSub Macro1()   MsgBox "the initialized value of x is " & xx = x + 10MsgBox "x is " & xEnd Sub
  2. Execute Macro1.

    Recebe a seguinte mensagem:
    o inicializar valor de x é 0
  3. Clique em OK.

    Recebe a mensagem de thefollowing:
    x é de 10
  4. Clique em OK.
  5. Execute Macro1.

    Recebe a seguinte mensagem:
    o inicializar valor de x é de 10
  6. Clique em OK.

    Recebe a mensagem de thefollowing:
    x é de 20
  7. Clique em OK.
Os valores apresentados nas mensagens são diferentes pela segunda vez porque a variável x é declarada como uma variável estática e retém o respectivo valor depois de executar Macro1 pela primeira vez.

regressar ao início

Repor um projecto para repor variáveis

Se pretender repor o valor para uma variável estática ou para uma variável de nível de módulo, clique no botão Repor na barra de ferramentas padrão ou clique em Repor no Run menu.

Se efectuar este procedimento para o projecto Macro1 e, em seguida, volte a executar Macro1, o valor da variável x é inicializado a zero e receberá a primeira mensagem:
o inicializar valor de x é 0
Para mais informações, clique no número de artigo seguinte para visualizar o artigo na Base de Dados de Conhecimento Microsoft
843145 Descrição dos procedimentos Sub do Excel no Visual Basic for Applications (matrizes)
sub procedimentos VBA variáveis var xl2007 xl2003 xl2000 xl2002 xl

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 843144 - Última Revisão: 07/25/2015 14:27:00 - Revisão: 6.0

Microsoft Office Excel 2007, Microsoft Excel 2002 Standard Edition, Microsoft Excel 2000 Standard Edition, Microsoft Excel 97 Standard Edition

  • kbvba kbprogramming kbinfo kbmt KB843144 KbMtpt
Comentários