我希望TextBox值的格式类似于Ex:28-87222
我的代码。
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not Format(TextBox3.Text, "00" - "00000") Then
staffLabel.Caption = "Staff ID is invalid."
TextBox3.SetFocus
Else
staffLabel.Caption = ""
End If
End Sub
答案 0 :(得分:1)
尝试
If Not (TextBox3.Text like "##-#####") Then
staffLabel.Caption = "Staff ID is invalid."
TextBox3.SetFocus
Else
staffLabel.Caption = ""
End If
答案 1 :(得分:0)
Format()
返回变量或字符串。在您的情况下,在这种情况下,需要一个布尔值。可以将Variant或String转换为布尔值,但这几乎总是返回True
-Format Function
通常,要确保该值按照您喜欢的格式进行格式化,请在Textbox()
的属性中而不是在代码中使用格式化程序。
如果确定要在代码中完成此操作,然后比较两个值-格式化的值和必须格式化的值:
Option Explicit
Public Sub TestMe()
Debug.Print checkFormat("1234-23", "####-##") 'True
Debug.Print checkFormat("1234-523", "####-##") 'False
End Sub
Public Function checkFormat(initialValue As String, neededFormat As String) As Boolean
checkFormat = CBool(initialValue Like neededFormat)
End Function
答案 2 :(得分:0)
您可以使用Regex
并将其放在函数中:
Function IsValidStaffIdNumber(staffId As String)
Dim regex As Object
Set regex = CreateObject("VBScript.RegExp")
regex.Pattern = "[0-9][0-9]-[0-9][0-9][0-9][0-9][0-9]"
Debug.Print regex.Test(staffId)
End Function
Sub Test()
IsValidStaffIdNumber ("11-11111") '~~> TRUE
IsValidStaffIdNumber ("1-11111") '~~> FALSE
IsValidStaffIdNumber ("11-1111") '~~> FALSE
IsValidStaffIdNumber ("111-11111") '~~> FALSE
IsValidStaffIdNumber ("1A-1B2Cd") '~~> FALSE
End Sub