假设输入的是 me!text0, 你正在排班的 年,月 为 y 和 m
BeforeUpdate中 验证录入的文本
Private Sub Text0_BeforeUpdate(Cancel As Integer)
y = 2015
m = 5
Dim dy()
days = Day(DateSerial(y, m + 1, 0)) '获取当月天数
ReDim dy(days)
s = Me!Text0
If Len(s) > 0 Then
secs = Split(s, ",")
For i = 0 To UBound(secs)
range = Split(secs(i), "-")
If UBound(range) < 0 Or UBound(range) > 1 Then
MsgBox "数据格式不合法!"
Cancel = True
Exit Sub
End If
If UBound(range) = 1 Then
If Val(range(0)) > Val(range(1)) Then
MsgBox "范围定义错误 " & secs(i)
Cancel = True
Exit Sub
End If
End If
For j = 0 To UBound(range)
d = Trim(range(j))
If Month(DateSerial(y, m, d)) <> m Then ' 你正在排班的 年,月 为 y 和 m
MsgBox "日期不合法"
Cancel = True
Exit Sub
End If
Next
If UBound(range) = 0 Then r2 = range(0) Else r2 = range(1)
For k = range(0) To r2
If dy(k) = 1 Then
MsgBox k & "日 重复定义!"
Cancel = True
Exit Sub
Else
dy(k) = 1
End If
Next
Debug.Print secs(i)
Next
End If
For m = 1 To days: Debug.Print IIf(dy(m) = 1, m, "");: Next
End Sub