Phiền mọi ngưỡi xem xét giùm em vấn đề bẫy lỗi (1 người xem)

Người dùng đang xem chủ đề này

giahuyks93

Thành viên mới
Tham gia
24/10/15
Bài viết
34
Được thích
0
Trong file của e giá trị Ô L20 Và L22 là giá trị cần thiết tối thiểu để chọn giá trị trong bảng Thép cho sàn .Em có viết 1 cái công thức chọn As ở ô Q20 và Q22 . được tra trong bảng Thép cho sàn
Vấn đề e gặp phải là :
Khi Ô Q20 hiện lỗi #NA là trong hàng N20 (6) tương ứng trong bảng thép cho sàn Ø6 không có giá trị thỏa .
Vấn đề của e là khi ô Q20 bị lỗi #NA thì code sẽ ngừng thực hiện và hiện ra 1 bảng Msgbox " Yeu Cau Tang Cot Thep" và thoát khỏi lệnh thực hiện

Em xin lỗi vì hơi dài dòng và khó hiểu tóm lại là Khi em bấm nút Button 2 nếu xuất hiện lỗi #NA thì sẽ dưng lại không thực hiện lệnh và hiển thị 1 bảng thông báo và thoát lệnh

Em có thử 1 đoạn mà không được
On Error Goto Sai
Msgbox "Yeu Cau Nhap Lai Duong Kinh Thep"
Exit sub

Mong các a/c giúp đỡ em
 

File đính kèm

Lần chỉnh sửa cuối:
Mình sửa đoạm mã của bạn thành vầy là được nà:
PHP:
Sub Macro2()
 On Error GoTo LoiCT
 Cells(20, 17).Resize(9).Value = ""
1 Cells(20, 17) = _
    "=IF(RC[-3]=6,INDEX(Ø6,MATCH(RC[-5],Ø6,-1)),IF(RC[-3]=8,INDEX(Ø8,MATCH(RC[-5],Ø8,-1)),IF(RC[-3]=10,INDEX(Ø10 ,MATCH(RC[-5],Ø10,-1)),IF(RC[-3]=12,INDEX(Ø12,MATCH(RC[-5],Ø12,-1)),IF(RC[-3]=14,INDEX(Ø14,MATCH(RC[-5],Ø14,-1)))))))"
 MsgBox Cells(20, 17).Value
9 Cells(22, 17) = "=IF(RC[-3]=6,INDEX(Ø6,MATCH(RC[-5],Ø6,-1)),IF(RC[-3]=8,INDEX(Ø8,MATCH(RC[-5],Ø8,-1)),IF(RC[-3]=10,INDEX(Ø10,MATCH(RC[-5],Ø10,-1)),IF(RC[-3]=12,INDEX(Ø12,MATCH(RC[-5],Ø12,-1)),IF(RC[-3]=14,INDEX(Ø14,MATCH(RC[-5],Ø14,-1)))))))"
 MsgBox Cells(22, 17).Value
Err_:
    Exit Sub
LoiCT:
    MsgBox "Loi O Ḍng Lenh" & Str(Erl) & Chr(10) & Chr(10) & " Ban Càn Tang Cot Thép", , "GPE.COM Xin Luu Ư!"
    Resume Err_
End Sub
 
Lần chỉnh sửa cuối:
Trong file của e giá trị Ô L20 Và L22 là giá trị cần thiết tối thiểu để chọn giá trị trong bảng Thép cho sàn .Em có viết 1 cái công thức chọn As ở ô Q20 và Q22 . được tra trong bảng Thép cho sàn
Vấn đề e gặp phải là :
Khi Ô Q20 hiện lỗi #NA là trong hàng N20 (6) tương ứng trong bảng thép cho sàn Ø6 không có giá trị thỏa .
Vấn đề của e là khi ô Q20 bị lỗi #NA thì code sẽ ngừng thực hiện và hiện ra 1 bảng Msgbox " Yeu Cau Tang Cot Thep" và thoát khỏi lệnh thực hiện

Em xin lỗi vì hơi dài dòng và khó hiểu tóm lại là Khi em bấm nút Button 2 nếu xuất hiện lỗi #NA thì sẽ dưng lại không thực hiện lệnh và hiển thị 1 bảng thông báo và thoát lệnh

Em có thử 1 đoạn mà không được
On Error Goto Sai
Msgbox "Yeu Cau Nhap Lai Duong Kinh Thep"
Exit sub

Mong các a/c giúp đỡ em
Thứ nhất là mình thấy công thưc của bạn quá dài
Thứ 2: ko biết công thức của bạn áp dụng cho mõi 2 dong 20,22 hay còn nhiều nữa, nên code phải tổng quát.
Để bẫy lỗi mình dùng mẹo 1 chút, hi. Bạn coi code:
Mã:
Sub loi()
Dim i As Integer, lastrow As Integer
lastrow = Range("L" & Rows.Count).End(3).Row
For i = 20 To lastrow Step 2
    Cells(i, 17) = "=IFERROR(INDEX(OFFSET(Ø6,(N" & i & "-6)/2,,,),1,MATCH(L" & i & ",OFFSET(Ø6,(N" & i & "-6)/2,,,),-1)),"""")"
    If Cells(i, 17) = "" Then
        MsgBox ("loi duong kinh tai dong: " & i)
        Range("L" & i).Select
        Exit Sub
    End If
Next
End Sub
 
Lần chỉnh sửa cuối:
Mình sửa đoạm mã của bạn thành vầy là được nà:
PHP:
Sub Macro2()
 On Error GoTo LoiCT
 Cells(20, 17).Resize(9).Value = ""
1 Cells(20, 17) = _
    "=IF(RC[-3]=6,INDEX(Ø6,MATCH(RC[-5],Ø6,-1)),IF(RC[-3]=8,INDEX(Ø8,MATCH(RC[-5],Ø8,-1)),IF(RC[-3]=10,INDEX(Ø10 ,MATCH(RC[-5],Ø10,-1)),IF(RC[-3]=12,INDEX(Ø12,MATCH(RC[-5],Ø12,-1)),IF(RC[-3]=14,INDEX(Ø14,MATCH(RC[-5],Ø14,-1)))))))"
 MsgBox Cells(20, 17).Value
9 Cells(22, 17) = "=IF(RC[-3]=6,INDEX(Ø6,MATCH(RC[-5],Ø6,-1)),IF(RC[-3]=8,INDEX(Ø8,MATCH(RC[-5],Ø8,-1)),IF(RC[-3]=10,INDEX(Ø10,MATCH(RC[-5],Ø10,-1)),IF(RC[-3]=12,INDEX(Ø12,MATCH(RC[-5],Ø12,-1)),IF(RC[-3]=14,INDEX(Ø14,MATCH(RC[-5],Ø14,-1)))))))"
 MsgBox Cells(22, 17).Value
Err_:
    Exit Sub
LoiCT:
    MsgBox "Loi O Ḍng Lenh" & Str(Erl) & Chr(10) & Chr(10) & " Ban Càn Tang Cot Thép", , "GPE.COM Xin Luu Ư!"
    Resume Err_
End Sub

Em hiểu rồi em cám ơn anh ^^
 
Thứ nhất là mình thấy công thưc của bạn quá dài
Thứ 2: ko biết công thức của bạn áp dụng cho mõi 2 dong 20,22 hay còn nhiều nữa, nên code phải tổng quát.
Để bẫy lỗi mình dùng mẹo 1 chút, hi. Bạn coi code:
Mã:
Sub loi()
Dim i As Integer, lastrow As Integer
lastrow = Range("L" & Rows.Count).End(3).Row
For i = 20 To lastrow Step 2
    Cells(i, 17) = "=IFERROR(INDEX(OFFSET(Ø6,(N" & i & "-6)/2,,,),1,MATCH(L" & i & ",OFFSET(Ø6,(N" & i & "-6)/2,,,),-1)),"""")"
    If Cells(i, 17) = "" Then
        MsgBox ("loi duong kinh tai dong: " & i)
        Range("L" & i).Select
        Exit Sub
    End If
Next
End Sub

Em mới tập tành hơi khó hiểu xíu em sẽ cố gắng . Em cám ơn anh
 

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

Back
Top Bottom