Utilisation Personnelle.xlsb fonction dans le nouveau classeur?
J'ai cherché partout et je sais comment appeler une fonction du Personnel.xlsb à partir d'une macro VB, mais comment puis-je appeler la fonction à utiliser dans un nouveau classeur?
Voici ma fonction, enregistré dans "Module1" dans mon Personal.xlsb
:
Public Function GetColumnLetter(colNum As Integer) As String
Dim d As Integer
Dim m As Integer
Dim name As String
d = colNum
name = ""
Do While (d > 0)
m = (d - 1) Mod 26
name = Chr(65 + m) + name
d = Int((d - m) / 26)
Loop
GetColumnLetter= name
End Function
J'ai créé un nouveau classeur et je pensais que je pouvais l'appeler simplement en =getcolumnletter(1)
, mais la fonction n'est pas "remplir" lorsque je commence à taper =...
Suis-je surplombant quelque chose?? Comment puis-je utiliser cette fonction dans d'autres classeurs, sans VBA?
Merci pour les conseils!!!
Vous devez vous connecter pour publier un commentaire.
Ah, c'était plus simple que je ne le pensais. Utilisez simplement le nom du classeur avant de la macro - donc
=Personal.xlsb![macroname]
. Donc dans mon cas, je viens de mettre cela dans la cellule:=Personal.xlsb!GetColumnLetter(2)
de retour "B".Public Function
, je n'aurais naturellement pense que c'est disponible dans tous les classeurs sans avoir spécialement de l'appeler avec=Personal.xlsb![whatever]
.Public
signifie alors pour les fonctions - j'ai pensé qu'il voulait juste dire qu'il est disponible) pour voir dans la liste des macros (par opposition àPrivate ....
, et B) est disponible au format Excel.=Personal.xlsb![whatever]
syntaxe, je ne peux pas le faire fonctionner. Ceci de la page indique la même chose, mais ici, la syntaxe estApplication.Run "Personal.xlsb![whatever]"
et sur les sous-marins plutôt que de Fonctions (est-ce une distinction importante à faire dans ce cas?)=SUM(1,2)
, ou=VLOOKUP()
? Ou êtes-vous appeler votre personnel macro VBA?Comme vous l'avez déjà découvert, vous pouvez ajouter un préfixe de la fonction avec le nom de fichier
Personal.xlsb!
. Mais notez aussi qu'il y a deux options disponibles si vous voulez éviter la préfixation de vos fonctions:Option 1
Créer un référence dans chaque classeur qui va appeler la fonction. Ouvrez le classeur dans lequel vous voulez utiliser la fonction et aller à l'Éditeur VBA. Sur le menu, cliquez sur
Tools --> References...
. Dans la boîte de dialogue qui s'affiche, cochez la case du projet VBA de laPersonal.xlsb
. Notez qu'il sera répertorié avec son nom de projet ("VBAproject", sauf si vous avez changé le nom par défaut) plutôt que le nom de fichier; si d'autres classeurs sont ouverts il pourrait y avoir plus d'une entrée avec le nom par défaut "VBAproject", de sorte que vous pouvez renommer d'abord. Plus de détails peuvent être trouvés dans cet article, qui a été publié après l'OP: http://www.myonlinetraininghub.com/creating-a-reference-to-personal-xlsb-for-user-defined-functions-udfsOption 2
Si vous voulez vraiment un usage général UDF, toujours disponible, sans préfixe ou de référence, vous pouvez l'installer dans un complément. Ceci est fait par l'enregistrement du fichier avec l'UDF comme un
.xlam
fichier (ce serait évidemment un fichier séparé quepersonal.xlsb
.) Plus de détails dans un autre article de la même source: http://www.myonlinetraininghub.com/create-an-excel-add-in-for-user-defined-functions-udfs