| 网站首页 | 业界新闻 | 群组 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 255 人关注过本帖
标题:抽签决定30个人的出场次序,点击抽签按钮即数字滚动然后显示数字,已抽取的数 ...
只看楼主 收藏
honey111
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2018-6-6
结帖率:100%
  已结贴   问题点数:10  回复次数:4   
抽签决定30个人的出场次序,点击抽签按钮即数字滚动然后显示数字,已抽取的数字则不重复(抽一个少一个),界面需要一个按钮和一个标签
请高手指教
2018-06-07 11:26
wds1
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:20
帖 子:212
专家分:1148
注 册:2016-3-10
  得分:5 
Public b
Public index

'抽签30个,点击抽签显示数字,不重复(抽一个少一个)
Private Sub Form_Load()
  index = 1
   Randomize
  ReDim b(1 To 1) As Integer
  b(1) = Int(Rnd * 30) + 1          '生成第一个随机标签标
  Do
    Call Diff1(Int(Rnd * 30) + 1, b) '生成后边的29个随机标签
  Loop Until UBound(b) = 30
End Sub

Private Sub Command1_Click() '点击一次,显示一个
  Label1.Caption = b(index)
  index = index + 1
  Debug.Print b(index - 1)
  If index = 31 Then
    MsgBox ("完成抽签")
  End If
End Sub



Public Function Diff1(txt1, ByRef Array1)   '如果txt不在array数组,则增加
  For i = 1 To UBound(Array1)
    If txt1 = Array1(i) Then Exit For
    DoEvents
  Next
  If i > UBound(Array1) Then
   ReDim Preserve Array1(1 To i): Array1(i) = txt1
  End If
End Function

[此贴子已经被作者于2018-6-7 13:32编辑过]

2018-06-07 13:28
honey111
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2018-6-6
  得分:0 
回复 2楼 wds1
完美!非常感谢!
2018-06-07 14:49
wufuzhang
Rank: 2
等 级:论坛游民
威 望:1
帖 子:20
专家分:89
注 册:2017-8-9
  得分:5 
回复 2楼 wds1

你的程序里面没有实现数字滚动然后出现数字的功能,将你的程序
稍微修改了一下,窗体再加一个Timer控件就可以了,代码如下:
Option Explicit

Public b
Public index
Public TCount As Integer''时钟刷新次数

'抽签30个,点击抽签显示数字,不重复(抽一个少一个)
Private Sub Form_Load()
  Timer1.Enabled = False
  index = 1
   Randomize
  ReDim b(1 To 1) As Integer
  b(1) = Int(Rnd * 30) + 1          '生成第一个随机标签标
  Do
    Call Diff1(Int(Rnd * 30) + 1, b) '生成后边的29个随机标签
  Loop Until UBound(b) = 30
End Sub

Private Sub Command1_Click() '触发时钟
  Timer1.Enabled = True
  Timer1.Interval = 20
End Sub

Public Function Diff1(txt1, ByRef Array1)   '如果txt不在array数组,则增加
  Dim i As Integer
  For i = 1 To UBound(Array1)
    If txt1 = Array1(i) Then Exit For
    DoEvents
  Next
  If i > UBound(Array1) Then
   ReDim Preserve Array1(1 To i): Array1(i) = txt1
  End If
End Function

Private Sub Timer1_Timer()
  If index < 31 Then
     TCount = TCount + 1
     If TCount < 31 Then
        Label1.Caption = Int(Rnd * 30) + 1
     Else
        Label1.Caption = b(index)
        index = index + 1
        Print b(index - 1);
        TCount = 0
        Timer1.Enabled = False
     End If
  Else
     MsgBox ("完成抽签")
     TCount = 0
     Timer1.Enabled = False
  End If
End Sub
附件: 您没有浏览附件的权限,请 登录注册
2018-06-08 10:48
honey111
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2018-6-6
  得分:0 
回复 4楼 wufuzhang
非常感谢,写的非常好!

[此贴子已经被作者于2018-6-8 16:14编辑过]

2018-06-08 16:07







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.112008 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved