在VBA

时间:2017-11-24 14:53:40

标签: excel vba named-ranges

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

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

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

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

我不确定我的代码中省略了什么,但我们非常感谢任何帮助。

谢谢, 斯蒂芬

2 个答案:

答案 0 :(得分:0)

  • 首先,即使在RefersTo字符串中,也需要=符号,因为它是RefersTo。当你去名称管理员检查你在那里输入的内容时,它应该以{{1​​}}标志开头。
  • 其次,您需要在工作表名称中添加空格 明确将表单名称括在单引号中。

因此您可以将代码修改为

=

答案 1 :(得分:0)

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