Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 用户表单下一步按钮不可用';如果语句验证检查失败并提示msgbox,则无法工作_Excel_Vba_Button_Textbox_Userform - Fatal编程技术网

Excel 用户表单下一步按钮不可用';如果语句验证检查失败并提示msgbox,则无法工作

Excel 用户表单下一步按钮不可用';如果语句验证检查失败并提示msgbox,则无法工作,excel,vba,button,textbox,userform,Excel,Vba,Button,Textbox,Userform,我有一个带有“下一步”按钮的用户表单。在下一个单击子部分中,我有一个很长的if语句,它检查每个字段的完整性和有效数据 默认情况下,有两个日期框包含今天的日期,以向用户显示必要的日期格式。但由于它是预先填充的,我认为人们可能会忘记输入正确的日期,因此,如果在单击下一步按钮时该日期仍然是今天的日期,则会弹出一个msgbox,询问用户是否希望该日期是今天的日期 这个想法是,如果用户说不,那么他们可以返回并更改日期,然后当他们再次单击“下一步”时,相同的验证检查语句是否将运行,然后他们可以进入下一页。如

我有一个带有“下一步”按钮的用户表单。在下一个单击子部分中,我有一个很长的if语句,它检查每个字段的完整性和有效数据

默认情况下,有两个日期框包含今天的日期,以向用户显示必要的日期格式。但由于它是预先填充的,我认为人们可能会忘记输入正确的日期,因此,如果在单击下一步按钮时该日期仍然是今天的日期,则会弹出一个msgbox,询问用户是否希望该日期是今天的日期

这个想法是,如果用户说不,那么他们可以返回并更改日期,然后当他们再次单击“下一步”时,相同的验证检查语句是否将运行,然后他们可以进入下一页。如果他们说是的,那么它应该继续进行其余的验证检查并进入下一页

但这就像msgbox的弹出阻止了用户表单切换到下一个页面(实际上是一个单独的用户表单,因为我这样做的时候不知道多页面的事情)。我尝试将无效数据放入另一个文本框,当我的msgbox弹出告诉我重新输入数据时,我可以输入数据,然后转到下一页。我猜我的约会文本框有问题。我已经在下面粘贴了所有适用于下一个单击子菜单中日期文本框的内容

编辑:我还应该提到,如果我输入的日期不是今天,则“下一步”按钮可以正常工作

1     Private Sub IB_Next_Click()
2     'Data validation
3                 
4             ElseIf Me.IB_LoanDate.Value = "" Then
5                 blahAnswer = MsgBox("Please enter a loan date.")
6                 Me.IB_LoanDate.SetFocus
7                 Exit Sub
8             ElseIf IsDate(Me.IB_LoanDate.Value) = False Then
9                 blahAnswer = MsgBox("Please enter a valid date.", , "Invalid Entry")
10                Me.IB_LoanDate.SetFocus
11                 Exit Sub
12            ElseIf CDate(Me.IB_LoanDate.Value) = VBA.Date Then
13                loanDateAnswer = MsgBox("The loan date is still set to the default of today's date. Was that intentional?", vbYesNo, "Validation Check")
14                    If loanDateAnswer = vbNo Then
15                        Me.IB_LoanDate.SetFocus
16                        Exit Sub
17                    End If
18            ...
19            Else
20            ...
21            LoanWiz_IB.Hide
22            LoanWiz_IntTerms.Show
23        End If
24    End Sub

如果我单击“否”,它确实会像预期的那样退出Sub,但在我确定日期后,“下一步”按钮不起作用。如果我单击Yes,就好像它在读取第17行后停止读取代码一样。关于让它读取其余代码的任何建议?

那些
ElseIf
块和最后的
Else
块是互斥的-如果执行任何其他块,最后的
Else
块不会运行。因此,您不需要最后的
Else
,如果
if

 Private Sub IB_Next_Click()
 'Data validation

          ElseIf Me.IB_LoanDate.Value = "" Then
              blahAnswer = MsgBox("Please enter a loan date.")
              Me.IB_LoanDate.SetFocus
             Exit Sub
         ElseIf IsDate(Me.IB_LoanDate.Value) = False Then
             blahAnswer = MsgBox("Please enter a valid date.", , "Invalid Entry")
            Me.IB_LoanDate.SetFocus
             Exit Sub
        ElseIf CDate(Me.IB_LoanDate.Value) = VBA.Date Then
            loanDateAnswer = MsgBox( _
         "The loan date is still set to the default of today's date. Was that intentional?", _
          vbYesNo, "Validation Check")
            If loanDateAnswer = vbNo Then
                Me.IB_LoanDate.SetFocus
                Exit Sub
            End If
        ...
        End If
        ...
        LoanWiz_IB.Hide
        LoanWiz_IntTerms.Show

End Sub