Stosując tę bardzo prostą funkcję:W języku VBA, jak zwrócić tablicę/lub pisać do komórek za pomocą funkcji?
Function WriteArray() as Variant
Dim array(0 To 2)
array(0) = "A"
array(1) = "B"
array(2) = "C"
WriteArray = array
End Function
Spodziewałem się zobaczyć w wyniku całą tablicę w arkuszu kalkulacyjnym Excel, ale nie o to chodzi: mam tylko pierwszy łańcuch. Wiem, że jest trick, aby pokazać całą tablicę w arkuszu kalkulacyjnym (wybierając zakres komórek z formułą + F2 + CTRL + SHIFT + ENTER), ale wolałbym, aby VBA poradził sobie z tym wszystkim.
Próbowałem również użyć zmiennej Application.Caller, aby pisać bezpośrednio w zasięgu "Caller", ale kod zepsuje się.
Bardzo dziękuję za pomoc!
EDIT: Oto kolejny kod próbowałem użyć:
Function WriteArray() As Variant
Dim arr(0 To 2)
arr(0) = "A"
arr(1) = "B"
arr(2) = "C"
WriteArray = arr
Dim StartRow, i As Integer
For i = 0 To UBound(arr)
Range("A" & i).Value = arr(i)
Next
End Function
Łamie w wierszu "Range (" A "& i) .Value = arr (i)". Czy mój Excel jest zepsuty ?!
W rzeczywistości to nie działa, kod VBA dzieli się na "Zakres (" A "i i + StartRow). Wartość = Mój obszar (i)" ... to także mój problem. Czy ten kod działa na twoim Excelu !? Korzystam z programu Excel 2003. –
Wszystko działało doskonale w programie Excel 2003. Zmień każdą "tablicę" w kodzie początkowym na inną nazwę zmiennej, która NIE jest słowem zastrzeżonym, takim jak AbcList lub czymś w tym rodzaju. – Eric
Mimo to łamie ... Używam dokładnie ten kod: Funkcja WriteArray() As Variant Dim ARR (0 do 2) arr (0) = "A" arr (1) = "B" ARR (2) = "C" WriteArray = arr Dim StartRow, i As Integer dla i = 0 Aby Ubound (ARR) Range ("A" & i) .Value = arr (i) Następny End Function W "Zasięgu (" A "i.) .Value = arr (i)", po prostu wychodzi z kodu, nawet bez rzucania błędów ... nie ma sensu dla mnie :( –