返回列表 上一主題 發帖

請問一個同時執行巨集與函數的問題

請問一個同時執行巨集與函數的問題

我有一個檔案內同時有巨集函數,當我執行巨集時速度會很慢(因為函數也在作重算儲存格的動作),如何設定讓巨集先跑完在作函數的統計
謝謝

本帖最後由 hugh0620 於 2011-3-2 17:52 編輯

回復 1# lone_tiger0303


    可以在巨集執行時先關掉自動計算  再執行完你原來的程式碼後 再打開自動計算
   試試看~ 應該會使你的巨集執行的較快~
    這是之前一些版主大大傳授的經驗~

   Application.Calculation=xlCalculationManual <-----手動計算

   巨集程式碼


   Application.Calculation=xlCalculationAutomatic <-----自動計算

   如果還是很慢滴話~ 可能要檢視你的整體寫法~ 再看看是要修改函數.巨集或是架構~
學習才能提升自己

TOP

好像有變快了~~謝謝

TOP

在請教一下,如何讓Sheet1表內資料轉換成Sheet2表的排列?Sheet1表資料會有增減非都固定數量

Book1.zip (8.42 KB)

TOP

回復 4# lone_tiger0303
  1. Option Explicit
  2. Sub Ex()
  3.     Dim I As Integer, C, AR()
  4.     ReDim AR(1, 0)
  5.     With Sheet1
  6.         For I = 1 To .[A3].End(xlToRight).Column
  7.             For Each C In .Range(.Cells(4, I), .Cells(Rows.Count, I).End(xlUp))
  8.                 If C <> "" And C.Row > 3 Then
  9.                     AR(0, UBound(AR, 2)) = C
  10.                     AR(1, UBound(AR, 2)) = .Cells(3, I)
  11.                     ReDim Preserve AR(1, UBound(AR, 2) + 1)
  12.                 End If
  13.             Next
  14.         Next
  15.     End With
  16.     With Sheet2
  17.         .Range(.[A3], .[B3].End(xlDown)) = ""
  18.         .[A3].Resize(UBound(AR, 2), 2) = Application.WorksheetFunction.Transpose(AR)
  19.     End With
  20. End Sub
複製代碼

TOP

  1. Sub yy()
  2. Dim r%, c%, d As Object
  3. Set d = CreateObject("Scripting.Dictionary")
  4. With Sheet1
  5.     For c = 1 To 10
  6.         For r = 4 To .Cells(65536, c).End(3).Row
  7.             If .Cells(r, c) <> "" Then d(.Cells(r, c).Value) = .Cells(3, c)
  8.         Next
  9.     Next
  10. End With
  11. With Sheet2
  12.     .UsedRange.Offset(2, 0) = ""
  13.     .[a3].Resize(d.Count, 1) = Application.Transpose(d.keys)
  14.     .[b3].Resize(d.Count, 1) = Application.Transpose(d.items)
  15. End With
  16. End Sub
複製代碼

TOP

執行後出現一些問題,如附件所述

Book1.zip (17.77 KB)

TOP

本帖最後由 GBKEE 於 2011-3-4 13:20 編輯

回復 7# lone_tiger0303
沒有故障阿!
請看清除如圖:  指定好正確的工作表物件名稱

TOP

唉阿~~抱歉我沒注意看~~謝謝GBKEE解答

TOP

這個原因通常是隨意變更工作表順序
存檔後再開,工作表名與code name就亂了!

TOP

        靜思自在 : 人生不一定球球是好球,但是有歷練的強打者,隨時都可以揮棒。
返回列表 上一主題