Eu escrevi o seguinte código:
Function find_results_idle()
Public iRaw As Integer
Public iColumn As Integer
iRaw = 1
iColumn = 1
E recebo a mensagem de erro:
"atributo inválido na sub ou função"
Você sabe o que eu fiz de errado?
Tentei usar em Global
vez de Public
, mas tive o mesmo problema.
Tentei declarar a função em si como `Pública, mas isso também não adiantou.
O que preciso fazer para criar a variável global?
excel
vba
scope
global-variables
Nimrod
fonte
fonte
Function
/Sub
, e não apenas do lado de fora: "As variáveis no nível do módulo podem ser declaradas com uma instrução Dim ou Private na parte superior do módulo acima da primeira definição de procedimento." (do escopo de variáveis no Visual Basic for Applications )Esta é uma pergunta sobre o escopo .
Se você deseja que apenas as variáveis durem a vida útil da função, use
Dim
(abreviação de Dimension ) dentro da função ou sub para declarar as variáveis:Uma variável global (como SLaks apontou) é declarada fora da função usando a
Public
palavra - chave Essa variável estará disponível durante a vida útil do seu aplicativo em execução. No caso do Excel, isso significa que as variáveis estarão disponíveis enquanto a pasta de trabalho em particular do Excel estiver aberta.Você também pode ter variáveis acessíveis apenas dentro de um módulo (ou classe) específico, declarando-as com a
Private
palavra - chave.Se você estiver criando um grande aplicativo e sentir necessidade de usar variáveis globais, recomendo a criação de um módulo separado apenas para suas variáveis globais. Isso deve ajudá-lo a acompanhá-los em um só lugar.
fonte
Para usar variáveis globais, insira novo módulo da interface do usuário do projeto VBA e declare variáveis usando
Global
fonte
Public
vs comGlobal
palavra - chave?Public
eGlobal
são quase idênticos em suas funções ..Global
vem de versões mais antigas do VB"A questão é realmente sobre o escopo, como o outro cara colocou.
Em resumo, considere este "módulo":
Você pode verificar esta referência do MSDN para obter mais informações sobre declaração de variáveis e esta outra questão de estouro de pilha para saber mais sobre como as variáveis ficam fora do escopo.
Duas outras coisas rápidas:
fonte
Se essa função estiver em um módulo / classe, você pode simplesmente escrevê-los fora da função, como tem
Global Scope
. Escopo Global significa que a variável pode ser acessada por outra função no mesmo módulo / classe (se você usardim
como declaração, usepublic
se desejar que as variáveis possam ser acessadas por todas as funções em todos os módulos):fonte
Crie um número inteiro público na Declaração Geral.
Então, em sua função, você pode aumentar seu valor a cada vez. Veja o exemplo (função para salvar anexos de um email como CSV).
fonte
Uma boa maneira de criar variáveis públicas / globais é tratar o formulário como um objeto de classe e declarar propriedades e usar Public Property Get [variable] para acessar a propriedade / método. Além disso, você pode precisar fazer referência ou passar uma referência ao módulo Formulário instanciado. Você receberá erros se chamar métodos para formulários / relatórios fechados.
Exemplo: passe Me.Form.Module.Parent para a sub / função que não está no formulário.
Portanto, no outro módulo, você seria capaz de acessar:
Se você usar a associação tardia como eu, sempre verifique valores e objetos nulos que são Nothing antes de tentar fazer qualquer processamento.
fonte
Também você pode usar -
Seu testado no office 2010
fonte