找回密码
 立即注册
搜索

PPT抽奖程序故障

6
回复
976
查看
[复制链接]

4

主题

9

帖子

23

幻币

一流武者

Rank: 3Rank: 3

积分
283
QQ
2017-2-6 18:30:17 显示全部楼层 |阅读模式
Sub txtStart()
For i = 1 To 5000
With ActivePresentation.Slides(1)
For j = 1 To 1
With .Shapes("txtNum" & j).TextFrame.TextRange
.Text = Int((300 - 1 + 1) * Rnd + 1)
.Font.Color.RGB = 10000 * Rnd
Debug.Print .Text
End With
Next
End With
DoEvents
Next
End Sub
Sub OnSlideShowTerminate()
Exit For
End Sub
这是网上找的一段PPT随机抽奖程序,我稍加修改如下:
Sub txtStart()
Dim a() As String
Dim i As Integer
Dim x As Integer
Open "高一名单.txt" For Input As #1
Do Until EOF(1)
i = i + 1
ReDim Preserve a(i) As String
Line Input #1, a(i)
Loop
For x = 1 To 5000
With ActivePresentation.Slides(1)
For j = 1 To 1
With .shapes("txtNum" & j).TextFrame.TextRange
.Text = a(Int(57 * Rnd + 1))
.Font.Color.RGB = 10000 * Rnd
Debug.Print .Text
End With
Next
End With
DoEvents
Next
End Sub
Sub OnSlideShowTerminate()
Exit For
End Sub
运行后名单能跑起来,但点停止后就不能再运行了,为啥?请高手指点,我对VBA一窍不通。
PPT学习论坛
回复

使用道具 举报

2

主题

6

帖子

83

幻币

一流武者

Rank: 3Rank: 3

积分
271
QQ
2017-2-6 20:37:52 显示全部楼层
这样改应该好一些:

  • Public st As Boolean

  • Sub txtStart()
  • st = True
  •   Dim a() As String
  •   Dim i As Integer
  •   Dim x As Integer
  •   Open "高一名单.txt" For Input As #1
  •   Do Until EOF(1)
  •     i = i + 1
  •     ReDim Preserve a(i) As String
  •     Line Input #1, a(i)
  •   Loop
  •   t = Timer
  •       Do While st = True
  •         With ActivePresentation.Slides(1)
  •             If Timer >= t + 0.1 Then
  •                 With .Shapes("txtNum").TextFrame.TextRange
  •                     .Text = a(Int(7 * Rnd + 1))
  •                     .Font.Color.RGB = 10000 * Rnd
  •                 End With
  •                 t = Timer
  •             End If
  •         End With
  •         DoEvents
  •         
  •         If st = False Then Close #1: Exit Sub
  •     Loop
  • End Sub
  • Sub OnSlideShowTerminate()
  •     st = FalseEnd Sub

复制代码
PPT学习论坛
回复 支持 反对

使用道具 举报

2

主题

8

帖子

64

幻币

一流武者

Rank: 3Rank: 3

积分
258
QQ
2017-2-6 21:14:37 显示全部楼层
首先非常感谢,我试了,还是不能运行。
18.                With .Shapes("txtNum").TextFrame.TextRange
在这一行报错,我不太懂这个东西,看不出问题在哪。
PPT学习论坛
回复 支持 反对

使用道具 举报

1

主题

5

帖子

70

幻币

一流武者

Rank: 3Rank: 3

积分
286
QQ
2017-2-6 21:40:45 显示全部楼层
可能是文本框的名字和实际的不一致,传附件才能知道真相。
PPT学习论坛
回复 支持 反对

使用道具 举报

0

主题

3

帖子

11

幻币

江湖少侠

Rank: 2

积分
126
2017-2-6 22:35:44 显示全部楼层
这是程序的附件,麻烦您看看,谢谢!
PPT学习论坛
回复 支持 反对

使用道具 举报

1

主题

10

帖子

91

幻币

江湖少侠

Rank: 2

积分
199
QQ
2017-2-6 22:45:44 显示全部楼层
已经修改,请测试
PPT学习论坛
回复 支持 反对

使用道具 举报

1

主题

4

帖子

97

幻币

一流武者

Rank: 3Rank: 3

积分
212
QQ
2017-2-6 23:11:21 显示全部楼层
附件已经更新过,如果文本文件里的人数发生改变时,程序里也要做相应调整。
PPT学习论坛
回复 支持 反对

使用道具 举报

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