ms-access - 选中复选框时使用 VBA 启用文本框
问题描述
我是 VBA 的新手,我正在尝试在 Access 中创建一个表单,其中根据复选框是选中还是未选中来启用或禁用文本框。
那么,如果“要求进行调查?” 框被选中 启用“请求调查日期”框以供用户输入日期。
我有以下代码:
Private Sub CheckSurveyRequested_AfterUpdate()
If CheckSurveyRequested = True Then
DateSurveyReq.Enabled = True
Else
DateSurveyReq.Enabled = False
End If
End Sub
但是当我运行第 5 行时,会出现“需要 424 对象”错误。
有人对我在这里做错了什么有建议吗?
解决方案
您绝对应该使用该AfterUpdate
事件——将文本框的行为与单击事件联系起来意味着使用键盘导航表单的用户不会获得相同的行为。
此外,您应该在表单加载时复制此行为:如果复选框的默认值为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
推荐阅读
- sql - Teradata 查询优化
- ruby-on-rails - 如何在 Rails 中手动导致 ActiveRecord RecordInvalid
- java - 如何在 java 中打印以下结果?
- css - CSS 动画在 Firefox 上无法正常工作
- gcc - 如何在不运行内核的情况下调试内核代码?
- file - 如何在 Flutter 中覆盖具有源图像的资产图像?
- c# - 如何在 Assembly.GetExecutingAssembly 中获取 HttpPostAttribute
- python - Django 管理器查询在查询链中不起作用。AttributeError:“QuerySet”对象没有属性
- linux - C程序在将其输出从bash脚本重定向到另一个文件时卡在终端上
- .net-core - DefineConstants 适用于 Run 命令,但不适用于 Build 命令