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

VBA中用If语句跨工作表复制内容遇Run-time error '13'问题求助

解决VBA类型不匹配错误及多条件判断写法

原代码的问题

你写的代码里有两个关键错误导致类型不匹配:

  • If条件写成了字符串"Vendors Comparison Answers! C3=SHM",VBA无法把这个文本解析成逻辑判断,自然会报错。正确的做法是引用工作表的单元格值来做比较。
  • 赋值语句里'SHM Vendor Comparisons'! E1 = SHM,既没正确引用工作表和单元格,而且SHM如果是字符串的话没加引号,VBA会把它当成变量,导致类型不匹配。

修正后的基础代码

Sub MoveData5()
    ' 检查指定单元格的值是否等于"SHM"
    If Sheets("Vendors Comparison Answers").Range("C3").Value = "SHM" Then
        ' 将"SHM"写入目标单元格
        Sheets("SHM Vendor Comparisons").Range("E1").Value = "SHM"
    End If
End Sub

多条件判断的写法

如果需要多个判断分支,可以根据需求选择以下两种写法:

用ElseIf的连续分支(互斥条件,同一时间只触发一个分支)

Sub MoveData5()
    Dim sourceVal As String
    ' 先把源单元格值存到变量里,避免重复引用,提升效率
    sourceVal = Sheets("Vendors Comparison Answers").Range("C3").Value
    
    If sourceVal = "SHM" Then
        Sheets("SHM Vendor Comparisons").Range("E1").Value = "SHM"
    ElseIf sourceVal = "ABC" Then
        Sheets("ABC Vendor Comparisons").Range("E1").Value = "ABC"
    ElseIf sourceVal = "XYZ" Then
        Sheets("XYZ Vendor Comparisons").Range("E1").Value = "XYZ"
    Else
        ' 当所有条件都不满足时执行的代码
        MsgBox "未匹配到指定供应商类型"
    End If
End Sub

用多个独立If(非互斥条件,多个条件可能同时触发)

Sub MoveData5()
    Dim sourceVal As String
    sourceVal = Sheets("Vendors Comparison Answers").Range("C3").Value
    
    If sourceVal = "SHM" Then
        Sheets("SHM Vendor Comparisons").Range("E1").Value = "SHM"
    End If
    
    If sourceVal = "ABC" Then
        Sheets("ABC Vendor Comparisons").Range("F1").Value = "ABC"
    End If
    
    ' 可以继续添加更多If判断
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 15:40:56