2017-01-25 66 views
-1

我需要你的幫助。我怎樣才能限制我的文本框?這是我的下面的表單。 enter image description here將正則表達式應用到文本框中VBA

我需要的是創造,如果下列文本框聲明: 托盤ID:必須只包含9號 紙箱ID:只能包含10個號碼 連續劇(全6):必須startwith FOC和僅包含CAPS和數字[AZ] [0-9]

我在Javascript中做了這個,但現在我需要在excelsheet中有一個備份。有任何想法嗎?

感謝您的關注,

+1

設置每個框'MaxLength'財產,並處理文本框的事件,例如'txtPalletID_KeyDown'如果你想截取單個的鍵(並且實際上*防止*它們甚至被輸入到第一個位置),或者'txtPalletID_Exit'在焦點切換到另一個控件時驗證內容(並且可能取消它並強制重新回到文本框中);通過這種方式,您可以禁用「Agregar」按鈕,直到所有字段被認爲是有效的......但是這對於單個SO問題來說是相當廣泛的主題。嘗試一下,卡住,回來*特定*問題=) –

+1

讓我試試看:) – Deluq

+0

@Deluq閱讀我的答案和代碼 –

回答

2

心中已經創建了一個示例User_FormCommandButton(如「確認」按鈕),一旦它按下它會檢查在TextBox ES輸入的所有值都根據這規則。

下面的代碼會幫助您開始,它會檢查「托盤ID」(9位數字)和「紙箱ID」(10位數字)中的值。

代碼

Option Explicit 

Private Sub CommandButton1_Click() 

Dim Reg1 As Object 
Dim Reg2 As Object 

Dim RegMatches As Object 

' ====== Test PalletID_Tb ===== 
Set Reg1 = CreateObject("VBScript.RegExp") 
With Reg1 
    .Global = True 
    .IgnoreCase = True 
    .Pattern = "\d{9,9}" ' Match any set of 9 digits 
End With 

Set RegMatches = Reg1.Execute(Me.PalletID_Tb.Value) 

If RegMatches.Count = 1 Then '<-- make sure there is only 1 match (9 digits and not 18 or 27) 
    MsgBox "Value in Pallet ID is OK" 
Else 
    MsgBox "Pallet ID must have a 9 digit format" 
    Me.PalletID_Tb.Value = "" 
    Exit Sub 
End If 

' ====== Test CartonID_Tb ===== 
Set Reg2 = CreateObject("VBScript.RegExp") 
With Reg2 
    .Global = True 
    .IgnoreCase = True 
    .Pattern = "\d{10,10}" ' Match any set of 10 digits 
End With 

Set RegMatches = Reg2.Execute(Me.CartonID_Tb.Value) 

If RegMatches.Count = 1 Then '<-- make sure there is only 1 match (10 digits and not 20) 
    MsgBox "Value in Carton ID is OK" 
Else 
    MsgBox "Carton ID must have a 10 digit format" 
    Me.CartonID_Tb.Value = "" 
    Exit Sub 
End If 

' Do something if passed the 2 conditions 

End Sub 
+0

謝謝你的時間! – Deluq