David想知道在添加或删除行时,是否有任何方式可以更改宏中的单元格引用,类似于公式对此类更改的响应方式?

当您引用宏中的单元格时(例如使用Range(“ B6”)),VBA将该引用视为绝对引用,这意味着它不会更改。

即使您添加或删除影响B6中信息现在所在位置的单元格,宏引用也将保持不变。

解决此问题的方法是不使用对宏中单元格的直接引用。而是依靠命名范围。在Excel中,为单元格B6定义一个名称(例如“ MyData”),然后在引用中使用该名称,如Range(“ MyData”)一样。这种方法之所以有效,是因为VBA查找名称以确定引用的单元格,并且Excel确保在添加或删除单元格时命名的范围引用保持最新。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(12919)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较旧菜单界面找到此技巧的版本: