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

插入含IFERROR与VLOOKUP的VBA公式时触发1004错误求助

VBA插入IFERROR+VLOOKUP公式时1004错误的解决方法

问题根源

  1. 循环语法错误:Else分支中For i = 2 TotalRow缺少关键字To,触发运行时错误。
  2. 公式分隔符不匹配:Excel公式参数分隔符由系统区域决定,英文区域用逗号(,),欧洲等区域用分号(;),原代码固定用分号可能与你的Excel设置冲突。
  3. 变量初始化缺失:未初始化DNumber,若未找到"DRAFT"工作表会导致后续代码报错。

修正后的代码

GerçekStok = 0

Set StokBook = ActiveWorkbook
Set BticinoBook = Workbooks("BTICINO.xlsm")

NoS = BticinoBook.Sheets.Count
DNumber = 0 ' 初始化变量,避免未找到工作表时出错

For k = 1 To NoS
    If BticinoBook.Sheets(k).Name = "DRAFT" Then
        DNumber = k
        Exit For
    End If
Next k

' 检查是否找到目标工作表
If DNumber = 0 Then
    MsgBox "未找到名为DRAFT的工作表"
    Exit Sub
End If

TotalRow = BticinoBook.Sheets(DNumber).Cells(Rows.Count, 4).End(xlUp).Row

' 根据你的Excel区域设置选择分隔符,英文区域用逗号,欧洲区域用分号
Dim formulaSeparator As String
formulaSeparator = "," ' 需调整为你Excel实际使用的分隔符

If GerçekStok = 0 Then
    For i = 2 To TotalRow
        BticinoBook.Sheets(DNumber).Cells(i, 2).Formula = "=IFERROR(VLOOKUP(D" & i & formulaSeparator & "'[" & StokBook.Name & "]Sheet2'!$A:$E" & formulaSeparator & "3" & formulaSeparator & "FALSE)," & Chr(34) & "0" & Chr(34) & ")"
    Next i
Else
    ' 修复For循环的To关键字
    For i = 2 To TotalRow
        BticinoBook.Sheets(DNumber).Cells(i, 2).Formula = "=IFERROR(VLOOKUP(D" & i & formulaSeparator & "'[" & StokBook.Name & "]Sheet2'!$A:$E" & formulaSeparator & "4" & formulaSeparator & "FALSE)," & Chr(34) & "0" & Chr(34) & ")"
    Next i
End If

额外优化说明

  • 增加了工作表存在性检查,避免因找不到"DRAFT"工作表导致后续操作失败。
  • 将公式分隔符设为变量,方便根据系统区域快速调整。
  • 使用.Formula属性赋值公式,符合VBA操作单元格公式的规范写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 06:20:28