- 帖子
- 835
- 主題
- 6
- 精華
- 0
- 積分
- 915
- 點名
- 0
- 作業系統
- Win 10,7
- 軟體版本
- 2019,2013,2003
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2010-5-3
- 最後登錄
- 2024-11-14
|
2#
發表於 2014-9-5 05:27
| 只看該作者
Sub JamieK002()
Application.ScreenUpdating = False
Sheets("All Data").Select
Dim end1 As Long, b1 ...
JeNXiU 發表於 2014-9-4 22:42 
錯誤代碼'9 的錯誤說明是 "陣列索引超出範圍"
一般會發生這種情形是因為它找不到物件,
對照你發生此錯誤的指令之前的指令:
Workbooks.Open Filename:="\\Wws\14.磊晶二部\生產\系統檔\2014系統檔\" & Mid(Cells(b1, 4), 5, 1) & "月\" & Cells(b1, 2) & "系統檔-" & Mid(Cells(b1, 4), 5, 1) & "月" & ".XLS"
With Worksheets("system")
Set Rng1 = .[A:A].Find(Rng, , , xlWhole)
If Not Rng1 Is Nothing Then
第 1 行 開啟了 某個 Excel 檔案 (假設為 A 檔案)
第 2 行 索引 Worksheets("system") (因開啟檔案時會自動 Active 該檔案, 所以 Worksheets("system") 在 A 檔案內)
第 3 行 在 system 工作表找出 Rng1 儲存格
第 4 行 如果有找到則繼續執行
第 5 行 Rng1.Offset(0, 13).Value = Worksheets("All Data").Cells(b1, "A") 就是發生錯誤的指令
研判應該是在 A 檔案內沒有 All Data 工作表造成,
或許你的程式應該改成 :
...
Set Wb=ThisWorkBook ' 加此行
i = 2
...
Rng1.Offset(0, 13).Value = Wb.Worksheets("All Data").Cells(b1, "A")
...
實務上我 Debug 的方法會在發生錯誤時點 "偵錯",
然後將該行對 等號 左右邊拆成兩行在 "即時運算" 區試著求值看看:
(求值時 若有 . 須用其上方 With 右邊的物件帶入, 例如上方有 With Sheets("test") 時, .[A1] 就要用 Sheets("test").[A1] 來求值)
?Rng1.Offset(0, 13).Value
與
?Worksheets("All Data").Cells(b1, "A")
就會發現發生錯誤的是該式中 等號 右邊的部分,
接著再對 Cells(b1, "A") 求值也沒有錯誤 (即 b1 非負數 或 0, 也未大於 Rows.Count)
就能確認發生錯誤的是 Worksheets("All Data"),
而其中必然就是 All Data 工作表在此時的 ActiveWorkBook 中找不到. |
|