Chciałbym dodać wartość na końcu tablicy VBA. W jaki sposób mogę to zrobić? Nie udało mi się znaleźć prostego przykładu online. Oto pseudokod pokazujący, co chciałbym móc zrobić.
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
źródło
źródło
arr = Range.Value
?Odpowiedzi:
Spróbuj tego [EDYCJI]:
źródło
UBound(arr)
którearr
zostały zainicjowane przy pomocy jakiegoś dimenstionu, np.Dim arr(1) As Variant
PóźniejReDim Preserve
nie działa i mówi, że tablica jest już zwymiarowana? innymi słowy nie możesz zredukować tablicy w VBA?Collection
i przekonwertować ją później na tablicę. Jakieś inne sugestie?UBound(arr)
wymaga już zwymiarowanej tablicy. Wygląda na to, że zamiast tego muszę użyć kolekcji. W każdym razie dziękujęRozwiązałem problem za pomocą kolekcji i skopiowałem go później do tablicy.
źródło
Tak to robię, używając zmiennej Variant (tablica):
Lub, jeśli faktycznie potrzebujesz tablicy Warianty (aby przejść do właściwości takiej jak Shapes.Range, na przykład), możesz to zrobić w ten sposób:
źródło
Jeśli twój zakres jest pojedynczym wektorem, a jeśli w kolumnie liczba wierszy jest mniejsza niż 16 384, możesz użyć następującego kodu:
źródło
Dzięki. Robię to samo z 2 funkcjami, jeśli może pomóc innym noobom takim jak ja:
Kolekcja
Tablica 1D:
Stosowanie
źródło
Odpowiedź znajduje się w zaakceptowanej odpowiedzi w (bez problemu ReDim):
/programming/12663879/adding-values-to-variable-array-vba
W CV:
źródło
źródło