网站首页 > 技术文章 正文
大家好,我是捌贰春秋VBA,今天运用字典跟窗体控件的相关知识,带大家编写一个简单的抽奖小程序。
窗体控件功能介绍
1、切换按钮ToggleButton1:开始抽奖、暂停抽奖,默认Value值为False即按起状态。
2、姓名显示区Label1:用于显示抽中人员的姓名。
3、中奖名单ListBox1:罗列抽中人员的名单,并进行编号。
4、初始化按钮CommandButton2:恢复抽奖名单,清空中奖人员列表。
工作表准备
1、工作表1人员名单:参与抽奖人员,每次抽中的人员从人员名单中删除。
2、工作表2备份:用于初始化系统,即恢复参与抽奖的人员名单。
代码
1、模块中自定义公共变量,编写整理抽奖名单的Sub
Public n%, d As Object
Sub 整理抽奖名单()
Dim arr, i%
Set d = CreateObject("scripting.dictionary")
arr = Sheets("人员名单").Range("A1").CurrentRegion
For i = 2 To UBound(arr)
arr(i, 1) = i - 1
Next i
Sheets("人员名单").Range("A1").CurrentRegion = arr
'序号为关键字,姓名为条目构建字典
For i = 2 To UBound(arr)
d(arr(i, 1)) = arr(i, 2)
Next i
'获取序号的最大值
n = UBound(arr) - 1
End Sub
2、开始抽奖、暂停抽奖
Private Sub ToggleButton1_Click()
On Error Resume Next
Dim K, rng As Range
Call 整理抽奖名单
If Me.ToggleButton1.Value = True Then
Me.ToggleButton1.Caption = "暂停抽奖"
Do
'随机1至n之间的数字给到变量K,用字典d(K)带出人员姓名
K = WorksheetFunction.RandBetween(1, n)
Me.Label1.Caption = d(K)
DoEvents
Loop Until Me.ToggleButton1.Value = False
Else
Me.ToggleButton1.Caption = "开始抽奖"
Me.ListBox1.AddItem Me.ListBox1.ListCount + 1 & ". " & Me.Label1.Caption
'从人员名单删除掉已抽中的人员
Set rng = Sheets("人员名单").Range("B:B").Find(Me.Label1.Caption, , , 1)
rng.EntireRow.Delete
'移除字典所有的关键字
d.RemoveAll
Call 整理抽奖名单
End If
End Sub
3、初始化系统
Private Sub CommandButton2_Click()
If MsgBox("是否初始化系统?抽奖记录将被清除,不可恢复!", vbYesNo) = vbNo Then Exit Sub
Me.ListBox1.Clear
Me.Label1.Caption = "显示区"
Sheets("备份").UsedRange.Copy Sheets("人员名单").Range("A1")
End Sub
猜你喜欢
- 2025-06-30 小说:她和鬼界判官是旧识,热心观众坐不住了,小说都写了好几本
- 2025-06-30 30条神仙连衣裙,时髦显瘦超好穿
- 2025-06-30 游戏分析平台DeltaDNA融资300万美元,告诉你玩家不愿付费的10大原因
- 2025-06-30 用Python写了一个上课点名系统(附源码)(自制考勤系统)
- 2025-06-30 “弹幕”答题受欢迎的教学启示
- 最近发表
- 标签列表
-
- axure 注册码 (25)
- mutex_lock (30)
- oracleclient (27)
- nfs (25)
- springbatch (28)
- oracle数据库备份 (25)
- dir (26)
- connectionstring属性尚未初始化 (23)
- output (32)
- panel滚动条 (28)
- centos 5 4 (23)
- sql学习 (33)
- c 数组 (33)
- pascal语言教程 (23)
- ppt 教程 (35)
- java7 (24)
- 自适应网站制作 (32)
- server服务自动停止 (25)
- 超链接去掉下划线 (34)
- 什么是堆栈 (22)
- map entry (25)
- ubuntu装qq (25)
- outputstreamwriter (26)
- fill_parent (22)
- mssqlserver jar (30)