1160101 发表于 2024-3-7 10:45:15

Excel抽奖系统VBA宏代码写的!

最近某个朋友让我写的一个小功能,要求如下:能够抽奖/题,抽取不重复,需要能够自定义题目数量,抽取次数。

针对朋友这个要求,简单的写了一下。
功能如下:
点击“抽取”按钮,在题库范围内抽取。
点击“清除数据”按钮,清除历史抽取数据,一切归零。
在“C21C22”单元格可以输入总数量和抽取次数。
总数量不能大于右侧试题库内试题的总数量,否则会出BUG!
试题库内容自行在:R列自行输入
在使用过程中,可以隐藏右侧不需要显示的列。
下载:https://duikou.lanzoul.com/iswYQ1qkhing
**** Hidden Message *****
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





页: [1]
查看完整版本: Excel抽奖系统VBA宏代码写的!