首页 文章

如何使用VBA更改单元格值来保持命名范围公式

提问于
浏览
0

我在尝试调试VBA例程时发现了一个有趣的问题,该例程对一个范围内的工作表列表进行排序,然后重新绘制该范围内的边框 .

包含的范围在名称管理器中定义,公式如下所示

=Tables!$L$2:$L$22

发生的问题是,在执行工作表名称工作时,有时会删除单元格,有时会插入单元格 . 这会更改指定范围中的单元格地址值 . 因此,如果我删除了两个单元格并插入了一个单元格,则公式将更改为

=Tables!$L$2:$L$21

如果我碰巧插入第一个单元格(L2),则公式将更改为

=Tables!$L$3:$L$22

我确定问题可以使用 Headers 范围名称和偏移一个来解决,但我不知道如何在命名范围的公式中这样做,因为我已经尝试了很多方法并且无法正确 . 但我还需要结束范围地址是静态的 .

任何帮助赞赏 .

2 回答

  • 0

    要尝试的一件事是使用:

    =Indirect("Tables!$L$2:$L$22")
    

    而不是

    =Tables!$L$2:$L$22
    

    这是一个可接受的名称,但我不确定您是否会获得相同的功能 .

  • 0

    找到比使用静态标头范围的注释更好的方法 . 您只需使用 Headers 中的偏移功能定义整个范围 .

    =OFFSET(AllSheetsHeader,1,0,21,1)
    

    其中1,0,21,1是从 Headers 偏移1行,0列偏移,21是行高,1只是那一列

相关问题