Est-il possible de déclarer une variable publique dans vba et attribuer une valeur par défaut?
Je veux faire cela, mais il ne compile pas:
Public MyVariable as Integer = 123
Quelle est la meilleure façon d'atteindre cet objectif?
- Où est-ce VBA cours d'exécution? Excel, Access, Word...
- J'espérais un générique solution vba.
- Sont des variables globales considéré comme pas mal plus? J'étais parti pour un couple de semaines en Mai, donc j'ai peut-être raté quelque chose.
Vous devez vous connecter pour publier un commentaire.
.NET nous a gâtés 🙂
Votre déclaration n'est pas valide pour VBA.
Uniquement des constantes peut être donné une valeur lors de l'application de la charge. Vous déclarer comme ceci:
Voici un exemple de déclaration de l'un de mes projets vba:
Si vous êtes à la recherche de quelque chose où vous vous déclarez une variable publique et que vous souhaitez initialiser sa valeur, vous devez créer un sub Workbook_Open et de faire de votre initialisation.
Exemple:
Assurez-vous de déclarer le sub dans le Classeur de l'Objet lui-même:
Juste pour vous offrir un angle différent -
Je trouve que c'est pas une bonne idée de conserver les variables publiques entre les appels de fonction. Toutes les variables que vous devez utiliser doivent être stockés dans des sous-marins et de Fonctions, et passés en paramètres. Une fois que le code est fait en cours, vous ne devriez pas attendre le Projet VBA pour maintenir les valeurs de toutes les variables.
La raison pour cela est qu'il est juste un énorme tas de choses qui peuvent, par inadvertance, réinitialiser le Projet VBA lors de l'utilisation du classeur. Lorsque cela se produit, toutes les variables publiques obtenir remis à 0.
Si vous avez besoin d'une valeur à être stockés à l'extérieur de vos sous-titres et des fonctions, je vous recommandons vivement d'utiliser un caché de la feuille de calcul avec des plages nommées pour toute information qui doit persister.
Sûr que vous savez, mais si sa constante
const MyVariable as Integer = 123
sinon ta de la chance; la variable doit être associé à une valeur initiale ailleurs.Vous pouvez:
Dans un module de Classe puis à l'échelle mondiale le créer;
Donc
cMyStuff.myIntegerThing
est disponible immédiatement.Globals
et de définirProperty Get
à l'intérieur de ce module et il fonctionne comme un charme. Property Get PSIStartRow() as Integer PSIStartRow = Sheets("Prix franco à bord").Range("F1").Valeur de la Propriété Property Get PSIStartCell() as String PSIStartCell = "B" & PSIStartRow Fin de la PropriétéC'est ce que je fais quand j'ai besoin de Initialisé Constantes Globales:
1. Ajouter un module appelé
Globals
2. Ajouter les Propriétés de ce type dans le
Globals
module:Vous pouvez définir la variable, en Général, des Déclarations puis l'initialiser dans le premier événement qui se déclenche dans votre environnement.
Alternativement, vous pouvez créer vous-même une classe avec les propriétés et les initialiser dans l'Initialisation de la méthode
Comme dit ci-dessus, Pour déclarer global accessible variables que vous pouvez le faire à l'extérieur des fonctions précédées du mot-clé public.
Et, depuis l'affectation n'est PAS PERMIS en dehors des procédures, vous pouvez, par exemple, créer un sous-appelé InitGlobals qui initialise tes variables publiques, alors vous suffit d'appeler ce sous-programme au début de vos déclarations
Ici est un exemple:
Ça fait un moment, mais je crois que ça va être:
Public
déclarations doit être hors routines (Sub
ouFunction
), affectations de valeur de à l'intérieur.Il fait très longtemps, mais cela peut vous satisfaire :
C'est un peu moche car vous devez retaper le nom de la variable, mais c'est sur une seule ligne.