Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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 VBA文本框事件_Vba_Excel - Fatal编程技术网

Excel VBA文本框事件

Excel VBA文本框事件,vba,excel,Vba,Excel,想问问这里的专家,为什么下面的代码在excel工作表中不起作用?基本上,此代码将对用户输入到BDTextBox的输入执行验证,如果格式无效,它将弹出一条警告消息。我已经在excel工作表表单中测试了这段代码,它工作得很好,但是如果将文本框从表单更改为嵌入excel工作表,它就不工作了。。有什么想法吗 Private Sub BDTextBox_Exit(ByVal Cancel As MSForms.ReturnBoolean) If BDTextBox.Text <> "" The

想问问这里的专家,为什么下面的代码在excel工作表中不起作用?基本上,此代码将对用户输入到BDTextBox的输入执行验证,如果格式无效,它将弹出一条警告消息。我已经在excel工作表表单中测试了这段代码,它工作得很好,但是如果将文本框从表单更改为嵌入excel工作表,它就不工作了。。有什么想法吗

Private Sub BDTextBox_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If BDTextBox.Text <> "" Then
    If IsDate(BDTextBox.Text) Then
        BDTextBox.Text = Format(BDTextBox.Text, "yyyymmdd")
        FinalBusinessDate = BDTextBox.Text
    Else
        MsgBox "Please enter a valid date!" & vbNewLine & "Date format could be one of the following" & vbNewLine & "YYYY MM DD" & vbNewLine & "MM DD YYYY" & vbNewLine & "DD MM YYYY", vbCritical
        BDTextBox.Text = ""
        Cancel = True
    End If
End If
End Sub
Private子BDTextBox_退出(ByVal取消为MSForms.ReturnBoolean)
如果是BDTextBox.Text“”,则
如果是IsDate(BDTextBox.Text),则
BDTextBox.Text=格式(BDTextBox.Text,“yyyyymmdd”)
FinalBusinessDate=BDTextBox.Text
其他的
MsgBox“请输入有效日期!”&vbNewLine&“日期格式可以是以下格式之一”&vbNewLine&“YYYY-MM-DD”&vbNewLine&“MM-DD-yyy”&vbNewLine&“DD-MM-YYYY”,vbNewLine
BDTextBox.Text=“”
取消=真
如果结束
如果结束
端接头

因为与Userform Textbox一样,Excel工作表中嵌入的ActiveX Textbox没有退出事件。
\u Exit
的等效事件是
\u LostFocus

试试这个

Private Sub BDTextBox_LostFocus()
    If BDTextBox.Text <> "" Then
        If IsDate(BDTextBox.Text) Then
            BDTextBox.Text = Format(BDTextBox.Text, "yyyymmdd")
            FinalBusinessDate = BDTextBox.Text
        Else
            MsgBox "Please enter a valid date!" & vbNewLine & _
            "Date format could be one of the following" & _
            vbNewLine & "YYYY MM DD" & vbNewLine & _
            "MM DD YYYY" & vbNewLine & "DD MM YYYY", vbCritical
            BDTextBox.Text = ""

            Cancel = True
        End If
    End If
End Sub
Private子BDTextBox\u LostFocus()
如果是BDTextBox.Text“”,则
如果是IsDate(BDTextBox.Text),则
BDTextBox.Text=格式(BDTextBox.Text,“yyyyymmdd”)
FinalBusinessDate=BDTextBox.Text
其他的
MsgBox“请输入有效日期!”&vbNewLine&_
“日期格式可以是以下格式之一”&_
vbNewLine和“YYYY-MM-DD”&vbNewLine和_
“MM DD YYYY”&vbNewLine和“DD MM YYYY”,vbNewLine
BDTextBox.Text=“”
取消=真
如果结束
如果结束
端接头

代码在哪里?换句话说,您是否确保它仍然“连接到文本框”?