Fonction de tableau dans Excel VBA
J'ai une fonction en VBA qui génère un tableau de chaînes de caractères. Il fonctionne très bien lorsqu'il est appelé à partir d'une autre fonction VBA, mais pas lorsqu'il est appelé à partir de la feuille de calcul.
Voici comment il devrait être utilisé:
- sélectionnez A1:A3
- écrire dans la barre de formule
=Test()
, puis appuyezCtrl-Shift-Enter
pour en faire une fonction de tableau - A1 doit contenir
A
, A2 doit contenirB
, et A3 doit contenirC
Quand j'ai essayer ceci, il met A
dans les trois cellules de la matrice. Comment puis-je obtenir les données renvoyées par Test
dans les différentes cellules du tableau?
Pour ceux qui voudrais le voir, voici le code de la fonction. Gardez à l'esprit, la fonction fonctionne très bien lorsqu'il est appelé à d'autres fonctions.
Function Test() As String()
Dim a(1 To 3) As String
a(1) = "A"
a(2) = "B"
a(3) = "C"
Test = a
End Function
OriginalL'auteur Joe | 2012-04-24
Vous devez vous connecter pour publier un commentaire.
Vous fonction fonctionne très bien si vous transposer les données. Pour ce faire, vous avez besoin
Variant()
au lieu deString()
:Malheureusement, il ne semble pas être un simple moyen automatique pour Excel pour remplir le tableau, à l'horizontale ou à la verticale. Il pourrait y avoir quelques trucs là, cependant.
Yup, comme @andy holaday points de, Puce Pearson a également compris l'horizontale/verticale dilemme.
Plutôt que d'utiliser
Transpose
dans l'UDF, vous pouvez utiliserTranspose
en vous de la formule de tableau lorsque vous voulez une verticale d'entrée de jeu, ou pas, si vous le voulez horizintalOriginalL'auteur Mike T
Vous pourriez vouloir vérifier Puce de Pearson des conseils sur le retour un tableau à partir d'un fichier UDF.
C'est ma première intervention ici. J'espère que ce n'est pas inappropriée.
OriginalL'auteur andy holaday
Je trouve ça plus simple de toujours travailler avec le 2-dimensions des tableaux, alors vous n'avez pas besoin de transposer etc
OriginalL'auteur Charles Williams
Viens de comprendre le problème, la première dimension d'un tableau allant de VBA pour Excel est horizontale, et non à la verticale. Pour voir la sortie de
Test
, mettre la fonction array=Test()
dans A1:C1 (pas A1:A3).OriginalL'auteur Joe