使用VBA在Microsoft Access中以连续形式禁用行中的特定字段

时间:2017-09-09 15:06:56

标签: vba ms-access access-vba

我想在选择同一行中某个字段的特定值时,使用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视图中工作,我们只有一行。但是,在“连续表单”视图中,它会禁用所有行中名为“输入时间”的原始数据。

在此附图中,请参阅第一行。当出勤类型为病假时,它会禁用所有行中的输入时间字段

enter image description here

1 个答案:

答案 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