命令框中的编码错误 - Excel VBA

时间:2014-07-11 08:13:17

标签: excel vba excel-vba

我这里有一些代码,但是我收到以下错误:

  

运行时错误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

感谢您的帮助!!

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选项更加严格。