Ошибка времени выполнения 13 из-за неправильного формата ввода времени - PullRequest
1 голос
/ 17 января 2020

У меня есть код, который перемещает введенное значение времени в поле, используя указанный c формат времени. Однако при вводе времени, если оно не введено в правильном формате, пользователь получает ошибку Runtime 13, а затем не может ничего сделать, кроме как закрыть пользовательскую форму, остановить выполнение кода и повторить попытку. Я могу отформатировать сообщение, чтобы вернуть сообщение об ошибке, сообщающее пользователю исправить запись, но какой код я использую, чтобы вернуть пользователя в поле и позволить ему внести исправление? Я помещаю код для этого текстового поля формы пользователя здесь для справки:

Private Sub txtDepartTime_AfterUpdate()
'When time is entered, time transfers immediately to spreadsheet datafield.

Dim TargetRow As Integer
TargetRow = Sheets("Codes").Range("D43").Value + 1

With Sheets("Travel Expense Voucher").Range("Data_Start").Offset(TargetRow, 25)
 .Value = TimeValue(txtDepartTime)
 .NumberFormat = "hh:mm" 'departure time

 End With

End Sub

1 Ответ

1 голос
/ 17 января 2020

Начните с проверки, можно ли преобразовать txtDepartTime во время. Если это невозможно, уведомите пользователей и выйдите из режима выполнения, чтобы они могли повторно ввести время.

Private Sub txtDepartTime_AfterUpdate()
'When time is entered, time transfers immediately to spreadsheet datafield.

Dim TargetRow As Integer, TestTime As Date

On Error Resume Next
TestTime = TimeValue(txtDepartTime)
On Error GoTo 0

If TestTime = 0 Then
    MsgBox "Time entered is not valid. Please try again.", vbExclamation
    Exit Sub
End If

TargetRow = Sheets("Codes").Range("D43").Value + 1

With Sheets("Travel Expense Voucher").Range("Data_Start").Offset(TargetRow, 25)
    .Value = TimeValue(txtDepartTime)
    .NumberFormat = "hh:mm" 'departure time
End With

End Sub

(Это решение предполагает, что никто не будет намеренно вводить 12:00 или 00:00 в качестве времени )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...