Access VBA:ComboBox为空时添加弹窗报错及表单打开问题
解决Access表单打开时的运行时错误'3075'问题
错误原因分析
你的代码存在两个核心问题:
- 执行顺序错误:先调用
DoCmd.OpenForm再判断ComboBox值,当RM_State为空时,查询条件"[S_ID]=" & [RM_State]会变成无效的"[S_ID]=",直接触发语法错误(3075),后续判断逻辑根本不会执行。 - 空值判断错误:未选中值的ComboBox在Access中值为Null,而非
0,用RM_State = 0无法正确识别空状态。
修正后的代码
Private Sub EDit_Click() ' 先判断ComboBox是否为空 If IsNull(RM_State) Or RM_State = "" Then MsgBox "Select the State from the List." Exit Sub ' 终止后续代码执行 End If ' 验证通过后再打开表单 DoCmd.OpenForm "State", acNormal, "", "[S_ID]=" & [RM_State], , acNormal End Sub
补充说明
如果S_ID是文本类型,需要给条件值加单引号,避免字符串包含特殊字符时出错:
DoCmd.OpenForm "State", acNormal, "", "[S_ID]='" & [RM_State] & "'", , acNormal
IsNull(RM_State)用于判断控件值为Null的情况,RM_State = ""用于兼容控件值为空字符串的场景,两者结合确保覆盖所有未选中状态。
内容的提问来源于stack exchange,提问作者Ruchir Sheth
相关产品推荐
相关产品推荐

