Excel VBA: les Variantes dans la gamme des Variables

Une question sur les variantes. Im courant que les variantes dans Excel vba sont à la fois le type de données par défaut et aussi inefficace (du point de vue de la surexploitation dans les grandes applications). Cependant, j'ai régulièrement les utiliser pour stocker des données dans des tableaux qui ont de multiples types de données. Un projet en cours, je suis en train de travailler sur est essentiellement une tâche qui nécessite de grands optimistaion de très mauvais code c.7000 lignes) et il m'a fait penser; est-il un moyen de contourner cela?

À expliquer; le code fréquemment stocke les données dans des variables de tableau. Considérons donc un ensemble de données de 10 colonnes par 10000. Les colonnes sont de plusieurs différents types de données (string, double, des entiers, des dates,etc). En supposant que je veux stocker ces informations dans un tableau, j'avais l'habitude;

dim myDataSet(10,10000) as variant

Mais, à ma connaissance, dit que ce sera vraiment inefficace avec le code de l'évaluation de chaque élément afin de déterminer quel type de données il est (quand dans la pratique, je sais ce que j'attend). De Plus, je perds le contrôle que le dimensionnement des différents types de données me donne. Donc, (en supposant que les 6 premiers sont des chaînes de caractères, les 4 doubles pour la facilité d'expliquer le point), j'ai pu,

dim myDSstrings(6,10000) as string
dim myDSdoubles(4,10000) as double

Cela me redonne du contrôle et de l'efficacité, mais c'est aussi un peu maladroit (dans la pratique, les types sont mélangés et différent, et je finis par avoir un nombre impair d'éléments dans chacun d'eux, et finissent par avoir à leur attribuer individuellement dans le code plutôt que sur la masse). Donc, c'est un cas d';

myDSstrings(1,r) = cells(r,1)
myDSdoubles(2,r) = cells(r,2)
myDSstrings(2,r) = cells(r,3)
myDSstrings(3,r) = cells(r,4)
myDSdoubles(3,r) = cells(r,5)
..etc...

Qui est beaucoup plus laid que;

myDataSet(c,r) = cells(r,c)

Donc - ça m'a fait penser - je dois être en manque de quelque chose ici. Quelle est la meilleure façon de stocker une gamme de différents types de données? Ou, en supposant qu'il existe aucun moyen de le faire - ce qui serait le mieux codage pratique pour stocker un tableau de données mixtes-types?

JMax a une réponse à ce qui est probablement votre vraie question. Pour une discussion sur les avantages et les inconvénients lors de l'utilisation de variantes, voir ici: stackoverflow.com/q/5488314/58845
Vous pourriez faire un tableau de tableaux, chaque tableau figurant en étant d'un type spécifique. Vous devriez être en mesure d'indexer via BigArray(3)(4) par exemple. Dick commentaires s'appliquent toujours.
le type de données dans la variante de tableaux est ajusté automatiquement, je crois comprendre que si Excel peut déterminer le Type de données pour chaque élément, il va ajuster automatiquement comme Variante tableaux peuvent stocker des éléments de différents types

OriginalL'auteur Surferosa | 2011-09-22