Проверьте допустимое время в пользовательской форме - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь проверить ошибку в пользовательской форме, где я хочу иметь возможность проверить, что введенное время является действительным выражением времени (00:00 или 00:00), поскольку я отправляю его с помощью команды TimeValue для вывод, чтобы время было стандартизировано. Если введенное значение не является допустимым выражением, у меня будет отображаться сообщение об ошибке, и я могу повторно ввести действительное выражение. Я не уверен, что это то, что я могу сделать с помощью Regex или есть более простой вариант. Я приложил свой код ниже.

Private Sub CommandButton_OK_Click()
Dim emptyrow As Long

'Error Check
If NameText.Value = "" Then
    MsgBox "Please Enter Valid Name", vbOKOnly
    Exit Sub
End If

'Make Sheet 1 Active
Sheet1.Activate

'Determine emptyRow
emptyrow = WorksheetFunction.CountA(Range("E:E")) + 1

'Convert Time of Inspection to Time Value
TimeText.Value = TimeValue(TimeText.Value)

'Transfer Info
Cells(emptyrow, 5).Value = DateText.Value
Cells(emptyrow, 6).Value = NameText.Value
Cells(emptyrow, 7).Value = ShiftText.Value
Cells(emptyrow, 8).Value = TimeText.Value

If CornNo.Value = True Then
    Cells(emptyrow, 9).Value = "No"
Else
    Cells(emptyrow, 9).Value = "Yes"
End If

If SurgeNo.Value = True Then
    Cells(emptyrow, 10).Value = "No"
Else
    Cells(emptyrow, 10).Value = "Yes"
End If

If MillNo.Value = True Then
    Cells(emptyrow, 11).Value = "No"
Else
    Cells(emptyrow, 11).Value = "Yes"
End If

If FBedNo.Value = True Then
    Cells(emptyrow, 12).Value = "No"
Else
    Cells(emptyrow, 12).Value = "Yes"
End If

If DDGOutNo.Value = True Then
    Cells(emptyrow, 13).Value = "No"
Else
    Cells(emptyrow, 13).Value = "Yes"
End If

If DDGInNo.Value = True Then
    Cells(emptyrow, 14).Value = "No"
Else
    Cells(emptyrow, 14).Value = "Yes"
End If

Unload Me

End Sub

1 Ответ

0 голосов
/ 28 июня 2018

Похоже, что вы, возможно, захотите обработать ошибки пользователя с помощью оператора On Error GoTo Label, я думаю, что это даст то, что вы хотите сделать

    Private Sub CommandButton_OK_Click()

    If nameText.Value = "" Then GoTo InvalidName

    ''  Do some stuff

    On Error GoTo InvalidTime
    Let TimeText.Value = TimeValue(TimeText.Value)
    On Error GoTo 0

    ''  Do some more stuff

    Let Cells(emptyrow, 9).Value = IIf(CornNo.Value = True, "No", "Yes")

    ''  Do even more stuff

    Exit Sub

InvalidName:
    MsgBox "Please Enter a Name", vbInformation + vbOKOnly, "Error"
    Exit Sub

InvalidTime:
    MsgBox "Please Enter a Valid Time", vbInformation + vbOKOnly, "Error"
    Exit Sub
End Sub
...