Board logo

標題: 如何利用VBA去驗證 表單上面的欄位屬性 [打印本頁]

作者: Jared    時間: 2013-8-8 16:04     標題: 如何利用VBA去驗證 表單上面的欄位屬性

想請問一下大大
如果想要驗證輸入的欄位:
     1. 輸入內容必須為日期。
     2. 指定輸入的時間必須為2013/1/1 ~ 2013/12/31。
     3. 如果輸入8/8,會自動更新為2013/8/8。

我用錄製操作的程式碼
  1. Sub Macro14()
  2. '
  3. ' Macro14 Macro
  4. '
  5. '
  6.     With Selection.Validation
  7.         .Delete
  8.         .Add Type:=xlValidateDate, AlertStyle:=xlValidAlertStop, Operator:= _
  9.         xlBetween, Formula1:="1/31/2013", Formula2:="12/31/2013"
  10.         .IgnoreBlank = True
  11.         .InCellDropdown = True
  12.         .InputTitle = ""
  13.         .ErrorTitle = "請輸入正確的格式"
  14.         .InputMessage = ""
  15.         .ErrorMessage = _
  16.        "1.您輸入的不是日期。" & Chr(10) & "2.您的日期格式錯誤,正確規格為YYYY/MM/DD。" &Chr(10) & "3.您輸入的日期未介於2013/1/1~2013/12/31之間。" &Chr(10) &""
  17.         .IMEMode = xlIMEModeOff
  18.         .ShowInput = True
  19.         .ShowError = True
  20.     End With
  21. End Sub
複製代碼
但是要怎麼修改放在表單裡面呢?
希望大大指導一下 ><
作者: stillfish00    時間: 2013-8-8 20:25

回復 1# Jared
  1. Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  2.   Const START_DATE = "2013/1/1"
  3.   Const END_DATE = "2013/12/31"
  4.   
  5.   If TextBox1 = vbNullString Then Exit Sub  '未填忽略
  6.      
  7.   If IsDate(TextBox1) Then
  8.     If CDate(TextBox1) > DateValue(START_DATE) And CDate(TextBox1) < DateValue(END_DATE) Then
  9.         TextBox1 = Format(TextBox1, "yyyy/m/d")
  10.     Else
  11.       MsgBox "您輸入的日期未介於" & START_DATE & "~" & END_DATE & "之間。"
  12.       Cancel = True
  13.     End If
  14.   Else
  15.     MsgBox "您的日期格式錯誤,正確規格為YYYY/MM/DD。"
  16.     Cancel = True
  17.   End If
  18. End Sub
複製代碼

作者: Jared    時間: 2013-8-9 09:22

回復 2# stillfish00


    感謝大大的協助 ^^
    想請問一下大大
    驗證日期 必須包覆在 Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    這個程式碼的屬性下面嗎? (@@)
作者: stillfish00    時間: 2013-8-9 10:12

回復 3# Jared
TextBox1 : 表單上用來輸入日期的文字方塊
TextBox1_Exit : 該文字方塊的Exit事件,表示當使用者打完日期後按tab或enter離開該文字方塊時會自己觸發,參數的cancel可設定使其不失去駐點(文字游標留在該文字方塊)。

前面的Code要放在該表單的程式碼頁面。
作者: Jared    時間: 2013-8-9 11:42

回復 4# stillfish00


    ^^ 謝謝大大的解答
    我知道了




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)