Làm cách nào bạn có thể xác định và xử lý mọi lỗi có thể có trong Excel 2016? Thông thường, bạn không thể. May mắn thay, VBA cung cấp một cách khác để đối phó với những lỗi đáng tiếc đó.
Xem lại thủ tục EnterSapesRoot
Kiểm tra mã sau đây. Thường trình sử dụng câu lệnh On Error đa mục đích để bẫy tất cả các lỗi và sau đó kiểm tra xem liệu InputBox có bị hủy hay không.
Sub EnterSquareRoot5()
Dim Num As Variant
Dim Msg As String
‘ Set up error handling
On Error GoTo BadEntry
‘ Prompt for a value
Num = InputBox(“Enter a value”)
‘ Exit if cancelled
If Num = ““ Then Exit Sub
‘ Insert the square root
ActiveCell.Value = Sqr(Num)
Exit Sub BadEntry:
Msg = “An error occurred.” & vbNewLine & vbNewLine
Msg = Msg & “Make sure a range is selected,
“ Msg = Msg & “the sheet is not protected,
“ Msg = Msg & “and you enter a nonnegative value.”
MsgBox Msg, vbCritical
End Sub
Thường trình này bẫy bất kỳ loại lỗi thời gian chạy. Sau khi mắc lỗi thời gian chạy, quy trình EnterSapesRoot đã sửa đổi sẽ hiển thị hộp thông báo này. Hộp thông báo này mô tả các nguyên nhân rất có thể gây ra lỗi.
Lỗi không hoạt động?
Nếu câu lệnh On Error không hoạt động như quảng cáo, bạn cần thay đổi một trong các cài đặt của mình:
- Kích hoạt VBE.
- Chọn lệnh Công cụ → Tùy chọn.
- Bấm vào tab Chung của hộp thoại Tùy chọn.
- Đảm bảo rằng cài đặt Break on All Error được bỏ chọn. Nếu cài đặt này được chọn, về cơ bản Excel sẽ bỏ qua mọi câu lệnh On Error. Bạn thường muốn giữ các tùy chọn Bẫy lỗi được đặt thành Phá vỡ các lỗi chưa xử lý.
Giới thiệu về câu lệnh On Error
Sử dụng câu lệnh On Error trong mã VBA của bạn cho phép bạn bỏ qua việc xử lý lỗi tích hợp của Excel và sử dụng mã xử lý lỗi của riêng bạn. Trong ví dụ trước, lỗi thời gian chạy khiến thực thi macro chuyển sang câu lệnh có nhãn BadEntry. Do đó, bạn tránh được các thông báo lỗi không thân thiện của Excel và bạn có thể hiển thị thông báo của riêng mình cho người dùng.
Xem thêm: Cách sử dụng Phương thức GetOpenFilename trong VBA Excel 2016