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
Yêu cầu thì cũng khá thú vị đấy, tiếc là post sai box.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.
Thì ở bài trên, mình đã gợi ý rồi đó:Nhờ pro chi giáo thêm post box nào thì hợp lý vậy.
Rất may là MOD, SMOD đã dời topic về đúng box mà không xóa topic này đi.
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 đề):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.
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