使用整数变量执行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
相关产品推荐
相关产品推荐

