2024年4月30日发(作者:)
数据库与信息管理
D^T^B^SE&INFORMATION M^HAGE
基于Excel VBA的随机滚动抽奖系统设计与实现
黄钢
(雅发 }\f 技术学院,IJtl川I雅安625000)
摘 要:公司单位在组织活动时,大都会有一个抽奖环节来活跃气氛 抽奖方式也有很多,其中波常
见的是利用抽奖软件在大屏幕上进行随机滚动抽奖 目前这类软件也不少,介绍了通过Ex('eI VBA来
制作一个随机滚动抽奖系统
关键词:Ex(・el软件;VBA语言,随机抽奖
日前网络 有许多类似的抽奖系统 、经过下载试
j{j,发现小少系统存在以卜问题: (1)功能齐全,但
操作复杂, 若要较好的电脑水平才能操作: (2)内部
使用,通』tJ性不强,; (3)需要注册, f则无法使用,
有的还需要给钱 能使J}J; (4)无法保存l拼1奖记录,
抽奖过后需要人l 于动记求抽奖结果; (5)重复l抽奖,
同一次抽奖,一人 现多次等 。
针对以I:问题,利用 xc'elVba制作_r~个操作简单、
通用性强、 重复抽奖、能够保存记求的抽奖系统。
l 系统结构
在Ofti(・e2010环境下,打开Excel新建两个l 作表:
“抽奖”、“ 及参数”
“抽奖”f 作表用来作为于I“奖界面,此界向将作为
主要界面、“抽奖”界面包含抽奖滚动显 ≮域(默认
抽取l0名)和栩父的文 j :参数以及4个At tiveX控件
按钮“开始州1奖”、 “ 己求巾奖名单”、 “参数设置”,
并存指定1)‘=域{1I!.爪滚动时川及已抽奖次数,滚动时问呵
『{行没置,圳 1所示,为使 面简洁美观,在实际操
作中可以隐藏A列 、
图1“抽奖”工作表
“名单殷参数”T 作表,A列剑E列仔放参数(参
数l、参数2)及名单(包含:编号、姓 、电话),如
罔2所示:H列刮J列存放本系统的相关参数,包括:
“于}¨奖过 爪”、 “抽奖结束显爪”、 “领奖 式
示”、“活动 称”,这 内 1if【j会 {ff1奖过 川1 J所呈
现。在参数设 F 附上使jI J,J‘法该1)( 域还 放・个
Ac・liveX榨件按钮,J{J来返 j1{1奖贞 ,殳¨降i 3昕爪
£ E
簸j 氟 Ⅲ}?菇 《 哥l姓_嚣 { 电远
2
: (
…
j
0
0f
325
06 ̄65掂 ~ 7
7 ;S
一}
r
一L j“ :P
! f 薯
[1
i:
23
3 ■l: i
~1 2~3
i
}0 SlS2{S6S 0 .3 I舛j {l 13 2 l: 《』
图2“名单及参数”工作表参数部分
图3“名单及参数”工作表设置部分
2功能实现及难点
2.I难点与突破
经过分析干¨测试。直接利川随机函数搜A找 数能
够快速实现功能, 这种做法仃 j1h ̄lY.1 内现象,
同一次抽奖rfI,一条记录 ,ffi ̄会…现多次 此.
“ 单及参数”I 作表中.引入参数l lf1】参数2,『』IJl纠2
所爪 参数l“接J1J RAND 数广: 与c列编‘j对J
的足够多的随机数.参数2 JI J|{ANK函数汁钎:这止 随饥
数住相应范 内对应的排名, “}lI1奖”l 作 (O,H
2)巾的A列编 接引川参数2的 l0个fIli= 参
数l足随机H{现的.并R.随机刮r小数点后第9 f ,邶
么随机的两个数卡H同的慨率儿 趋近于零,J 以卡¨幢的
参数2相同的排铝值…现的概牢u土儿乎趋近r零, 终
作者简介:数删(1989一), ,助教,学f:,fiJ1=究
向:信息管 1j.信息系统。
收稿日期:2017—08—23
~ i 盛缡程2技O 亭61
实用第一 智慧密集
A列l0个编弓‘重复l{J现的情况也可以忽略不计。这样
操作设置过后,最大程度地保证r l0个随机数中小会
a=Format(Date,“WW年m月d日II)
b=Format(Time,”hh时mm分SS秒”)
彳『承复值…现的情况。fn1此在同一次抽取…t不会出现重
复 求,从而解决J 这一难题。
2.2参数及函数设置
(1)“抽奖”I 作表,如图l所示 、A4单元格“=
名单及参数!B2”,B4 元格输人数字l,C4单元格
“
C=Sheets(”名单及参数”).Range(”i7“)
d=“中奖名单”
e=Sheets(“抽奖“).Range(“g4“)
If e:=0 Then
MsgBox“还未开始抽奖,不能保存!”
Else
=
VI OOKUP(A4,名单及参数!C:E,2,FAI SE)”,D4单元
Range(“B3:D52“).Select
格“=VLOOKUP(A4, 及参数!C:E,3,FALsE1”,均依
次向下填充到13行:【;3单元格存放滚动时njJ;G4
元格存放已抽奖次数:E7单元格“=名单及参数!I7”。
(2) “名单及参数”r 作表,如图2、冈3所示
A2单元格“=RAND0”,B2单元格“=RANK(A2,A:A)”,
均依次向下填充;I3单元格存放抽奖过程 示内容;I4
单元格存放抽奖结束 示内容:I5单元格存放领奖方式
,l】 容;I7单元格存放活动名称。
部分参数会在VBA按钮代码中进行fj1人,并在抽
奖过 中得到体现
3 VBA按钮代码
3.1“开始抽奖”按钮
{:¨关代码如下:
Dim a
Dlm b C,d As String
a=Sheets(”抽奖“).Range(”g3”)
b=Sheets(“名单及参数”)。Range(”i3”)
c=Sheets(”名单及参数”).Range(”i4”)
d=Sheets(“名单及参数”).Range(”i5“)
t:Timer
While【Imer—t<=a一1
Sheets(”抽奖”),[B1 l=b
Sheets(”抽奖”).[B2】=…’
Wend
Sheets(”抽奖“).【B 1】=c
Sheets(”抽奖“).[B2】=d
Range(”g4”)=Range(”g4”)+1
说明:定义几个变缱,存放参数。在没 的滚动时
问内,目标1 域随机滚动, 在对应 域 爪参数文字
(相火参数住冈2所示fT4j ̄[t应区域设置),停止后g4单
元格』J『l l,以统计抽奖次数,便于后面保存抽奖记录 、
32“记录中奖名单”按钮
卡¨关代码如下:
Dim a,b,c,d,e As String
62
20
17
龟k
程.2技1l巧
龟囊桷程技巧与簟护、.-
桷
与簟
Selection.Copy
Sheets.Add After:=Sheets(Sheets.Count)
Selection.PasteSpecial Paste:=xlPaste ̄/ alues
Operation:=xlNone,SkipBlanks
:=False.Transpose:=False
Application.CutCopyMode:False
ActiveSheet.Name=a&b&C&d&e
ActiveWorkbook.Save
MsgBox”保存成功!lI
Sheets(“抽奖”).Select
说明:定义变量存放 【,前时间及l卡IIY<-参数、该按钮
的功能在于将“拊I奖}己求”保存到新建1-作& f1.新建
作 以抽奖时问抽奖次数和活动名称作为丧 (相关参
数均 图2所4iffj ̄lll,;ZIx:域进行设置),保仔成功后自动
返 “抽奖界面”,如果抽奖次数为零,!I!lJ 会执行保存
操作.即先要执行“抽奖”操作才能执行“保仔”操作。
3.3“参数设置”、“返回抽奖页面”、“初始化抽奖次
数”按钮
代码分别为:
(1)Sheets(”名单及参数”).Selec!; (2)Sheets
(”抽奖”).Sele{-t; (3)Rallge(”g4”)=0 、
说明: “参数设置”和“返回抽奖贞 ”两个按钮
能够}I:Hj户存使州的过程中快速进行一I 作衷的切换 、
“卡7J始化抽奖次数”按钮会将抽奖次数归零
4结语
刈…抽奖”1_ 作表公式区域单元格进行锁定并隐
藏,保护I 作表,将史什 存为启川宏的r作簿, 经过
测试 试用,该系统能够在Office环境下 常使用,并
具有界面简清、操作简 、通用实H】性强等优点
参考文献
【1】刘瑞新.VisualBask-程序设计fM1.j匕京:机械 I
、i 版幸I:.2004.
沈浩.Excel高级^ 川与数据分析fM1.北京:电
子丁业 版衬:.2008.
发布者:admin,转转请注明出处:http://www.yc00.com/news/1714461544a2451025.html
评论列表(0条)