如何为MS Access窗体中的列表框控件设置条件格式
能否在MS Access窗体的列表框控件上应用条件格式?
问题场景
当前窗体运行效果:
需要设置格式的控件位于窗体最左侧,是通过SQL查询从两张关联表提取数据的列表框,绑定的SQL语句如下:
SELECT T_SALARIE_EMPLOI.SALARIE_EMPLOI_id, T_SALARIE_EMPLOI.SALARIE_EMPLOI_salarie_nni, T_SALARIE.SALARIE_nom, T_SALARIE.SALARIE_prenom, T_SALARIE_EMPLOI.SALARIE_EMPLOI_date_fin_emploi_actuel FROM T_EMPLOI INNER JOIN (T_SALARIE INNER JOIN T_SALARIE_EMPLOI ON T_SALARIE.SALARIE_NNI = T_SALARIE_EMPLOI.SALARIE_EMPLOI_salarie_nni) ON T_EMPLOI.EMPLOI_identifiant = T_SALARIE_EMPLOI.SALARIE_EMPLOI_emploi_identifiant WHERE (((T_SALARIE_EMPLOI.SALARIE_EMPLOI_statut_id)=2) And ((T_SALARIE_EMPLOI.SALARIE_EMPLOI_emploi_identifiant)=Forms!F_Vue_Emploi.Form!EMPLOI_identifiant));
窗体设计视图:
遇到的问题:选中文本框控件时可以看到条件格式设置按钮,但选中列表框后没有该入口。
目标效果:当列表框第一列(ID列)值为0时,对应整行设置为指定颜色(例如红色)。
结论
MS Access 原生列表框控件没有内置条件格式功能,找不到设置入口是控件本身的功能限制,不是操作错误。
实现方案
要实现逐行按条件标色的需求,推荐使用以下方案:
- 最优方案:用「数据表视图/连续窗体子窗体」替代列表框
这是Access开发中最通用、维护成本最低的实现方式:- 新建一个空白窗体,将窗体的
默认视图属性设置为「数据表」或「连续窗体」 - 将上述SQL查询设为该新窗体的记录源,在窗体内放置对应字段的文本框,调整列宽、布局使其和原列表框显示效果一致
- 此时可以直接使用Access内置的条件格式功能:选中ID列对应的文本框,设置规则为「值等于0时,将整行所有控件的字体/背景色设为红色」
- 将做好的新窗体作为子窗体嵌入原主窗体,替换原有列表框控件即可
- 新建一个空白窗体,将窗体的
- 不推荐方案:Windows API自定义绘制
如果必须保留原生列表框,可以通过VBA调用Windows API拦截列表框的绘制事件,逐行判断值后自定义行颜色,但该方案需要编写大量底层代码,在不同Access版本、Windows主题下容易出现显示兼容问题,非特殊场景不建议使用。
内容的提问来源于stack exchange,提问作者Kais
相关产品推荐
相关产品推荐

