Déclarer et Initialiser le Tableau de Chaîne en VBA
Cela devrait fonctionner selon un autre débordement de pile post mais ses pas:
Dim arrWsNames As String() = {"Value1", "Value2"}
Quelqu'un peut-il me faire savoir quel est le problème?
- Remarque: Les accolades de la syntaxe ne fonctionne PAS à l'intérieur de VBA, il est conçu pour VB.NET. Pour votre propre santé mentale, ne pas obtenir ces deux milieux confondus.
- Si vous utilisez Excel (et vous êtes content avec un tableau de type Variant), vous pouvez utiliser
Dim x() As Variant: x = [{"Value1", "Value2"}]
- Pour toute personne qui s'intéresse à ce commentaire, presque deux ans plus tard (comme moi). Il semble que VBA/Excel n'aime PAS la syntaxe
Dim x() As Variant: x = [{"Value1", "Value2"}]
SI vous utilisez des variables... c'est à dire siv1 = "Value1"; v2 = "Value2"
, puisx = [{v1, v2}]
va générer une erreur, alors quex = [{"Value1", "Value2"}]
ne sera pas.
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
myArray = Array("A", "B", 12345, "D"...)
Dim arrWsNames() As String: arrWsNames = Split("Value1,Value2", ",")
L'initialisation à partir d'un commentaire ci-dessus ne fonctionne pas pour moi, parce que Array() crée un Tableau de Variantes et de ne pas les ChaînesDim a() As String ... a = Array(...)
travaillé, mais il n'est pas -- c'est une erreur d'incompatibilité de Type... Malheureusement il n'y a pas de bonne façon de le faire en VBA.Dans le cas particulier d'un tableau de chaînes de vous pourrait initialiser le tableau à l'aide de la Fonction Split qu'elle retourne un tableau de chaînes plutôt qu'un tableau de type Variant:
Cela vous permet d'éviter d'utiliser le type de données Variant et de préserver le type souhaité pour arrWsNames.
Le problème ici est que la longueur de votre tableau n'est pas défini, et ce confond VBA si le tableau est explicitement définie comme une chaîne de caractères. Variantes, cependant, semblent être en mesure de redimensionner au besoin (parce qu'ils porc un tas de mémoire, et les gens en général éviter pour tout un tas de raisons).
Le code suivant fonctionne très bien, mais c'est un peu manuel par rapport à certains des autres langues:
Ensuite, vous pouvez faire quelque chose de statique comme ceci:
Ou quelque chose itératif comme ceci:
exemple:
résultat:
profiter de
edit:
j'ai enlevé le duplicatedtexts la suppression de fonctionnalité et faites le code plus compact et plus facile à utiliser.
variant
À l'aide de
fonctionne mais
n'a pas donc je sitck la Variante de la
Dim MyArray() as String
, ou un Tableau de taille fixe :Dim MyArray(1 to 10) as String
.