使用Excel VBA的Names.Add为工作表添加名称时RefersTo异常
使用Worksheets.Names.Add添加工作表级名称时RefersTo被异常修改的问题
在使用Worksheets("...").Names.Add方法添加工作表级名称时,出现RefersTo字符串被异常修改的问题,导致添加的名称指向无效。以下是详细测试说明及代码:
测试准备
- 创建新的xlsm文件,将下方VBA代码存入模块
- 创建名为"Test Wrksht 3"的工作表
-(可选)在该工作表的A1、A2单元格输入唯一字符串 - 选中"Test Wrksht 3"的A1单元格后运行宏
- 预期结果:添加关联该工作表的名称"WS3_A1",指向该表的$A$1;实际结果:名称关联工作表正常,但指向变为'Z1S1',不符合预期。
测试代码
Sub Test2_AddingName_RefersTo_WS3_A1() ' ' 测试准备 ' 1. 创建新xlsm文件,将此Sub存入模块 ' 2. 创建名为"Test Wrksht 3"的工作表 ' 3.(可选)在该工作表A1、A2单元格输入唯一字符串 ' 4. 选中"Test Wrksht 3"的A1单元格后运行此宏 ' 5. 预期:添加一个关联该工作表(而非工作簿)的名称,指向"Test Wrksht 3"的$A$1 ' 实际结果记录如下 ' ' Microsoft官方文档说明: ' Name.RefersTo 属性返回或设置名称所引用的公式,使用宏语言和A1样式表示法,以等号开头,可读写字符串。 ' ' ' 实际观察结果(见截图): ' 1. 名称"WS3_A1"成功添加 =正常 ' 2. 名称关联到工作表"Test Wrksht 3" =正常 ' 3. 名称指向变为'Z1S1' =异常;预期应为$A$1 ' ActiveWorkbook.Worksheets("Test Wrksht 3").Names.Add Name:="WS3_A1", _ RefersTo:="='Test Wrksht 3'!$A$1" ActiveWorkbook.Worksheets("Test Wrksht 3").Names("WS3_A1").Comment = "" End Sub
异常现象截图
Excel名称管理器中可见RefersTo字符串已被修改:
内容的提问来源于stack exchange,提问作者semaphor
相关产品推荐
相关产品推荐

