在dataGrid中填写"20030501",在befoeColUpdate()事件中对填写的数进行分拆为"2003-05-01"后,对该单元格进行重新更新C.value=cdate("2003-05-01)时,出现错误,而且错误无法捕捉。程序如下:
Private Sub DataGrid1_BeforeColUpdate(ByVal ColIndex As Integer, OldValue As Variant, Cancel As Integer)
Dim C
Dim sday As String, smonth As String, syear As String
Dim Cfield As String
Dim DD As Variant
Dim sc As Variant
Dim i As Long
Set C = DataGrid1.Columns(ColIndex)
'DataGrid1.Columns(1).CellValue()sc = DataGrid1.Columns(ColIndex).ValueIf IsNull(DataGrid1.Columns(ColIndex).Value) Then Exit SubCfield = C.DataField
If Cfield = "起始日期" Or Cfield = "到期日期" Then
' sc = Trim(C.Text)
If IsDate(sc) Then Exit Sub
C.Text = ""
i = Len(sc)
If IsNumeric(sc) Then
sday = Right$(sc, 2)
sc = Mid$(sc, 1, i - 2)
smonth = Right(sc, 2)
i = Len(sc)
syear = Mid$(sc, 1, i - 2)
sc = syear & "/" & smonth & "/" & sday
If IsDate(sc) Then
c.value= CDate(sc) '出错
Else
MsgBox "输入错误!日期的格式:yyyy-mm-dd,请重新输入.", vbOKOnly + vbInformation, "输入提示"
'Cancel = True
Exit Sub
End If
Else
MsgBox "输入错误。日期的格式::yyyy-mm-dd,请重新输入.", vbOKOnly + vbInformation, "输入提示"
'Cancel = True
Exit Sub
End If
End If
End Sub
Private Sub DataGrid1_BeforeColUpdate(ByVal ColIndex As Integer, OldValue As Variant, Cancel As Integer)
Dim C
Dim sday As String, smonth As String, syear As String
Dim Cfield As String
Dim DD As Variant
Dim sc As Variant
Dim i As Long
Set C = DataGrid1.Columns(ColIndex)
'DataGrid1.Columns(1).CellValue()sc = DataGrid1.Columns(ColIndex).ValueIf IsNull(DataGrid1.Columns(ColIndex).Value) Then Exit SubCfield = C.DataField
If Cfield = "起始日期" Or Cfield = "到期日期" Then
' sc = Trim(C.Text)
If IsDate(sc) Then Exit Sub
C.Text = ""
i = Len(sc)
If IsNumeric(sc) Then
sday = Right$(sc, 2)
sc = Mid$(sc, 1, i - 2)
smonth = Right(sc, 2)
i = Len(sc)
syear = Mid$(sc, 1, i - 2)
sc = syear & "/" & smonth & "/" & sday
If IsDate(sc) Then
c.value= CDate(sc) '出错
Else
MsgBox "输入错误!日期的格式:yyyy-mm-dd,请重新输入.", vbOKOnly + vbInformation, "输入提示"
'Cancel = True
Exit Sub
End If
Else
MsgBox "输入错误。日期的格式::yyyy-mm-dd,请重新输入.", vbOKOnly + vbInformation, "输入提示"
'Cancel = True
Exit Sub
End If
End If
End Sub
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货