Bẩy lỗi trong code

Liên hệ QC

ontopoftheworld

Am a Peasant Guy
Tham gia
17/3/07
Bài viết
109
Được thích
182
Bẫy lỗi trong code

sub .....
dim i as variant, k as variant
dim dong as long
dong=sheets("DATA").range("A1").end(xldown).row
for i=2 to dong
k =cells(i,2).value
on error goto Loi
cells(i,3).value=application.wsfunction.vlookup(k,range("MANHAP"),2,0)
......
......

Loi:
msgbox"........."
end sub
Lỗii phát sinh khi biến i chạy từ 2 cho tới vị trí i=10 chẳng hạn(tức là Ok cho tới i=7 rồi), nhưng tới i=8, lỗi xảy ra khi giá trị "mã hàng" tại cells(i=8,2) không tồn tại trong danh mục "mã hàng".
Vậy cho em hỏi
1/ Đặt code bẫy lỗi tại vị trí đó có phù hợp không và;
2/ Em đã thử đặt code bẫy lỗi tại vị trí trên, thì nó sẽ nhảy tới nhãn "Loi:"
và tiếp tục chạy cho đến hết. Nhưng em nhận ra là nếu như giá trị "mã hàng" bị sai[theo vdụ là cells(i=8,2) nằm trong giữa những mã hàng đúng thì những mã hàng đúng tiếp sau mã hàng bị sai(theo vdụ là i=9,10) thì lệnh sẽ bỏ qua những mà hàng đó.
Vậy thì có cách nào làm cho câu lệnh bỏ qua " mã hàng" bị sai đó và tiếp tục chạy các "mã hàng" tiếp sau hay không, trường hợp lại tiếp tục có "mã hàng" sai thì cứ tiếp tục bỏ qua, sau khi có thông báo của Ex.
Cám ơn các anh.
 
Lần chỉnh sửa cuối:
Nhưng em nhận ra là nếu như giá trị "mã hàng" bị sai[theo vdụ là cells(i=8,2) nằm trong giữa những mã hàng đúng thì những mã hàng đúng tiếp sau mã hàng bị sai(theo vdụ là i=9,10) thì lệnh sẽ bỏ qua những mà hàng đó.
Theo mình bạn cần biết mã lỗi lúc này, khi mà 'mã hàng' không tìm ra bằng hàm VLOOKUP() trong DSách mã hàng; VD lỗi này là 35X
Và thường mình làm như vầy:
Mã:
[B]Sub BayLoi()[/B]
 On Error Goto ErrBayLoi
' . . . . .
'. . . . .  
Err_BayLoi:    Exit Sub
ErrBayLoi:  Select CAse Err
 Case 35X
    Resume Next
 Case Else
    MsgBox Error$:     Resume Err_BayLoi
 End Select
[B]End Sub [/B]
 
Upvote 0
Web KT

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

Back
Top Bottom