如图所示:在整张表格中,我对筛选框的要求是不同的:
1,对于“培训地点”的选择:只能单选
2,对于“培训课程”的选择:不定向选择
由此,需要带有两种不同属性功能的复选框。
Excel 使用时可以插入两种类型的控件,一种是表单控件也叫为窗体控件,另一种是ActiveX控件。
如图所示,在<开发工具>中, 方框控件都是多选功能,圆圈控件都是单选功能;
我最早尝试的是窗体控件,因为简单,但做的过程中发现,虽然可以实现“培训地点”是单选功能,但却培训时长不能跟着培训地点选择的变化而自动变化。经过试验,我放弃了窗体控件,改选ActiveX控件。
最终实现的效果可见下图所示:
这里需要说明的是,如果选择“上海总部”,则培训总时长自动增加1小时;如果选择“客户现场”,则培训时长自动增加30分钟,这个功能隐藏在D14行和D15行中,
如图下图可见,我在这两行中输入了文本:
D14 False or Ture 60min
D15 False or Ture 30min
这个False or Ture 的属性是通过代码实现的,后边有介绍。
我们先来看看下面这几个图,可见,客户写下了培训时间,系统自动算出可用时长是7小时,目前客户选择了几个课程,系统自动算出的实际培训时长是 2.5小时。
当客户决定去上海总部培训时,D14处就自动改变属性成True, 同时系统自动算出的实际培训时长是 3.5小时。
当客户决定让讲师去他们现场培训时,D15处就自动改变属性成True, 同时系统自动算出的实际培训时长是 3小时。
当客户选择的培训课程太多,超出了计划课程时,系统会自动提示:“您勾选的培训总时长已大于计划时长,请修改”
如上可见,我通过ActiveX多选控件按钮实现了单选的功能,并且还能自动算出因培训地点的不同而所需要的时间不一样的要求。
接下来,就看下如何编写复选框的代码问题了:
首先在EXCEL中,让VBA的功能加载进来,在Ecxel菜单功能区,右击如图,选择“自定义功能区”,弹出了如下对话框
在弹出的对话框中,将“开发工具”添加到右侧,勾选,点“确定”后,ExceL的菜单栏中有“开发工具”这一选项了
其次,在开发工具中,点ActiveX方框控件,在单元格位置用鼠标画出控件,双击进入代码编辑界面中
筛选框自动名称为CheckBox1, CheckBox2, 可以右击复选框,更改名称为“上海总部”和“客户现场”,在打开的代码窗体中, 将如下两段编程输入进去,就将这两个复选框的属性设置成功了。
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then CheckBox2.Value = False
End Sub
此段意思是“选择了CheckBox1,那CheckBox2就不被选择;”
Private Sub CheckBox2_Click()
If CheckBox2.Value = True Then CheckBox1.Value = False
此段意思是“选择了CheckBox2,那CheckBox1就不被选择;”
如果你也有类似的表格要做,筛选框的操作可以按提示试验一下,配合到你的表单要求,设计出属于你的功能表格吧~~