|
最近某个朋友让我写的一个小功能,要求如下:能够抽奖/题,抽取不重复,需要能够自定义题目数量,抽取次数。
针对朋友这个要求,简单的写了一下。
功能如下:
点击“抽取”按钮,在题库范围内抽取。
点击“清除数据”按钮,清除历史抽取数据,一切归零。
在“C21 C22”单元格可以输入总数量和抽取次数。
总数量不能大于右侧试题库内试题的总数量,否则会出BUG!
试题库内容自行在:R列自行输入
在使用过程中,可以隐藏右侧不需要显示的列。
下载:https://duikou.lanzoul.com/iswYQ1qkhing
VBA代码如下:
- Private Sub CommandButton1_Click()
- Line1:
- EndNumber = Range("C21").Value
- WorkSum = Range("C1").Value
- If WorkSum >= Range("C22").Value Then
- result = MsgBox("亲,抽奖次数已用完!")
- GoTo Line2
- End If
-
- Randomize
- ' 初始化随机数种子
- RandomNumber = Int((EndNumber - 1 + 1) * Rnd + 1)
- '1到20之间的随机整数
- For i = 1 To EndNumber
- If Range("V" & i) = RandomNumber Then GoTo Line1
- Next
-
- WorkNumber = "R" & RandomNumber
- RandomWorkText = Range(WorkNumber).Value
- '获取题库列值
- Range("B4") = RandomWorkText
- '把值填入题目展示区域
- WorkSum = Range("C1").Value + 1
- Range("C1") = WorkSum
- '抽取次数+1
- Range("T" & WorkSum) = RandomWorkText
- Range("V" & WorkSum) = RandomNumber
- '------------------------------------------
- Line2:
-
- End Sub
- Private Sub CommandButton2_Click()
- EndNumberTwo = Range("C21").Value
- Range("C1") = 0
- Range("B4") = "请点击抽取按钮"
- Range("T1:T" & EndNumberTwo) = ""
- Range("V1:V" & EndNumberTwo) = ""
-
- End Sub
复制代码
|
-
内容输入区
-
抽奖区
|