Ich möchte am Ende eines VBA-Arrays einen Wert hinzufügen. Wie kann ich das machen? Ich konnte online kein einfaches Beispiel finden. Hier ist ein Pseudocode, der zeigt, was ich tun möchte.
Public Function toArray(range As range)
Dim arr() As Variant
For Each a In range.Cells
'how to add dynamically the value to end and increase the array?
arr(arr.count) = a.Value 'pseudo code
Next
toArray= Join(arr, ",")
End Function
microsoft-excel
vba
Megloff
quelle
quelle
arr = Range.Value
?Antworten:
Versuchen Sie dies [BEARBEITET]:
quelle
UBound(arr)
erfordert , dassarr
mit einiger dimenstion zB initialisiert wird ,Dim arr(1) As Variant
aber dann später dieReDim Preserve
versagt und sagt , dass das Array bereits dimensioniert ist? Mit anderen Worten, Sie können ein Array in VBA nicht reduzieren?Collection
und es anschließend in ein Array konvertieren sollte. Irgendwelche anderen Vorschläge?UBound(arr)
, ein bereits dimensioniertes Array erforderlich ist. Nun, es sieht so aus, als müsste ich stattdessen eine Sammlung verwenden.Ich habe das Problem mithilfe einer Sammlung gelöst und anschließend in ein Array kopiert.
quelle
So mache ich es mit einer Variant (Array) -Variablen:
Wenn Sie tatsächlich ein Array von Varianten benötigen (um beispielsweise an eine Eigenschaft wie Shapes.Range zu übergeben), können Sie dies folgendermaßen tun:
quelle
Wenn Ihr Bereich ein einzelner Vektor ist und die Anzahl der Zeilen in einer Spalte weniger als 16.384 beträgt, können Sie den folgenden Code verwenden:
quelle
Danke. Das Gleiche mit 2 Funktionen tun, wenn es anderen Noobs wie mir helfen kann:
Sammlung
1D Array:
Verwendungszweck
quelle
Die Antwort ist in der akzeptierten Antwort in (ohne das ReDim-Problem):
/programming/12663879/adding-values-to-variable-array-vba
Zusammenfassend:
quelle
quelle