Защо Range(cells(1,3),cells(Ubound(Arr)+1,3)) се променя така?

Microsoft Excel Електронни таблици Microsoft 365 Excel VBA Програмиране VBA за Excel

Когато попълвам масива с оператор For i = 1 to last_row..., след това при копирането в колона С, започва да го попълва от клетка С2. Въпреки че за начало на Range е зададено cells(1,3).

Знам, че ако попълня масива с оператор For i = 0 to last_row..., след това се попълва коректно от клетка С1:

!

Само че ми убягва логическото обяснение за това. Може ли да ми разясните защо става така? Благодаря предварително!

По подразбиране, първият елемент на масива има индекс 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 = ...) Надявам се, че отговорих на въпроса. Разбира се, ако имате още въпроси, пишете.

Сега вече ми се разясни. Благодаря за отговора!


Вашият отговор

Научи компютърните програми онлайн от топ експертите на България
Регистрацията в АУЛА ви дава:
  • 20 безплатни урока
  • Трикове и тънкости за софтуера
  • Отговори на вашите въпроси
  • Регистрация