我的代码可以将输入的时间值移动到使用特定时间格式的字段中。但是,在输入时间时,如果没有以正确的格式输入时间,则用户会收到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
发布于 2020-01-17 11:45:31
首先测试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
(此解决方案假设没有人会故意进入12am或00:00作为时间)
https://stackoverflow.com/questions/59780623
复制相似问题