Excel VBA appel de la fonction avec le nom de la variable
Je vais essayer d'appeler une fonction avec un nom de variable qui est généré lors de l'exécution basée sur une zone de liste modifiable valeur. C'est simple dans la plupart des langues, mais je n'arrive pas à le comprendre, à en VBA Excel, je suppose que c'est parce que je ne comprends pas vraiment comment le compilateur travaille. J'ai trouvé plusieurs posts qui en sont proches, mais ne semblent pas tout à fait faire l'affaire. Le code ci-dessous est faux, mais devrait donner une idée de ce que je veux.
Grâce
Sub main()
'run formatting macros for each institution on format button click
Dim fn As String
Dim x As Boolean
'create format function name from CB value
fn = "format_" & CBinst.Value
'run function that returns bool
x = Eval(fn)
...
End Sub
OriginalL'auteur BWG | 2011-09-13
Vous devez vous connecter pour publier un commentaire.
CallByName
est ce que vous aurez besoin pour accomplir la tâche.exemple:
Code dans la feuille Sheet1
Code est Module1 (module bas)
L'exécution de la méthode
testSum
appelle la méthodeSum
en utilisant le nom de la méthode donnée dans une variable de chaîne, en passant par 2 paramètres (1 et 2). La valeur de retour de l'appel à la fonction est retourné en tant que sortie deCallByName
.Excellent, merci!
Salut.. si je ne veux pas que la "somme" de la fonction dans la feuille "Sheet1" .. mais dire dans Module1. Comment puis-je appeler Module1 "somme" de la fonction à l'aide de CallByName. Cela ne semble pas fonctionner. Veuillez informer.
Ce n'est pas possible. Vous pouvez utiliser
Application.Run
et passer le nom de la méthode, les paramètres à elle.Merci.. qui fonctionne très bien!. N'Application.Run a aucun inconvénient par rapport à CallByName.. comme c'est lent, moins efficace, ou quelque chose comme ça.
OriginalL'auteur shahkalpesh
Ci-dessus fonctionne, mais pas avec un grand nombre de noms de
Utiliser L'Application.Exécuter(MacroName, Paramètres)
Vous avez peut être sûr qu'il existe une macro mais c'est mieux que le ci-dessus comme il n'y a pas d'instruction select.
OriginalL'auteur Adam Law
Vous devez écrire une fonction qui accepte la CB comme valeur d'un paramètre, puis utilise un select pour appeler le formatage de la fonction.
Quelque chose de semblable à ce
OriginalL'auteur Pepe
À l'égard de ma réponse ci-dessus, vous pouvez également trouver utile de vérifier si la macro existe
OriginalL'auteur Adam Law