張貼者:2010年5月29日 上午6:30Administrator ExcelHelp
[
已更新 2010年5月29日 上午6:30
]
Excel 的TextBox不如Access的那樣,可以設定輸入遮罩(Input Mask),以控制用戶輸入的文字。這個技巧就可以模擬輸入遮罩。
在這個例子當中,輸入文字的格式為"EXCEL999A",也就是說,前方要有EXCEL字樣,其後的三個字符需為數字,最後有一個字母。
要注意的是,除了TextBox,我們還要一個Label,用作存放上一次輸入的正確文字,且要把它的Visible值設為False。

程式如下:
' 起始時,把預設的字串(這裡就是"EXCEL")放進TextBox1和Label1。 Private Sub Userform_Initialize() TextBox1.Text = "EXCEL" Label1.Caption = TextBox1.Text End Sub
' 當用戶更改文字方塊時,就要確定新輸入的文字符合規格。 Private Sub TextBox1_Change() ' 把輸入的文字轉到大寫(可有可無) TextBox1.Text = UCase(TextBox1.Text) ' 如果輸入的文字正確的話,則把它記錄在隱藏的label裡; ' 否則,把記錄在label的值(也就是上一次輸入正確的文字)放回到輸入欄 If ValidString(TextBox1.Text) Then Label1.Caption = TextBox1.Text Else TextBox1.Text = Label1.Caption End If End Sub
' 判別文字S是否正確 ' 這裡的程式碼要按你的需要而修改。 ' 這裡的技巧是,就算文字不夠長,也可以使用MID(),不會出現錯誤,這可以把程式碼寫得很簡單。 ' 例如來源文字只有"ABC",MID("ABC",5,1)不會發生錯誤,只會返回空字串 ""。 Private Function ValidString(S As String) ValidString = False If Len(S) >= 5 And Len(S) <= 9 Then If Left(S, 5) = "EXCEL" Then ValidString = IsDigit(Mid(S, 6, 1)) And IsDigit(Mid(S, 7, 1)) And _ IsDigit(Mid(S, 8, 1)) And IsLetter(Mid(S, 9, 1)) End If End If End Function
' 判別S字串是否一個數字,空字串也可以 Private Function IsDigit(S As String) IsDigit = (S >= "0" And S <= "9") Or S = "" End Function
' 判別S字串是否一個字母,空字串也可以 Private Function IsLetter(S As String) IsLetter = (S >= "a" And S <= "z") Or (S >= "A" And S <= "Z") Or S = "" End Function
執行的時候就像用了輸入遮罩:
 |
|
|
|
|
 Updating...
Administrator ExcelHelp, 2010年5月29日 上午6:30
|