Xóa dòng trống nhiều sheet

Liên hệ QC

Thbv

Thành viên hoạt động
Tham gia
3/5/19
Bài viết
102
Được thích
10
Mình nhờ mọi người code xóa dòng trống tất cả các sheet (trừ 4 sheet đầu tiên). Điều kiện xóa các sheet từ thứ 5 trở đi đến hết là dựa theo cột H. nếu cột H có dòng trống hoặc ô trống thì xóa cả dòng. Xin cảm ơn
 

File đính kèm

  • Nhờ giúp.xlsb
    3 MB · Đọc: 22
Các bước sẽ như sau, chắc vầy:
B1: Khai báo các biến cần dùng trong macro, trong đó có tham biến Sh là kiểu WorkSheet , dRng là kiểu vùng (Range)
B2: Tạo vòng lặp duyệt qua tất thảy các trang
B2: Điều kiện hễ gặp tên trang nào mà 4 kí tự đâu của tên trang tính là kiểu số thì thực hiện các lệnh:
B2.1: Xác địhn vùng ô có dữ liệu thuộc cột 'H'
B2.2: Tạo vòng lặp duyệt từng ô trong vùng vừa xác định
B2.3: Hễ ô nào trống thì đưa cả dóng đó vô tham biến vùng (Range) bằng phương thức Union( dRng, Row(j & ":" & J)); Ngỏ hầu sau khi duyệt xong ta chỉ xóa 1 lần các dòng trống của trang đang duyệt
B3: Sau khi xóa xong cụm dòng trông trong 1 trang, ta lại phải set tham biến chứa các dòng trống này (dRng) về 'Nothing' trước khi chuyển sang khảo sát trang tính kế tiếp
Mong hữu ích với bạn chút nào đó, mình mừng!
 
Upvote 0
Sub XoaDongNhieuSheets()

Const KETUSHEET = 5
Dim i As Integer
Dim shNames As String
Dim sh As Variant
For i = KETUSHEET To WorkSheets.Count ' lập một chuỗi tên kể từ sheet thứ 5
shNames = shNames & "," & WorkSheets(i).Name
Next i
If shNames = "" Then
MsgBox "Cha co sheet nao thu " & KETUSHEET & "tro di ca"
Exit Sub ' nghỉ chơi
End If
shNames = Right(shNames, Len(shNames)-1) ' bỏ dấu phẩy dầu tiên

Dim svScreenUpdate As Boolean
svScreenUpdate = Application.ScreenUpdating
Application.ScreenUpdating = False
For Each sh in Split(shNames, ",")
XoaDongTrong sh
Next sh
Application.ScreenUpdating = svScreenUpdate

End Sub

' code sau đây thực sự có thể thay bằng giải thuật record macro filter dòng trống và xoá
Sub XoaDongTrong(shName As String)
Const COTCANXET = "H"
Dim i As Long
With WorkSheets(shName)
' xét kể từ dòng cuối cùng của cột A
For i = .Cells(.Rows.Count, "A").End(xlUp).Row To 1 Step -1
If .Cells(i, COTCANXET).Value = "" Then .Rows.EntireRow.Delete
Next i
End With
End Sub
 
Upvote 0
Không được. Mình không biết viết code. Mong Bạn giúp đỡ và thử file mình gửi luôn. Trân trọng cảm ơn
 
Upvote 0
Không biết copy code, không biết tự thử code thì đừng bao giờ nghĩ đến chuyện "nhờ mọi người code".
Người ta bỏ vào đấy một con vi rút thì sao? Nhờ vào niềm tin diễn đàn sẽ có người kiểm soát giùm luôn chuyện này à?
 
Upvote 0
Mình copy code
mà không chạy được
 
Upvote 0
Mình nhờ mọi người code xóa dòng trống tất cả các sheet (trừ 4 sheet đầu tiên). Điều kiện xóa các sheet từ thứ 5 trở đi đến hết là dựa theo cột H. nếu cột H có dòng trống hoặc ô trống thì xóa cả dòng. Xin cảm ơn
Trong file có code rồi mà.
 
Upvote 0
Web KT

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

Back
Top Bottom