我正在为插入的复杂版本实现一个宏,该宏允许用户在将其插入工作表之前在选定范围内添加,删除或修改行。 但是我的某些单元格包含引用以下单元格的公式(例如A22引用A23),我唯一能想到的解决方案是逐行插入行,这样我就可以检查每一行是否保持不变,已修改或根本不属于初始解决方案。
此特定解决方案的问题是,我先插入A22,然后插入A23,Excel认为这类似于两个不同的插入。因此,当在23中插入新行时,在单元格A22中引用A23的公式将变为对A24的引用。
是否有一种方法可以“冻结”一对一的行中的公式?
我的第一个想法是使用所需的行和值创建一个“虚拟”范围,然后将该范围插入正确的位置,但是似乎范围只能是描述实际值的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()函数的调用次数与用户所需插入版本中的行数一样多。因此,如前所述,通常在插入情况下本不应该更改的公式会适应行的连续插入,这使它成为不太令人满意的解决方案。
关于我可以做些什么以使其达到我想要的方式的任何想法?
感谢您阅读,
玛丽