一、简单演示
二、关键对象/方法的分析
本期延续上期的内容,介绍另一种控件——选项按钮。
OLEObject
包括 ActiveX 控件,一个链接式或内嵌 OLE 对象。
ActiveX 控件的属性非常多,包括 Shape 常见的一些属性,它都有,比如:
- Left,左侧距离
- Top,顶端距离
- Width,宽度
- Height,高度
- TopLeftCell,左上角所在的单元格
Placement,与所在的单元格之间的附属关系
此外,它还有些比较少见的属性,比如:
- MousePointer,鼠标指针的样式
- TripleState,仅对复选框或切换按钮有效,增加第三种选择状态
- SpecialEffect,改变样式
- Caption,标题
- GroupName,组别
- LinkedCell,与控件关联的单元格
三、用法展示及说明
1. 通过宏自动生成选项按钮并定义属性
跟复选框一样,在 插入 菜单和 开发工具 菜单下面,分别有两种选项按钮,本期就不再测试它们的不同。
我们先试试这些选项按钮,是不是能起到单选题的效果——
我们试几次,确实每道题,只能有其中一个处于选中状态,而不同的题,选项按钮之间并不会有相互影响。那么,怎么确定选项按钮的分组的呢?答案就是——通过选项按钮的一个属性 GroupName 来确定的,后面我们再回过来看。
我们先从生成按钮慢慢往下走。
rmax,懒人必备的变量。
cmax,这里取的是每一行的最大列号,所以即使不同题目选项数量不同的时候,也能准确生成准确数量的选项。
Forms.OptionButton.1 这是选项按钮的程序设计标识符,在之前那个表可以查到。
Width,Height,Left 和 Top,定义选项按钮的宽度,高度以及位置。
接着的后面这些,就是对按钮其它的一些属性设置。
GroupName,就是刚才提到的,确定选项按钮如何进行配对的一个重要属性。如果 GroupName 一样的,那么这些选项按钮就是一组的,只能有一个按钮处于选中状态。我们这里,同组的按钮,都在同一行,所以,直接用所在单元格的 行号 作为 GroupName 就可以了。
Caption,选项按钮的标题内容,取对应单元格的内容就可以了,然后,把这个单元格的内容清空。
2. 结果输出为PDF
我们来到另外一个子过程OptionAnswer()。比较简单的一个子过程,跟上期一样,就是把 Excel 另存为 PDF 格式,基本是些格式化的语句了,不啰嗦。