我是VBA的新手,我正在尝试在Access中创建一个表单,其中根据复选框是选中还是未选中来启用或禁用文本框。
那么,如果要求“调查”?框被选中,“要求的日期调查”框已启用,以便用户输入日期。
我有以下代码:
Private Sub CheckSurveyRequested_AfterUpdate()
If CheckSurveyRequested = True Then
DateSurveyReq.Enabled = True
Else
DateSurveyReq.Enabled = False
End If
End Sub
但是当我运行第5行时,这会出现“ 424 Object Required”错误。
有人对我在这里做错了什么建议吗?
答案 0 :(得分:2)
您绝对应该使用AfterUpdate
事件-将文本框的行为与click事件联系起来,这意味着使用键盘导航表单的用户将不会获得相同的行为。
此外,您应在加载表单时复制此行为:如果复选框的默认值为False
,则在加载表单时应禁用文本框。
此外,正如@ErikA指出的那样,您可以使用一条可读的行来完成此操作。
所以我推荐这样的东西:
Option Explicit
Private Sub chkSurveyRequested_AfterUpdate()
Me.txtDateSurveyReq.Enabled = Me.chkSurveyRequested.value
End Sub
Private Sub Form_Load()
Me.txtDateSurveyReq.Enabled = Me.chkSurveyRequested.value
End Sub
为了不重复您自己,您可以将此代码移到单独的子目录中:
显式选项
Private Sub Form_Load()
' assign the function below to the AfterUpdate event of the checkbox.
Me.chkSurveyRequested.AfterUpdate = "=UpdateControls()"
' now execute the function directly
UpdateControls
End Sub
Private Function UpdateControls()
Me.txtDateSurveyReq.Enabled = Me.chkSurveyRequested.value
End Function
答案 1 :(得分:1)
我建议以下内容-
Private Sub CheckSurveyRequested_AfterUpdate()
DateSurveyReq.Enabled = CheckSurveyRequested
End Sub