如何解决#NAME? VBA 尝试使用函数中的变量设置单元格值时出错

How to resolve #NAME? error in VBA when attempting to set a cell value using a variable in the function

我正在为 excel 中的表单控件按钮构建一个名为 Update 的简单宏。按下按钮时,我希望 vlookup 在按钮的 sheet 中执行(名为 "Checker"),针对 $B$7:$同一工作簿中另一个名为 "All Account Log" 的 sheet 范围内的 E$1048576 范围。

此 vlookup 公式应填充在 Checker 的第 5 列 ("E") 的第 5-105 行中,并且对于每一行,应从 B 列获取输入检查 所有帐户日志 的范围。这是我目前的代码:

Sub Update()

Dim Month As String
Dim i As Integer

Month = Cells(2, 2).Value

For i = 5 To 105
    Cells(i, 5).Value = "=IFERROR(VLOOKUP($B" & i & ",'All Account Log'!$B:$E48576,4,0)," & Month & ")"

Next i

End Sub

如果vlookup成功,E列每一行的公式应该拉回相应列的数据。如果 vlookup 未找到匹配项,则公式应从 Cell(2,2) 复制值,这是用户输入的字符串 - 月份的名称。当我 运行 宏时,vlookup 会执行我想要的操作,但是,当它找不到匹配项时,生成的公式显示为“#NAME?”。我该怎么做才能解决这个问题?我感觉我的公式如何引用 Month 变量(Cell(2,2) 的值)存在一些语法问题,但我无法弄清楚错误是什么。

在 运行 启用宏并单击带有#NAME 的单元格之一之后?结果,公式栏中的公式为: =IFERROR(VLOOKUP($B5,'All Account Log'!$B$7:$E$1048576,4,0),Jan)

这里我输入 "Jan" 作为月份名称,所以我希望结果是 "Jan" 而不是“#NAME?”感谢您的想法!

你真的想要:

=IFERROR(VLOOKUP($B5,'All Account Log'!$B:$E48576,4,0),"Jan")

而不是:

=IFERROR(VLOOKUP($B5,'All Account Log'!$B:$E48576,4,0),Jan)

所以使用:

Month = """" & Cells(2, 2).Value & """"

在 VBA 代码中。