Cách thức bẫy lỗi trong VBA với hàm Erl()

  • Thread starter SA_DQ
  • Ngày gửi
S

SA_DQ

Thành viên Cố vấn - Webketoan Mentors
29/6/05
569
100
43
66
HCM city
Em muốn bẫy lỗi trong code như sau:
Mã:
Sub PasteToVisibleRows()
Dim Nguon As Range, Dich As Range
Dim J As Long, W As Long

1 Set Nguon = Application.InputBox(prompt:="Chon Vùng Copy ", Type:=8)
2 Set Dich = Application.InputBox(prompt:="Chép Dên:(Chú Ý: Chi Chon 1 Ô Dâu Tiên Cua Vùng Dán Nhé", Type:=8)
3 For J = 1 To Nguon.Rows.Count
    Do Until Not Dich.Offset(W).Rows.Hidden
        W = W + 1
    Loop
    Nguon.Rows(J).Copy Destination:=Dich.Offset(W)
    W = W + 1
Next J
End Sub
Khi hộp Input box hiện ra và hỏi "Chọn Vùng Copy"; nếu em không muốn chọn và bấm cancel thì bị lỗi
Em muốn khi bấm Cancel thì thoát luôn code, nhờ các anh/chị hướng dẫn thêm. Em cảm ơn!
Ở đây có thể có lỗi ở 1 trong 2 dòng lệnh (đã được đánh số 1 & 2)
Ta có thể thực hiện việc bạn iêu cầu theo macro sau:
PHP:
Sub Paste_to_Visible_Rows()
Dim Nguon As Range, Dich As Range
Dim i As Long, r As Long
Dim MsgB As String

On Error GoTo LoiCT
1 Set Nguon = Application.InputBox(prompt:="Chon Vung Copy ", Type:=8)
2 Set Dich = Application.InputBox(prompt:="Chep Den: (luu Ý: Chi Chon 1 Ô Dâu Tiên Cua Vùng Cân Dán:", Type:=8)
3 For i = 1 To Nguon.Rows.Count
    Do Until Not Dich.Offset(r).Rows.Hidden
        r = r + 1
    Loop
    Nguon.Rows(i).Copy Destination:=Dich.Offset(r)
    r = r + 1
Next i
Err_:           Exit Sub
LoiCT:
If Err = 424 Then
    MsgB = Choose(Erl, "Vùng Copy", "Vùng Dán", "GPE.COM")
    MsgBox "Cân Chon  " & MsgB ,  , "GPE.COM Xin Luu Ý!"
    Resume Err_
Else
    On Error Resume Next
End If
End Sub
 
Khóa học Quản trị dòng tiền
S

SA_DQ

Thành viên Cố vấn - Webketoan Mentors
29/6/05
569
100
43
66
HCM city
Thêm 1 ví dụ nữa các bạn có thể tham khảo:
PHP:
Sub ViDuLoiVoiDongLenhDanhSo()
     Dim dblNum As Double, dblRnd As Double
1   On Error GoTo Loi_CT
     Randomize
2   dblRnd = Rnd()
3   Select Case 10 * dblRnd
       Case Is < 2
4       dblNum = 2 / 0
5     Case Is < 4
6       dblNum = 4 / 0
7     Case Is < 6
8       dblNum = 6 / 0
9     Case Is < 8
11      dblNum = 8 / 0
12    Case Else
13      dblNum = 10 \ 0
     End Select
14   Exit Sub
Loi_CT:
15  MsgBox "Sô Ngâu: " & Format(dblRnd, "0.###0") & "..." & vbCrLf & _
        "Loi Tai Dòng: " & Erl & vbCrLf & _
            "Mã Loi [" & Err.Number & "] " & Err.Description, vbCritical
End Sub
 

Xem nhiều

Webketoan Zalo OA