Board logo

標題: 如何用數組OR 其他方法加速? [打印本頁]

作者: basarasy    時間: 2011-3-15 22:08     標題: 如何用數組OR 其他方法加速?

請問大大如何用 數組 MYarr() 加速 OR 其他方法加速 以下的碼?
因為圖太多,加入時很慢 :'(
  1. Private Sub Ex()
  2.    
  3.     Dim Ps, Pc, A
  4.     With Application.FileDialog(msoFileDialogOpen)
  5.         .Title = "尋找圖片檔"
  6.         .AllowMultiSelect = True   '多重選取檔案
  7.         .ButtonName = "開啟圖片檔"
  8.         .Filters.Add "Images", "*.gif; *.jpg; *.jpeg", 1
  9.         .FilterIndex = 1
  10.         If .Show = False Then
  11.             MsgBox "沒有選擇任何圖片檔", vbOKOnly + vbExclamation : Exit Sub
  12.         Else
  13.            Set Ps = .SelectedItems
  14.         End If
  15.     End With
  16.    
  17. Application.ScreenUpdating = False

  18.     Sheet3.Select
  19.    
  20.     With ActiveSheet
  21.       .Range("A1:A20000").Value = ""
  22.      .Pictures.Delete
  23.     Set A = .Range("A1")
  24.            
  25.     For Each Pc In Ps
  26.                        
  27.     .Hyperlinks.Add Anchor:=A, Address:=Pc, TextToDisplay:=Pc
  28.                
  29.        With .Pictures.Insert(Pc)
  30.             .Height = 34
  31.             .Width = 54
  32.             .Left = A.Offset(, 1).Left
  33.             .Top = A.Offset(, 1).Top
  34.         End With
  35.         Set A = A.Offset(1)
  36.     Next
  37.   
  38.     .Shapes.SelectAll              
  39.     Selection.Placement = xlMoveAndSize
  40.    
  41.     End With
  42.    
  43.     Sheet1.Select
  44.    
  45.     Application.ScreenUpdating = True
  46.       
  47.     Range("A2").Select
  48.         
  49.     MsgBox "插入完成"
  50.   
  51. End Sub
複製代碼

作者: GBKEE    時間: 2011-3-16 07:33

請問大大如何用 數組 MYarr() 加速 OR 其他方法加速 以下的碼?
因為圖太多,加入時很慢
basarasy 發表於 2011/3/15 22:08

可能這就是原因吧!
作者: basarasy    時間: 2011-3-16 08:59

回復 2# GBKEE

請問GBKEE大大,在For  Next 時 ,可以用數組加速 嗎?
作者: GBKEE    時間: 2011-3-16 10:57

回復  GBKEE

請問GBKEE大大,在For  Next 時 ,可以用數組加速 嗎?
basarasy 發表於 2011/3/16 08:59

問題是圖片太多 插入工作表費時!
換個方式來顯示看看

[attach]5012[/attach]
作者: basarasy    時間: 2011-3-16 14:07

回復 4# GBKEE
謝謝GBKEE大大的方法.
但有方法像插入圖片的嗎?
因為圖片左邊是 No. 和 给人看圖片 打注解的列
還有用篩選時圖片也只出現篩選了的圖片.
作者: GBKEE    時間: 2011-3-16 16:53

本帖最後由 GBKEE 於 2011-3-16 16:56 編輯

回復 5# basarasy
請修改 圖片.xls 的 CommandButton1_Click
再刪掉 ComboBox1_Change()
試試看是否如你的想法
  1. Private Sub CommandButton1_Click()
  2.     Dim A, i
  3.     With Application.FileDialog(msoFileDialogOpen)
  4.         .Title = "尋找圖片檔"
  5.         ''''''''''''''''''''''''''''''''''''''''''''
  6.         .InitialView = msoFileDialogViewThumbnail
  7.         '設定 InitialView 屬性 為顯示圖片
  8.         ''''''''''''''''''''''''''''''''''''''''''''''
  9.         .AllowMultiSelect = False      '不允許 多重選取檔案
  10.         .ButtonName = "開啟圖片檔"
  11.         .Filters.Add "Images", "*.gif; *.jpg; *.jpeg", 1
  12.         .FilterIndex = 1
  13.         If .Show Then
  14.             Image1.Picture = LoadPicture(.SelectedItems(1))
  15.         Else
  16.             Image1.Picture = LoadPicture(LPicture)
  17.         End If
  18.     End With
  19. End Sub
複製代碼

作者: basarasy    時間: 2011-3-16 19:54

回復 6# GBKEE


    我做了個例子


[attach]5021[/attach]
篩選後
[attach]5022[/attach]
作者: GBKEE    時間: 2011-3-16 21:15

請問大大如何用 數組 MYarr() 加速 OR 其他方法加速 以下的碼?
因為圖太多,加入時很慢
basarasy 發表於 2011/3/15 22:08

你的例子 不是回到原點嗎?
作者: basarasy    時間: 2011-3-16 21:29

回復 8# GBKEE

因為圖片一定要放出來给人看,看見圖片才知道注解要打什麼.
作者: GBKEE    時間: 2011-3-17 07:28

回復 9# basarasy
修改你1樓的程式如下

  1. Private Sub Ex()
  2.     Dim Ps, Pc, A
  3.     With Application.FileDialog(msoFileDialogOpen)
  4.         .Title = "尋找圖片檔"
  5.         .AllowMultiSelect = True   '多重選取檔案
  6.         .ButtonName = "開啟圖片檔"
  7.         .InitialView = msoFileDialogViewThumbnail
  8.         .Filters.Add "Images", "*.gif; *.jpg; *.jpeg", 1
  9.         .FilterIndex = 1
  10.         If .Show = False Then
  11.             MsgBox "沒有選擇任何圖片檔", vbOKOnly + vbExclamation: Exit Sub
  12.         Else
  13.            Set Ps = .SelectedItems
  14.         End If
  15.     End With
  16.     Application.ScreenUpdating = False
  17.     With Sheet3
  18.         .Range("A2:d20000").Clear                          'A2以下 清除 (全部)
  19.         .Range("A2:d20000").EntireRow.AutoFit              '恢復為標準列高
  20.         .Pictures.Delete
  21.         Set A = .Range("A2")
  22.         For Each Pc In Ps
  23.             A.Value = A.Row - 1
  24.             .Hyperlinks.Add Anchor:=A.Cells(1, 3), Address:=Pc, TextToDisplay:=Pc
  25.             With .Pictures.Insert(Pc)
  26.                 .Height = 34
  27.                 .Width = 54
  28.                 .Left = A.Offset(, 3).Left
  29.                 .Top = A.Offset(, 3).Top
  30.             End With
  31.             Set A = A.Offset(1)
  32.         Next
  33.         '.Shapes.SelectAll
  34.         .Pictures.Placement = xlMoveAndSize
  35.         .Range("a1:c1").EntireColumn.AutoFit                       '自動調整欄寬
  36.         .Range("A2:a" & .Range("A2").End(xlDown)).RowHeight = 34   '設定列高
  37.     End With
  38.     Sheet1.Select
  39.     Application.ScreenUpdating = True
  40.     ActiveSheet.Range("A2").Select
  41.     MsgBox "插入完成"
  42. End Sub
複製代碼

作者: basarasy    時間: 2011-3-17 19:23

回復 10# GBKEE
 謝謝GBKEE大大,試過真的加快了.




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)