user_mxvpz 发表于 2016-4-12 13:33:21

倒计时效果和动态抽奖结合,如何处理2个任务?

抽奖附件:

倒计时附件:

实现抽奖,一次抽10个人,
开始本来打算每次随机取10个人并显示,然后马上取另外10个,并连续取,达到人名随机闪动的效果.
但是这个随机过程实在是太慢了.很容易让人感觉抽奖是在作弊. 因为看到某个人名显示出来还可以来得及按停止.
所以我没办法,退而求其次, 当按了开始按钮后, 进入倒计时状态, 10秒倒计时结束的时候显示的哪10个人,就是哪10个人得奖.
现在问题来了,如何把这个计时器加入到这个过程里?
随机产生人名过程好做, 倒计时过程也好做.
但是同时让这二过程一起发生, 倒计时结束的时候 结束掉 随机过程 , 这个谁帮忙看看怎么写代码?

[*]
[*]Option Explicit
[*]
[*]Public a, k As Integer
[*]
[*]Sub start()
[*] Dim wb, sh As Object
[*] Dim x(1 To 10), b, i, test, rg(1 To 3) As Integer
[*] Dim na(1 To 66) As String
[*] Set wb = ActivePresentation.Slides(3).Shapes(1).OLEFormat.Object
[*] Set sh = wb.worksheets("sheet1")
[*] a = 0
[*] k = k + 1
[*]
[*]'把人员名单读入内存
[*] For i = 1 To 54
[*] na(i) = sh.Cells(i + 1, 1).Value
[*] Next
[*]
[*]'随机取10个数,用来取10个随机的人名.
[*]10: For i = 1 To 10
[*]line1: test = Int(Rnd() * 66 + 1)
[*] For b = 1 To i
[*] If x(b) = test Then
[*] GoTo line1
[*] End If
[*] Next
[*] x(i) = test
[*] Next
[*]
[*]'在10个格子里显示取到的10个随机人名
[*] For i = 1 To 10
[*] ActivePresentation.Slides(3).Shapes(i + 1).TextFrame.TextRange.Text = na(x(i))
[*] Next
[*] DoEvents
[*] If a = 1 Then Exit Sub
[*] GoTo 10
[*]
[*]End Sub
[*]
[*]Sub Finish()
[*]'按钮开关
[*]a = 1
[*] ActivePresentation.Slides(3).Shapes(12).TextFrame.TextRange.Text = "Round " & k
[*]End Sub

复制代码

vnqf314 发表于 2016-4-12 15:46:45

这些资料都是论坛里找的, 自己做了一些拼凑, 由于资料繁杂, 在此就不列人名了。
总之都谢谢了。

thaihack 发表于 2016-4-12 17:45:22

用excel产生随机可以做抽奖但是投影后效果太差了, 还是ppt好看,
谁帮帮忙,谢谢了,
以上问题,如果有其他途径可以解决,也请提供一下,我目前只想到这个。
还有一个不是方法的方法, 就是点了开始按钮后,设置程序循环30次取随机,30次循环结束的时候停止。 不过这个效果肯定没倒计时好看,

liunianq21q 发表于 2016-4-12 18:02:14

实现抽奖,一次抽10个人,
开始本来打算每次随机取10个人并显示,然后马上取另外10个,并连续取,达到人名随机闪动的效果.
但是这个随机过程实在是太慢了.很容易让人感觉抽奖是在作弊. 因为看到某个人名显示出来还可以来得及按停止.

所以我没办法,退而求其次, 当按了开始按钮后, 进入倒计时状态, 10秒倒计时结束的时候显示的哪10个人,就是哪10个人得奖.

现在问题来了,如何把这个计时器加入到这个过程里?

随机产生人名过程好做, 倒计时过程也好做.
但是同时让这二过程一起发生, 倒计时结束的时候 结束掉 随机过程 , 这个谁帮忙看看怎么写代码?
页: [1]
查看完整版本: 倒计时效果和动态抽奖结合,如何处理2个任务?