![2d815fd8cc81c83eb0c3a0b785ce585f.png](https://img-blog.csdnimg.cn/img_convert/2d815fd8cc81c83eb0c3a0b785ce585f.png)
微信公众号:真是一天世界
这几天朋友圈都在晒年会,看到各位抽到的大奖,异常羡慕。
反正我从来都中不到,闲极无聊,索性用 VBA 做个九宫格抽奖器自己抽着玩。运行效果:
按“开始”开始随机抽奖,按“停止”结束抽奖。
![f7e7527a7e246931463c5e1e93237f85.gif](https://img-blog.csdnimg.cn/img_convert/f7e7527a7e246931463c5e1e93237f85.gif)
制作方法:
1. 在 Excel 中选取九宫格区域,填写奖品
2. 按 Alt+F11 打开 VBE,代码及释义如下:
![6cd27c46c623587ef26db01abe7716db.png](https://img-blog.csdnimg.cn/img_convert/6cd27c46c623587ef26db01abe7716db.png)
Dim lucky As Integer '将lucky定义为模块级别变量
Sub 开始抽奖()
Dim i As Integer, j As Integer 'i 和 j分别为行和列的值
Randomize '初始化随机数生成器
start:
lucky = 0 ' 初始化 lucky 的值为 0
Range("B2:D4").Interior.ColorIndex = 15 ' 初始底色为浅灰
i = (4 - 2) * Rnd + 2 ' 生成 2 到 4 之间的随机数值
j = (4 - 2) * Rnd + 2 ' 因为本例的行列值都在2到4之间
Cells(i, j).Interior.ColorIndex = 6 ' 抽中的底色为黄色
DoEvents '将控制权传给操作系统,即在程序执行中,略作停顿,
DoEvents '让系统处理完一定的事件后,再继续程序
DoEvents
If lucky = 1 Then Exit Sub ' 当 lucky 为1,则退出
GoTo start
End Sub
Sub 停止抽奖()
lucky = 1 ' 将 lucky 赋值为1
End Sub
3. 现在回到表格界面,点击“开发工具”-->"插入"-->"按钮" 分别制作两个按钮
4. 将按钮的文本分别改为“开始”和“结束”
![381a7c3142202b3354877b7bf16149c7.png](https://img-blog.csdnimg.cn/img_convert/381a7c3142202b3354877b7bf16149c7.png)
5. 右键单击按钮,分别给两个按钮指定我们已经编辑好的宏,就完成了:
- “开始”按钮对应“开始抽奖”宏
- “停止”按钮对应“停止抽奖”宏
![1a46f2f9d20c40c2f068bd0ec923124e.png](https://img-blog.csdnimg.cn/img_convert/1a46f2f9d20c40c2f068bd0ec923124e.png)
请注意:
- 带有宏程序的 Excel 文件后缀名为 .xlsm,2003 以下版本是 .xls
- 如果宏无法运行,可以点击“开始”-->"Excel 选项"-->“信任中心”-->“信任中心设置”-->“宏设置”-->“启用所有宏”
![070bff9cd350e7b7e06ae25e4393e091.png](https://img-blog.csdnimg.cn/img_convert/070bff9cd350e7b7e06ae25e4393e091.png)
![04d3f159b852921031fc4cc6cb5b1c1a.png](https://img-blog.csdnimg.cn/img_convert/04d3f159b852921031fc4cc6cb5b1c1a.png)
![f1c04ebb82275d36ee4af086c94877c8.png](https://img-blog.csdnimg.cn/img_convert/f1c04ebb82275d36ee4af086c94877c8.png)