2012-10-25 143 views
0

全部。我在工作表中有一個表lookupMisc叫做periodNo(A)periodName(B)具有以下值。VBA動態驗證文本框基於下拉菜單中的選擇

A B 
1 09:00 
2 10:00 
3 11:00 
4 12:00 
5 13:00 
6 14:00 
7 15:00 
8 16:00 
9 17:00 

這種情況的代碼如下:

For i = 1 To ws_misc.Range("periodNo").Rows.Count 
     CombinedName = periodNo(i, 1) & " - " & periodName(i, 1) 
     cbo_period.AddItem CombinedName 
    Next i 

和thsi產生:

enter image description here

現在你會發現,有一個長度txt_length)文本字段向右。基本上我試圖根據這個時期的條目創建一個動態驗證的形式。以下是這些情況:

If user selects Then 
1 - 09:00  Length can only accept values from 1-9 
2 - 10:00  Length can only accept values from 1-8 
3 - 11:00  Length can only accept values from 1-7 
4 - 12:00  Length can only accept values from 1-6 
5 - 13:00  Length can only accept values from 1-5 
6 - 14:00  Length can only accept values from 1-4 
7 - 15:00  Length can only accept values from 1-3 
8 - 16:00  Length can only accept values from 1-2 
9 - 17:00  Length can only accept values from 1-1 

我該如何解決這個問題?

+0

什麼時候你想驗證,在命令按鈕上,還是在輸入? – nutsch

+0

我想驗證入境 – methuselah

回答

1

試着這麼做:

if me.txt_length.value<1 or me.txt_length.value>10-clng(left(me.cbo_period.value,1)) then 
    msgbox "Entry must be between 1 and " & 10-clng(left(me.cbo_period.value,1)) 
end if 
1

你可以把數據驗證在是基於在降選擇下的值長度單元:

DataValidationExample1

DataValidationExample2

祝你好運。

相關問題