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

Excel VBA提交按钮代码出现Run-time error 91问题求助

解决Excel VBA Run-time Error 91(对象变量未设置)问题

你的代码.Cells(iRow, 1) = iRow + 1触发Error 91,核心原因是对象引用未明确绑定或iRow变量未正确初始化,以下是具体修复方案:

1. 明确指定目标工作表

直接使用Cells会默认指向当前激活的工作表,如果提交时激活的不是你的"数据库工作表",就会导致对象引用异常。必须显式绑定到目标工作表:

' 用工作表名称绑定(注意名称要和实际一致)
Sheets("数据库").Cells(iRow, 1) = iRow + 1

' 更可靠的方式:用工作表代码名(在VBA编辑器的属性窗口修改(Name)属性,比如DbSheet)
DbSheet.Cells(iRow, 1) = iRow + 1

2. 正确初始化iRow变量

iRow如果没有赋值(比如未找到数据库表的最后一行),会导致变量为空,进而触发错误。正确获取下一行行号的代码:

Dim iRow As Long
' 获取数据库工作表A列最后一行的下一行
iRow = Sheets("数据库").Cells(Sheets("数据库").Rows.Count, 1).End(xlUp).Row + 1

3. 完整的提交按钮示例代码

Option Explicit ' 强制变量声明,避免未定义变量的问题

Private Sub cmdSubmit_Click()
    Dim iRow As Long
    Dim dbSheet As Worksheet
    
    ' 绑定数据库工作表
    Set dbSheet = ThisWorkbook.Sheets("数据库")
    
    ' 获取下一个可用行号
    iRow = dbSheet.Cells(dbSheet.Rows.Count, 1).End(xlUp).Row + 1
    
    ' 写入数据
    dbSheet.Cells(iRow, 1) = iRow + 1 ' 按你的需求赋值
    ' 示例:写入其他表单字段
    ' dbSheet.Cells(iRow, 2) = Me.txtName.Value
    ' dbSheet.Cells(iRow, 3) = Me.txtPhone.Value
    
    ' 清空表单(可选)
    ' Me.txtName.Value = ""
    ' Me.txtPhone.Value = ""
    
    MsgBox "数据提交成功"
End Sub

常见排查点

  • 检查"数据库工作表"的名称是否拼写正确,区分大小写
  • 确保工作表未被隐藏或删除
  • 加上Option Explicit在模块顶部,避免因变量未声明导致的隐性错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 17:11:12