Cela devrait fonctionner selon un autre post de débordement de pile, mais ce n'est pas le cas:
Dim arrWsNames As String() = {"Value1", "Value2"}
Quelqu'un peut-il me dire ce qui ne va pas?
arrays
vba
initialization
Kairan
la source
la source
Dim x() As Variant: x = [{"Value1", "Value2"}]
Dim x() As Variant: x = [{"Value1", "Value2"}]
SI vous utilisez des variables ... c'est-à-dire siv1 = "Value1"; v2 = "Value2"
, alorsx = [{v1, v2}]
générera une erreur, alors quex = [{"Value1", "Value2"}]
ce ne sera pas le cas.Réponses:
Essaye ça:
la source
myArray = Array("A", "B", 12345, "D"...)
Dim arrWsNames() As String: arrWsNames = Split("Value1,Value2", ",")
L'initialisation du commentaire ci-dessus ne fonctionne pas pour moi, car Array () crée un tableau de variantes et non de chaînesDans le cas spécifique d'un tableau String, vous pouvez initialiser le tableau à l'aide de la fonction Split car il renvoie un tableau String plutôt qu'un tableau Variant:
Cela vous permet d'éviter d'utiliser le type de données Variant et de conserver le type souhaité pour arrWsNames.
la source
Le problème ici est que la longueur de votre tableau n'est pas définie, et cela confond VBA si le tableau est explicitement défini comme une chaîne. Les variantes, cependant, semblent pouvoir être redimensionnées au besoin (car elles monopolisent beaucoup de mémoire et les gens les évitent généralement pour un tas de raisons).
Le code suivant fonctionne très bien, mais c'est un peu manuel par rapport à certains des autres langages disponibles:
la source
Ensuite, vous pouvez faire quelque chose de statique comme ceci:
Ou quelque chose d'itératif comme celui-ci:
la source
exemple:
résultat:
prendre plaisir
edit: j'ai supprimé la fonction de suppression de duplicatedtexts et j'ai rendu le code plus petit et plus facile à utiliser.
la source
variant
En utilisant
fonctionne mais
pas donc je m'assois à la variante
la source
Dim MyArray() as String
ou une matrice de taille fixe:Dim MyArray(1 to 10) as String
.