You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用整数变量执行VLOOKUP时触发运行时错误1004求助

排查VBA中VLOOKUP触发的运行时错误1004

嘿,我帮你捋捋这个触发运行时错误1004的问题——看了你的代码,核心问题出在VLOOKUP公式的FormulaR1C1写法上,有几个语法细节没处理对:

1. R1C1范围的格式错误

你写的SAP!R1C1:R " & SLRow & " C70里,R和行号SLRow之间、C70前面多了空格,Excel根本识别不了这种格式的单元格范围。正确的写法应该是把行号、列号直接跟在R/C后面,完全不需要空格:

"SAP!R1C1:R" & SLRow & "C70"

2. 变量StartColumn没有正确嵌入公式

你直接把StartColumn写在公式字符串里,Excel会把它当成普通文本,而不是你赋值的整数变量。得用&把它和公式的其他部分拼接起来,这样VBA才会把变量值代入进去:

"=VLOOKUP(RC[-3],SAP!R1C1:R" & SLRow & "C70," & StartColumn & ",0)"

额外需要排查的点

除了语法问题,还有几个地方也可能导致这个错误,你可以顺便检查下:

  • 确认SAP工作表确实在tmpWB这个工作簿里——因为你是在tmpWB的第2个工作表写公式,默认会引用当前工作簿的表,如果SAP在别的工作簿,得加上工作簿名称,比如[SAPData.xlsx]SAP!
  • 看看SLRow的值是不是有效的行号(比如不能小于1,也不能超过Excel的最大行限制)
  • 确保StartColumn是1到70之间的整数(毕竟你的查找范围是到第70列C70,列号超出这个范围的话也会报错)

修改后的代码行

把原来的公式行替换成下面这段,应该就能解决1004错误了:

.Range("D2:D" & empLR).FormulaR1C1 = "=VLOOKUP(RC[-3],SAP!R1C1:R" & SLRow & "C70," & StartColumn & ",0)"

内容的提问来源于stack exchange,提问作者Rafael Osipov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:07:21