【问题标题】:Cannot vlookup range after name change in VBA在 VBA 中更改名称后无法查找范围
【发布时间】:2018-05-08 14:41:13
【问题描述】:

抱歉,如果有人以不同的方式提出这个问题,但我在任何地方都找不到这个问题......

我正在创建一个模型来分析测试数据,并且需要定期改变我的命名范围的大小,以适应每门课程中不同数量的学习者。我使用以下代码来执行此操作:

For i = 2 To 20

With ActiveWorkbook.Names("Question" & i)
        .RefersTo = "Pivot Data 1 - To Use!$A$" & QuestionStart & ":$F$" & (LearnerNumbers + QuestionStart)
        .Visible = True
End With

QuestionStart = QuestionStart + LearnerNumbers + 1

Next i

它成功地改变了我的范围的大小(耶!)但是当我在我的工作表中使用 vlookup(a4, Question2, 3, FALSE) 时,excel 返回 #VALUE!错误。

在使用 Name Manager 进行调查时,我发现“Value”属性设置为与“Refers To”相同,即“Pivot Data 1 - To Use!$A$22:$F$37”,而不是列出内容预期的范围内。

我不确定我的代码中遗漏了什么,但我们将不胜感激。

谢谢, 斯蒂芬

【问题讨论】:

    标签: excel vba named-ranges


    【解决方案1】:
    • 首先,即使在RefersTo 字符串中,= 符号也是必需的,因为它就是RefersTo。当你去名称管理器检查你在那里输入的内容时,它应该以= 符号开头。
    • 其次,工作表名称中有一个空格,您需要 用单引号将工作表名称明确括起来。

    所以你可以修改你的代码

    .RefersTo = "='Pivot Data 1 - To Use'!$A$" & QuestionStart & ":$F$" & (LearnerNumbers + QuestionStart)
    

    【讨论】:

    • 不幸的是,这并没有解决问题 - Value 属性仍然是范围,但现在设置在单引号内。不过谢谢你:)
    • 对我的回答做了进一步的修改
    【解决方案2】:

    您缺少前面的 = 符号,因此 Excel 认为您已将名称定义为不是引用范围的公式,而是作为一段文本

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-20
      • 2018-12-13
      • 2013-09-02
      • 1970-01-01
      • 1970-01-01
      • 2021-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多