VBA de variables et de Fonctions
J'ai une question sur les variables et les fonctions en VBA. Je ne vais pas comprendre exactement ce que le projet est dans l'espoir que la question initiale n'obtiendrez pas d'obscur. Je peux expliquer le projet, il sera utilisé pour si demandé.
Est-il possible de créer universelle des variables en VBA, de sorte que toutes les fonctions peuvent les utiliser?
Ex:
Dim testVariable As String
Dim newVariable As String
testVariable = "A"
Function testFunction() As String
....
newVariable = testVariable
End Function
Maintenant, testVariable (quand il est dans la fonction) est "Vide"
Merci,
Jesse Smothermon
OriginalL'auteur Jesse Smothermon | 2011-03-07
Vous devez vous connecter pour publier un commentaire.
Oui, mais les affectations de valeur doit se produire à l'intérieur de procédures:
Garder à l'esprit que c'est généralement une mauvaise pratique de programmation utilisent beaucoup de variables globales. Vous souhaitez limiter la portée de vos variables à l'endroit où ils seront utilisés. Pour plus d'informations sur le champ d'application en VBA voir cette base de connaissances Microsoft article: Portée des variables dans Visual Basic pour Applications
Smothermon - Une classe serait un choix logique. En outre, vous pouvez encapsuler l'initialisation des variables dans la classe elle-même.
@Thomas a dit.
OriginalL'auteur mwolfe02
Laisser les variables de tous les sous/fonction, de sorte qu'ils deviennent Globals
Ensuite, l'appel d'une fonction init avant d'exécuter n'importe quel code qui contient les paramètres par défaut, comme le code
OriginalL'auteur RichardTheKiwi
Oui, même si vous devez déclarer le champ d'application comme l'a déclaré mwolf02. Cependant, ce que vous ne pouvez pas le faire en VBA est de les remplir en dehors d'une fonction ou d'une procédure d'appel comme vous le pouvez avec VBScript.
En outre, si vous avez vraiment besoin de variables globales, vous devez dériver un schéma de nommage qui différencie les variables globales à partir déclarés localement variables (par exemple, les préfixer avec
g_
). Vous pouvez obtenir cette confusion scénario:La valeur de la
testVariable
sera "Foo" même siBar
a été appelé plus tard. En fait, il n'y a pas moyen de faire référence à la variable globaletestVariable
de l'intérieur de la Barre, puisqu'il a déclaré une variable locale avec le même nom.Cela souligne une autre Mauvaise Pratique que le VB famille de langues vous permettent de voyage vous-même, localement, les variables déclarées ne pas doivent avoir des noms uniques vis-à-vis des variables iwht champ d'application plus large. La plus étroite d'étendue variable "se trouve en face de" la plus large.
OriginalL'auteur Thomas
Alternativement, vous pouvez utiliser le constantes plutôt que variables.
Je crois qu'il correspond le mieux à votre question plutôt que de définir la valeur à l'intérieur d'une fonction spécifique.
Obs1.: Les constantes globales sont généralement stockées dans des lettres majuscules.
Obs2.: Vous ne pouvez pas définir un mondiale constante à l'intérieur d'une feuille de calcul de code. L'utilisation d'un module spécifique (mondial.bas, par exemple) pour le faire.
Rgds
OriginalL'auteur Tiago Cardoso
Très bref exemple:
Comme mentionné dans d'autres commentaires: globales sont une mauvaise pratique, et une valeur doit être affectée à l'intérieur de sub/fonctions. Ils devraient également être définis dès le début du module.
OriginalL'auteur MPękalski