Защо range(cells(1,3),cells(ubound(arr)+1,3)) се променя така?
По подразбиране, първият елемент на масива има индекс 0, това е стойността на lbound. Когато определяте i = 1, попълването започва от втория елемент, който има индекс 1. Елементите на масива се попълват със стойностите, но индексите са отместени с 1 - първият елемент на масива arr(0) е празен и се записва в С1,
вторият елемент arr(1) се записва в С2. Масивът има 23 елемента, защото ubound = last\_row = 22.
Когато определяте i=0, тогава диапазонът включва един празен ред, това е последният елемент arr(22), но масивът също има 23 елемента.
Объркването идва от първия елемент на масива, който има индекс 0.
За да видите сама как се записват данните от масива, добавете инструкция
rng.select, след дефинирането на rng (set rng = ...)
Надявам се, че отговорих на въпроса. Разбира се, ако имате още въпроси, пишете.