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

VBA使用Rows.Count查找表格末行触发Error 1004问题求助

VBA表单写入Excel触发Error 1004修复方案

错误根因

你代码中的问题出在末行查找逻辑的2个易错点:

  1. 常量拼写错误:x1Up中使用了数字1,正确的VBA内置常量为xlUp(末尾是小写字母L),拼写错误会导致VBA无法识别有效参数触发1004错误
  2. 行计数未指定工作表:Rows.Count默认取当前激活工作表的最大行数,若代码运行时激活的不是Sheet1,跨表引用会导致范围匹配异常

修复后的代码

首先替换问题行,修正后完整代码如下:

Private Sub cmdSubmit_Click()
    ' 增加空值校验,避免提交无效数据
    If Trim(Me.txtName.Value) = "" Then
        MsgBox "请填写姓名后提交"
        Exit Sub
    End If

    Dim iRow As Long
    ' 修正拼写错误 + 明确指定行计数所属工作表
    iRow = Sheet1.Range("A" & Sheet1.Rows.Count).End(xlUp).Row + 1
    
    With Sheet1
        .Range("A" & iRow).Value = Me.txtName.Value
        
        'Gender
        If Me.optFemale.Value Then .Range("B" & iRow).Value = "Female"
        If Me.optMale.Value Then .Range("B" & iRow).Value = "Male"
        If Me.optUnknown.Value Then .Range("B" & iRow).Value = "Unknown"
        
        'Maritial Status
        If Me.optSingle.Value Then .Range("C" & iRow).Value = "Single"
        If Me.optMarried.Value Then .Range("C" & iRow).Value = "Married"
        If Me.optOther.Value Then .Range("C" & iRow).Value = "Other"
    End With
    
    'Reset the controls after submitting
    Me.txtName.Value = ""
    Me.optFemale.Value = False
    Me.optMale.Value = False
    Me.optUnknown.Value = False
    Me.optSingle.Value = False
    Me.optMarried.Value = False
    Me.optOther.Value = False
    
    MsgBox "Data submitted Successfully!"
End Sub

可选优化点

  • 可以给性别、婚姻状态增加必选校验,避免对应字段为空
  • 增加工作表保护判断,若Sheet1处于锁定状态提前提示用户,避免运行报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:24:03