返回列表 上一主題 發帖

[發問] 將多個EXCEL 匯到一個EXCEL的問題

回復 10# LeafYeung
On Error 陳述式
一個「啟動的」錯誤處理程式是由 On Error 陳述式所打開的;一個「動作中」的錯誤處理程式是一個已啟動的錯誤處理程式正在處理錯誤。如果錯誤處理程式在動作中又發生了錯誤,(在錯誤發生和 Resume,Exit Sub,Exit Function,或 Exit Property 陳述式之間),那麼現在此程序的錯誤處理程式將無法再處理此錯誤。
所以,要處理可能產生多次錯誤的程序,必須是Resume Next,而要繼續處理就必須清除當前錯誤物件
執行下面程序當可了解錯誤後處理狀態
  1. Sub test1()
  2. For i = 1 To 10
  3. k = Int((2 - 0 + 1) * Rnd + 0)
  4. On Error GoTo AAA '錯誤時跳至
  5. B = i / k '製造錯誤
  6. Next
  7. AAA:
  8. MsgBox "被除數等於=" & i & "除數等於=" & k
  9. Err.Clear
  10. Resume Next
  11. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 10# LeafYeung

明白了.....謝謝 Hsieh 的指導

TOP

回復 9# Hsieh


    謝謝Hsieh 版主

我的附檔內A1~A5分別為1~5數字,當A1儲存格的1有找到1.xls則B1顯示"OK"
但因我仍卡在的問題是用on error resume next會全部忽略錯誤,導致B1~B5全部顯示都"OK"
YOYO

TOP

回復 13# yanto913

程式設計應盡量避免錯誤產生才是正道
  1. Sub test()
  2. Dim sht()
  3. Application.ScreenUpdating = False '關閉螢幕更新
  4. fd = ThisWorkbook.Path & "\" '檔案所在目錄
  5. For Each a In [A1:A5]
  6. fs = fd & a & ".xls"
  7. fb = Dir(fs)
  8. If fb <> "" Then
  9. a.Offset(, 1) = "OK"
  10. With Workbooks.Open(fd & fb)
  11.    Set sh = .Sheets(1)
  12.    ReDim Preserve sht(s) '記住所有工作表名稱
  13.    sht(s) = sh.Name
  14.    s = s + 1
  15.    sh.Copy after:=ThisWorkbook.Sheets(1) '複製工作表
  16.    .Close 0 '關閉檔案
  17. End With
  18. End If
  19. Next
  20. Sheets(sht).Move '移動所有複製的工作表到新檔案
  21. Application.ScreenUpdating = True '恢復螢幕更新
  22. End Sub
複製代碼
學海無涯_不恥下問

TOP

原來是要這樣才能將檔案併在一起呀
konantw

TOP

        靜思自在 : 【時間無法遮擋】怕時間消逝,花了許多心血,想盡各式方法要遮擋時間,結果是:浪費了更多時間,且一無所成!
返回列表 上一主題