Appeler une fonction par son nom grâce à la fonction callbyname

Appeler une fonction par son nom grâce à la fonction callbyname

Introduction

Ce tutoriel permet d'appeler une fonction au moment de l'exécution on lui passant comme argument le nom de la fonction en chaine de caractère.
La fonction CallByName de la bibliothèque VBA permet au moment de l'exécution d'appeler une fonction par son nom.

Important : La fonction doit être une méthode ou une propriété d'un objet. Donc les fonctions d'un module de base ne peuvent être appelées par cette méthode

L'appel de la fonction callbyname

Function CallByName(Object As Object, ProcName As String, CallType As VbCallType, Args() As Variant) 

La fonction retourne le résultat de la fonction appelée

Les arguments

La fonction prend comme arguments

  • Object : désigne l'objet exposant la propriété ou la méthode
  • Procname : chaine de caractères contenant le nom de la propriété ou de la méthode sur l'objet
  • Calltype : constantes prédéfinies
  • Vbmetod(=1) : pour exécuter une méthode
  • vbGet(=2) : pour récupérer la valeur d'une propriété
  • vbLet(=4) : pour affecter une valeur à une propriété
  • vbset(=8) : pour affecter un objet à un propriété
  • Args : ParamArray. (Optionnel) Tableau de paramètres contenant les arguments à passer à la propriété ou la méthode appelée

Exemple

Définissez une classe « Classe1 » avec ses membres

Public Property get Maprop1 () as ...
    '.....
End property

Public property let MaProp1 (newvalue as ...)
    '......
End property

Public function MaMethode (arg1 as ..., arg2 as..., ..) as ...
    '...
End function

Public Property get MaProp2 () as classe 2
    '.....
End property

Public Property set MaProp2 (arg as Classe2)

End property

Dim Maclasse1 as new Classe1
Dim MaClasse2 as Classe2
Dim ValueProp as .
 
ValueProp  = Callbyname (MaClasse1, vbget, MaProp1)
`Equivalent ValueProp = MaClasse1.MaProp1

Callbyname  MaClasse1, vblet, maprop1, newValue
`Equivalent MaClasse1.MaProp1 = newValue

(set) Result = Callbyname (maclasse1,vbmethod , MaMethode; argvalue1,argvalue2,...)
`Equivalent (Set) result Maclasse1.MaMethod (argvalue1,argvlaue2,...)

Set Maclasse2 = Callbyname (Maclasse1, vbget, MaProp2)
`Equivalent Set maclasse2 =maclasse1.maprop1

Callbyname  MaClasse1, vbset, MaProp2, MaClasse2
`Equivalent set MaClasse1.MaProp2 =MaClasse2
Ce document intitulé « Appeler une fonction par son nom grâce à la fonction callbyname » issu de CodeS SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Rejoignez-nous