如何在Excel VBA中修改命名范围指向的目标单元格
实现修改命名范围指向的VBA语法
常规写法(适配全局工作簿级命名范围)
大部分场景下你创建的命名范围都是工作簿全局生效的,直接用以下单行代码即可完成修改:ThisWorkbook.Names("myEOR").RefersTo = "=Sheet1!A160"
- 注意把代码里的
Sheet1替换为你A160单元格实际所属的工作表名称,避免多工作表重名单元格指向错误。
适配工作表级命名范围的写法
如果你在创建命名范围时指定了范围为单个工作表,使用以下代码修改:Worksheets("你的工作表名称").Names("myEOR").RefersTo = "=A160"
- 可以先打开Excel「公式」选项卡→「名称管理器」,查看
myEOR的「范围」属性,确认是工作簿级别还是工作表级别。
动态偏移写法(无需硬编码单元格位置)
如果需要从当前myEOR指向的A150位置向下偏移10行到A160,可以用更灵活的写法,后续调整偏移量时不用修改单元格参数:
' 获取命名范围当前指向的单元格 Dim eorRng As Range Set eorRng = ThisWorkbook.Names("myEOR").RefersToRange ' 向下偏移10行(行偏移参数为正,列偏移为0) ThisWorkbook.Names("myEOR").RefersTo = eorRng.Offset(10, 0)
验证修改结果
修改完成后可以用以下代码在立即窗口打印当前指向的单元格地址,确认修改生效:Debug.Print ThisWorkbook.Names("myEOR").RefersToRange.Address
内容的提问来源于stack exchange,提问作者Razor
相关产品推荐
相关产品推荐

