Board logo

標題: [發問] 求高手指點,為何共用簿後,VBA的運行速度會減慢? [打印本頁]

作者: leehom    時間: 2016-1-17 14:27     標題: 求高手指點,為何共用簿後,VBA的運行速度會減慢?

[attach]23127[/attach]
我在工作表1上製作一個搜尋鍵來搜尋工作表2的資料,只要在A1位置上輸入關鍵字,
就會在下面顯示結果。如上圖所示,速度只需0.4805,非常快速。

[attach]23128[/attach]
但共用活頁簿後,速度大幅減慢,居然要61.6797秒,
實在不能接受,為何會這樣?之前測試過各種VBA代碼可能會慢一點點,
但不致於慢那麼多,到底是甚麼問題呢?希望各位高手能夠指點一下,
謝謝!
作者: leehom    時間: 2016-1-17 14:32

上傳附件一份,謝謝!

http://pan.baidu.com/s/1o6ZxaVC
作者: ikboy    時間: 2016-1-19 12:11

回復 1# leehom


    這會基VBA於網絡讀取資料所需時間, 如果還有寫入時間就更加了。
作者: leehom    時間: 2016-1-19 12:33

回復 3# ikboy

終於有人回應了,那應該怎麼寫才可解決這個問題?
作者: ikboy    時間: 2016-1-20 09:34

回復 4# leehom


    想下載來看,但[attach]23141[/attach]見到如此,怕怕。[attach]23141[/attach][attach]23141[/attach][attach]23141[/attach]
作者: lpk187    時間: 2016-1-20 10:01

回復 4# leehom


    修改程式碼,只能快一點點,網路問題,和上面說的一樣
  1. Public Sub Search()
  2.     t = Timer
  3.     Application.ScreenUpdating = False
  4.     Dim b As Range
  5.     A = Sheets(1).[a1]
  6.     With Sheets(2)
  7.         Set b = .Columns(1).Find(A, , , 1, , 2)
  8.         Sheets(1).Range("A3:H3") = .Range(.Cells(b.Row, "A"), .Cells(b.Row, "H"))
  9.     End With
  10.     Application.ScreenUpdating = True
  11.     MsgBox Format(Timer - t, "0.0000")
  12. End Sub
複製代碼

作者: leehom    時間: 2016-1-20 20:25

回復  leehom


    修改程式碼,只能快一點點,網路問題,和上面說的一樣
lpk187 發表於 2016-1-20 10:01



我試了一下,很奇怪,為甚麼抓不到任何資料?都是空白的....

另外,關於網路問題,我原先的程式碼只是試將活頁簿設成"共用"就慢了,
並未正式和別人共用,檔案都放在本機磁碟,理應不關網路的事吧?
作者: leehom    時間: 2016-1-20 20:26

回復 5# ikboy


不會吧...可能是xlsm檔案才誤以為帶有病毒,放心沒有事的~
作者: lpk187    時間: 2016-1-20 22:37

回復 7# leehom

剛認真的看了一下,執行共用你原本的程式碼,共用後,確實慢很多
    你再試看看
  1. Public Sub exA()
  2.     t = Timer
  3.     Application.ScreenUpdating = False
  4.     Dim b As Range
  5.     A = Sheets("工作表1").[a1]
  6.     If Range("A3") <> "" Then
  7.         Sheets(1).Range("a3:h3").Clear
  8.     End If
  9.     With Sheets("工作表2")
  10.         Set b = .Columns(1).Find(A, , , 1, , 2)
  11.         arr = .Range(.Cells(b.Row, "A"), .Cells(b.Row, "H"))
  12.         Sheets("工作表1").Range("A3:H3") = arr
  13.     End With
  14.     Application.ScreenUpdating = True
  15.     MsgBox Format(Timer - t, "0.0000")
  16. End Sub
複製代碼

作者: leehom    時間: 2016-1-21 00:33

回復 9# lpk187

對啊,不知道是甚麼原因。
我試了一下你這段,共用後速度沒有影響,很棒,謝謝分享!!
作者: Joforn    時間: 2016-1-21 21:53

回復  ikboy


不會吧...可能是xlsm檔案才誤以為帶有病毒,放心沒有事的~
leehom 發表於 2016-1-20 20:26


xlsm文件也是可能有病毒的。
當然並不是說你的文檔就一定有病毒,就算有,我也不怕,呵。




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