ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 28418|回复: 21

[求助] 如何用EXCEL制作随机题库?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-4-7 20:16 | 显示全部楼层 |阅读模式
比如:
我有三种题型,单选,多选,判断,各50题。
现在欲将这三种题型每次各随机抽取一道,显示在一个页面上。
也就是说:
每次抽题,都随机抽取一道单选、一道多选、一道判断,然后显示在同一页面上。

我是这样做的:
首先有三张题库表,每个表中各有50行,第一行只用一个单元格放置题面。
假设这三张表为sheet1,sheet2,sheet3,每个表A1~A50放置题目。
然后将这三张表隐藏,再新建一张表做选题界面。
选题界面很简单,一个“选题”按钮,三个显示题面的标签。
选题按钮的代码意思如下:
定义3个范围在1~50的变量,这三个变量主要是从三张表中随机抽取题面。
然后再将这三个表中相应行的数据赋于三个标签。
选题按钮单击代码如下:

Private Sub CommandButton1_Click()
Dim s1, s2, s3 As Integer
s1 = Int(Rnd() * 50 + 1)
s2 = Int(Rnd() * 50 + 1)
s3 = Int(Rnd() * 50 + 1)
Label1.Caption = Sheet1.Cells(1, s1)
Label2.Caption = Sheet2.Cells(1, s2)
Label3.Caption = Sheet3.Cells(1, s3)
End Sub
可是这样做没有成功。请问该如何操作?

TA的精华主题

TA的得分主题

发表于 2012-4-7 20:45 | 显示全部楼层
请问该如何操作?

上附件呀!

TA的精华主题

TA的得分主题

发表于 2012-4-8 07:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Private Sub CommandButton1_Click()
Dim s1, s2, s3 As Integer
s1 = Int(Rnd() * 5 + 1)
s2 = Int(Rnd() * 5 + 1)
s3 = Int(Rnd() * 5 + 1)
Label1.Caption = Sheets("Sheet1").Cells(s1, 1)
Label2.Caption = Sheets("Sheet2").Cells(s2, 1)
Label3.Caption = Sheets("Sheet3").Cells(s3, 1)
End Sub

TA的精华主题

TA的得分主题

发表于 2012-4-8 07:36 | 显示全部楼层
我4楼白说了。
我真服了你了。

你小学数数也没学好?

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-4-7 21:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 zorsite 于 2012-4-7 21:11 编辑

附件来了……
是一个不成功的附件,请大家帮忙啊

EXCEL随机出题.rar

8.59 KB, 下载次数: 577

TA的精华主题

TA的得分主题

发表于 2012-4-7 21:20 | 显示全部楼层
Label1.Caption = Sheets("Sheet1").Cells(s1, 1)
Label2.Caption = Sheets("Sheet2").Cells(s2, 1)
Label3.Caption = Sheets("Sheet3").Cells(s3, 1)

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-4-7 22:08 | 显示全部楼层
guzhen9315 发表于 2012-4-7 21:20
Label1.Caption = Sheets("Sheet1").Cells(s1, 1)
Label2.Caption = Sheets("Sheet2").Cells(s2, 1)
Labe ...

谢谢指点!
经过改正后,点击“出题”三次后label1出现了sheet1中A1单元格的内容。但是其他标签中没有内容显示。
并且再点击“出题”按钮3个label都没有任何反应……

未命名.GIF

TA的精华主题

TA的得分主题

发表于 2012-4-7 22:55 | 显示全部楼层
上面的代码是正确的,没有出现楼主想要的效果是因为每个表中的题目没有50题,而是5题,所以要把Int(Rnd() * 50 + 1)中的50改成5。

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-4-8 00:14 | 显示全部楼层
lxz2393 发表于 2012-4-7 22:55
上面的代码是正确的,没有出现楼主想要的效果是因为每个表中的题目没有50题,而是5题,所以要把Int(Rnd() * ...

呵呵,谢谢!我倒是忽略这个问题了。2楼的让我传附件,我就随便做了一个,但是匆忙间有弄不齐50题,就选了5道题充数了。

但我把50改为5之后只有label1中有题面显示,在label2和label3中没有内容,不知是什么原因?

EXCEL随机出题2.rar (11.92 KB, 下载次数: 538)


TA的精华主题

TA的得分主题

 楼主| 发表于 2012-4-8 10:37 | 显示全部楼层
guzhen9315 发表于 2012-4-8 07:34
Private Sub CommandButton1_Click()
Dim s1, s2, s3 As Integer
s1 = Int(Rnd() * 5 + 1)

嗯^我第二个附件中的代码和这个一样.昨天晚上试的时候是不可以的,今天再试又可以了...
不知道是哪里的问题.
谢谢啦.

另有一个疑问:
如果想在WORD或PPT中实现此功能的话,可不可以采用这种思路:
定义15个变量,
a1,a2,a3,a4,a5
b1,b2,b3,b4,b5
c1,c2,c3,c4,c5
数据类型为string

然后把每道题的题面赋予这些变量.
比如
a1 =" 1.某注册会计师的女儿持有委托单位的债券,但数额较小.一般我们认为这不会影响注册会计师的独立性。"
a2 = "2.注册会计师在执业过程中严格遵守独立审计准则,并克尽应有的职业谨慎,但仍有可能未发现会计报表中的错报和漏报。"
.....
如此定义15个变量后,再在"选题"按钮中调用这些变量,使这些题干随机显示在3个label中.

比如:
Label1.Caption = a1
Label2.Caption = b5
Label3.Caption = c5

该如何实现随机选题?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-11 17:10 , Processed in 0.025302 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表