Как я могу проверить, что формат значения TextBox похож на 28-87222? - PullRequest
0 голосов
/ 18 февраля 2019

Я хочу, чтобы формат значения TextBox был таким, как например: 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

Ответы [ 3 ]

0 голосов
/ 18 февраля 2019

Format() возвращает вариант или строку.В вашем случае, в условии, логическое значение необходимо.Variant или String могут быть переданы в логическое значение, но это почти всегда возвращает True - Функция форматирования

В общем, чтобы убедиться, что значение отформатировано так, как вам нравитсяэто, сделайте форматер в свойствах 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
0 голосов
/ 18 февраля 2019

Вы можете использовать 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
0 голосов
/ 18 февраля 2019

Попробуйте это

 If Not (TextBox3.Text like "##-#####") Then
    staffLabel.Caption = "Staff ID is invalid."
    TextBox3.SetFocus
Else
    staffLabel.Caption = ""
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...