|
本帖最后由 老司机带带我 于 2016-5-31 21:10 编辑
代码修改了一下,你看下:- Private Sub CommandButton1_Click() '随机抽取5个,怎么都是生成5个一样的???而且插入时要很长时间。
- Dim MyPath$, m&, n&, mf&, arrf$(), v&, Fso As Object, ar(1 To 54)
- With Application.FileDialog(msoFileDialogFolderPicker)
- .InitialFileName = ThisWorkbook.Path & ""
- If .Show = False Then Exit Sub
- MyPath = .SelectedItems(1) & ""
- End With
- Application.ScreenUpdating = False
- Application.DisplayAlerts = False
-
- Set Fso = CreateObject("Scripting.FileSystemObject")
- Set Folder = Fso.GetFolder(MyPath)
- Call GetFiles(MyPath, sFileType, Fso, arrf, mf)
- For v = 1 To mf
- Randomize
- For i = 1 To 5 '随机抽取5个
- n = Rnd * (21 - i) + 1 '21为新建文件夹1中的图片个数,如果选择新建文件夹需要重新设置
- m = IIf(ar(n) > 0, ar(n), n)
- ar(n) = IIf(ar(55 - i) > 0, ar(55 - i), 55 - i)
- Me.OLEObjects("image" & i).Object.Picture = LoadPicture(arrf(1, n))
- Next
- Next
- End Sub
复制代码 下面代码会快一点,你这个程序我看的还不是很明白,好好研究下要- Private Sub CommandButton1_Click() '随机抽取5个,怎么都是生成5个一样的???而且插入时要很长时间。
- Dim MyPath$, m&, n&, mf&, arrf$(), v&, Fso As Object, ar(1 To 54)
- With Application.FileDialog(msoFileDialogFolderPicker)
- .InitialFileName = ThisWorkbook.Path & ""
- If .Show = False Then Exit Sub
- MyPath = .SelectedItems(1) & ""
- End With
- Application.ScreenUpdating = False
- Application.DisplayAlerts = False
-
- Set Fso = CreateObject("Scripting.FileSystemObject")
- Set Folder = Fso.GetFolder(MyPath)
- Call GetFiles(MyPath, sFileType, Fso, arrf, mf)
- For i = 1 To 5 '随机抽取5个
- Randomize
- n = Rnd * (21 - i) + 1
- m = IIf(ar(n) > 0, ar(n), n)
- ar(n) = IIf(ar(55 - i) > 0, ar(55 - i), 55 - i)
- Me.OLEObjects("image" & i).Object.Picture = LoadPicture(arrf(1, n))
- Next
- End Sub
复制代码 上面两个代码生成的时候会有可能产生重复的,以下代码不会有重复出现,而且不需要设置个数,但是你之前的代码那么做我有点不了解,不知道是不是还有他用!- Private Sub CommandButton1_Click() '随机抽取5个,怎么都是生成5个一样的???而且插入时要很长时间。
- Dim MyPath$, m&, n&, mf&, arrf$(), v&, Fso As Object, ar(1 To 54), dc As Object, arr
- With Application.FileDialog(msoFileDialogFolderPicker)
- .InitialFileName = ThisWorkbook.Path & ""
- If .Show = False Then Exit Sub
- MyPath = .SelectedItems(1) & ""
- End With
- Application.ScreenUpdating = False
- Application.DisplayAlerts = False
- Set dc = CreateObject("scripting.dictionary")
- Set Fso = CreateObject("Scripting.FileSystemObject")
- Set Folder = Fso.GetFolder(MyPath)
- Call GetFiles(MyPath, sFileType, Fso, arrf, mf)
- On Error Resume Next
- With dc
- Do '生成5个完全不同的随机数
- Randomize
- .Add Int(Rnd * mf + 1), ""
- Loop Until .Count = 5
- arr = .keys
- End With
- For i = 0 To 4
- Me.OLEObjects("image" & i + 1).Object.Picture = LoadPicture(arrf(1, arr(i)))
- Next
- End Sub
复制代码 |
|