我想在选择同一行中某个字段的特定值时,使用VBA禁用Ms Access中的连续表单中的一行中的特定字段。我使用了以下代码,但它适用于所有行。
Private Sub AttendanceType_AfterUpdate()
Me.[Enter Time].Enabled = True
Select Case Me.AttendanceType
Case "Annual Vacation", "Casual Leave", "Sick Leave"
Me.[Enter Time].Enabled = False
End Select
End If
End Sub
上面的代码在Single Form视图中工作,我们只有一行。但是,在“连续表单”视图中,它会禁用所有行中名为“输入时间”的原始数据。
在此附图中,请参阅第一行。当出勤类型为病假时,它会禁用所有行中的输入时间字段
答案 0 :(得分:0)
你想要的东西是无法解决的。
我想你想在做出改变之前保护[Enter Time]
字段。您可以根据[Enter Time]
字段的事件BeforeUpdate使用不同的方法:
Private Sub [Enter Time]_BeforeUpdate(Cancel As Integer)
if Me.AttendanceType = "Annual Vacation" or _
Me.AttendanceType = "Casual Leave" or _
Me.AttendanceType = "Sick Leave" Then
MsgBox "Enter Time has already been entered in the database."
Cancel = True
Me![Enter Time].Undo
End If
End Sub