Vba 错误1004将用户表单信息保存到工作表时出现应用程序或对象错误

Vba 错误1004将用户表单信息保存到工作表时出现应用程序或对象错误,vba,excel,userform,Vba,Excel,Userform,我已经构建了一个用户表单,用于为工单开票。它支持将客户添加到数据库、启动新工单或从数据库中选择现有客户以启动新工单 我为保存工单而编写的代码在工作表中选择范围的位上有问题 我在保存客户信息时使用了相同的代码(我复制并粘贴了确切的代码,以查看它是否可以替代我专门为保存工单而编写的代码),但由于出现1004应用程序或对象错误而失败 工单信息录入计算后无法保存 我尝试了4或5种不同的方法,但目前我唯一的代码是用于保存客户信息的代码 Sheet3.Activate Range("A1").End(xl

我已经构建了一个
用户表单
,用于为工单开票。它支持将客户添加到数据库、启动新工单或从数据库中选择现有客户以启动新工单

我为保存工单而编写的代码在工作表中选择范围的位上有问题

我在保存客户信息时使用了相同的代码(我复制并粘贴了确切的代码,以查看它是否可以替代我专门为保存工单而编写的代码),但由于出现
1004应用程序或对象错误而失败

工单信息录入计算后无法保存

我尝试了4或5种不同的方法,但目前我唯一的代码是用于保存客户信息的代码

Sheet3.Activate

Range("A1").End(xlDown).Offset(1, 0).Select
ActiveCell.Value = txtFirstName.Value
ActiveCell.Offset(0, 1).Value = txtLastName.Value
ActiveCell.Offset(0, 2).Value = txtPhone.Value
ActiveCell.Offset(0, 3).Value = txtCity.Value
ActiveCell.Offset(0, 4).Value = cboProvince.Value
ActiveCell.Offset(0, 5).Value = txtStreetNumber.Value
ActiveCell.Offset(0, 6).Value = txtStreetName.Value
ActiveCell.Offset(0, 7).Value = txtUnit.Value
ActiveCell.Offset(0, 8).Value = txtPostalCode.Value
你的线路

Range("A1").End(xlDown).Offset(1, 0).Select
VBA相当于手动选择单元格A1,按EndDownArrow键,然后选择该单元格下一行

如果,正如您在评论中所说,您在a列中没有任何内容(除了单元格A1本身中的内容之外),那么会发生什么

  • 选择单元格A1
  • 按EndDownArrow键
  • Excel将所选内容移动到单元格A1048576(或单元格A65536,具体取决于版本)
  • 你看,没有1048577行
  • 你惊恐地举起双手说“我做不到-请不要强迫我尝试!!”(这是Excel想要说的,但它礼貌地返回“运行时错误'1004:应用程序定义的或对象定义的错误”)
解决方案是从工作表的底部开始,通过向上移动找到最后一个非空单元格:

Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Select

哪一行导致错误?范围(“A1”)。结束(xlDown)。偏移量(1,0)。选择try prefacing
Range(“A1”)
如“Sheet3.Range(“A1”)。在应用程序对象上使用默认值通常是错误的来源。我已经尝试过这一点,并且从特定的工作簿中调用了它。我完全不知道我该做什么。我还重新启动了Excel,但在那之后,我重新启动了我的计算机,以防Excel本身出现奇怪的错误。它曾经工作过(某种程度上)它只是把信息放在我格式化的单元格下面,但现在它只会显示错误消息,甚至在没有格式化单元格的完全空的工作表中都无法工作。在Sheet3列a中除了A1中的内容外,还有其他内容吗?如果没有,您正试图选择一行超出范围。您真是天赐良机!非常感谢您解释为什么我的代码不起作用以及为什么您的解决方案起作用。它比简单地提供有效的代码要有用得多!