Я реализую макрос для сложной версии вставки, который позволяет пользователю добавлять, удалять или изменять строки в выбранном диапазоне, прежде чем вставлять его в лист.
Но некоторые из моих ячеек содержат формулы, относящиеся к следующей ячейке (например, A22 относится к A23), и единственное решение, которое я мог придумать, это вставить строки одну за другой, чтобы я мог проверить каждую строку, если она не изменяется, не изменяется или не является частью исходного решения вообще.
Проблема с этим конкретным решением состоит в том, что я сначала вставляю A22, а затем A23, который Excel считает двумя различными вставками. Таким образом, формула, ссылающаяся на A23 в ячейке A22, превращается в ссылку на A24, когда новая строка вставляется в 23.
Есть ли способ "заморозить" формулы в построчно вставленных строках?
Моя первая идея состояла в том, чтобы создать «виртуальный» диапазон со строками и значениями, установленными так, как я хотел, и затем вставить этот диапазон в правильную позицию, но кажется, что диапазон может быть только объектом vba, который описывает фактический ансамбль ячеек, поэтому я не могу реализовать абстрактную версию моего диапазона.
Вот как будет выглядеть псевдокод:
Get the range selected from the worksheet
Get the informations about the range that the user actually wants to insert
For every row in the user's range
For every row in the initial range
If the rows are the same
Copy this row from the initial selection
Insert it
End For
If Nothing has been inserted yet (meaning the user wants to insert something new)
Insert a row
Fill it with the values wanted by the user
End If
End For
(исходя из этой конкретной проблемы, код моего макроса работает)
Как видите, цикл for () делает так, чтобы функция insert () вызывалась столько раз, сколько строк в требуемой для пользователя версии вставки. Итак, как было сказано ранее, формулы, которые не должны были изменяться в обычном случае вставки, здесь адаптируются к последовательным вставкам строк, что делает его не очень удовлетворительным решением.
Любые идеи о том, что я мог бы сделать, чтобы это работало так, как я хочу?
Спасибо за чтение,
Marie