BẪY LỖI 2 LẦN KHÔNG ĐƯỢC (1 Viewer)

Liên hệ QC

khuongnguyencm69

Thành viên mới
Tham gia
7/6/16
Bài viết
31
Được thích
5
Chào các anh/chị diễn đàn.
Em có vấn đề thế này, đoạn code của em khi bẫy lỗi khi nhập sai tên sheet lần đầu thì bẫy lỗi được, nhưng sai lần 2 thì bẫy lỗi không được:

Sub CopySoLieu()
Dim NameSh As String
Dim Ans As Integer

TryAgain:
On Error GoTo Loi:
NameSh = Application.InputBox("Nhap ten sheet copy to go")

Sheets("TanUyen").Select
Range("B9:J" & Range("B9").End(xlDown).Row).Copy

Sheets(NameSh).Select
Range("B7").Select
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False

Exit Sub

Loi:
If Err Then
Ans = MsgBox("TEN FILE SAI HOAC CHUA NHAP TEN!" & Chr(13) & "NHAP LAI TEN FILE!", vbOKCancel)
If Ans = vbOK Then
GoTo TryAgain
Else
Ans = vbCancel
Exit Sub
End If
End If
End Sub

Mong các anh/chị giúp em với. Làm sao khi bấm tên sheet sai vài lần vẫn chạy lên đoạn lên TryAgain
 

File đính kèm

Chào các anh/chị diễn đàn.
Em có vấn đề thế này, đoạn code của em khi bẫy lỗi khi nhập sai tên sheet lần đầu thì bẫy lỗi được, nhưng sai lần 2 thì bẫy lỗi không được:

Sub CopySoLieu()
Dim NameSh As String
Dim Ans As Integer

TryAgain:
On Error GoTo Loi:
NameSh = Application.InputBox("Nhap ten sheet copy to go")

Sheets("TanUyen").Select
Range("B9:J" & Range("B9").End(xlDown).Row).Copy

Sheets(NameSh).Select
Range("B7").Select
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False

Exit Sub

Loi:
If Err Then
Ans = MsgBox("TEN FILE SAI HOAC CHUA NHAP TEN!" & Chr(13) & "NHAP LAI TEN FILE!", vbOKCancel)
If Ans = vbOK Then
GoTo TryAgain
Else
Ans = vbCancel
Exit Sub
End If
End If
End Sub

Mong các anh/chị giúp em với. Làm sao khi bấm tên sheet sai vài lần vẫn chạy lên đoạn lên TryAgain
Với bài này thì nên sử dụng hàm kiểm tra sheet có tồn tại hay không.
Bỏ cái msgbox đi thay vào đó là xét cái inputbox nếu nhấn cancel thì exit sub
 
Upvote 0
Viết vầy cũng được nè:
PHP:
Sub CopyData()
 Dim ShName As String, StrC As String
 Dim Ans As Byte:                   Dim Sh As Worksheet

 For Each Sh In ThisWorkbook.Worksheets
    StrC = StrC & "#" & Sh.Name
 Next Sh
 For Ans = 1 To 3           '3:= Tang Hay Giam Tùy Ban"
    ShName = InputBox("Nhap ten sheet copy to go")
    If InStr(StrC, ShName) Then
        With Sheets("TanUyen")
             .Range(.[B9], .[B9].End(xlDown)).Resize(, 8).Copy Destination:=Sheets(ShName).[B7]
        End With
    Else
        If Ans < 3 Then
            MsgBox "Sai Tên Trang Tính", , "GPE.COM!"
        Else
            MsgBox "Xéo Ngay!", , "Quá " & Ans & "!"
        End If
    End If
 Next Ans
End Sub
 
Upvote 0
Học chửa sôi cơm lo giục chín

Cần học lại lý thuyết của dòng lệnh On Error...
Bẫy lỗi xong thì phải xóa lỗi đi trước khi lặp lại.
Đổi: Goto TryAgain
Thành: Resume TryAgain
 
Upvote 0
Sửa lại code của bạn như sau được không?
PHP:
Sub CopySoLieu()
    Dim NameSh As String
TryAgain:
    NameSh = Application.InputBox("Nhap ten sheet copy to go")
    If NameSh = False Then Exit Sub
    If Evaluate("ISREF('" & NameSh & "'!A1)") = False Then GoTo TryAgain
    Sheets("TanUyen").Range("B9:J" & Range("B9").End(xlDown).Row).Copy
    Sheets(NameSh).Range("B7").PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
End Sub
 
Upvote 0
Cảm ơn các bạn nhiều nhé, mình không học theo hệ thống nào (không có nơi để học, dù muốn lăm) chỉ mò mẫm trên mạng và diễn đàn, nay được các anh chị giúp đỡ tận tình thế này thì rất vui. Thanks!
 
Upvote 0
với bài này nếu rảnh tay có thể l
f một cái userform, trong đó có listbox hoặc combobox để hiển thị danh sách các sheet. rồi dùng chuột để chọn thì làm việc sẽ dễ hơn
 
Upvote 0
Web KT

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

Users who are viewing this thread

Back
Top Bottom