Tìm hiểu các thuộc tính và phương thức đối tượng Err

Nếu bạn đã biết các loại lỗi VBA trong Excel như lỗi cú pháp, lỗi biên dịch, lỗi Run-time Error hay lỗi Logical Error... thì trong bài viết hôm nay Taimienphi.vn sẽ tiếp tục cùng bạn tìm hiểu các thuộc tính và phương thức đối tượng Err trong VBA Excel.

Đối tượng trong Excel VBA là đối tượng được dùng thường xuyên nhất khi thực hiện bất kỳ một tác vụ nào với VBA. Với bất cứ khi nào xảy ra lỗi với mã, chúng ta có thể sử dụng đối tượng Err để lấy thông tin chi tiết về lỗi (chẳng hạn như mã lỗi hoặc mô tả).

Thuộc tính và phương thức đối tượng Err trong VBA Excel

Tìm hiểu các thuộc tính và phương thức đối tượng Err

1. Thuộc tính đối tượng Err

Đối tượng Err bao gồm các thuộc tính dưới đây:

tat tan tat cach sua loi vba trong excel 10

Mặc dù trong hầu hết các trường hợp chúng ta không cần sử dụng đối tượng Err, tuy nhiên đôi khi nó có thể hữu ích khi xử lý các lỗi trong Excel.

Cho ví dụ, giả sử nếu có tập dữ liệu như dưới đây, và chúng ta muốn tìm căn bậc 2 trong ô liền kề cho mỗi số trong phạm vi được chọn.

tat tan tat cach sua loi vba trong excel 11

Bằng cách sử dụng đoạn mã dưới đây để làm điều đó. Tuy nhiên vì trong ô A5 là một chuỗi văn bản chứ không phải số nên nó sẽ trả về lỗi:

Sub FindSqrRoot()

Dim rng As Range

Set rng = Selection

For Each cell In rng

cell.Offset(0, 1).Value = Sqr(cell.Value)

Next cell

End Sub

tat tan tat cach sua loi vba trong excel 12

Vấn đề là loại thông báo này không cung cấp cho chúng ta các thông tin gì về lỗi và lỗi xảy ra ở đâu.

Trong trường hợp này chúng ta có thể sử dụng đối tượng Err để lấy thông tin chi tiết thông báo lỗi.

Ví dụ, nếu bây giờ chúng ta sử dụng mã VBA dưới đây, nó sẽ dừng chạy mã ngay sau khi lỗi xảy ra và hiển thị hộp thoại thông báo lỗi có địa chỉ của ô xảy ra lỗi:

Sub FindSqrRoot()

Dim rng As Range

Set rng = Selection

For Each cell In rng

On Error GoTo ErrHandler

cell.Offset(0, 1).Value = Sqr(cell.Value)

Next cell

ErrHandler:

MsgBox "Error Number:" & Err.Number & vbCrLf & _

"Error Description: " & Err.Description & vbCrLf & _

"Error at: " & cell.Address

End Sub

Đoạn mã trên sẽ cung cấp cho chúng ta các thông tin chi tiết hơn, đặc biệt là cung cấp địa chỉ ô xảy ra lỗi.

tat tan tat cach sua loi vba trong excel 13

Nếu muốn chúng ta có thể tinh chỉnh thêm đoạn mã này để đảm bảo mã sẽ chạy đến hết (thay vì dừng lại vì mỗi khi lỗi xảy ra), sau đó cung cấp danh sách đầy đủ địa chỉ các ô xảy ra lỗi.

Để làm được điều này, chúng ta sử dụng đoạn mã dưới đây:

Sub FindSqrRoot2()

Dim ErrorCells As String

Dim rng As Range

On Error Resume Next

Set rng = Selection

For Each cell In rng

cell.Offset(0, 1).Value = Sqr(cell.Value)

If Err.Number <> 0 Then

ErrorCells = ErrorCells & vbCrLf & cell.Address

On Error GoTo -1

End If

Next cell

MsgBox "Lỗi trong các ô sau" & ErrorCells

Exit Sub

End Sub

Đoạn mã trên sẽ chạy đến hết và trả về căn bậc 2 của các số trong các ô được chọn, sau đó nó sẽ hiển thị thông báo lỗi liệt kê tất cả các ô chứa lỗi như hình dưới đây:

tat tan tat cach sua loi vba trong excel 14

2. Các phương thức đối tượng Err

Ngoài các thuộc tính Err được sử dụng để hiển thị thông tin chi tiết về lỗi, chúng ta có thể sử dụng 2 phương thức Err để xử lý lỗi.

tat tan tat cach sua loi vba trong excel 15

Phương thức Mô tả

Clear Xóa tất cả các cài đặt thuộc tính của đối tượng Err.

Raise Tạo lỗi run-time.

2.1. Phương thức Err Clear

Cho ví dụ, giả sử chúng ta có bảng dữ liệu như dưới đây và muốn lấy căn bậc 2 của tất cả các số trong cột liền kề.

tat tan tat cach sua loi vba trong excel 16

Khi sử dụng đoạn mã dưới đây để lấy căn bậc 2 của tất cả các số trong cột liền kề, nó sẽ trả về thông báo lỗi vì ô A5 và ô A9 là các chuỗi văn bản:

Sub FindSqrRoot2()

Dim ErrorCells As String

Dim rng As Range

On Error Resume Next

Set rng = Selection

For Each cell In rng

cell.Offset(0, 1).Value = Sqr(cell.Value)

If Err.Number <> 0 Then

ErrorCells = ErrorCells & vbCrLf & cell.Address

Err.Clear

End If

Next cell

MsgBox "Error in the following cells" & ErrorCells

End Sub

Lưu ý: trong ví dụ này chúng ta sử dụng phương thức Err.Clear trong lệnh If Then.

Khi lỗi xảy ra và bị bẫy bởi điều kiện If, chúng ta sử dụng phương thức Err.Clear để reset lại số lỗi về 0. Điều này để đảm bảo điều kiện If chỉ bẫy các ô bị lỗi. Trường hợp nếu không sử dụng phương thức Err.Clear, một khi lỗi xảy ra, nó sẽ luôn đúng trong điều kiện IF và mã lỗi không được reset lại.

Ngoài ra chúng ta có thể sử dụng lệnh On Error Goto -1 để reset lại lỗi.

Lưu ý: Err.Clear và On Error Goto -1 hoàn toàn khác nhau. Err.Clear chỉ xóa mô tả lỗi và mã lỗi chứ không reset lại lỗi hoàn toàn. Điều này có nghĩa là nếu có một lỗi khác xảy ra trong cùng một mã, chúng ta không thể xử lý lỗi trước khi reset lại. trường hợp này chúng ta sẽ phải sử dụng lệnh On Error Goto -1.

2.2. Phương thức Err Raise

Phương thức Err.Raise cho phép chúng ta tạo một lỗi run-time. Dưới đây là cú pháp sử dụng phương thức Err.Raise:

Err.Raise [number], [source], [description], [helpfile], [helpcontext]

Trong đó tất cả các đối số là tùy chọn, và chúng ta có thể sử dụng để tạo thông báo lỗi có ý nghĩa hơn.

Chúng ta có thể sử dụng phương thức này khi có lỗi xảy ra (tức là lỗi kiểu gì cũng sẽ xảy ra), sau đó sử dụng phương thức để thông báo cho người dùng khác biết về lỗi (thay vì sử dụng thông báo đơn giản, không hữu ích mà VBA hiển thị theo mặc định).

Cho ví dụ, chúng ta vẫn sử dụng ví dụ ở phần trên nhưng muốn thiết lập để tất cả các ô chỉ hiển thị giá trị số.

Sub RaiseError()

Dim rng As Range

Set rng = Selection

On Error GoTo ErrHandler

For Each Cell In rng

If Not (IsNumeric(Cell.Value)) Then

Err.Raise vbObjectError + 513, Cell.Address, "Not a number", "Test.html"

End If

Next Cell

ErrHandler:

MsgBox Err.Description & vbCrLf & Err.HelpFile

End Sub

Đoạn mã trên sẽ hiển thị thông báo lỗi bao gồm một mô tả và file ngữ cảnh.

Như vậy là bạn vừa cùng Taimienphi.vn tìm hiểu các thuộc tính và phương thức đối tượng Err. Nếu có thắc mắc hay câu hỏi nào cần giải đáp, bạn hãy để lại ý kiến trong phần bình luận để chúng ta cùng thảo luận nhé!

Ngoài ra, bạn không nên bỏ lỡ những bài viết hay, những chia sẻ rất hữu ích của Taimienphi.vn:

- Tham khảo bài viết Tất tần tật về VBA trong Excel Phần 1
- Tham khảo bài viết Tất tần tật về VBA trong Excel Phần 2
- Tham khảo bài viết Tất tần tật về VBA trong Excel Phần 3

http://thuthuat.taimienphi.vn/tim-hieu-cac-thuoc-tinh-va-phuong-thuc-doi-tuong-err-46535n.aspx
Chúc bạn thành công!

Tác giả: Trần Thuỳ     (4.0★- 3 đánh giá)  ĐG của bạn?

  

Bài viết liên quan

(Giveaway) Bản quyền miễn phí PC Trek Advanced Password Recovery Suite, hỗ trợ phục hồi mật khẩu chuyên nghiệp
Cách kích hoạt FileSystemObject trong VBA
Ví dụ về FileSystemObject trong VBA
Cách gửi email từ bảng tính Excel bằng Script VBA
Excel - Cách mở VBA trong Excel
Từ khoá liên quan:

thuoc tinh va phuong thuc doi tuong Err

, cac thuoc tinh va phuong thuc doi tuong Err, tim hieu cac thuoc tinh va phuong thuc doi tuong Err,

SOFT LIÊN QUAN
  • Advanced VBA Password Recovery

    Khôi phục mật khẩu tài liệu Office

    Bạn đang thực hiện nhiều dự án, lưu trữ nhiều tài liệu trong các ứng dụng Microsoft Office bằng mã VBA và chẳng may bị mất mật khẩu để truy cập vào các dữ liệu này. Advanced VBA Password Recovery sẽ nhanh chóng giúp bạn ...

Tin Mới

  • Cách tắt autotext trong Excel, xóa từ viết tắt

    Làm việc với bảng tính, bạn cũng có thể tắt autotext trong Excel, xóa từ viết tắt khi bạn cảm thấy tính năng này gây phiền phức và làm bạn rắc rối thêm trong công việc. Để biết cách tắt tính năng này, mời bạn theo dõi thủ thuật được viết dưới đây để biết cách thực hiện.

  • Cách phá Password Excel 2016

    Bạn có một file Excel rất cần mở để sử dụng nhưng phát hiện ra file đó có chứa mật khẩu bảo vệ và hiện bạn không thể nhớ được mật khẩu nên bạn không mở được? Bạn đang loay hoay để tìm phương án xử lý? hướng dẫn dưới đây chúng tôi sẽ giúp bạn biết cách để phá pass Excel cực kỳ đơn giản và dễ thực hiện.

  • Hướng dẫn sắp xếp tên theo thứ tự chữ cái trong Excel

    Để sắp xếp tên theo thứ tự chữ cái trong Excel không khó, thậm chí các bước để bạn thực hiện rất đơn giản mà thôi. Hãy theo dõi bài hướng dưới đây để bạn nhanh chóng biết cách sắp xếp tên theo thứ tự ABC trên Excel.

  • Tổng hợp những từ viết tắt thông dụng nhất trên Facebook

    Tổng hợp những từ viết tắt thông dụng nhất trên Facebook trong bài viết sau đây giúp các bạn đọc có thể áp dụng những từ này khi viết STT, chat hoặc các bạn chưa hiểu ý nghĩa của các từ viết tắt trên Facebook thì tham khảo bài viết này sẽ hiểu hơn về thuật ngữ viết tắt đó.


 Mùa hè tới rồi muốn so sánh giá tìm điều hòa giá rẻ nhất thị trường hãy dùng TopGia để so sanh gia có nhiều mẫu dieu hoa để so sanh sanh, xem dieu hoagiá rẻ để so sánh giá