在 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 认为您定义的名称不是引用范围的公式,而是一段文本
如果有人以不同的方式提出这个问题,我深表歉意,但我在任何地方都找不到这个问题...
我正在创建一个模型来分析测试数据,并且需要定期改变命名范围的大小,以考虑每门课程的不同学习者数量。我使用以下代码来执行此操作:
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 认为您定义的名称不是引用范围的公式,而是一段文本