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

Liên hệ QC

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
 
Web KT

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

Back
Top Bottom