Dùng macro để xoá dòng theo ý muốn

Liên hệ QC

tq_thuyet

Thành viên mới
Tham gia
29/11/08
Bài viết
44
Được thích
4
Nghề nghiệp
Engineer
Em đang làm một danh sách để quản lý tiến độ sản xuất.
Em muốn dùng marcro để có thể tự động xoá những dòng chứa sản phẩm đã làm xong.
Em đã up file ví dụ lên mong các pro chỉ giáo cho.
 

File đính kèm

Upvote 0
Nhờ pro chi giáo thêm post box nào thì hợp lý vậy.
 
Upvote 0
Nhờ pro chi giáo thêm post box nào thì hợp lý vậy.
Thì ở bài trên, mình đã gợi ý rồi đó:
Rất may là MOD, SMOD đã dời topic về đúng box mà không xóa topic này đi.
Bạn trả lời thêm một vài vấn đề nhé:
1. Chỉ cần nhập chữ Fin vào cột L là thực hiện thao tác xóa hay cần có cả 5 chữ Fin trên vùng màu vàng (từ cột H đến cột L)?
2. Trong file của bạn, tại sao lại không xóa cả hàng 7 mà chỉ xóa từ hàng 3 đến hàng 6? Và có 2 tình huống liên quan:
+ Nếu chỉ ở hàng 3 có những chữ Fin, còn bên dưới chưa có thì có xóa hàng 3 đi không?
+ Nếu ở hàng 7 có những chữ Fin, còn các hàng từ 3 đến 6 không có thì sẽ làm gì? Vẫn xóa các hàng 3-6, hay chỉ xóa hàng 7 hay là để nguyên, không xóa hàng nào?
Thực ra yêu cầu này không khó, chỉ cần sử dụng sự kiện Worksheet_Change là giải quyết được. Tuy nhiên, cần phải chờ câu trả lời của bạn đã.
 
Upvote 0
Cảm ơn bạn đã quan tâm.
1. Chỉ cần nhập chữ Fin vào cột L là thực hiện thao tác xóa hay cần có cả 5 chữ Fin trên vùng màu vàng (từ cột H đến cột L)?
Cần có cả 5 chữ FIn trên vùng từ cột H đến cột L mới thực hiện thao tác xóa.
2. Trong file của bạn, tại sao lại không xóa cả hàng 7 mà chỉ xóa từ hàng 3 đến hàng 6?
Trong những hàng đã xong mình muốn giữ lại một hàng để xác nhận.
Hơi khó hiểu mong pro thông cảm.
Và có 2 tình huống liên quan:
+ Nếu chỉ ở hàng 3 có những chữ Fin, còn bên dưới chưa có thì có xóa hàng 3 đi không?
Trong trường hợp này cũng không cần xóa hàng 3
+ Nếu ở hàng 7 có những chữ Fin, còn các hàng từ 3 đến 6 không có thì sẽ làm gì? Vẫn xóa các hàng 3-6, hay chỉ xóa hàng 7 hay là để nguyên, không xóa hàng nào?
Trường hợp này để nguyên không xóa hàng nào.

Mong bạn chỉ giúp.
 
Upvote 0
Chúc cả nhà một tuần làm việc hiệu quả.
Xin up lên cái cho các pro tiện theo dõi.
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bạn đã quan tâm.
1. Chỉ cần nhập chữ Fin vào cột L là thực hiện thao tác xóa hay cần có cả 5 chữ Fin trên vùng màu vàng (từ cột H đến cột L)?
Cần có cả 5 chữ FIn trên vùng từ cột H đến cột L mới thực hiện thao tác xóa.
2. Trong file của bạn, tại sao lại không xóa cả hàng 7 mà chỉ xóa từ hàng 3 đến hàng 6?
Trong những hàng đã xong mình muốn giữ lại một hàng để xác nhận.
Hơi khó hiểu mong pro thông cảm.
Và có 2 tình huống liên quan:
+ Nếu chỉ ở hàng 3 có những chữ Fin, còn bên dưới chưa có thì có xóa hàng 3 đi không?
Trong trường hợp này cũng không cần xóa hàng 3
+ Nếu ở hàng 7 có những chữ Fin, còn các hàng từ 3 đến 6 không có thì sẽ làm gì? Vẫn xóa các hàng 3-6, hay chỉ xóa hàng 7 hay là để nguyên, không xóa hàng nào?
Trường hợp này để nguyên không xóa hàng nào.

Mong bạn chỉ giúp.
Bạn xài tạm cái này vậy (code còn quá rườm rà nhưng giải quyết được vấn đề):
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Cll As Range, Wf
    If Target.Count > 1 Or Intersect(Target, [H:L]) Is Nothing Then Exit Sub
    Set Wf = Application.WorksheetFunction
    If Wf.CountIf(Intersect(Target.EntireRow, [H:L]), "Fin") = 5 Then
        Do
            Set Cll = [H:H].FindPrevious([H:H].Find("Fin", [H1], , xlWhole, , xlPrevious))
            If Wf.CountIf(Intersect(Cll.EntireRow, [H:L]), "Fin") = 5 Then Cll.EntireRow.Delete
        Loop Until [H:H].FindPrevious([H:H].Find("Fin", [H1], , xlWhole, , xlPrevious)).Row = [H:H].Find("Fin", [H1], , xlWhole, , xlPrevious).Row
    End If
End Sub
Trong file đính kèm, bạn thử double click vào một trong những ô màu vàng rồi enter và xem kết quả nhé.
Phải chi bạn không cần "giữ lại một hàng để xác nhận" thì đỡ biết mấy. Lúc đó code sẽ đơn giản hơn nhiều.
 

File đính kèm

Upvote 0
Cám ơn bạn đã dành thời gian trả lời.
Mình sẽ tham khảo ví dụ rồi chế biến cho phù hợp.
 
Upvote 0
Web KT

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

Back
Top Bottom