我这里有一些代码,但是我收到以下错误:
运行时错误1004
应用程序定义或对象定义的错误
所以希望有人能帮助我弄清楚我做错了什么。对所有这些来说还是很新......
我希望用户表单执行什么
我有一个两页的用户表单,它使用多页。
我希望所有用户在第一页上填写详细信息,称为“主要”。在这个表格上是一个选项按钮问题:“客户今天是否询问过产品?”。
如果此问题的答案为“否”,则表单应在单击命令按钮后结束,并将相关信息发送到工作表。
如果此问题的答案为“是”,表单应自动将用户发送到“额外”页面。用户完成此页面,点击第二页上的命令按钮,表单将从两个页面将信息发送到工作表的同一行。
我的代码
对于“主页”页面上的命令按钮
Private Sub CommandButton1_Click()
Dim emptyRow As Long
Dim closeForm As Boolean
'The form should close, unless ProductEnquiryYes is true
closeForm = True
'Determine emptyRow
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
'Did customer ask about product?
If ProductEnquiryYes.Value = True Then
Me.MultiPage1.Value = 1
closeForm = False
Cells(emptyRow, 20).Value = 1
End If
If ProductEnquiryNo.Value = True Then
Cells(emptyRow, 21).Value = 1
End If
'Balance Enquiry
If BalanceEnquiry.Value = True Then
Cells(emptyRow, 23).Value = 1
End If
'Close Userform
If closeForm Then Unload Me
End Sub
对于“额外”页面上的命令按钮
Private Sub CommandButton2_Click()
'If this checkbox is True, send value of 1 to the worksheet
If CAOpen.Value = True Then
Cells(emptyRow, 63).Value = 1
End If
Unload Me
End Sub
命令按钮适用于第一页,并且正确地将值返回到工作表中。但是,第二页上的命令按钮不正确,我不知道为什么。这可能是显而易见的,所以请原谅我。
当我点击调试时,具体是这一行用黄色突出显示:
Cells(emptyRow, 63).Value = 1
感谢您的帮助!!
答案 0 :(得分:2)
实际上我认为错误是您在
中使用emptyRow
Private Sub CommandButton2_Click()
'If this checkbox is True, send value of 1 to the worksheet
If CAOpen.Value = True Then
Cells(emptyRow, 63).Value = 1
End If
Unload Me
End Sub
但它尚未初始化!
在CommandButton1_Click
你有
Dim emptyRow As Long
所以emptyRow
不是全局的,而是局部变量。
您必须重新创建并重新计算emptyRow
:
Private Sub CommandButton2_Click()
Dim emptyRow As Long
'Determine emptyRow
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
'If this checkbox is True, send value of 1 to the worksheet
If CAOpen.Value = True Then
Cells(emptyRow, 63).Value = 1
End If
Unload Me
End Sub
您可以使用Option Explicit
选项更加严格。