Dies sollte gemäß einem anderen Stapelüberlaufpfosten funktionieren, aber es ist nicht:
Dim arrWsNames As String() = {"Value1", "Value2"}
Kann mich jemand wissen lassen, was los ist?
arrays
vba
initialization
Kairan
quelle
quelle
Dim x() As Variant: x = [{"Value1", "Value2"}]
Dim x() As Variant: x = [{"Value1", "Value2"}]
wenn Sie Variablen verwenden ... dh wennv1 = "Value1"; v2 = "Value2"
, dannx = [{v1, v2}]
wird ein Fehler generiert, während diesx = [{"Value1", "Value2"}]
nicht der Fall ist .Antworten:
Versuche dies:
quelle
myArray = Array("A", "B", 12345, "D"...)
Dim arrWsNames() As String: arrWsNames = Split("Value1,Value2", ",")
Die Initialisierung aus dem obigen Kommentar funktioniert bei mir nicht, da Array () ein Array von Varianten und keine Zeichenfolgen erstelltIm speziellen Fall eines String-Arrays können Sie das Array mithilfe der Split-Funktion initialisieren, da es ein String-Array anstelle eines Variant-Arrays zurückgibt:
Auf diese Weise können Sie die Verwendung des Variant-Datentyps vermeiden und den gewünschten Typ für arrWsNames beibehalten.
quelle
Das Problem hierbei ist, dass die Länge Ihres Arrays undefiniert ist und dies VBA verwirrt, wenn das Array explizit als Zeichenfolge definiert ist. Varianten scheinen jedoch in der Lage zu sein, die Größe nach Bedarf zu ändern (weil sie eine Menge Speicher beanspruchen und die Leute sie im Allgemeinen aus einer Reihe von Gründen meiden).
Der folgende Code funktioniert einwandfrei, ist jedoch im Vergleich zu einigen anderen Sprachen etwas manuell:
quelle
Dann können Sie so etwas Statisches machen:
Oder so etwas iteratives:
quelle
Beispiel:
Ergebnis:
genießen
Bearbeiten: Ich habe die Funktion zum Löschen duplizierter Texte entfernt und den Code kleiner und benutzerfreundlicher gemacht.
quelle
variant
Verwenden von
funktioniert aber
nicht so setze ich mich zu Variant
quelle
Dim MyArray() as String
oder ein Array mit fester Größe :Dim MyArray(1 to 10) as String
.