在 VBA 中更改名称后无法查找范围

Cannot vlookup range after name change in VBA

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

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

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 returns #VALUE!错误。

在与名称管理器的调查中,我发现 "Value" 属性 设置为与 "Refers To" 相同,即 "Pivot Data 1 - To Use!$A:$F" 而不是列出的内容范围符合预期。

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

谢谢, 斯蒂芬

  • 首先,即使在 RefersTo 字符串中,= 符号也是必需的,因为它就是 RefersTo。当你去名称管理器检查你在那里输入的内容时,它应该以 = 符号开头。
  • 其次,sheet 名称中有一个 space,您需要 明确地将 sheet 名称括在单引号中。

所以你可以修改你的代码为

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

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