J'ai une feuille de calcul où l'user saisit différents détails sur une page d'input, puis appuie sur un button de calcul pour get ce qu'il veut. Les inputs sont des strings, des numbers et des dates.
Je veux save les inputs pour chaque calcul pour l'user afin que, à une date ultérieure, ils puissent entrer dans l'identifiant calc et ne pas avoir à louer les inputs.
Une façon simple de penser à cela était de copyr les inputs lorsque le calcul est exécuté sur une autre feuille avec les inputs dans une colonne avec l'identifiant calcique. Ensuite, enregistrez les inputs futures dans une colonne séparée et searchz la colonne correcte pour récupérer les inputs à une date ultérieure.
J'ai lu cette question – Quels sont les avantages de l'utilisation de Classes dans VBA? et pensé qu'il serait bon de faire une class appelée CalculationInputs qui avait tous les détails stockés dans un object. Cela peut être une victime excessive pour ce dont j'ai besoin, mais je voulais requestr comment d'autres personnes résoudraient cette tâche simple.
Vous pouvez utiliser Names
pour définir des variables dans la scope d'un classur ou d'une feuille de calcul. En règle générale, ceux-ci sont utilisés pour définir des plages, et plus spécifiquement des plages dynamics, mais elles peuvent également être utilisées pour stocker des valeurs statiques / constantes.
Pour créer un Name
manuellement, à partir du ruban Formule, nommer le gestionnaire:
Cliquez sur le button "Nouveau", puis donnez-lui un nom significatif:
Assurez-vous de mettre =""
dans le champ "Renvoyer à", si vous le videz, le nom ne sera pas créé.
Ensuite, lorsque vous appuyez sur OK, ou lorsque vous accédez au Gestionnaire des noms, vous verrez une list de tous les Names
disponibles dans le classur.
Vous pouvez les éditer via le gestionnaire de Names
, ce qui est probablement fastidieux, ou vous pouvez facilement utiliser VBA et les inputs pour les contrôler, par exemple:
Sub Test() ActiveWorkbook.Names("MyAddress").RefersTo = "734 Evergreen Terrace" End Sub
Sous test ()Sub Test() ActiveWorkbook.Names("MyAddress").RefersTo = "734 Evergreen Terrace" End Sub
ActiveWorkbook.Names ("MyAddress"). RefersTo = "734 Evergreen Terrace"Sub Test() ActiveWorkbook.Names("MyAddress").RefersTo = "734 Evergreen Terrace" End Sub
Vous pouvez faire quelque chose comme ceci pour capturer la valeur, notre utilisation d'autres macros ou du code d'entreprise user pour atsortingbuer la valeur au Name
.
Activeworkbook.Names("MyAddress").RefersTo = _ Application.Inputbox("please enter your address")
Activeworkbook.Names ("MyAddress"). RefersTo = _Activeworkbook.Names("MyAddress").RefersTo = _ Application.Inputbox("please enter your address")
Etc.
Si vous exécutez ceci, puis révisez le gestionnaire de noms, vous verrez que la valeur a été mise à jour:
Dans VBE, vous pouvez vous référer au nom comme:
Debug.Print ActiveWorkbook.Names("MyAddress").Value '# Prints in the immediate pane Range("A1") = ActiveWorkbook.Names("MyAddress").Value
Debug.Print ActiveWorkbook.Names ("MyAddress"). Valeur '# Imprime dans le volet immédiatDebug.Print ActiveWorkbook.Names("MyAddress").Value '# Prints in the immediate pane Range("A1") = ActiveWorkbook.Names("MyAddress").Value
Vous pouvez également accéder à ceux-ci (lire) à partir de la feuille de calcul, comme: