登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

OldShu的博客

岁月似水,似水流年。

 
 
 

日志

 
 

Excel:二选一的问卷调查表与VBA  

2011-06-27 11:39:36|  分类: 电脑心得 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

——从带方框的勾与叉到二选一的控件问卷调查的VBA代码——

朋友前些日子求助,要求解决如何在Excel中写入带方框的勾与叉。我分析:

1.如果仅仅是输入勾与叉,在一般输入法的软键盘中即可解决,繁琐一些,在插入符号或特殊符号中也可找到;

2.问题是要带外方框,这如果在Word中又好解决了,只需先输入勾或叉,然后在“格式”-“中文版式”-“带圈字符”中去设置就行了;

3.然而在Excel中就行不通了,Excel本身不带“格式”-“中文版式”-“带圈字符”。即使在Word中设置好了,复制粘贴到Excel中,圈和字就分离了。

综合上述三条,于是就采取了最简单的“符号字体”的方式:

先输入大写的英文:QR选中后,字体换成Wingdings 2此时大写的英文字母Q变成了Q,而大写的英文字母R变成了R

 

Excel:二选一的问卷调查表与VBA - OldShu - OldShu的博客

 

作为应急,只需预先在Excel中准备好带框的叉勾QR,在需要时复制粘贴就可以了由于符号字体还有许多神奇的变化,于是写了Excel中带方框勾叉的最简输入谈符号字体的使用》和《关于符号字体的补充说明》(网址见【附录】)

问题似乎解决了,但这只是权宜之计,潜在的问题并没有解决。因为这是个问卷式的日常安全检查表,要求电脑填写后打印上交,检查很频繁,经常这样勾叉粘贴是很烦的。

仔细分析一下,所谓的带外框的勾叉,应该是控件,只不过由于设计的疏忽,实际效果并不到位:

①如果是文本框,但每次让填表人自己去拉出一个文本框再置入勾叉是不是让人吐血?

②如果是复选框,应该只有勾或空白,选定就是勾,不选就是空,何来叉叉?

③如果这种问卷式表格,只有“是”和“否”两者必须选一、并且只能选一,对于这种“二选一”的控件,应该用单选框(圆圈加点选定),又何来方框?

表格原稿行数很多,每一行都要带框勾叉,而且经常要上交打印文本,既费纸费事费时,又不便于统计汇总。于是在不违背设计者原来界面的基础上,试着改动几个控件,编写了几行代码,省时省事省纸还好统计,朋友用着方便就行了,再说自己好多年没用了,练练手,就算当作玩吧。

先把原始表格复制一份,任何变动都在复制件中进行。由于表格很长,仅将第一行设计列出,其它都可以照葫芦壳画瓢的,不过改动某些序号而已。

将原来D1单元格内的“有”、“无”字样删去。在同样的位置上准备重新设置几个控件:两个按钮和与之一一对应的两个文本框,并增加F列和G列帮助统计使用,同时还可帮助侦错排错。预设样式与位置如下图-1

 

Excel:二选一的问卷调查表与VBA - OldShu - OldShu的博客

 

-1

打开VBA和控件工具栏:“视图”-“工具栏”-Visual Basic”,如下图-2所示:

Excel:二选一的问卷调查表与VBA - OldShu - OldShu的博客

  

-2

在“Visual Basic”工具栏上点击“控件工具箱”会弹出的“控件工具箱”,如图-3所示,上面都有“设计模式”图标,单击该设计模式,就进入设计模式状态(如已在设计模式,按此图标则退出设计模式)。在“Visual Basic”工具栏上还有“Microsoft 脚本编辑器”,这在后面将会用到。在“控件工具箱”中有“命令按钮”和“文本框”控件,点击这两个控件图标可在页面上拖拉出相应控件。在“控件工具箱”中还有“属性”图标,点击该图标则可浏览、编辑控件的属性。这些在后面都会用到,只是在这里先照一个面。

 

Excel:二选一的问卷调查表与VBA - OldShu - OldShu的博客

 

-3

在进入“设计模式”的前提下,点击“命令按钮”,在D1单元格位置拉出两个命令按钮,分别是按钮1和按钮2,它们的默认名称分别“CommandButton1”和“CommandButton2”,是“有”和“无”的控制按钮;点击“文本框”,也在D1单元格位置拉出两个文本框,分别是文本框1和文本框2,它们的默认名称分别“TextBox1”和“TextBox2”,准备放置勾或叉。这四个控件都可以拖动位置、调整大小,参照图-4所示。

 

  

Excel:二选一的问卷调查表与VBA - OldShu - OldShu的博客

 

-4

选中按钮1CommandButton1”,点击图-3中所看到的“属性”,会弹出图-5的“CommandButton1”的属性面板,可以在Caption(标题)项中键入“有”,该按钮上出现的“有”就是标题,就可以这样置入并可改动为“是”、“否”之类自己所需要的字样,其它属性如字体大小和颜色、背景色、按钮的高、宽、绝对位置等等也都可以在该属性面板上编辑,如图-5所示:

Excel:二选一的问卷调查表与VBA - OldShu - OldShu的博客

  

-5

同样的,按钮2CommandButton2”、文本框1TextBox1”、文本框2TextBox2”属性面板,也可这样编辑。

在“Visual Basic”工具栏上点击“Microsoft 脚本编辑器”,在弹出的“Microsoft Visual Basic 编辑器中编写过程。其基本思路如下:

点击命令按钮1 CommandButton1“有”时,将文本框1 TextBox1中的值置为勾,同时将文本框2 TextBox2中的值置为空格;为统计汇总做准备,将单元格F4中的值置为1,同时将单元格G4中的值置为0

反过来,点击命令按钮2 CommandButton2“无”时,将文本框1 TextBox1中的值置为空格,同时将文本框2 TextBox2中的值置为叉,为统计汇总做准备,将单元格F4中的值置为0,同时将单元格G4中的值置为1

按照最简单最直接的按顺序设计的思路设计代码。

以下是单击命令按钮1 CommandButton1“有”时的代码:

(其中单引号在首的语句是非执行的说明语句。)

Private Sub CommandButton1_Click()

'点击命令按钮1 CommandButton1“有”时,会执行以下命令

'将文本框1 TextBox1中的值置为勾

TextBox1.Value = ""

'将文本框2 TextBox2中的值置为空格

TextBox2.Value = " "

'以下是记录下上述动作的数字表征,为统计汇总做准备

'将单元格F4中的值置为1

Range("F4").Value = 1

'将单元格G4中的值置为0

Range("G4").Value = 0

End Sub

以下是单击命令按钮2 CommandButton2“无”时的代码:

(其中单引号在首的语句是非执行的说明语句。)

Private Sub CommandButton2_Click()

'点击命令按钮2 CommandButton2“无”时,会执行以下命令

'将文本框2 TextBox2中的值置为叉

TextBox2.Value = "×"

'将文本框1 TextBox2中的值置为空格

TextBox1.Value = " "

'以下是记录下上述动作的数字表征,为统计汇总做准备

'将单元格F4中的值置为0

Range("F4").Value = 0

'将单元格G4中的值置为1

Range("G4").Value = 1

End Sub

编辑完毕,返回Excel界面,点击“Visual Basic”控件工具箱上的“退出设计模式”图标,就可以执行按钮试试。多试几次,看看有没有需要调整的,及时修改纠正。

如果一切正常,那就进入编辑模式照葫芦画瓢将所有各行的控件和代码都完成。照葫芦画瓢的唯一奥妙,就是要会数数,也就是控件默认名称的序号和过程代码中的对象名称一定要一一对应,宁肯慢点,不要出错,因为调试、检查、排错会比设计编程更费时间。设计完毕,逐行试运行各个按钮,逐个检查无误,就可以完全随心所欲地填写这个表格。

不过,最好应该再编一个全部重新置空的初始化过程,在填表初始或填写错误时可以全部置空重来。避免在未清空原始表格时就填写,这样会误用前次填写数据。

为了便于检查和统计,还可以编写检查排错过程,逐行检查F列和G列的数值之和是否等于1,对于这种二选一的选择,两者之和必须等于1:如果大于1,说明程序设计有误;如果小于1,比如为0,说明此行漏选,或程序有误。还应该检查:将F列和G列按列求和,如F列累加数与G列的累加数之和不等于(即大于或小于)有效统计行的行数,同样说明有漏选或程序有误。以上两种排错过程均应跳出窗口提示,以便纠正。

为了统计汇总上交表单,还可以写出相应的读、写、汇总、分析、打印的过程代码,有了基础数据,这些不是什么难题,只不过要看上级、上司的意图和要求了。

所有代码完成后,还有一个重要的事情要做:由于担心宏病毒的危害,各单位的计算机都提高了安全级别,我们这种自己编写的程序一般都被拒绝执行。因此必须在运行这个文件的电脑上对这个Excel文件的安全级别重新设置,方法是选择菜单栏的“工具”-“选项”-“安全性”-“宏安全性”-“安全级”选为“低”。如图-6所示:

Excel:二选一的问卷调查表与VBA - OldShu - OldShu的博客

  

-6

其实对计算机病毒不应该疑神疑鬼、草木皆兵,不必“与其信其无不如信其有”,安全性高低的设置不是什么时候都要最高的安全级别的,要视实际情况来定。所谓的高级别有时会对许多有用的程序说“No”,从而拒绝执行。对这段具体代码而言,由于确认这段自己编的VBA代码是安全的,所以大胆降低级别,不必担心,顺利通过。

综上所述,从两个带框字符可以引出一大段过程,设计和编程可以有很多方式,上面是按最直接最简单的思维操作方式进行。而如果进一步全面考虑各种因素进行设计,并安排符合单位和个人个性的界面,会有更多更有意思的前期工作。设计人员可能累点烦点,但使用人员轻松且不会误操作,这就体现出电脑的功能与作用了。

【附录】

Excel中带方框勾叉的最简输入谈符号字体的使用》地址是;

http://shuchonghui.blog.163.com/blog/static/1511563201142583727553/

http://blog.stnn.cc/oldshu/Efp_Bl_1005239522.aspx

关于符号字体的补充说明》地址是:

http://shuchonghui.blog.163.com/blog/static/1511563201142611312348/

http://blog.stnn.cc/oldshu/Efp_Bl_1005241160.aspx

  评论这张
 
阅读(3882)| 评论(1)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018