2009-10-01 7 views
1

J'ai une fonction en VBA du typeUtilisation des constantes de tableau dans Excel fonction vba

Function MyFunc(Indx As Integer, k As Long, Rho As Range, A As Range) As Variant 
.... 
End Function 

qui est appelée en fonction définie par l'utilisateur à partir de la feuille de calcul Excel. En cas d'appel avec les deux derniers arguments étant une plage

Résultat = MyFunc (1,98, A1: A2, B1: B2))

cela fonctionne très bien. Cependant, lorsque je tente d'utiliser directement une constante de tableau au lieu d'une gamme

Résultat = MyFunc (1,98, {10,11}, {} 20,30)

il renvoie une Erreur #VALUE

Je pensais que je pouvais le réparer en redéfinissant les deux derniers arguments sous forme de tableaux de type double, mais cela ne fonctionne pas non plus

Function MyFunc(Indx As Integer, k As Long, Rho() As Double, A() As Double) As Variant 
.... 
End Function 

Est-ce que quelqu'un a une suggestion pour une solution flexible, ce qui serait permet l'une ou l'autre méthode d'appel: par plage, ainsi que par une constante de tableau?

+0

Y at-il des fonctions intégrées qui permettent soit une plage ou une matrice constante comme arguments? En fait, y a-t-il des fonctions intégrées qui autorisent simplement les constantes de tableau? (Je pensais qu'il y en avait, mais tous ceux que j'ai vérifiés utilisent des tableaux de paramètres à la place) – RBarryYoung

Répondre

3

Vous pouvez déclarer vos deux paramètres en tant que types Variant, puis dans votre fonction, vérifiez ce qui leur a été transmis en utilisant la fonction TypeName (varname).

+0

Sweeet! Merci - cela a fonctionné parfaitement. –

+0

Heureux de l'entendre :) – dendarii

-1

Peut-être pourriez-vous convertir votre tableau dans un objet Range tout en appelant la fonction.

Result = MyFunc(1,98,Range(10,11), Range(20,30))

+0

Merci pour la suggestion. Je viens d'essayer, et malheureusement, ça échoue. –

Questions connexes