当前位置: 首页 > news >正文

限制选中指定个数CheckBox控件(1/2)

限制选中指定个数CheckBox控件(1/2)

实例需求:工作表中有8个CheckBox控件(下文中简称为控件),现在需要实现限制用户最多只能勾选4个控件。

Dim OnDic As Object
Sub CheckboxeEvent()Dim oCB As CheckBox, OnCol As CollectionDim oSht As WorksheetConst MAX_CHECKED As Long = 4Set OnCol = New CollectionSet oSht = Worksheets("Sheet1")If OnDic Is Nothing ThenSet OnDic = CreateObject("scripting.dictionary")For Each oCB In oSht.CheckBoxesIf oCB.Value = xlOn Then OnDic(oCB.Name) = ""NextEnd IfFor Each oCB In oSht.CheckBoxesIf oCB.Value = xlOn Then OnCol.Add oCBNext oCBIf OnCol.Count > MAX_CHECKED ThenFor Each oCB In OnColIf Not OnDic.exists(oCB.Name) ThenoCB.Value = xlOffEnd IfNextElseOnDic.RemoveAllFor Each oCB In OnColOnDic(oCB.Name) = ""NextEnd If
End Sub

【代码解析】
第1行代码声明模块基本对象变量,用于保存已经选中的控件。
第5行代码设置最多选中4个控件。
第6行代码创建Collection对象实例。
第7行代码指定工作表对象。
如果首次运行此代码过程,OnDic对象为空,则第9行代码创建字典对象,第10~12代码遍历工作表中的控件,如果用户已经勾选控件,第11行代码将控件名称保存在字典对象中。
第14~16代码遍历工作表中的控件,将当期已经选中的控件添加到OnCol对象中。
第17行代码判断当前选中的控件个数是否大于指定个数(4)。
如果已经超过指定个数,第18~22行代码循环遍历OnCol对象。
第19行代码查找存在于OnCol对象中,但是不存在于OnDic对象中的控件,满足上述条件的控件就是最后一个被选中的控件。
第20行代码取消勾选控件。
由于用户可能会取消勾选某个控件,所以第24行代码先清空字典控件,然后第25~27行代码将当前选中的控件添加到字典控件中。

所有CheckBox控件都指定宏为CheckboxeEvent()过程,最终效果如下图所示。

请添加图片描述

http://www.lryc.cn/news/274633.html

相关文章:

  • QT中的信号与槽的讲解
  • RNN文本分类任务实战
  • 【算法系列 | 12】深入解析查找算法之—斐波那契查找
  • 全新的C++语言
  • three.js 多通道组合
  • 编程笔记 html5cssjs 022 HTML表单概要
  • ​三子棋(c语言)
  • MySQL-DCL
  • QT开源类库集合
  • C++ STL(2)--算法(2)
  • 格密码基础:对偶格(超全面)
  • ECMAScript简介及特性
  • csdn中的资源文件如何删除?
  • NA原理及配置
  • 解决:TypeError: ‘tuple’ object does not support item assignment
  • vue3项目中axios的常见用法和封装拦截(详细解释)
  • 基础语法(一)(1)
  • YOLOv8模型yaml结构图理解(逐层分析)
  • 【大数据】Zookeeper 集群及其选举机制
  • Redis 过期策略
  • RT_Thread 调试笔记:串口打印、MSH控制台 相关
  • (适趣AI)Vue笔试题
  • Matytype的安装问题(word及PPT报错问题)
  • docker拉取镜像提示 remote trust data does not exist for xxxxxx
  • ElasticSearch Nested类型全文检索、聚合查询
  • 专业级的渗透测试服务,助力航空业数字化安全启航
  • 【docker】安装 Redis
  • pinia的独立维护,统一导出及持久化
  • 【AI视野·今日Robot 机器人论文速览 第六十七期】Mon, 1 Jan 2024
  • FBL刷写