On error GoTo err bị lỗi

  • Thread starter Thread starter phung13
  • Ngày gửi Ngày gửi
Liên hệ QC

phung13

Thành viên mới
Tham gia
3/10/19
Bài viết
13
Được thích
3
Giới tính
Nam
Em có file excel bên dưới.
Ở sheet TỔNG THEO KHÁCH khi chạy macro BÁO CÁO trong tháng 8 với anh ĐÍNH thì lệnh On error GoTo err nó vẫn bắt lỗi và nhảy đến err bình thường.
Nhưng mà khi chạy trong tháng 9 với anh KIỆT thì gặp lỗi nó không nhảy tới err mà lại thông báo lỗi.
Anh chị giúp em sữa lỗi trên với ạ.
em cám ơn ạ!!!!!
 

File đính kèm

Em có file excel bên dưới.
Ở sheet TỔNG THEO KHÁCH khi chạy macro BÁO CÁO trong tháng 8 với anh ĐÍNH thì lệnh On error GoTo err nó vẫn bắt lỗi và nhảy đến err bình thường.
Nhưng mà khi chạy trong tháng 9 với anh KIỆT thì gặp lỗi nó không nhảy tới err mà lại thông báo lỗi.
Anh chị giúp em sữa lỗi trên với ạ.
em cám ơn ạ!!!!!
Thay bằng câu này chơi.
ON ERROR RESUME NEXT
 
Upvote 0
Trước tiên xin nhắc bạn đừng đụng đến từ khóa của VBA, đó là Err, để dễ bị phạm húy
(Nếu là mình thì nhãn đó sẽ được xài là Err_)

Thứ 2: Nếu là mình thì sẽ rút gọn đoạn mã code này lại theo cách macro cha (hay mẹ) gọi macro con & truyền tham số là chuỗi trị tháng
Mã:
' Loc thang
      If [C1] = "1" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=21, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      ElseIf [C1] = "2" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=22, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      ElseIf [C1] = "3" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=23, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      ElseIf [C1] = "4" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=24, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      ElseIf [C1] = "5" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=25, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      ElseIf [C1] = "6" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=26, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      ElseIf [C1] = "7" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=27, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      ElseIf [C1] = "8" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=28, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      ElseIf [C1] = "9" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=29, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      ElseIf [C1] = "10" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=30, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      ElseIf [C1] = "11" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=31, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      ElseIf [C1] = "12" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=32, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      End If


Mã:
  GPE [C1].Value
PHP:
Sub GPE(Num As String)
Dim SoTT As Integer

SoTT=CInt(Num) + 20
CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=SoTT, Operator:=11, Criteria2:=0, SubField:=0
CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
End Sub

(*) Mà bạn học từ ai mà thụt đầu dòng các dòng lệnh 1 cách quá ư là Hàn lâm làm vậy? Hoa cả mắt
(Tạm thời chỉ là vậy, nếu bạn muốn chúng ta tiếp tục trao đổi)
 
Upvote 0
Người ta chỉ có 1 dòng còn thiếu 1 dòng
Thiếu 1 dòng là dòng nào vậy bạn. mình vẫn chưa hiểu
Bài đã được tự động gộp:

Trước tiên xin nhắc bạn đừng đụng đến từ khóa của VBA, đó là Err, để dễ bị phạm húy
(Nếu là mình thì nhãn đó sẽ được xài là Err_)

Thứ 2: Nếu là mình thì sẽ rút gọn đoạn mã code này lại theo cách macro cha (hay mẹ) gọi macro con & truyền tham số là chuỗi trị tháng
Mã:
' Loc thang
      If [C1] = "1" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=21, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      ElseIf [C1] = "2" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=22, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      ElseIf [C1] = "3" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=23, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      ElseIf [C1] = "4" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=24, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      ElseIf [C1] = "5" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=25, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      ElseIf [C1] = "6" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=26, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      ElseIf [C1] = "7" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=27, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      ElseIf [C1] = "8" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=28, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      ElseIf [C1] = "9" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=29, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      ElseIf [C1] = "10" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=30, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      ElseIf [C1] = "11" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=31, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      ElseIf [C1] = "12" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=32, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      End If


Mã:
  GPE [C1].Value
PHP:
Sub GPE(Num As String)
Dim SoTT As Integer

SoTT=CInt(Num) + 20
CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=SoTT, Operator:=11, Criteria2:=0, SubField:=0
CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
End Sub

(*) Mà bạn học từ ai mà thụt đầu dòng các dòng lệnh 1 cách quá ư là Hàn lâm làm vậy? Hoa cả mắt
(Tạm thời chỉ là vậy, nếu bạn muốn chúng ta tiếp tục trao đổi)
Mình chuyển từ err sang Err_ rồi mà nó vẫn ko bắt được lỗi bạn.
mình tự mò học trên mạng được khoảng hai tuần nay à bạn. nên thụt dòng hơi kì xíu. hihi
 
Upvote 0
Mình chuyển từ err sang Err_ rồi mà nó vẫn ko bắt được lỗi bạn.
Mình nhắc bạn để mà đề phòng & tránh xa 1 chút những từ khóa của VBA, chứ bản thân nhãn Err đó chưa gây lỗi
Còn lỗi thì ở chổ khác & mình đang hoa cả mắt nên chưa thể tìm ra


Thứ nữa:
Trên cửa sổ Immediate ta có được các thông số tương ứng sau:
?xlDiagonalDown
5
?xlDiagonalUp
6
?xlEdgeLeft
7
?xlEdgeTop
8
?xlEdgeBottom
9
?xlEdgeRight
10
?xlInsideVertical
11
?xlInsideHorizontal
12

Như vậy xài vòng lặp chúng ta sẽ cô gọn lại Code của bạn 1 cách đáng kể
 
Upvote 0
Em có file excel bên dưới.
Ở sheet TỔNG THEO KHÁCH khi chạy macro BÁO CÁO trong tháng 8 với anh ĐÍNH thì lệnh On error GoTo err nó vẫn bắt lỗi và nhảy đến err bình thường.
Nhưng mà khi chạy trong tháng 9 với anh KIỆT thì gặp lỗi nó không nhảy tới err mà lại thông báo lỗi.
Anh chị giúp em sữa lỗi trên với ạ.
em cám ơn ạ!!!!!
Sau khi thực hiện "On error GoTo err" cần phải xóa lỗi bằng lệnh "On error GoTo 0" lúc đó khi gặp lỗi tiếp nó mới thông cảm bỏ qua ;)
 
Upvote 0
Mình nhắc bạn để mà đề phòng & tránh xa 1 chút những từ khóa của VBA, chứ bản thân nhãn Err đó chưa gây lỗi
Còn lỗi thì ở chổ khác & mình đang hoa cả mắt nên chưa thể tìm ra


Thứ nữa:
Trên cửa sổ Immediate ta có được các thông số tương ứng sau:
?xlDiagonalDown
5
?xlDiagonalUp
6
?xlEdgeLeft
7
?xlEdgeTop
8
?xlEdgeBottom
9
?xlEdgeRight
10
?xlInsideVertical
11
?xlInsideHorizontal
12

Như vậy xài vòng lặp chúng ta sẽ cô gọn lại Code của bạn 1 cách đáng kể
mình ko hiểu Immediate bạn ơi. giải thích giúp mình với nha
với bạn tìm lỗi giùm mình với ạ. mình cảm ơn nhiều nha
 
Upvote 0
cảm ơn bạn nha. Mà bạn giúp mình tra xem lỗi nó ở đâu chưa ạ
mình biết tốn công lắm nhưng bạn chịu khó giúp mình nha.
mình cảm ơn thật nhiều!!!!!!
mình làm gọn code rồi nè bạn. bạn xem ở dưới đây nha

Option Explicit Dim LR As Long Dim vietnames As String Dim so_xe As Integer Dim i As Integer Sub Bao_cao() If ([B1] = "") Or ([B2] = "") Then ' Hiêòn thông baìo vietnames = "Vui lòng nh" & ChrW(7853) & "p " & ChrW(273) & ChrW(7847) & "y " & ChrW(273) & ChrW(7911) & " d" & ChrW(7919) & " li" & ChrW(7879) & "u" Application.Assistant.DoAlert "Excel", vietnames, 0, 4, 0, 0, 0 Range("B1").Select GoTo ket_thuc End If 'Clear_TONG_THEO_KHACH TONG_THEO_KHACH.Range("A7:R100").clear TONG_THEO_KHACH.Range("O8").FormulaR1C1 = "=R[-7]C" TONG_THEO_KHACH.Range("O8").AutoFill Destination:=Range("O8:R8"), Type:=xlFillDefault Application.CutCopyMode = False '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' Loòc thaìng GPE [C1].Value ' Loòc khaìch CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=3, Criteria1:=TONG_THEO_KHACH.Cells(2, 2).Value CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' Sao chép và dán sang TÔÒNG THEO KHÁCH CHUYEN_CHAN.Range("Table4[#ALL]").SpecialCells(xlVisible).Copy TONG_THEO_KHACH.Range("F8").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False CHUYEN_CHAN.Range("A6").AutoFilter With TONG_THEO_KHACH LR = .Cells(.Rows.Count, "F").End(xlUp).Row End With If LR = 8 Then vietnames = "Không có d" & ChrW(7919) & " li" & ChrW(7879) & "u" Application.Assistant.DoAlert "Excel", vietnames, 0, 4, 0, 0, 0 Range("F8:M8").clear Range("B1").Select GoTo ket_thuc ElseIf LR = 9 Then TONG_THEO_KHACH.Range("K8").Value = TONG_THEO_KHACH.Range("P1").Value TONG_THEO_KHACH.Range("L10").Value = "T" & ChrW(7893) & "ng" TONG_THEO_KHACH.Range("M10").Value = TONG_THEO_KHACH.Range("M9").Value TONG_THEO_KHACH.Range("J8:M10").Copy TONG_THEO_KHACH.Range("A8").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False ' Dinh dang GoTo hoan_thanh End If '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TONG_THEO_KHACH.ListObjects.Add(xlSrcRange, Range("F8:M" & LR), , xlYes).Name = "myTable1" ' tao bang myTable1 so_xe = phu.Range("B1").Value For i = 3 To so_xe Step 1 TONG_THEO_KHACH.ListObjects("myTable1").Range.AutoFilter Field:=2, Criteria1:=phu.Cells(i, 1).Value With TONG_THEO_KHACH LR = .Cells(.Rows.Count, "F").End(xlUp).Row End With ' Copy và dán NÔI DUNG On Error GoTo Err_ TONG_THEO_KHACH.Range("J9:J" & LR).SpecialCells(xlVisible).Copy TONG_THEO_KHACH.Range("O9").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False ' Huy copy TONG_THEO_KHACH.Range("F8").AutoFilter ' Huy loc myTable1 ' Xoa trung lap TONG_THEO_KHACH.Range("$O$8:$O" & LR).RemoveDuplicates Columns:=1, Header:=xlYes 'Tao công thuc myTable2 With TONG_THEO_KHACH LR = .Cells(.Rows.Count, "j").End(xlUp).Row End With TONG_THEO_KHACH.Range("O7").Value = phu.Cells(i, 1).Value Range("P9").FormulaR1C1 = "=SUMIFS(R9C11:R" & LR & "C11,R9C10:R" & LR & "C10,RC[-1],R9C7:R" & LR & "C7,R7C15)" Range("Q9").FormulaR1C1 = "=INDEX(R9C12:R" & LR & "C12,MATCH(1,INDEX((R7C15=R9C7:R" & LR & "C7)*(RC[-2]=R9C10:R" & LR & "C10),0),0))" Range("R9").FormulaR1C1 = "=SUMIFS(R9C13:R" & LR & "C13,R9C10:R" & LR & "C10,RC[-3],R9C7:R" & LR & "C7,R7C15)" ' Copy công thuc If [O10] <> "" Then With TONG_THEO_KHACH LR = .Cells(.Rows.Count, "O").End(xlUp).Row End With Range("P9").AutoFill Destination:=Range("P9:P" & LR) Range("Q9").AutoFill Destination:=Range("Q9:Q" & LR) Range("R9").AutoFill Destination:=Range("R9:R" & LR) End If 'copy sang bang in With TONG_THEO_KHACH LR = .Cells(.Rows.Count, "O").End(xlUp).Row End With Range("O8:R" & LR).Copy With TONG_THEO_KHACH LR = .Cells(.Rows.Count, "A").End(xlUp).Row End With Range("A" & LR + 3).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False TONG_THEO_KHACH.Range("A" & LR + 2).Value = "XE " & TONG_THEO_KHACH.Range("O7").Value ' Clear With TONG_THEO_KHACH LR = .Cells(.Rows.Count, "R").End(xlUp).Row End With TONG_THEO_KHACH.Range("O9:R" & LR).clear TONG_THEO_KHACH.Range("O7").clear Err_: Next hoan_thanh: MsgBox "Xong" ket_thuc: End Sub
 
Upvote 0
Thú thật là mình không đủ khả năng phát hiện ra dòng lệnh bị lỗi;

Hay nhờ bạn mô tả iêu cầu mà macro đó phải làm là gì, ngõ hầu viết mới dễ hơn chăng!

Hoặc bạn thử xài hàm Erl() trong VBA xem sao:

(B1)
Sau dòng lệnh Err_: bạn thêm câu lệnh
If Err>0 Then MsgBox Erl, ,Error
(B2) bạn rãi đều các số từ 1 đến 9 cách nhau 9 dòng lệnh làm 1 theo kiểu:
PHP:
    End If
  ' Loc thang   '
1   LocThang [c1].Value
  ' Loc khach     '
      CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=3, Criteria1:=TONG_THEO_KHACH.Cells(2, 2).Value
      CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
'------------------------------------------------------------------------------------------- '
   ' Sao chép và dán sang TÔNG THEO KHÁCH  '
2      CHUYEN_CHAN.Range("Table4[#ALL]").SpecialCells(xlVisible).Copy
      TONG_THEO_KHACH.Range("F8").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
         Application.CutCopyMode = False
         CHUYEN_CHAN.Range("A6").AutoFilter
    With TONG_THEO_KHACH
      LR = .Cells(.Rows.Count, "F").End(xlUp).Row
    End With
3       If LR = 8 Then
         vietnames = "Không có d" & ChrW(7919) & " li" & ChrW(7879) & "u"
' . . . . '
Chú ý là các số thêm vô phải cách ký tự đầu tiên của câu lệnh ít nhất 1 khoảng trắng đó nha

Khi chạy macro xem thử dòng nào bị lỗi, ta ghi lại
 
Lần chỉnh sửa cuối:
Upvote 0
Thú thật là mình không đủ khả năng phát hiện ra dòng lệnh bị lỗi;

Hay nhờ bạn mô tả iêu cầu mà macro đó phải làm là gì, ngõ hầu viết mới dễ hơn chăng!

Hoặc bạn thử xài hàm Erl() trong VBA xem sao:

(B1)
Sau dòng lệnh Err_: bạn thêm câu lệnh
If Err>0 Then MsgBox Erl, ,Error
(B2) bạn rãi đều các số từ 1 đến 9 cách nhau 9 dòng lệnh làm 1 theo kiểu:
PHP:
    End If
  ' Loc thang   '
1   LocThang [c1].Value
  ' Loc khach     '
      CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=3, Criteria1:=TONG_THEO_KHACH.Cells(2, 2).Value
      CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
'------------------------------------------------------------------------------------------- '
   ' Sao chép và dán sang TÔNG THEO KHÁCH  '
2      CHUYEN_CHAN.Range("Table4[#ALL]").SpecialCells(xlVisible).Copy
      TONG_THEO_KHACH.Range("F8").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
         Application.CutCopyMode = False
         CHUYEN_CHAN.Range("A6").AutoFilter
    With TONG_THEO_KHACH
      LR = .Cells(.Rows.Count, "F").End(xlUp).Row
    End With
3       If LR = 8 Then
         vietnames = "Không có d" & ChrW(7919) & " li" & ChrW(7879) & "u"
' . . . . '
Chú ý là các số thêm vô phải cách ký tự đầu tiên của câu lệnh ít nhất 1 khoảng trắng đó nha

Khi chạy macro xem thử dòng nào bị lỗi, ta ghi lại
để mình thử ạ. Cảm ơn bạn nha
 
Upvote 0
để mình thử ạ. Cảm ơn bạn nha
Trong quá trình thử có thể diễn ra các vấn đề sau:
(1) Vẫn báo lỗi ở macro khác, khi macro này gọi thực thi macro đó;
(2) Vì ban đầu chúng ta rãi các số dòng lệnh cách quảng (9 hay 10), Nên khi báo lỗi ví dụ dòng lệnh mang số 3 thì chứng tở dòng lệnh đánh số 3 đến trước dòng lệnh đánh số 4 có lỗi;
Để tiếp tục tìm dòng lỗi, trước tiên ta bỏ các số từ 1 đến 2 & từ 5 đến 9 đã đánh trước đó đi
& rãi các số vừa bỏ lên các dòng sau dòng đang có số 3 đến trước dòng có số 4
Sau đó ta chạy macro để biết chính xác dòng nào có lỗi tiếp theo

Nhưng cũng nói trước, VBA chưa chắc báo lỗi 1 cách chính xác hoàn toàn trong vài trường hợp
Chúc thành công & ngày cuối tuần vui vẻ!
 
Lần chỉnh sửa cuối:
Upvote 0
Trong quá trình thử có thể diễn ra các vấn đề sau:
(1) Vẫn báo lỗi ở macro khác, khi macro này gọi thực thi macro đó;
(2) Vì ban đầu chúng ta rãi các số dòng lệnh cách quảng (9 hay 10), Nên khi báo lỗi ví dụ dòng lệnh mang số 3 thì chứng tở dòng lệnh đánh số 3 đến trước dòng lệnh đánh số 4 có lỗi;
Để tiếp tục tìm dòng lỗi, trước tiên ta bỏ các số từ 1 đến 2 & từ 5 đến 9 đã đánh trước đó đi
& rãi các số vừa bỏ lên các dòng sau dòng đang có số 3 đến trước dòng có số 4
Sau đó ta chạy macro để biết chính xác dòng nào có lỗi tiếp theo

Nhưng cũng nói trước, VBA chưa chắc báo lỗi 1 cách chính xác hoàn toàn trong vài trường hợp
Chúc thành công & ngày cuối tuần vui vẻ!
bạn ơi
cho mình hỏi đoạn mã này có nghĩa là gì vậy ạ
PHP:
SoTT = CInt(Num) + 20
 
Upvote 0
bạn ơi cho mình hỏi đoạn mã này có nghĩa là gì vậy ạ
PHP:
SoTT = CInt(Num) + 20
Trong macro của bạn có đoạn Code như sau:
PHP:
  If [C1] = "1" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=21, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      ElseIf [C1] = "2" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=22, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
      ElseIf [C1] = "3" Then
        CHUYEN_CHAN.ListObjects("Table4").Range.AutoFilter Field:=1, Criteria1:=23, Operator:=11, Criteria2:=0, SubField:=0
        CHUYEN_CHAN.ListObjects("Table4").ShowAutoFilterDropDown = False
' . . . .'
Có nghĩa là Nếu [C1]="1" thì Criterial:= 21
[C1].Value= "2" -> Criterial:= 22
. . . . .
Cho nên ta lkai báo thêm 1 tham biến SoTT để chuyển tương ứng giữa trị trong [C1] & trị của Criterial cần có đó mà
& chúc vui & hiệu quả tuần làm việc mới!
 
Upvote 0
Web KT

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

Back
Top Bottom