您当前的位置:首页 > 电脑百科 > 软件技术 > office

EXCEL中通过VBA宏编写一个简易抽奖小工具

时间:2021-08-02 11:25:19  来源:  作者:千万别学Excel

最近有粉丝在后台向我提了一个工作中的小需求,具体如下:

■ 因为公司要组织一个知识竞赛,其中有一个游戏环节,需要从一组名单中随机选出指定数量的人员参加游戏,并且需要在大屏中滚动名单以增强游戏紧张感。当然最重要的是最终被选中的名单中不能有重复名单出现。她希望能通过Excel来实现这个需求。

需求分析:其实这个需求与抽奖非常类似,我们可以通过Excel的VBA宏功能来编写一个小工具来实现这个需求,说干就干,以下就是最终实现的成品效果:

EXCEL中通过VBA宏编写一个简易抽奖小工具

抽奖小工具演示

功能说明:

第1步、名单在sheet2《名单维护》工作表的A列中输入

第2步、设置抽奖人数

第3步、点击开始按钮,名单开始滚动

第4步、点击停止按钮,出现获奖人员名单


制作步骤如下:

第一步:制作表格

  • 建立两个工作表,分别为《抽奖页面》和《名单维护》页面。将待抽奖名单放在《名单维护》页的A列,其中A1单元格为标题
EXCEL中通过VBA宏编写一个简易抽奖小工具

 

第二步:编写代码

  • 点击开发工具-Visual Basic, 或按下快捷键 ALT + F11 启动 Visual Basic for Applications 窗口
  • 在“插入” 菜单上,单击“模块”
  • 在出现的模块1代码窗口中,复制并粘贴以下代码:

#If VBA7 Then

Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr)

#Else

Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)

#End If

 

Dim mark As Boolean

 

Sub 立即开始()

mark = True

Do While mark

DoEvents

Sleep 100

抽奖

Loop

End Sub

 

Sub 停止抽奖()

mark = False

End Sub

 

Sub 抽奖()

Dim M&, N&, i&, j&, arr

Dim d As Object

Set d = CreateObject("scripting.dictionary")

arr = Sheet2.Range("A2:A" & Sheet2.Range("A65536").End(xlUp).Row)

Range("B4:B65536").ClearContents

M = Range("D4")

N = UBound(arr)

If N < M Then MsgBox "人数超出" & N: Exit Sub

Do While i < M

j = Int(Rnd() * N + 1)

If Not d.exists(j) Then

i = i + 1

d(j) = arr(j, 1)

End If

Loop

Range("B4").Resize(d.Count, 1) = Application.Transpose(d.items)

End Sub

EXCEL中通过VBA宏编写一个简易抽奖小工具

写入代码

第三步:插入命令按钮

  • 通过开发工具——插入——Active控件,插入一个命令按钮
  • 双击这个命令按钮,输入过程名“立即开始”,并将这个按钮的caption属性改为“开始”
  • 重复以上步骤再插入一个命令按键,输入过程名“停止抽奖”,并将这个按钮的caption属性改为“停止”
EXCEL中通过VBA宏编写一个简易抽奖小工具

插入命令按钮

第四步:名单演示美化

  • 利用条件格式设置名单的填充色和字体颜色
  • 利用公式确定要设置格式的单元格:=B1<>""
EXCEL中通过VBA宏编写一个简易抽奖小工具

设置格式

总结:

这个小工具的核心是:利用了字典+数组实现了名单的随机不重复抽取。

如果你也有类似的需求,可以关注本头条号:千万别学Excel,并私信回复:小工具 即可获取本教程所用课件。

图文教程创作不易,请点赞、关注并转发给更多有需求的小伙伴们吧!

送人玫瑰,手有余香!



Tags:VBA宏   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
最近有粉丝在后台向我提了一个工作中的小需求,具体如下:■ 因为公司要组织一个知识竞赛,其中有一个游戏环节,需要从一组名单中随机选出指定数量的人员参加游戏,并且需要在大屏中...【详细内容】
2021-08-02  Tags: VBA宏  点击:(131)  评论:(0)  加入收藏
▌简易百科推荐
Excel常用电子表格公式大全   一、Excel基本公式   1、查找重复内容公式:=IF(COUNTIF(A:A,A2)>1,"重复","")。   2、用出生年月来计算年龄公式:=TRUNC((DAYS360(H6,"200...【详细内容】
2021-12-21  楠方儿i    Tags:Excel   点击:(10)  评论:(0)  加入收藏
最近这段时间,我们三易生活收到了一些来自读者朋友的求助,在他们选购电脑时发现,有的设备出厂预装了“Microsoft 365”,而另一些则预装的是“Office 2021”。对于这两款同为微软...【详细内容】
2021-12-14  三易生活    Tags:Office   点击:(25)  评论:(0)  加入收藏
我们在做问卷调差或者填写一些资料表的时候,会遇到一些word文档中有小方框【□】,需要在里面打钩【&radic;】,那么是如何操作呢,今天和大家分享一下。方法一1,打开我们需要操作...【详细内容】
2021-11-26  小七哆来咪发唆    Tags:word   点击:(35)  评论:(0)  加入收藏
试想一下,用 Excel 管理项目的时候,会有很严格的日期安排,而且项目中的各细目经常是并行作业的,这就意味着日期不一定是排序的 。 那么事项太多如何更好管理,而不至于遗忘关键节...【详细内容】
2021-11-16  Excel学习世界    Tags:Excel   点击:(21)  评论:(0)  加入收藏
与大家分享一下有关制作身份证电子版时四周圆角处理的具体方法。方法/步骤首先,我们利用WPS打开相应的身份证扫描件,选中图片,点击“裁剪图片”按钮。 此时将显示“裁剪方式”...【详细内容】
2021-11-09  数字传媒微课堂    Tags:身份证   点击:(196)  评论:(0)  加入收藏
WPS是我们的常用办公软件之一,很多人在使用WPS打印功能的时候,经常会遇到多种多样的打印小问题,今天就为大家简单讲解下打印面板的各个小功能的作用。打印文档方法: 在左上角“W...【详细内容】
2021-11-02    21世纪教育网  Tags:WPS   点击:(31)  评论:(0)  加入收藏
前言:说起办公,就会想到三大办公软件,Word、Excel、PPT。这些软件的使用是有技巧的,学会使用技巧工作效率就会提高,加班自然就能避免。 今天就来分享其中之一:Word办公的7个小技巧...【详细内容】
2021-11-02  小杰好厉害呀    Tags:Word   点击:(52)  评论:(0)  加入收藏
我们使用 Word 的时候,页面上通常会有一些默认的符号,平时大家司空见惯了,可能没有多加留意,更不知道如何去除这些符号。 今天教大家两个 Word 技巧,将 Word 中默认的一些标记符...【详细内容】
2021-11-01  Excel学习世界    Tags:Word   点击:(48)  评论:(0)  加入收藏
经常用 Excel 的表哥表姐们,想必都知道「下拉菜单」这个神器,鼠标点点点,就能轻轻录入数据:▲ 一级下拉菜单 它的制作方法也很简单,用【数据验证】功能可以直接实现! 有小伙伴表示...【详细内容】
2021-10-27  秋叶Excel    Tags:Excel   点击:(41)  评论:(0)  加入收藏
在工作中, 我们需要对业务人员的业绩进行跟进,会有如下格式的跟进表 每天要进行更新表格的时候,表头都要重新手动的进行输入,比较麻烦,今天教大家的技巧是使用公式进行自动更新首...【详细内容】
2021-10-26  Excel自学成才    Tags:   点击:(41)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条