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

Nếu người đùa đã biết những 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 nội dung bài viết ngày hôm nay Taimienphi.vn sẽ tiếp tục và người đùa tìm hiểu những thuộc tính và phương thức tiềm năng Err trong VBA Excel.
Đối tượng trong Excel VBA là tiềm năng được sử dụng thường xuyên nhất lúc tiến hành ngẫu nhiên một tác vụ nào với VBA. Với bất kể lúc nào xảy ra lỗi với mã, chúng ta với thể sử dụng tiềm năng Err để lđấy thông tin khía cạnh về lỗi (chẳng hạn như mã lỗi hoặc mô tả).

Thuộc tính và phương thức tiềm năng Err trong VBA Excel

Tìm hiểu những thuộc tính và phương thức tiềm năng Err

một. Thuộc tính tiềm năng Err

Đối tượng Err gồm có những thuộc tính tiếp tại đây:

tat tan tat cach sua loi vba trong excel 10

Mặc dù trong hầu giống giống như những trường hợp chúng ta ko cần sử dụng tiềm năng Err, tuy nhiên đôi lúc nó với thể hữu ích lúc xử lý những lỗi trong Excel.

Cho ví dụ, giả sử nếu với tập data như tiếp tại đây, và chúng ta muốn tìm căn bậc 2 trong ô ngay lập tức kề cho từng số trong phạm vi được tậu.

tat tan tat cach sua loi vba trong excel 11

Bằng nhữngh sử dụng đoạn mã tiếp tại đây để làm điều đó. Tuy nhiên vì trong ô A5 là một trong chuỗi văn version chứ ko phtrận 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, một).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 tin này ko hỗ trợ cho chúng ta những thông tin gì về lỗi và lỗi xảy ra ở đâu.

Trong trường hợp này chúng ta với thể sử dụng tiềm năng Err để lđấy thông tin khía cạnh thông tin lỗi.

Ví dụ, nếu trên thực sự chúng ta sử dụng mã VBA tiếp tại đây, nó sẽ ngừng chạy mã ngay sau khoản thời hạn lỗi xảy ra và hiển thị vỏ hộp thoại thông tin lỗi với đị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, một).Value = Sqr(cell.Value)

Next cell

ErrHandler:

MsgBox “Error Number:” andamp; Err.Number andamp; vbCrLf andamp; _

“Error Description: ” andamp; Err.Description andamp; vbCrLf andamp; _

“Error at: ” andamp; cell.Address

End Sub

Đoạn mã trên sẽ hỗ trợ cho chúng ta những thông tin khía cạnh hơn, vượt trội là hỗ trợ địa chỉ ô xảy ra lỗi.

tat tan tat cach sua loi vba trong excel 13

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

Để làm được điều này, chúng ta sử dụng đoạn mã tiếp tạ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, một).Value = Sqr(cell.Value)

If Err.Number 0 Then

ErrorCells = ErrorCells andamp; vbCrLf andamp; cell.Address

On Error GoTo -một

End If

Next cell

MsgBox “Lỗi trong mỗi ô sau” andamp; ErrorCells

Exit Sub

End Sub

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

tat tan tat cach sua loi vba trong excel 14

2. Các phương thức tiềm năng Err

Ngoài những thuộc tính Err được sử dụng để hiển thị thông tin khía cạnh về lỗi, chúng ta với 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 tật những thiết đặt thuộc tính của tiềm năng Err.

Raise Tạo lỗi run-time.

2.một. Phương thức Err Clear

Cho ví dụ, giả sử chúng ta với versiong data như tiếp tại đây và muốn lđấy căn bậc 2 của tất tật những số trong cột ngay lập tức kề.

tat tan tat cach sua loi vba trong excel 16

Khi sử dụng đoạn mã tiếp tại đây để lđấy căn bậc 2 của tất tật những số trong cột ngay lập tức kề, nó sẽ trả về thông tin lỗi vì ô A5 và ô A9 là những chuỗi văn version:

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, một).Value = Sqr(cell.Value)

If Err.Number 0 Then

ErrorCells = ErrorCells andamp; vbCrLf andamp; cell.Address

Err.Clear

End If

Next cell

MsgBox “Error in the following cells” andamp; 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 những ô bị lỗi. Trường hợp nếu ko sử dụng phương thức Err.Clear, một lúc lỗi xảy ra, nó sẽ luôn luôn đúng trong điều kiện IF và mã lỗi ko được reset lại.

Ngoài ra chúng ta với thể sử dụng lệnh On Error Goto -một để reset lại lỗi.

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

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], Tìm hiểu những thuộc tính và phương thức tiềm năng Err, [helpfile], [helpcontext]

Trong số đó tất tật những đối số là tùy tậu, và chúng ta với thể sử dụng để tạo thông tin lỗi với ý nghĩa hơn.

Chúng ta với thể sử dụng phương thức này lúc với 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 tin cho những người tiêu dùng khác biết về lỗi (thay vì sử dụng thông tin lagn thuần, ko 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 tật những ô chỉ hiển thị giá trị 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 + 5một3, Cell.Address, “Not a number”, “Test.html”

End If

Next Cell

ErrHandler:

MsgBox Err.Description andamp; vbCrLf andamp; Err.HelpFile

End Sub

Đoạn mã trên sẽ hiện thông tin lỗi gồm có một mô tả và file ngữ cảnh.

Như vậy là người đùa vừa và Taimienphi.vn tìm hiểu những thuộc tính và phương thức tiềm năng Err. Nếu với thắc mắc hay thắc mắc nào cần gitrận đáp, người đùa hãy để lại ý kiến trong phần comment để chúng ta và thảo luận nhé!

Ngoài ra, người đùa ko nên bỏ phí những nội dung bài viết hay, những nội dung rất hữu ích của Taimienphi.vn:

– Tham khảo nội dung bài viết Tất tần tật về VBA trong Excel Phần một
– Tham khảo nội dung bài viết Tất tần tật về VBA trong Excel Phần 2
– Tham khảo nội dung bài viết Tất tần tật về VBA trong Excel Phần 3

https://thuthuat.taimienphi.vn/tim-hieu-cac-thuoc-tinh-va-phuong-thuc-doi-tuong-err-46535n.aspx
Chúc người đùa thành tựu!

Xem thêm bài viết thuộc chuyên mục: Tin học văn phòng