Cela devrait fonctionner selon un autre post de stack overflow mais ce n'est pas le cas :
Dim arrWsNames As String() = {"Value1", "Value2"}
Quelqu'un peut-il me dire ce qui ne va pas ?
Cela devrait fonctionner selon un autre post de stack overflow mais ce n'est pas le cas :
Dim arrWsNames As String() = {"Value1", "Value2"}
Quelqu'un peut-il me dire ce qui ne va pas ?
Dans le cas spécifique d'un tableau de chaînes de caractères, vous pouvez initialiser le tableau à l'aide de la fonction Fonction de fractionnement car il renvoie un tableau de chaînes de caractères plutôt qu'un tableau de variables :
Dim arrWsNames() As String
arrWsNames = Split("Value1,Value2,Value3", ",")
Cela permet d'éviter d'utiliser le type de données Variant et de conserver le type souhaité pour arrWsNames.
Le problème est que la longueur de votre tableau n'est pas définie, ce qui perturbe VBA si le tableau est explicitement défini comme une chaîne de caractères. Les variantes, en revanche, semblent pouvoir être redimensionnées en fonction des besoins (parce qu'elles occupent beaucoup de mémoire et que les gens les évitent généralement pour toutes sortes de raisons).
Le code suivant fonctionne parfaitement, mais il est un peu manuel par rapport à d'autres langages existants :
Dim SomeArray(3) As String
SomeArray(0) = "Zero"
SomeArray(1) = "One"
SomeArray(2) = "Two"
SomeArray(3) = "Three"
Dim myStringArray() As String
*code*
redim myStringArray(size_of_your_array)
Vous pouvez alors faire quelque chose de statique comme ceci :
myStringArray = { item_1, item_2, ... }
Ou quelque chose d'itératif comme cela :
Dim x
For x = 0 To size_of_your_array
myStringArray(x) = data_source(x).Name
Next x
Public Function _
CreateTextArrayFromSourceTexts(ParamArray SourceTexts() As Variant) As String()
ReDim TargetTextArray(0 To UBound(SourceTexts)) As String
For SourceTextsCellNumber = 0 To UBound(SourceTexts)
TargetTextArray(SourceTextsCellNumber) = SourceTexts(SourceTextsCellNumber)
Next SourceTextsCellNumber
CreateTextArrayFromSourceTexts = TargetTextArray
End Function
Exemple :
Dim TT() As String
TT = CreateTextArrayFromSourceTexts("hi", "bye", "hi", "bcd", "bYe")
Résultat :
TT(0)="hi"
TT(1)="bye"
TT(2)="hi"
TT(3)="bcd"
TT(4)="bYe"
Bonne lecture !
Editer : J'ai supprimé la fonction de suppression des textes en double et j'ai rendu le code plus petit et plus facile à utiliser.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.