Wiem, że możesz z łatwością wziąć szereg komórek i umieścić je w Variant Array, ale chcę pracować z tablicą ciągów (ponieważ jest jednowymiarowa i zajmuje mniej pamięci niż tablica wariantów).Excel VBA: Range to String Array w 1 kroku
Czy istnieje sposób automatycznego przekonwertowania zakresu na tablicę ciągów znaków?
W tej chwili używam funkcji, która zajmie zakres i zapisze wartości w tablicy wariantów, a następnie zamieni tablicę wariantów na tablicę ciągów znaków. Działa dobrze, ale szukam sposobu, aby przejść bezpośrednio z zakresu do tablicy ciągów. Każda pomoc będzie bardzo ceniona.
Function RangeToArray(ByVal my_range As Range) As String()
Dim vArray As Variant
Dim sArray() As String
Dim i As Long
vArray = my_range.Value
ReDim sArray(1 To UBound(vArray))
For i = 1 To UBound(vArray)
sArray(i) = vArray(i, 1)
Next
RangeToArray = sArray()
End Function
UPDATE: To wygląda jak nie ma sposobu, aby pominąć etap rzucania danych do zmiennej tablicy pierwszy przed przekształceniem go do jednego-wymiarowej tablicy ciągów. Wstyd, jeśli to prawda (nawet jeśli nie wymaga to dużego wysiłku, lubię ultra-optymalizację, więc miałem nadzieję, że istnieje sposób na pominięcie tego kroku). Za kilka dni zamknę to pytanie, jeśli nie pojawi się żadne rozwiązanie. Dzięki za pomocne komentarze, chłopaki!
UPDATE2: Odpowiedź należy do Simona, który włożył wielki wysiłek (podobnie jak wszyscy inni) i ostatecznie wskazał, że nie da się przejść z zasięgu do szyku ciągłego za jednym razem. Dziękuję wszystkim.
Istnieje bezpośrednie procedury manipulacji pamięci można uzyskać dostęp w VBA stworzyć bardzo wydajną funkcję konwertowania tablicę. Nie mam czasu ani umiejętności, aby go ulepszyć, chociaż w mojej głównej aplikacji mam kod odwzorowania pamięci, więc jest tam i pomoże ci stworzyć niezwykle wydajny program do kopiowania tablic. –
Łącze do odpowiedzi, którą dałem z niektórymi funkcjami pamięci w nim zawartymi, jest [tutaj] (http://superuser.com/questions/196565/how-to-merge-data-from-two-drugie-strukturalne-excel -files/196577 # 196577). –
Chociaż nie byłem w stanie zastosować informacji w twoich linkach do tego konkretnego problemu, był to dobry odczyt i interesujący. Dzięki za link. – aevanko