hỗ trợ vòng lặp bỏ qua lỗi VBA khi chạy

Liên hệ QC

akotu12

Thành viên mới
Tham gia
22/5/18
Bài viết
15
Được thích
1
Em muốn chạy for các giá trị gán vào cột A1. Khi không lỗi tự động bôi xanh còn khi lỗi tự động bôi đỏ ô "A"&i đó đó thi làm ntn ạ?

code của em:

Sub conf()

Dim a As String
Dim i As Long

a = Sheet1.Range("A1000").End(xlUp).Row

For i = 3 To a
On Error GoTo X
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "/n co11"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtCORUF-AUFNR").Text = Sheet1.Range("A" & i).Value
session.findById("wnd[0]/usr/ctxtCORUF-AUFNR").SetFocus
session.findById("wnd[0]/usr/ctxtCORUF-AUFNR").caretPosition = 7
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]").sendVKey 11

Range("A" & i).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5296274
.TintAndShade = 0
.PatternTintAndShade = 0
End With

X:
Range("A" & i).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With

Next
End Sub
 
Gửi file excel lên đi bạn.
 
Em muốn chạy for các giá trị gán vào cột A1. Khi không lỗi tự động bôi xanh còn khi lỗi tự động bôi đỏ ô "A"&i đó đó thi làm ntn ạ?

code của em:

Sub conf()

Dim a As String
Dim i As Long

a = Sheet1.Range("A1000").End(xlUp).Row

For i = 3 To a
On Error GoTo X
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "/n co11"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtCORUF-AUFNR").Text = Sheet1.Range("A" & i).Value
session.findById("wnd[0]/usr/ctxtCORUF-AUFNR").SetFocus
session.findById("wnd[0]/usr/ctxtCORUF-AUFNR").caretPosition = 7
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]").sendVKey 11

Range("A" & i).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5296274
.TintAndShade = 0
.PatternTintAndShade = 0
End With

X:
Range("A" & i).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With

Next
End Sub
Hình như dòng lênh dưới đây không đúng
Mã:
a = Sheet1.Range("A1000").End(xlUp).Row
Biến a khai báo là kiểu string, giá trị được gán là long
Còn gì nữa thì không biết
 
Dim mauLoi As Boolean

For i = 3 To a
mauLoi = True
On Error GoTo X
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "/n co11"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtCORUF-AUFNR").Text = Sheet1.Range("A" & i).Value
session.findById("wnd[0]/usr/ctxtCORUF-AUFNR").SetFocus
session.findById("wnd[0]/usr/ctxtCORUF-AUFNR").caretPosition = 7
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]").sendVKey 11
mauLoi = False

X:
With Range("A" & i).Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = IIF(mauLoi, 255, 5296274)
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Next
 
Dim mauLoi As Boolean

For i = 3 To a
mauLoi = True
On Error GoTo X
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "/n co11"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtCORUF-AUFNR").Text = Sheet1.Range("A" & i).Value
session.findById("wnd[0]/usr/ctxtCORUF-AUFNR").SetFocus
session.findById("wnd[0]/usr/ctxtCORUF-AUFNR").caretPosition = 7
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]").sendVKey 11
mauLoi = False

X:
With Range("A" & i).Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = IIF(mauLoi, 255, 5296274)
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Next
ko dc ah e bug kiểu gì cũng nhận mauLoi = false , nó sẽ quyết định error hay ko ở lệnh session.findById("wnd[0]").sendVKey 11
vậy em có phải đưa On Error GoTo X xuống lệnh đó ko ạ?
với lại đoạn này sao lại dùng iif : .Color = IIf(mauloi, 255, 5296274)
tiền bối giải thích cho em với :D
 
Có 3 loại tôi tránh giao thiệp
1. nói tiếng Tây. Nghe như bồi sao ấy
2. nói tiếng phim tập Hồng Kông. Chỉ dùng để mỉa mai người đối diện
3. viết tắt. Để giải vấn đề cần hết 100% đầu óc rồi, không còn dư chỗ nào để đoán từ viết tắt.
Thôi nhé, nhường ngừoi khác sốt sắng giúp bạn vậy.
 
biến a cũng có giá trị kiểu string mà anh CHAOQUAY :D
Thường thấy kết quả của câu lệnh này "Sheet1.Range("A1000").End(xlUp).Row" có kết quả kiểu long. Phía trên bạn khai báo a kiểu string, bên dưới lại gán cho a giá trị kiểu long nên e là đá nhau nên mới có ý kiến. Vậy mà thử thì thấy code vẫn chạy qua câu lệnh này mới lạ.
 
Thường thấy kết quả của câu lệnh này "Sheet1.Range("A1000").End(xlUp).Row" có kết quả kiểu long. Phía trên bạn khai báo a kiểu string, bên dưới lại gán cho a giá trị kiểu long nên e là đá nhau nên mới có ý kiến. Vậy mà thử thì thấy code vẫn chạy qua câu lệnh này mới lạ.
Code vẫn chạy qua :D dị quá, e gà mờ cũng chưa rõ đoạn đó. thanks bác
Bài đã được tự động gộp:

Có 3 loại tôi tránh giao thiệp
1. nói tiếng Tây. Nghe như bồi sao ấy
2. nói tiếng phim tập Hồng Kông. Chỉ dùng để mỉa mai người đối diện
3. viết tắt. Để giải vấn đề cần hết 100% đầu óc rồi, không còn dư chỗ nào để đoán từ viết tắt.
Thôi nhé, nhường ngừoi khác sốt sắng giúp bạn vậy.
vâng. Cám ơn anh đã hỗ trợ ạ
 
Thường thấy kết quả của câu lệnh này "Sheet1.Range("A1000").End(xlUp).Row" có kết quả kiểu long. Phía trên bạn khai báo a kiểu string, bên dưới lại gán cho a giá trị kiểu long nên e là đá nhau nên mới có ý kiến. Vậy mà thử thì thấy code vẫn chạy qua câu lệnh này mới lạ.
Đỏ: Đối với VBA thì chuyện ấy bình thường
Xanh: Bạn e hơi xa, không có đá. Trước khi chúng đá nhau, VBA phải tìm cách hoà giải hai bên đã. Bạn nên tìm hiểu thêm về lệ luật ép kiểu của VBA (tôi không thích lệ này, nhưng VBA là của MS, tôi không có quyền cãi)

ép kiểu = type casting/ coercion
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom