2013-11-04 208 views
1

想問問這裏的專家,爲什麼下面的代碼在excel工作表中不起作用?基本上這段代碼會對用戶輸入到BDTextBox的輸入進行驗證,如果格式不合法,它會彈出一條警告消息。我已經在Excel表單中測試了這段代碼,它的效果很好,但是如果將表單中的文本框從表單中更改爲嵌入到Excel表單中,它將無法工作..任何想法?Excel VBA TextBox事件

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 
+0

代碼位於何處?換句話說 - 你是否確定它仍然「連接到文本框」? – Floris

回答

0

因爲像用戶窗體的文本框,沒有_Exit事件的ActiveX文本框嵌入到Excel工作表。 _Exit的等價事件是_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 
+0

它的工作原理,非常感謝 – user1902849