Lỗi bỏ qua VBA

Hướng dẫn này sẽ trình bày cách đảm bảo rằng VBA Bỏ qua Lỗi khi chạy mã của bạn.

Đôi khi khi bạn xây dựng mã VBA, bạn thực sự muốn VBA bỏ qua một dòng mã khi xảy ra lỗi. Điều này thực sự có thể khá hữu ích nếu bạn muốn xóa một trang tính nếu nó tồn tại, nhưng bỏ qua dòng mã đó nếu trang tính không tồn tại.

(Xem Hướng dẫn xử lý lỗi của chúng tôi để biết thêm thông tin về Lỗi VBA)

Khi có lỗi Tiếp tục tiếp theo

Để bỏ qua một dòng mã trong một thủ tục, chúng tôi sử dụng Khi có lỗi Tiếp tục tiếp theo tuyên bố.

123456 Sub TestErrorIgnore ()Khi có lỗi Tiếp tục tiếp theoActiveWorkbook.Sheets ("Sheet4"). ChọnActiveSheet.Delete'thêm mã ở đâyKết thúc Sub

Trong ví dụ trên, một Khi có lỗi Tiếp tục tiếp theo tuyên bố đã được đặt ở đầu thủ tục. Sau đó, mã được xây dựng để chọn Sheet4 và sau đó xóa nó.

Tuy nhiên, do Khi có lỗi Tiếp tục tiếp theo , nếu mã không tìm thấy Sheet4, nó sẽ chỉ chuyển sang dòng tiếp theo và xóa bất kỳ trang nào đang hoạt động mà nó tìm thấy.

Điều này có thể khá nguy hiểm nếu chỉ có Trang 4 bạn muốn xóa chứ không phải chỉ Trang đang hoạt động. Để ngăn lỗi này, chúng ta có thể đặt một biến thành trang tính 4 và chỉ xóa trang tính đó NẾU nó tồn tại.

1234567 Sub TestErrorIgnore ()Dim ws As WorksheetKhi có lỗi Tiếp tục tiếp theoĐặt ws = ActiveWorkbook.Sheets ("Sheet4")ws.Delete'thêm mã ở đâyKết thúc Sub

Bây giờ khi mã được chạy, chỉ Sheet4 sẽ bị xóa NẾU NHƯ Sheet4 thực sự tồn tại. Nếu Trang tính 4 không tồn tại, VBA sẽ bỏ qua lỗi và tiếp tục.

Một ví dụ khác về điều này là nếu bạn muốn xóa tất cả các trang tính khỏi sổ làm việc của mình bằng cách sử dụng một vòng lặp. Vì sổ làm việc Excel phải có ít nhất một trang tính, mã sẽ xóa tất cả các trang tính trừ một trang tính.

123456 Sub DeleteSheets ()Dim ws As WorksheetĐối với mỗi ws trong ActiveWorkbook.Sheetsws.DeleteTuần tiếp theoKết thúc Sub

Đoạn mã trên sẽ dừng lại khi có lỗi.

Sự nhấp chuột Gỡ lỗi sẽ đưa chúng ta vào đoạn mã có dòng vi phạm được đánh dấu!

Tuy nhiên, việc thêm Khi có lỗi Tiếp tục tiếp theo dòng tới mã sẽ ngăn lỗi và quy trình sẽ luôn để lại một trang tính trong sổ làm việc.

12345678 Sub DeleteSheets ()'thêm dòng lỗi ở đâyKhi có lỗi Tiếp tục tiếp theoDim ws As WorksheetĐối với mỗi ws Trong ActiveWorkbook.Sheetsws.DeleteTuần tiếp theoKết thúc Sub

Lỗi GoTo 0

Thường nếu bạn sử dụng Khi có lỗi Tiếp tục tiếp theo để bỏ qua lỗi, bạn muốn mã bẫy lỗi sau này hoặc bạn muốn mã của mình ngừng chạy nếu lỗi xảy ra trong tương lai. Chúng tôi có thể thiết lập lại việc xử lý lỗi để mã sẽ một lần nữa phá vỡ lỗi bằng cách thêm dòng On Error GoTo 0.

12345678 Sub TestErrorIgnore ()Dim ws As WorksheetKhi có lỗi Tiếp tục tiếp theoĐặt ws = ActiveWorkbook.Sheets ("Sheet4")ws.DeleteLỗi GoTo 0'thêm mã ở đâyKết thúc Sub

Bạn sẽ giúp sự phát triển của trang web, chia sẻ trang web với bạn bè

wave wave wave wave wave