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

使用单元格值赋值变量时出现Run-time error 91错误求助

解决VBA "Run-time error 91" 及单元格值存储问题

错误原因分析

  • 错误使用.Select方法赋值:.Select仅执行选中单元格的操作,返回布尔值,无法直接赋值给Range或Integer类型变量,这直接导致对象变量未正确初始化,触发Run-time error 91。
  • 变量类型不匹配:var1声明为Range,但实际需要存储的是单元格值,应改为String或Variant;var2-var4为Integer,需确保对应单元格内容是整数,否则会触发类型不匹配错误。
  • 依赖ActiveCell的操作不稳定:频繁激活、选中单元格效率低且易因环境变化出错,直接通过Range引用单元格更可靠。

修正后的代码(实现核心目标)

以下代码读取源表C列起始行的数据,在目标表中找到var1对应位置后,将var2-var4填入指定区域:

Sub XPTO()
    Dim var1 As String ' 根据实际数据类型调整,比如用Variant兼容多种类型
    Dim var2 As Integer
    Dim var3 As Integer
    Dim var4 As Integer
    Dim sourceRow As Long
    Dim targetSheet As Worksheet
    Dim findCell As Range
    
    ' 替换为你的目标工作表名称
    Set targetSheet = ThisWorkbook.Worksheets("目标工作表")
    
    sourceRow = 4 ' 从第4行开始读取数据
    ' 循环读取直到C列为空
    Do While ThisWorkbook.Worksheets("源工作表").Cells(sourceRow, "C").Value <> ""
        ' 直接读取单元格值,无需激活/选中
        var1 = ThisWorkbook.Worksheets("源工作表").Cells(sourceRow, "C").Value
        var2 = ThisWorkbook.Worksheets("源工作表").Cells(sourceRow, "E").Value ' 偏移2列对应E列
        var3 = ThisWorkbook.Worksheets("源工作表").Cells(sourceRow, "F").Value ' 偏移3列对应F列
        var4 = ThisWorkbook.Worksheets("源工作表").Cells(sourceRow, "G").Value ' 偏移4列对应G列
        
        ' 在目标表精确查找var1
        Set findCell = targetSheet.Cells.Find(What:=var1, LookIn:=xlValues, LookAt:=xlWhole)
        If Not findCell Is Nothing Then
            ' 找到后将值填入对应位置,可根据实际布局调整偏移量
            findCell.Offset(0, 1).Value = var2
            findCell.Offset(0, 2).Value = var3
            findCell.Offset(0, 3).Value = var4
        End If
        
        sourceRow = sourceRow + 1
    Loop
End Sub

关键说明

  • 替换代码中的"源工作表"和"目标工作表"为你实际的工作表名称。
  • 若var1存在重复项,可添加FindNext逻辑遍历所有匹配结果。
  • 若单元格数据非整数,将var2-var4的类型改为Variant或Double避免类型错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 04:43:12