我有一张“表A”,有一列“长跑”填写的内容是学生1000米跑步的成绩,因为时间不可能为大于59秒的情况,所以,长跑列的数值一般为3.45(3分45秒)或者5.59(5分59秒)也就是说小数点后不可能出现60以上的数值。我将此列用以下的代码来验证有效性:
If e.Col.Name = "长跑" Then '如果正在输入的是长跑列
If e.Text > "" Then '如果已经输入内容
Dim ar() As String = e.Text.split(".")
If ar.Length = 2 Then
Dim v1 As Double = Val(ar(0)) '将输入的内容转换为数值
If v1 > 8 OrElse v1 < 2 Then '如果输入的值大于8或者小于2就报错
MessageBox.Show("输入范围无效!请输入个位数为2-8之间的数字","错误")
e.Cancel = True '则禁止退出编辑模式
Else
Dim v2 As String = Val(ar(1)) '定义小数点后的数段
If v2.length = 2 Then '判定小数部分是否为两位数
If v2 > 59 Then '如果输入的值大于59
MessageBox.Show("输入范围无效!请在小数位输入不大于60的数值","错误")
e.Cancel = True '则禁止退出编辑模式
End If
Else
MessageBox.Show("请输入两位小数","错误")
e.Cancel = True '则禁止退出编辑模式
End If
End If
Else
MessageBox.Show("请输入小数部分,并保证小数部分只有两位数","错误")
e.Cancel = True '则禁止退出编辑模式
End If
End If
End If
但是以上代码执行后会出现一个问题,就是在小数位出现为01-09的时候,比如5.01(5分01秒)到5.09(5分09秒)的时候,会提示“请输入两位小数”,禁止输入了。
我知道是因为01-09在识别的时候把它认成了一位小数,所以才报错。
那么怎么解决这个问题?