Board logo

標題: [發問] 跨活頁簿巨集如何正常獨立執行避免陣列索引超出範圍 [打印本頁]

作者: zv1122    時間: 2016-7-12 15:00     標題: 跨活頁簿巨集如何正常獨立執行避免陣列索引超出範圍

本帖最後由 zv1122 於 2016-7-12 15:02 編輯

各位好,請問
當我同時開啟2個活頁簿A、B,如何讓A活頁簿的巨集獨立正常執行
不跑出”執行階段錯誤’9’: 陣列索引超出範圍”

A活頁簿 巨集目的是,不斷的每X秒執行2個動作  1.重算作用中工作表(在A活頁簿某工作表)  2.某欄排序(在A活頁簿某工作表)
B活頁簿 是我的主要工作視窗,當我再B看資料時希望能讓A的巨集正常執行
google不出這個問題,希望各位能賜教,感謝

另外那2個動作如果之間希望間隔x秒在執行動作2,請問該如何編寫?
   
Application.MaxChange = 0.001
    ActiveWorkbook.PrecisionAsDisplayed = False
    ActiveSheet.Calculate
-----------------------------------------------------------------------------------
Range("J1:N405").sort Key1:=Range("M2"), Order1:=xlDescending, Header:= _
        xlYesGuess
作者: GBKEE    時間: 2016-7-13 13:03

回復 1# zv1122

試試看
  1. Option Explicit
  2. Sub EX()
  3.     Dim Wb As Workbook, Sh As Worksheet
  4.     Set Wb = Workbooks("A.XLS")
  5.     Set Sh = Wb.Sheets("Sheet1")
  6.     Application.MaxChange = 0.001
  7.     Wb.PrecisionAsDisplayed = False
  8.      Sh.Calculate
  9. '-----------------------------------------------------------------------------------
  10.     With Sh
  11.         .Range("J1:N405").Sort Key1:=.Range("M2"), Order1:=xlDescending, Header:=xlYesGuess
  12.     End With
  13. End Sub
複製代碼

作者: zv1122    時間: 2016-7-14 00:31

本帖最後由 zv1122 於 2016-7-14 00:43 編輯

回復 2# GBKEE
感謝版主回復
不好意思,我巨集初學者表達得不好,版主那段好像跟我思考的不同
後來土法煉鋼錄阿寫阿寫出這段,懇請幫看看

原意:跳到活頁簿A,A1工作表運算,A2工作表運算,等3秒,排序A2工作表的J1:N405以M2排。
            跳到活頁簿B,B1工作表的DG:DH欄做運算。
            跳到活頁簿A,如果U1不是空白讓巨集停止,否則跳計時器重複做。
PS 1.那個等3秒是為了運算完再做排序,如果太快排序有些儲存格資料是還沒運算的下去排序。
      2.其實活頁簿、工作表之間跳來跳去是不必要的動作,因為只會用錄的結果寫成這樣。懇請高手修改優化
  1. Sub sort()
  2. Windows("A.xls").Activate
  3. Sheets("A1").Select
  4. Application.MaxChange = 0.001
  5.     ActiveWorkbook.PrecisionAsDisplayed = False
  6.     ActiveSheet.Calculate
  7. Sheets("A2").Select
  8. Application.MaxChange = 0.001
  9.     ActiveWorkbook.PrecisionAsDisplayed = False
  10.     ActiveSheet.Calculate
  11. Application.Wait Now + TimeValue("0:0:3")
  12.     Range("J1:N405").sort Key1:=Range("M2"), Order1:=xlDescending, Header:= _
  13.         xlYesGuess
  14. Windows("B.xls").Activate
  15. Sheets("B1").Columns("DG:DH").Calculate
  16. Windows("A.xls").Activate
  17.     If Range("U1") <> "" Then Exit Sub
  18.     Call Start
  19. End Sub

  20. Sub Start()
  21.     t = Now + TimeValue("00:00:15")
  22.     If Range("U1") <> "" Then Exit Sub
  23.     Application.OnTime t, "sort"
  24. End Sub
複製代碼





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