找回密码
 立即注册
搜索

如何通过VBA代码手动顺序不重复抽取图片?

9
回复
916
查看
[复制链接]

15

主题

195

帖子

40

幻币

豪侠武师

Rank: 4

积分
939
QQ
2016-4-12 13:28:54 显示全部楼层 |阅读模式
在同一文件夹(文件夹位置可以任意路径)下有48张图片,命名从1.jpg到48.jpg,请教如何修改下面的VBA代码做到:
做到手动每点击指定一个按钮时,能按顺序抽取该文件夹的所有图片,在抽取完毕时,会弹出信息框提示“抽取完毕”,单击另一按钮,能清空前一个按钮的内容,以便重新抽取?
Option Explicit
Public I
Private Sub CommandButton1_Click()
On Error GoTo myerror
I = I + 1
Set CommandButton2.Picture = LoadPicture("E:图片" & I & ".jpg")
Exit Sub
myerror:
'MsgBox "已无图片", vbInformation + vbOKOnly, "提示"
CommandButton2.Picture = LoadPicture: I = 0
End Sub
PPT学习论坛
回复

使用道具 举报

15

主题

210

帖子

40

幻币

一流武者

Rank: 3Rank: 3

积分
260
QQ
2016-4-12 15:07:07 显示全部楼层
如果方便,添加附件,大家也容易操作些。
PPT学习论坛
回复 支持 反对

使用道具 举报

17

主题

213

帖子

43

幻币

一流武者

Rank: 3Rank: 3

积分
268
QQ
2016-4-12 15:22:31 显示全部楼层
这个问题值得关注,我也想达此目的,盼望高人
PPT学习论坛
回复 支持 反对

使用道具 举报

18

主题

198

帖子

44

幻币

豪侠武师

Rank: 4

积分
550
QQ
2016-4-12 15:26:00 显示全部楼层
我做的是无顺序的,但不重复。即随机带相片点名。
PPT学习论坛
回复 支持 反对

使用道具 举报

14

主题

206

帖子

38

幻币

一流武者

Rank: 3Rank: 3

积分
257
QQ
2016-4-12 15:42:21 显示全部楼层
可否分享?
PPT学习论坛
回复 支持 反对

使用道具 举报

16

主题

220

帖子

35

幻币

一流武者

Rank: 3Rank: 3

积分
251
QQ
2016-4-12 15:53:10 显示全部楼层
Sub 点名2()
Dim vString As String
Dim Response
Dim xlApp As Object '定义存放引用对象的变量
If Sorted = False Then
Dim txtLine
Dim FileObj
Dim TextObj
Dim FilePath
FilePath = "班.txt"
Set FileObj = CreateObject("Scripting.FileSystemObject")
Set TextObj = FileObj.OpenTextFile(FilePath)
Do While Not TextObj.AtEndOfLine
txtLine = txtLine & "," & Trim(TextObj.ReadLine)
vString = Mid(txtLine, 2)
Loop
   sData = vString
    vWords = Split(sData, ",")
    Randomize
    Dim nCount As Long
    Dim nGetCnt As Long
    Dim nPos As Long
    Dim i As Long
    Dim bExist As Boolean
    Dim sWords As String
   
    nCount = UBound(vWords)
  NameCount = nCount
    ReDim nWordsList(nCount) As Long
   
    For i = 0 To nCount
        nWordsList(i) = -1
    Next i
    Do While nGetCnt < nCount + 1
        nPos = Rnd * nCount
        bExist = False   
       For i = 0 To nCount
            If nPos = nWordsList(i) Then
                bExist = True
            End If
        Next i  
        If Not bExist Then
            nWordsList(nGetCnt) = nPos
            nGetCnt = nGetCnt + 1
        End If
    Loop
    Sorted = True
End If
相片显示.Label1.Caption = vWords(nWordsList(CurrentNo))
相片显示.Image1.Picture = LoadPicture(相片显示.Label1.Caption & &quot;.jpg&quot;)
相片显示.Show
   If CurrentNo < NameCount Then
      CurrentNo = CurrentNo + 1
    Else
     MsgBox &quot;全部点到,重新点名!&quot;
      Sorted = False
   CurrentNo = 0
    NameCount = 0
    End If
End Sub
PPT学习论坛
回复 支持 反对

使用道具 举报

11

主题

191

帖子

29

幻币

一流武者

Rank: 3Rank: 3

积分
232
QQ
2016-4-12 16:30:28 显示全部楼层
我也是在别人的基础上修改的,花了很长时间。因我不懂VBA。不一定符合楼主的要求。
PPT学习论坛
回复 支持 反对

使用道具 举报

17

主题

212

帖子

53

幻币

一流武者

Rank: 3Rank: 3

积分
270
QQ
2016-4-12 16:55:14 显示全部楼层
演示一下:
142158ybwhz70z7t4o40is.gif
PPT学习论坛
回复 支持 反对

使用道具 举报

22

主题

218

帖子

71

幻币

一流武者

Rank: 3Rank: 3

积分
302
QQ
2016-4-12 17:48:09 显示全部楼层
帮我解决下
PPT学习论坛
回复 支持 反对

使用道具 举报

8

主题

216

帖子

25

幻币

一流武者

Rank: 3Rank: 3

积分
255
QQ
2016-4-12 18:11:03 显示全部楼层
过来学习一下下,,
PPT学习论坛
回复 支持 反对

使用道具 举报

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