VBA使用Rows.Count查找表格末行触发Error 1004问题求助
VBA表单写入Excel触发Error 1004修复方案
错误根因
你代码中的问题出在末行查找逻辑的2个易错点:
- 常量拼写错误:
x1Up中使用了数字1,正确的VBA内置常量为xlUp(末尾是小写字母L),拼写错误会导致VBA无法识别有效参数触发1004错误 - 行计数未指定工作表:
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
相关产品推荐
相关产品推荐

