




用VBA学着做个数据录入窗口,命令都是跟着教学打上去的,这行错误命令那里错了,求指导!
关注引自免费微信小程序:皆我百晓生
从提供的信息来看,你在尝试创建一个VBA用户表单用于数据录入时遇到了1004错误,这通常意味着你访问了不存在的对象或属性。在你的代码中,问题可能出现在使用Range("a65536").End(xlUp)这一行上。xlUp应该写为xlUp(注意首字母大写),但更关键的是,End(xlUp)方法用于找到最后一个非空单元格,而a65536超出了Excel的范围(Excel的最大行数是1048576)。然而,即使使用正确的xlUp,如果列A的第65536行及以上的单元格为空,这将返回错误。
解决这个问题的方法是使用更合理的行数来查找末尾非空单元格,例如使用Range("A1:A1048576")。但是,更简洁且高效的方法是仅查找列A中的最后一个非空单元格,无需指定一个固定的行号。以下是修改后的代码:
Private Sub CommandButton1_Click()
Dim k As Long
With Sheet2.Range("A:A")
k = .Find("*", .Cells(.Rows.Count, "A"), lookat:=xlPart, searchorder:=xlByRows, searchdirection:=xlPrevious).Row + 1
End With
Cells(k, 2) = Me.TextBox1.Value
Cells(k, 1) = Me.TextBox2.Value
Cells(k, 4) = Me.TextBox3.Value
If Me.OptionButton1 = True Then
Cells(k, 3) = "已用"
ElseIf Me.OptionButton2 = True Then
Cells(k, 3) = "未用"
End If
If Me.OptionButton3 = True Then
Cells(k, 5) = "已领"
ElseIf Me.OptionButton4 = True Then
Cells(k, 5) = "未领"
End If
End Sub
这段代码首先使用.Find("*", ...)函数在列A中寻找最后一个非空单元格,并通过lookat:=xlPart、searchorder:=xlByRows以及searchdirection:=xlPrevious参数确保找到的是最后一个非空单元格。找到后,k变量被设置为这个单元格的行号加一,这样就可以在下一行插入新的数据了。
确保在你的代码中替换Sheet2为你实际工作簿中的工作表名称。如果工作表的名称中包含空格或特殊字符,记得使用单引号将其包围,例如Sheet2.Name应替换为'Sheet2 Name'(如果名称中包含空格的话)。希望这能解决你的问题!如果有任何进一步的问题或需要更多的帮助,请随时提问。