Error và hàm trong VBA?

  • Thread starter Thread starter hoang_B
  • Ngày gửi Ngày gửi
Liên hệ QC

hoang_B

Thành viên chính thức
Tham gia
5/8/08
Bài viết
66
Được thích
44
Chào các anh chị, cho em hỏi ví dụ như hàm Find trong VBA trả về #Value! thì có hàm Error.Type để xác định số của lỗi đó không. Sao em không thấy thằng Error.Type này? Nếu có cách khác thì phải làm như thế nào để đưa công thức này "b = Application.WorksheetFunction.Find("BN", Range("D3").Value, 1)"vào biến lổi đó?
Thanks.
 
ví dụ như hàm Find trong VBA trả về #Value! thì có hàm Error.Type để xác định số của lỗi đó không. Sao em không thấy thằng Error.Type này?

Nếu có cách khác thì phải làm như thế nào để đưa công thức này "b = Application.WorksheetFunction.Find("BN", Range("D3").Value, 1)"vào biến lổi đó?
Để thấy lỗi, bạn xài macro sau:
PHP:
Sub TimMaLoi()
 On Error Goto LoiML
 Dim bB
 bB =  Application.WorksheetFunction.Find("BN", Range("D3").Value, 1)
 MsgBox bB
 
Err_ML:          Exit Sub
LoiML:
     MsgBox Error(),, Err
     Resume Err_ML
End Sub
:-=
 
Upvote 0
Vâng, cảm ơn chị nhiều nhưng nếu có thể đưa vào được trong hàm IF thì sẽ hay hơn. Dùng để xác định công thức có lỗi, nếu công thức trên không có lỗi gì thì sẽ thực hiện những công đoạn sao... còn nếu có lỗi (tức Else) thì chạy dòng lệnh khác,v.v.
Thanks.
 
Upvote 0
Bạn chú ý kĩ sẽ thấy Sub trên cũng đã rẽ nhánh;
* Nếu lỗi (1004) thì xuống dưới, báo cho biết nội dung & mã lỗi;
* Bằng ngược lại, sẽ hiện hộp thoại đưa ra kết quả của hàm tìm kiếm trong excel

Bạn muốn rẽ nhánh đàng hoàng & tươi đẹp hơn, chắc phải là vầy:

PHP:
[color=#000000][php]Sub FindAndErr()
Dim bB
bB = Application.WorksheetFunction.Find("BN", Range("D3").Value, 1)
Select Case Err
Case 0
MsgBox bB
Case 1004
Msgbox "No Find!", , Err
Exit Sub
Case Else
Msgbox Error,, Err
End Select

End Sub [/php][/color]
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Rất cảm ơn chị nha! Em làm được rồi nhưng cần thêm 1 dòng lệnh nữa là On Error Resume Next
thì nó mới chạy.
Thanks you.
 
Upvote 0
Rất cảm ơn chị nha! Em làm được rồi nhưng cần thêm 1 dòng lệnh nữa là On Error Resume Next
thì nó mới chạy.
Thanks you.

Đối với các bạn mới bước vào lập trình VBA, thì On Error Resume Next là một cách hay! Vâng, chương trình của các bạn sẽ không báo lỗi. Nhưng các bạn cũng chú ý rằng, các bạn sử dụng On Error Resume Next trên chỉ khi nào các bạn lường trước lỗi gì sẽ xãy ra.

Lê Văn Duyệt
 
Upvote 0
Vâng, cảm ơn bác. Nhưng sao không có "On Error Resume Next" thì code của chị HYen17 vẫn không chạy vậy! Nhưng thêm vào thì quá trình lọc rất tốt. Vậy làm sao để không dùng code này nhưng Sub vẫn chạy hiệu quả. Bác có thể hướng dẫn cụ thể thêm không? Cảm ơn bác nhiều.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom