用EXCEL VBA编写模拟器可以避免误操作导致的数据刷新

2022-10-07 深圳推广 技术文档

*实例*

抽奖编号:5位

在前文《》,笔者利用EXCEL的函数制作了简单的模拟随机抽奖器。

该方法,具有明显的缺陷,就是“误操作导致数据刷新”,本文使用EXCEL VBA进行简单模拟器编写

更好地避免“误操作导致的数据刷新

准确记录已经中奖的名单

支持10000条以内的“抽奖编号”数据添加

缺陷:抽奖编号只支持3-5位数,其它不能自适应,需修改代码

步骤一:界面设计

单元格B:C区域,输入“抽奖编号”数据,并为其分配自增的不重复编号(1-10003)

单元格E3:I3区域,为摇奖过程展示区域,点击【开始】按钮后,E3:I3区域会持续闪烁,点击【结束】,E3:I3停下,并将摇奖结果复制到L列

单元格L列,为【结束】后保存之前的摇奖结果,点击【重置】按钮,将清除E3:I3摇奖区域和L列的数据

步骤二:EXCEL VBA代码

===============开始================

Dim rollID() As String        '设定动态抽奖编号数组

Dim isScroll As Boolean    '设定控制结束的布尔值

Sub rollReward()

'为动态数组确定大小

Dim a As Integer

a = Application.WorksheetFunction.Max(Range("B3:B10003").Value)

'最多在B列支持10000条数据(年会抽奖,每次抽1人,足够了)

ReDim rollID(1 To a)

'为抽奖编号赋值

Dim i As Integer

For i = 1 To a Step 1

rollID(i) = Cells(2 + i, 3)

Next i

Randomize  '初始化随机数生成器

Dim j As Integer

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

isScroll = False  '初始化“控制结束”标记为false

Dim rollstr As String

rollstr = rollID(j)

Range("E3").Value = Mid(rollstr, 1, 1) '抽奖编号第1位数组,填充在E3单元格

Range("E3").Interior.Color = RGB(Int(Rnd() * 255), Int(Rnd() * 255), Int(Rnd() * 255)) '随机填充颜色

Range("F3").Value = Mid(rollstr, 2, 1) '抽奖编号第2位数组,填充在F3单元格

Range("G3").Value = Mid(rollstr, 3, 1) '抽奖编号第3位数组,填充在G3单元格

Range("G3").Interior.Color = RGB(Int(Rnd() * 255), Int(Rnd() * 255), Int(Rnd() * 255)) '随机填充颜色

If Len(rollstr) >= 4 Then

Range("H3").Value = Mid(rollstr, 4, 1) '抽奖编号第4位数组,填充在H3单元格

End If

If Len(rollstr) >= 5 Then

Range("I3").Value = Mid(rollstr, 4, 1) '抽奖编号第4位数组,填充在I3单元格

Range("I3").Interior.Color = RGB(Int(Rnd() * 255), Int(Rnd() * 255), Int(Rnd() * 255)) '随机填充颜色

End If

DoEvents '释放程序控制权

Dim b As Integer

b = Range("K1").Value

If isScroll = True Then

b = b + 1

Range("K1").Value = b

Range("K" & b + 2).Value = b

Range("L" & b + 2).Value = rollID(j)

Exit Sub '判断控制结束的标记是否为true,是就跳出sub

End If

Call rollReward '调用程序自身,重新生成新的随机结果

End Sub

Sub gameover()

isScroll = True  '将控制结束的标记置为true

End Sub

'重置摇奖区和结果展示区数据

Sub resetGame()

Range("k1").ClearContents

Range("k3:K10003").ClearContents

Range("L3:L10003").ClearContents

Range("E3:I3").Interior.Color = RGB(255, 255, 255)

Range("E3:I3").Value = ""

End Sub

===============结束================

步骤三:测试3位、4位、3-5位抽奖编号表现

抽奖编号:3位

抽奖编号:4位

抽奖编号:3-5位

*方法局限*

只能支持3-5位抽奖编号

抽奖编号必须与实际参与者一一对应,且无法一次性抽多人

无法排除已经中奖的编号

  • Routerpassview怎么操作解码
    hover

    Routerpassview怎么操作解码

    通过使用 routerpassview,您可以解码路由器密码,步骤包括:下载、安装并运行 routepassview,扫描路由器,选择路由器,查看密码,如有必要则解密它,最后保存密码。 如何使用 RouterPassview 解码路由器密码 步骤 1:获取 RoutePass···

    2024-05-14
  • 投屏电视怎么操作
    hover

    投屏电视怎么操作

    投屏电视怎么操作?这是不少网友都关注的问题,接下来由php小编为大家带来投屏电视操作流程一览,感兴趣的网友一起随小编来瞧瞧吧! 投屏电视操作流程一览 1、在使用投屏功能前,首先确保电视和投屏设备连接在同一局域网下。 2、打开···

    2024-05-07
  • 请开启javascript并刷新该页怎么解决
    hover

    请开启javascript并刷新该页怎么解决

    当遇到“开启 javascript”提示时,是因为 javascript 已被禁用。解决步骤为:启用浏览器 javascript清除浏览器缓存和 cookie更新浏览器检查浏览器扩展 如何解决“请开启 javascript 并刷新该页” 当访问某些网站时遇到“请开启 javascript···

    2024-05-07
  • 编写PLC程序的7种方法
    hover

    编写PLC程序的7种方法

    plc程序编写使用七种方法:1.梯形图:易于理解的图形符号。2.指令列表:基于文本的指令,提供精细控制。3.结构化文本:模块化编程和代码重用。4.功能块图:图形表示功能和操作。5.序列函数图:使用状态和转换表示程序流程。6.接线图···

    2024-04-05
  • 手机电话录音怎么操作
    hover

    手机电话录音怎么操作

    智能手机上进行电话录音的步骤如下:确认手机支持录音功能。开始通话后,点击“录音”按钮。根据需要选择录音模式:自动或手动。设置录音质量:低质量到高保真。点击“录制”按钮开始录音。通话结束后,点击“停止”按钮结束录音。使用第三···

    2024-04-01
  • 打印机家用小型连手机怎么操作
    hover

    打印机家用小型连手机怎么操作

    连接家用小型打印机至手机:安装驱动程序和打印机应用程序。通过 wi-fi 或蓝牙连接打印机和手机。在手机上打开文档,选择“打印”,并选择打印机。调整打印设置,点击“打印”即可开始打印。常见问题解答:确保打印机和手机连接至同一网···

    2024-03-28
  • 打印机复印机一体机怎么操作
    hover

    打印机复印机一体机怎么操作

    打印机复印机一体机的复印操作步骤:放置原稿,确保与边缘对齐。选择复印模式和设置(份数、缩放、纸张)。启动复印。接收复印件。一体机还具有其他功能,包括双面复印、缩放复印、身份证复印和扫描。 打印机复印机一体机操作指南 ···

    2024-03-27
  • 起薪每年10万美元 SpaceX开高薪导致NASA难招人才
    hover

    起薪每年10万美元 SpaceX开高薪导致NASA难招人才

    SpaceX和蓝色起源正竞相发射卫星,并计划把人送上月球。他们以高薪吸引了大批充满活力的工程师,使得波音和美国宇航局(NASA)等传统航空航天机构难以招募到人才。 招聘专家表示,绝大多数航空航天专业的学生都热衷于加入Spa···

    2024-03-22
在线客服 13691917840 提交需求 二维码