请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

PPT学习论坛

 找回密码
 立即注册

QQ登录

查看: 1521|回复: 27

PPT抽奖程序

[复制链接]

3

主题

5

帖子

11

幻币

江湖少侠

Rank: 2

积分
188
QQ
发表于 2017-2-6 16:10:22 | 显示全部楼层 |阅读模式
大师们,请教PPT里做个抽奖程序怎么弄?801-850 50个号码
抽奖时号码滚动显示,抽中的号码不能被重复抽奖
抽奖---.zip (84.58 KB, 下载次数: 36)

本帖被以下淘专辑推荐:

PPT学习论坛
支付宝红包天天领
回复

使用道具 举报

3

主题

9

帖子

10

幻币

江湖少侠

Rank: 2

积分
162
QQ
发表于 2017-2-6 17:33:33 | 显示全部楼层
大侠们,请赐教!
PPT学习论坛
支付宝红包天天领
回复 支持 反对

使用道具 举报

2

主题

6

帖子

57

幻币

江湖少侠

Rank: 2

积分
183
QQ
发表于 2017-2-6 17:38:50 | 显示全部楼层
请高手赐教
PPT学习论坛
支付宝红包天天领
回复 支持 反对

使用道具 举报

1

主题

4

帖子

82

幻币

一流武者

Rank: 3Rank: 3

积分
348
QQ
发表于 2017-2-6 17:41:08 | 显示全部楼层
PPT里嵌入VBA做这个抽奖程序怎么弄啊?高手
PPT学习论坛
支付宝红包天天领
回复 支持 反对

使用道具 举报

3

主题

8

帖子

64

幻币

一流武者

Rank: 3Rank: 3

积分
238
QQ
发表于 2017-2-6 17:46:05 | 显示全部楼层
沉了吗?自己顶一下,期待高手指点
PPT学习论坛
支付宝红包天天领
回复 支持 反对

使用道具 举报

4

主题

6

帖子

56

幻币

一流武者

Rank: 3Rank: 3

积分
226
QQ
发表于 2017-2-6 17:51:33 | 显示全部楼层
期待高手赐教
PPT学习论坛
支付宝红包天天领
回复 支持 反对

使用道具 举报

2

主题

4

帖子

69

幻币

一流武者

Rank: 3Rank: 3

积分
289
QQ
发表于 2017-2-6 17:53:03 | 显示全部楼层
在最后slide
用放映模式方可抽奖

  • Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) '参数是长整形(毫秒数)。Lib “kernel32”标明这个函数是引用kernel32.dll提供的函数。Kernel32.dll是windows的四个核心库之一。是用来延时n毫秒的?
  • Dim arr, f As Boolean, j%, n%, temp                                     '接受函数返回数组的temp不能 As String
  • Private Sub CommandButton1_Click()
  • Dim i%, r%
  • If IsEmpty(arr) Then
  •    TextBox1.Visible = True
  •    TextBox3.Visible = True
  •    TextBox2.Text = ""
  •    TextBox4.Text = ""
  •    TextBox5.Text = ""
  •    TextBox6.Text = ""
  •    TextBox7.Text = ""
  •    TextBox8.Text = ""
  •    ReDim arr(1 To 50)
  •    For i = 1 To 50
  •        arr(i) = 800 + i
  •    Next
  •    j = 1
  •    TextBox4.Text = "三等奖"
  • End If
  • If Me.CommandButton1.Caption = "停止" Then
  •    Me.CommandButton1.Caption = "开始"
  •    f = True
  •    'MsgBox f & j                             '因只能在放映模式使用按钮,调试设置变量监控点
  •    Select Case j
  •           Case 1
  •               TextBox5.Text = arr(temp(0)) & " " & arr(temp(1)) & " " & arr(temp(2))
  •               TextBox1.Text = ""
  •               TextBox2.Text = ""
  •               TextBox3.Text = ""
  •           Case 2
  •               TextBox6.Text = arr(temp(0)) & " " & arr(temp(1)) & " " & arr(temp(2))
  •               TextBox1.Text = ""
  •               TextBox2.Text = ""
  •               TextBox3.Text = ""
  •           Case 3
  •               TextBox7.Text = arr(temp(0)) & " " & arr(temp(1))
  •               TextBox1.Text = ""
  •               TextBox3.Text = ""
  •           Case 4
  •               TextBox8.Text = arr(temp(0))
  •               TextBox2.Text = ""
  •    End Select
  •    'MsgBox n & j                              '变量监控点
  •    For i = 0 To n - 1
  •        arr = Filter(arr, arr(temp(i)), False) '滤除已抽取号码
  •    Next
  •    If j = 4 Then
  •       MsgBox "抽奖完毕!"
  •       Exit Sub
  •    End If
  •    j = j + 1
  •    TextBox4.Text = Mid("三二一特", j, 1) & "等奖"
  • Else
  •    Me.CommandButton1.Caption = "停止"
  •    f = False
  •    'MsgBox f & j                             '变量监控点
  •    n = --Mid(3321, j, 1)                     '抽取奖等个数
  •    r = Mid("0368", j, 1)                     '抽剩应扣减样本数量
  •    'MsgBox r                                 '变量监控点
  •    Do
  •       Sleep 10
  •       If f Then Exit Do
  •       temp = choose(50 - r, n)
  •       Select Case n
  •              Case 3
  •                   TextBox1.Visible = True
  •                   TextBox2.Visible = True
  •                   TextBox3.Visible = True
  •                   TextBox1.Text = arr(temp(0))
  •                   TextBox2.Text = arr(temp(1))
  •                   TextBox3.Text = arr(temp(2))
  •              Case 2
  •                   TextBox1.Text = arr(temp(0))
  •                   TextBox2.Visible = False
  •                   TextBox3.Text = arr(temp(1))
  •              Case 1
  •                   TextBox1.Visible = False
  •                   TextBox2.Visible = True
  •                   TextBox3.Visible = False
  •                   TextBox2.Text = arr(temp(0))
  •       End Select
  •       DoEvents
  •    Loop
  • End If
  • End Sub
  • Function choose(m%, n%)             '传回数组的函数不能声明为String,必须为vaiant
  • Dim i%, dt
  • Set dt = CreateObject("Scripting.Dictionary")
  • Randomize
  • Do
  •    i = Int(Rnd * (m - 1)) + 1
  •    dt(i & "") = ""                  '用字典的key来确保不重复抽取
  • Loop Until dt.Count = n
  • choose = dt.keysEnd Function

复制代码
PPT学习论坛
支付宝红包天天领
回复 支持 反对

使用道具 举报

1

主题

4

帖子

79

幻币

一流武者

Rank: 3Rank: 3

积分
228
发表于 2017-2-6 17:55:49 | 显示全部楼层
再次优化代码:

  • Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) '参数是长整形(毫秒数)。Lib “kernel32”标明这个函数是引用kernel32.dll提供的函数。Kernel32.dll是windows的四个核心库之一。是用来延时n毫秒的?
  • Dim arr, f As Boolean, j%, n%, temp                                     '接受函数返回数组的temp不能 As String
  • Private Sub CommandButton1_Click()
  • Dim i%, r%
  • If IsEmpty(arr) Then
  •    TextBox1.Visible = True                   '因上次抽特等奖时将其隐藏
  •    TextBox3.Visible = True
  •    TextBox2.Text = ""                        '清除界面的上次奖等数据
  •    TextBox4.Text = ""
  •    TextBox5.Visible = False
  •    TextBox6.Visible = False
  •    TextBox7.Visible = False
  •    TextBox8.Visible = False
  •    ReDim arr(1 To 50)
  •    For i = 1 To 50                           '抽奖号码准备
  •        arr(i) = 800 + i
  •    Next
  •    j = 1                                     '抽奖序次初始化
  •    TextBox4.Text = "三等奖"
  • End If
  • If Me.CommandButton1.Caption = "停止" Then
  •    Me.CommandButton1.Caption = "开始"
  •    f = True
  •    'MsgBox f & j                             '因只能在放映模式使用按钮,调试设置变量监控点
  •    Select Case j                             '汇集抽奖结果
  •           Case 1
  •               TextBox5.Text = arr(temp(0)) & " " & arr(temp(1)) & " " & arr(temp(2))
  •               TextBox5.Visible = True
  •               TextBox1.Text = ""
  •               TextBox2.Text = ""
  •               TextBox3.Text = ""
  •           Case 2
  •               TextBox6.Text = arr(temp(0)) & " " & arr(temp(1)) & " " & arr(temp(2))
  •               TextBox6.Visible = True
  •               TextBox1.Text = ""
  •               TextBox2.Text = ""
  •               TextBox3.Text = ""
  •           Case 3
  •               TextBox7.Text = arr(temp(0)) & " " & arr(temp(1))
  •               TextBox7.Visible = True
  •               TextBox1.Text = ""
  •               TextBox3.Text = ""
  •           Case 4
  •               TextBox8.Text = arr(temp(0))
  •               TextBox8.Visible = True
  •    End Select
  •    'MsgBox n & j                              '变量监控点
  •    j = j + 1
  •    If j = 5 Then
  •       MsgBox "抽奖完毕!"
  •       Exit Sub
  •    End If
  •    For i = 0 To n - 1
  •        arr = Filter(arr, arr(temp(i)), False) '滤除已抽取号码
  •    Next
  •    TextBox4.Text = Mid("三二一特", j, 1) & "等奖" '显示待抽的下一奖等
  • Else
  •    Me.CommandButton1.Caption = "停止"
  •    f = False
  •    'MsgBox f & j                             '变量监控点
  •    n = --Mid(3321, j, 1)                     '抽取奖等的个数
  •    r = Mid("0368", j, 1)                     '抽剩应扣减样本数量
  •    'MsgBox r                                 '变量监控点
  •    Do
  •       Sleep 10
  •       If f Then Exit Do
  •       temp = choose(50 - r, n)               '50-r选n
  •       Select Case n                          '下框显示具体抽中号码
  •              Case 3
  •                   TextBox1.Visible = True
  •                   TextBox2.Visible = True
  •                   TextBox3.Visible = True
  •                   TextBox1.Text = arr(temp(0))
  •                   TextBox2.Text = arr(temp(1))
  •                   TextBox3.Text = arr(temp(2))
  •              Case 2
  •                   TextBox1.Text = arr(temp(0))
  •                   TextBox2.Visible = False
  •                   TextBox3.Text = arr(temp(1))
  •              Case 1
  •                   TextBox1.Visible = False
  •                   TextBox2.Visible = True
  •                   TextBox3.Visible = False
  •                   TextBox2.Text = arr(temp(0))
  •       End Select
  •       DoEvents
  •    Loop
  • End If
  • End Sub
  • Function choose(m%, n%)             '传回数组的函数不能声明为String,必须为vaiant
  • Dim i%, dt
  • Set dt = CreateObject("Scripting.Dictionary")
  • Randomize
  • Do
  •    i = Int(Rnd * (m - 1)) + 1
  •    dt(i & "") = ""                  '用字典的key来确保不重复抽取
  • Loop Until dt.Count = n
  • choose = dt.keys
  • End Function

复制代码
PPT学习论坛
支付宝红包天天领
回复 支持 反对

使用道具 举报

2

主题

6

帖子

43

幻币

江湖少侠

Rank: 2

积分
148
发表于 2017-2-6 17:58:26 | 显示全部楼层
因发帖无反馈造成重复发帖,请删除!
PPT学习论坛
支付宝红包天天领
回复 支持 反对

使用道具 举报

1

主题

10

帖子

47

幻币

江湖少侠

Rank: 2

积分
168
QQ
发表于 2017-2-6 18:00:39 | 显示全部楼层
在最后slide,需要在放映模式抽奖
这个用在32位操作系统中: 抽奖-h.rar (68.28 KB, 下载次数: 78)
PPT学习论坛
支付宝红包天天领
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  Archiver|手机版|小黑屋| PPT学习论坛 ( 苏ICP备16067838号

QQ| GMT+8, 2018-12-19 19:43 , Processed in 0.199805 second(s), 48 queries .

郑重声明:本论坛言论纯属发表者个人意见,与“Solidworks机械工程师论坛”立场无关。 如涉版权,可发邮件: admin@duduxuexi.com

快速回复 返回顶部 返回列表