Xin code VBA tự động ẩn dòng theo điều kiện

Liên hệ QC

hoalv1985

Thành viên hoạt động
Tham gia
27/11/17
Bài viết
130
Được thích
20
Giới tính
Nam
Các anh chị cho em hỏi chút. Giờ em có 1 file, nếu trong khoảng từ dòng 4 đến dòng cuối ( dòng cuối sẽ thay đổi khi nhập liệu) mà có dòng nào trống thì excel tự ẩn dòng đó đi. Các anh chị cho em xin code với ạ.
Trước em thấy có 1 bài toán tương tự với code như sau:
Private Sub Worksheet_Activate()
ActiveSheet.Unprotect ("Learning_Excel")
Dim Rng As Range
Application.ScreenUpdating = False
For Each Rng In [I19:I42]
If Rng.Value = "" Or Rng.Value = 0 Then Rng.EntireRow.Hidden = True
Next Rng
Application.ScreenUpdating = True
ActiveSheet.Protect ("Learning_Excel")
End Sub
Giờ em muốn mở rộng trường chỗ i42 thay vào đó là i & dòng cuối. nhưng code báo lỗi ạ. Em mới tập vba nên nhờ các anh chị chỉ giúp em với ạ. Em chân thành cảm ơn anh chị!
 

File đính kèm

Cột I như file đính kèm làm gì có dữ liệu đâu bạn.
Mình chuyển ẩn theo điều kiện cột A thì tham khảo
Mã:
Private Sub Worksheet_Activate()
ActiveSheet.Unprotect ("Learning_Excel")
Dim Rng As Range
Dim i As Long
Application.ScreenUpdating = False
With Sheet1
i = .Range("A" & Rows.Count).End(xlUp).Row  'Tìm dòng cuoi theo cot A
For Each Rng In .Range("A4:A" & i)
If Rng.Value = "" Or Rng.Value = 0 Then Rng.EntireRow.Hidden = True
Next Rng
End With
Application.ScreenUpdating = True
ActiveSheet.Protect ("Learning_Excel")
End Sub
 
Cột I như file đính kèm làm gì có dữ liệu đâu bạn.
Mình chuyển ẩn theo điều kiện cột A thì tham khảo
Mã:
Private Sub Worksheet_Activate()
ActiveSheet.Unprotect ("Learning_Excel")
Dim Rng As Range
Dim i As Long
Application.ScreenUpdating = False
With Sheet1
i = .Range("A" & Rows.Count).End(xlUp).Row  'Tìm dòng cuoi theo cot A
For Each Rng In .Range("A4:A" & i)
If Rng.Value = "" Or Rng.Value = 0 Then Rng.EntireRow.Hidden = True
Next Rng
End With
Application.ScreenUpdating = True
ActiveSheet.Protect ("Learning_Excel")
End Sub
Vâng, em cảm ơn anh nhiều. để em chạy thử xem có bị lỗi không a ạ. Em cảm ơn anh
 
Vâng, em cảm ơn anh nhiều. để em chạy thử xem có bị lỗi không a ạ. Em cảm ơn anh
Em chào anh, nếu những dòng trắng đó em muốn không phải là ẩn mà là xóa dòng đi. em thay hidden bằng delete nhưng ko được anh ah. em giúp em với ạ!. Em cảm ơn anh!
 
Lần chỉnh sửa cuối:
A sửa giúp e với a ơi. E cảm ơn a ạ!
Bạn thử code này coi sao. Cũng dựa vào dữ liệu cột A
Mã:
Private Sub Worksheet_Activate()
    Dim j&, iRow&
    Application.ScreenUpdating = False
    With Sheet1
        .Unprotect ("Learning_Excel")
        iRow = .Range("C" & Rows.Count).End(xlUp).Row - 2 'Tìm dòng cuoi theo cot A
        For j = iRow To 4 Step -1
            If .Cells(j, "A") = "" Or .Cells(j, "A") = 0 Then
                .Rows(j).Delete Shift:=xlUp
            End If
        Next j
        .Protect ("Learning_Excel")
    End With
    Application.ScreenUpdating = True
End Sub
 
Bạn thử code này coi sao. Cũng dựa vào dữ liệu cột A
Mã:
Private Sub Worksheet_Activate()
    Dim j&, iRow&
    Application.ScreenUpdating = False
    With Sheet1
        .Unprotect ("Learning_Excel")
        iRow = .Range("C" & Rows.Count).End(xlUp).Row - 2 'Tìm dòng cuoi theo cot A
        For j = iRow To 4 Step -1
            If .Cells(j, "A") = "" Or .Cells(j, "A") = 0 Then
                .Rows(j).Delete Shift:=xlUp
            End If
        Next j
        .Protect ("Learning_Excel")
    End With
    Application.ScreenUpdating = True
End Sub
Em cảm ơn anh, em làm được rồi anh ah. Thanks anh.
 
Web KT

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

Back
Top Bottom