设想有一天你想做一个问卷调查,有不想太浪费纸,可以用Excel做一个简单地问卷,答卷者只需在excel上填写即可。或者收集了纸质问卷,有我们自行手动选择,进行统计。

  • 在表格中设计问卷如图,我是直接从word中导进来的。

  • 分别在“确认提交”和“RESET”控件下编写如下代码。

'''Option Base 1
Dim T1(1 To 36)
Private Sub CommandButton1_Click()msg = MsgBox("确定要提交你的答卷码?提交操作不可回退,请慎重考虑!", 1, "提交确认")If msg = 2 ThenGoTo overEnd IfFor k = 1 To 9If t(k, 1) + t(k, 2) + t(k, 3) + t(k, 4) = 0 ThenMsgBox "第" & k & "题未选择"GoTo overEnd IfNext kFor i = 1 To 9For j = 1 To 4T1((i - 1) * 4 + j) = t(i, j)Next jNext iActiveSheet.Unprotects = Sheet1.Range("C1").ValueSheet1.Range("C1").Value = Sheet1.Range("C1").Value + 1ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=FalseSheet2.Range("B" & s + 1, "AK" & s + 1).Value = T1Sheet2.Range("A" & s + 1) = s
over:
End SubPrivate Sub CommandButton2_Click()ActiveSheet.UnprotectSheet1.Range("C1").Value = 1ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=FalseSheet2.Range("A2", "AK100").ClearContents
End Sub
  • 编写选项按钮宏代码,并将分组框中对应选项按钮点击事件处理指定到对应的宏上。选项按钮命名数字表示题号和选项号。
Option Base 1
Public t(9, 4) As IntegerSub 选项按钮11_Click()t(1, 1) = 1t(1, 2) = 0t(1, 3) = 0t(1, 4) = 0
End Sub
Sub 选项按钮12_Click()t(1, 1) = 0t(1, 2) = 1t(1, 3) = 0t(1, 4) = 0
End Sub
Sub 选项按钮13_Click()t(1, 1) = 0t(1, 2) = 0t(1, 3) = 1t(1, 4) = 0
End Sub
Sub 选项按钮14_Click()t(1, 1) = 0t(1, 2) = 0t(1, 3) = 0t(1, 4) = 1
End Sub
Sub 选项按钮21_Click()t(2, 1) = 1t(2, 2) = 0t(2, 3) = 0t(2, 4) = 0
End Sub
Sub 选项按钮22_Click()t(2, 1) = 0t(2, 2) = 1t(2, 3) = 0t(2, 4) = 0
End Sub
Sub 选项按钮23_Click()t(2, 1) = 0t(2, 2) = 0t(2, 3) = 1t(2, 4) = 0
End Sub
Sub 选项按钮24_Click()t(2, 1) = 0t(2, 2) = 0t(2, 3) = 0t(2, 4) = 1
End Sub
Sub 选项按钮31_Click()t(3, 1) = 1t(3, 2) = 0t(3, 3) = 0t(3, 4) = 0
End Sub
Sub 选项按钮32_Click()t(3, 1) = 0t(3, 2) = 1t(3, 3) = 0t(3, 4) = 0
End Sub
Sub 选项按钮33_Click()t(3, 1) = 0t(3, 2) = 0t(3, 3) = 1t(3, 4) = 0
End Sub
Sub 选项按钮34_Click()t(3, 1) = 0t(3, 2) = 0t(3, 3) = 0t(3, 4) = 1
End Sub
Sub 选项按钮41_Click()t(4, 1) = 1t(4, 2) = 0t(4, 3) = 0t(4, 4) = 0
End Sub
Sub 选项按钮42_Click()t(4, 1) = 0t(4, 2) = 1t(4, 3) = 0t(4, 4) = 0
End Sub
Sub 选项按钮43_Click()t(4, 1) = 0t(4, 2) = 0t(4, 3) = 1t(4, 4) = 0
End Sub
Sub 选项按钮44_Click()t(4, 1) = 0t(4, 2) = 0t(4, 3) = 0t(4, 4) = 1
End Sub
Sub 选项按钮51_Click()t(5, 1) = 1t(5, 2) = 0t(5, 3) = 0t(5, 4) = 0
End Sub
Sub 选项按钮52_Click()t(5, 1) = 0t(5, 2) = 1t(5, 3) = 0t(5, 4) = 0
End Sub
Sub 选项按钮53_Click()t(5, 1) = 0t(5, 2) = 0t(5, 3) = 1t(5, 4) = 0
End Sub
Sub 选项按钮54_Click()t(5, 1) = 0t(5, 2) = 0t(5, 3) = 0t(5, 4) = 1
End Sub
Sub 选项按钮61_Click()t(6, 1) = 1t(6, 2) = 0t(6, 3) = 0t(6, 4) = 0
End Sub
Sub 选项按钮62_Click()t(6, 1) = 0t(6, 2) = 1t(6, 3) = 0t(6, 4) = 0
End Sub
Sub 选项按钮63_Click()t(6, 1) = 0t(6, 2) = 0t(6, 3) = 1t(6, 4) = 0
End Sub
Sub 选项按钮64_Click()t(6, 1) = 0t(6, 2) = 0t(6, 3) = 0t(6, 4) = 1
End Sub
Sub 选项按钮71_Click()t(7, 1) = 1t(7, 2) = 0t(7, 3) = 0t(7, 4) = 0
End Sub
Sub 选项按钮72_Click()t(7, 1) = 0t(7, 2) = 1t(7, 3) = 0t(7, 4) = 0
End Sub
Sub 选项按钮73_Click()t(7, 1) = 0t(7, 2) = 0t(7, 3) = 1t(7, 4) = 0
End Sub
Sub 选项按钮74_Click()t(7, 1) = 0t(7, 2) = 0t(7, 3) = 0t(7, 4) = 1
End Sub
Sub 选项按钮81_Click()t(8, 1) = 1t(8, 2) = 0t(8, 3) = 0t(8, 4) = 0
End Sub
Sub 选项按钮82_Click()t(8, 1) = 0t(8, 2) = 1t(8, 3) = 0t(8, 4) = 0
End Sub
Sub 选项按钮83_Click()t(8, 1) = 0t(8, 2) = 0t(8, 3) = 1t(8, 4) = 0
End Sub
Sub 选项按钮84_Click()t(8, 1) = 0t(8, 2) = 0t(8, 3) = 0t(8, 4) = 1
End Sub
Sub 选项按钮91_Click()t(9, 1) = 1t(9, 2) = 0t(9, 3) = 0t(9, 4) = 0
End Sub
Sub 选项按钮92_Click()t(9, 1) = 0t(9, 2) = 1t(9, 3) = 0t(9, 4) = 0
End Sub
Sub 选项按钮93_Click()t(9, 1) = 0t(9, 2) = 0t(9, 3) = 1t(9, 4) = 0
End Sub
Sub 选项按钮94_Click()t(9, 1) = 0t(9, 2) = 0t(9, 3) = 0t(9, 4) = 1
End Sub
  • 对表2中“统计分析”的处理代码如下。主要生成统计图。
Private Sub CommandButton1_Click()Dim g(1 To 9, 1 To 4) As Integerm = Sheet1.Range("C1").Value - 1Sheet2.Range("A" & m + 2) = "Total"Sheet2.Range("B" & m + 2, "AK" & m + 2).Formula = "=Sum(R[" & -m & "]C:R[-1]C)"For i = 1 To 9For j = 1 To 4g(i, j) = Sheet2.Cells(m + 2, (i - 1) * 4 + j + 1)Next jNext iSheet2.Range("B" & m + 5, "E" & m + 13).Value = gFor n = 1 To 9Sheet2.Cells(m + 5 + n - 1, 1).Value = nNext nFor l = 1 To 4Sheet2.Cells(m + 4, l + 1) = Chr(64 + l)Next lRange("A" & m + 4, "E" & m + 13).SelectActiveSheet.Shapes.AddChart.SelectActiveChart.ChartType = xlColumnClusteredActiveChart.SetSourceData Source:=Range("A" & m + 4, "E" & m + 13)End Sub

具体的就不多说了,提几点注意的地方:

1、为了避免问卷回退的引起的误操作,点击确认提交后,在当前表中不可再修改已提交问卷,即只能对自己的问卷进行操作。请务必在确认无误后提交。若要修改,请到第二张表中找到相应题号,进行修改。此举目的在于避免你答问卷时,将别人的问卷搞得一团糟。
2、份数从1开始依次递增,若小于1,警告框提示。
3、第二张表中,点击统计分析,生成统计图。这里以柱状图为例。其他类似。
4、之所以不用弹窗显示,单题选择的形式,是因为这种方式不利于提交问卷前做最后的修改。

缺点:很多代码都是重复性的工作,虽然是以复制粘贴小修改的形式完成的,其实,可以想办法用更简短的代码表示的。

1、
Sub 选项按钮1_Click()
MsgBox “呵呵哒”
End Sub
表示:按按钮1,弹出窗体提示。
2、
Sheet2.Range(“A1”).Value = 100
表示相应格中的值设置为100。
3、
Sheet1.Range(“A” & (Sheet0.Range(“I5”).Value + 1)).Value =1
这种写法表示Sheet1的AI单元格的值设置为1,其中(Sheet0.Range(“I5”).Value + 1)表示的是A对应的行标。可能是”A1”,可能是”A2”,以此类推。如果是范围的话,中间用冒号隔开。
4、
表单控件和ACTIVEX控件的区别:一个主要区别就是表单控件可以和单元格关联,操作控件可以修改单元格的值,所以用于工作表,而ACTIVEX控件虽然属性强大,可控性强,但不能和单元格关联,所以用于表单Form。
5、
ActiveSheet.Unprotect “12345”
”’Cells.Locked = False
Sheet1.Range(“C3”).Locked = False
Sheet1.Range(“C3”).Locked = True
ActiveSheet.Protect “12345”
对C3单元格进行加锁保护。
4、
Sheet2.Range(“B” & m + 2, “AK” & m + 2).Formula = “=Sum(R[” & -m & “]C:R[-1]C)”
表示对m+2行的B到AK列使用求和公式,求和区域为向上m行到向上一行。m为变量,要单独写到字符串外,用&连接。


最后分享一个小技巧,当你想实现某种功能,却不知语法如何的时候,可以通过录制宏的方式,来进行查看、和修改代码。另外,貌似选中某个东西摁F1是查看帮助,表示没用过。其次,就是百度了。


手把手教你如何用VBA统计问卷调查表相关推荐

  1. python远程桌面控制_手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤

    配置说明 使用Pycharm 2020.1.1 professional 专业版.(据说只有专业版可以远程连接)如果不是专业的伙伴,可以用校园邮箱注册一个专业版,免费的哦! 步骤 1. 设置Conne ...

  2. 手把手教你如何用Python制作一个电子相册?末附python教程

    这里简单介绍一下python制作电子相册的过程,主要用到tkinter和pillow这2个库,tkinter用于窗口显示照片,pillow用来处理照片,照片切换分为2种方式,一种是自动切换(每隔5秒) ...

  3. 用python画皇冠_【推荐】手把手教你如何用Python画一棵漂亮樱花树含源码

    最近给大家整理了一下,挑了一些我觉得不错的代码分享给大家手把手教你如何用Python画一棵漂亮樱花树含源码. 动态生成樱花 效果图(这个是动态的): import turtle as T import ...

  4. 搜狐邮件服务器地址加密方式,手把手教你如何用SMIME加密任意邮件

    原标题:手把手教你如何用SMIME加密任意邮件 在此之前,我曾写过一篇关于邮件服务提供商安全问题的文章[传送门],你可以根据我的建议来选择一个比较合适的邮件提供商.但是,如果你已经有自己的邮箱并且使用 ...

  5. 【填坑之旅】手把手教你如何用AndroidStudio上传自己的library到Jcenter库

    [填坑之旅]手把手教你如何用AndroidStudio上传自己的library到Jcenter库 前言:我们在使用AndroidStudio的时候,会经常用到第三方的代码库.引入第三方库的方式无非就是 ...

  6. 超详细AI二维码制作教程:手把手教你如何用Stable Diffusion 生成一个创意二维码?

    AI已来,未来已来! 来势汹汹的人工智能,如同创世纪的洪水,正在全世界的范围内引发一场史无前例的科技革命.AI正在改变世界!而我们正是这场巨变的见证者. 今天我们要介绍的内容就是:如何利用AI工具St ...

  7. 手把手教你如何用Python从PDF文件中导出数据(附链接)

    作者:Mike Driscoll :翻译:季洋:校对:丁楠雅 本文约4000字,建议阅读10分钟. 本文介绍了在提取出想要的数据之后,如何将数据导出成其他格式的方法. 有很多时候你会想用Python从 ...

  8. 石头机器人拖地水量调节_宅小秘课堂:手把手教你如何用好石头扫地机器人T6...

    [CNMO评测]从上架众筹到如今,石头扫地机器人T6已经亮相有一段时间,宅小秘作为提前拿到产品的科技编辑(嘚瑟的插会腰),在这期间里,将石头扫地机器人T6作为家中清扫的主力机.随着众筹结束以及各大平台 ...

  9. 动态添加跨行表格_手把手教你制作Excel动态统计表格,主管看了都会竖起大拇指!-Office教程...

    教程领到手,学习不用愁!领 ↑↑↑ 还有朋友不知道知识兔吗?知识兔就是下载考试资料|软件|教程|素材的网站,建议去搜索引擎搜索知识兔!知识兔是课程网站吗?知识兔有什么课程?知识兔可以兔费领取下载课程, ...

  10. python樱花树代码_【推荐】手把手教你如何用Python画一棵漂亮樱花树含源码

    最近,我整理出来,并选择一些代码,我觉得是好与你分享教你如何画一个美丽的樱花与Python源代码树.动态生成樱花进口龟Timport randomimport时间#画樱花的躯干(60 t) def树( ...

最新文章

  1. vue 之 nextTick 与$nextTick
  2. 面试被问BIO、NIO、AIO的区别,怎么破?
  3. vscode 导入第三方jar包(添加外部JAR)
  4. 【最简解法】1048 Find Coins (25 分)_18行代码AC
  5. asp.net编程网页弹窗显示变量_CODESYS Engineering:面向工程应用编程的工具软件
  6. Qt C++ 命名空间namespaces讲解
  7. python中用turtle绘制正方形_在Python-Turtle图形中创建正方形和旋转正方形的简单方法...
  8. 「创作之秋」| 参赛成员- 获奖名单(参与奖)
  9. 安装nvm下载node,npm以及配置的全过程。解析npm下载包使用 -v指令 发现下载的包不存在的原因。
  10. 《天勤数据结构》笔记——使用两个栈实现共享栈实现(C/C++)
  11. win10下装黑苹果双系统_高手拆换GPD P2 Max无线模块,实现完美黑苹果
  12. 小米平板2刷哪个系统更流畅_你想用什么系统的小米平板2,Win10还是MIUI7?
  13. 【冬瓜哥手绘】致敬龙芯!冬瓜哥手工设计了一个CPU译码器!
  14. 数据库笔试面试(第一版)——根据题目完成以下50道SQL语句
  15. Eclipse英文版视频教程(from Carleton University)
  16. linux查看历史开机时间,查看linux系统的开机时间/重启历史记录
  17. Mac 上 VMware 安装 win7 虚拟机如何添加磁盘
  18. MySQL学习(四)——MySQL的登录
  19. @程序员,你也是一杯茶,一支烟,一个BUG 改一天吗?
  20. 计算机网络 P43 网络应用模型 P44 DNS系统 P45 FTP文件传输协议

热门文章

  1. pcd点云文件成功转成npy文件
  2. 状态模式,懂你的另一半
  3. 使用kali系统中legion工具包进行漏扫时闪退,原因是legion工具包版本问题,使用命令sudo apt-get install legion更新一下就解决了
  4. 引擎开发-图形渲染器开发
  5. 伦敦金行情走势k线图
  6. 任正非:不要在微信里消耗你的人生和青春
  7. 尜尜送的诗,以及我回的句
  8. 如何快速删除某几页的页眉页脚
  9. 计算机分组Excel,【Excel神技能】如何在Excel表格中进行“数据分组”?
  10. 标签系列三:spring 中property解释以及property标签里面的属性