Eu escrevi o seguinte código:
Function find_results_idle()
Public iRaw As Integer
Public iColumn As Integer
iRaw = 1
iColumn = 1
E eu recebo a mensagem de erro:
" atributo inválido em Sub ou Função"
Sabe o que eu fiz de errado?
Eu tentei usar "Global" em vez de "Public", mas tive o mesmo problema.
Eu tentei declarar a função em si como 'pública, mas isso também não fez bem nenhum.
O que eu preciso fazer para criar a variável global?
Esta é uma pergunta sobre <a href="http://en.wikipedia.org/wiki/Scope_(computer_science)""**scope**.
Se você quiser que as variáveis durem apenas a vida útil da função, utilize Dim
(abreviação para Dimensão) dentro da função ou subfunção para declarar as variáveis:
Function AddSomeNumbers() As Integer
Dim intA As Integer
Dim intB As Integer
intA = 2
intB = 3
AddSomeNumbers = intA + intB
End Function
'intA and intB are no longer available since the function ended
Uma variável global (como SLaks apontou) é declarada fora da função utilizando a palavra-chave `Público'. Esta variável estará disponível durante a vida da sua aplicação em execução. No caso do Excel, isto significa que as variáveis estarão disponíveis enquanto aquela pasta de trabalho específica do Excel estiver aberta.
Public intA As Integer
Private intB As Integer
Function AddSomeNumbers() As Integer
intA = 2
intB = 3
AddSomeNumbers = intA + intB
End Function
'intA and intB are still both available. However, because intA is public, '
'it can also be referenced from code in other modules. Because intB is private,'
'it will be hidden from other modules.
Você também pode ter variáveis que só são acessíveis dentro de um determinado módulo (ou classe), declarando-as com a palavra-chave `Private'.
Se você'estiver construindo uma grande aplicação e sentir a necessidade de usar variáveis globais, eu recomendaria a criação de um módulo separado apenas para suas variáveis globais. Isto deve ajudá-lo a manter o controle delas em um só lugar.