Access 2002通过AutoExec宏打开窗体后文本框与复选框失效问题
异常成因及解决方法
核心成因
- 最直接的原因是你AutoExec宏的
Open Form操作显式指定了只读模式:手动打开窗体时默认使用编辑模式,未绑定的筛选控件(文本框、复选框)可正常交互;而窗体级只读模式开启后,Access会默认锁定所有窗体控件,不管是否和记录源绑定,自然无法输入、切换选中状态,控件事件也不会触发。 - 次要可能成因:
Form_Open事件触发时机过早,AutoExec执行时Access的VBA运行环境、数据库对象还未完全初始化,你在Open事件里调用qry、Fltr函数可能导致窗体加载异常,控件被锁死。
解决步骤
- 修改AutoExec宏的
Open Form参数,将「只读模式」改为「编辑模式」。如果需要防止用户修改窗体绑定的记录源数据,不要开启窗体全局只读,而是在窗体属性面板中将「允许添加」「允许删除」「允许编辑」设置为否,或者将记录源设置为快照类型,这两种方式都不会影响未绑定筛选控件的正常使用。 - 如果修改打开模式后仍存在异常,将
Form_Open事件中的qry、Fltr函数调用迁移到Form_Load事件中:Form_Open是窗体开始加载、控件还未完成初始化时触发,Form_Load是所有控件加载完成后触发,更适配AutoExec的早执行时机。 - 额外优化:你当前
Chkbx_Click中的切换值逻辑冗余,复选框点击时会自动切换取值,不需要手动写.Value = .Value * -1,这段代码会导致值被翻转两次,等于点击后值没有变化,建议删除这段手动赋值逻辑。
内容的提问来源于stack exchange,提问作者Lorthas
相关产品推荐
相关产品推荐

