J'ai écrit le code suivant :
Function find_results_idle()
Public iRaw As Integer
Public iColumn As Integer
iRaw = 1
iColumn = 1
Et j'obtiens le message d'erreur :
"attribut invalide dans Sub ou Fonction" ;
Savez-vous ce que j'ai fait de mal ?
J'ai essayé d'utiliser Global
au lieu de Public
, mais j'ai eu le même problème.
J'ai essayé de déclarer la fonction elle-même en tant que Public
, mais cela n'a rien donné non plus.
Que dois-je faire pour créer la variable globale ?
Ceci est une question sur scope.
Si vous souhaitez que les variables ne durent que le temps de la fonction, utilisez Dim
(abréviation de Dimension) à l'intérieur de la fonction ou du sous-programme pour déclarer les variables :
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
Une variable globale (comme SLaks l'a souligné) est déclarée en dehors de la fonction en utilisant le mot-clé Public
. Cette variable sera disponible pendant toute la durée de vie de votre application. Dans le cas d'Excel, cela signifie que les variables seront disponibles aussi longtemps que ce classeur Excel particulier sera ouvert.
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.
Vous pouvez également avoir des variables qui ne sont accessibles qu'à l'intérieur d'un module (ou d'une classe) particulier en les déclarant avec le mot clé Private
.
Si vous construisez une grosse application et que vous ressentez le besoin d'utiliser des variables globales, je vous recommande de créer un module séparé juste pour vos variables globales. Cela devrait vous aider à en garder la trace en un seul endroit.