Sub an()
[B3:B200].SpecialCells(4).EntireRow.Hidden = True
End Sub
Về lý thuyế thì đã ẩn là phải ẩn cả cột hoặc ẩn cả dòng, làm sao ẩn được cột từ B3:B200?Bạn thử dòng code sauGiả sử cột B từ dòng B3:B200 nếu trống thì ẩn đi)
ThânMã:Sub an() [B3:B200].SpecialCells(4).EntireRow.Hidden = True End Sub
Khi muốn ẩn tự động có nghĩa là trong vùng dữ liệu có công thức, khi dữ liệu nguồn thay đổi thì bảng tính sẽ thay đổi nên mới có chuyện ẩn tự động các dòng trống. Mà nếu có công thức thì sử dụng SpecialCells(4) sẽ không có tác dụng. Việc ẩn tự động còn phải dựa vào cấu trúc từng bảng dữ liệu khác nhau nữa.Bạn thử dòng code sauGiả sử cột B từ dòng B3:B200 nếu trống thì ẩn đi)
ThânMã:Sub an() [B3:B200].SpecialCells(4).EntireRow.Hidden = True End Sub
Cái này là tìm trong vùng B3:B200, ô nào trống thì ẩn dòng chứa ô đó chứ không phải ẩn vùng B2:B200 đâu bạn.Về lý thuyế thì đã ẩn là phải ẩn cả cột hoặc ẩn cả dòng, làm sao ẩn được cột từ B3:B200?
Em mới học về Excel, anh có thể giải thích hộ em cái SpecialCells(4). nó có tác dụng là gì ko ạ? Số 4 ở đây nghĩa là gì?
Rất cảm ơn.
Nếu vậy thì bạn có thể dùng đoạn code sau:Khi muốn ẩn tự động có nghĩa là trong vùng dữ liệu có công thức, khi dữ liệu nguồn thay đổi thì bảng tính sẽ thay đổi nên mới có chuyện ẩn tự động các dòng trống. Mà nếu có công thức thì sử dụng SpecialCells(4) sẽ không có tác dụng. Việc ẩn tự động còn phải dựa vào cấu trúc từng bảng dữ liệu khác nhau nữa.
Sub AnDong()
On Error Resume Next
Application.ScreenUpdating = False
Dim i As Integer
Dim RStart As Range
Dim REnd As Range
Set RStart = Range("B3")
Set REnd = Sheets("SHEET1").Range("B200").End(xlUp).Offset(0, 3)
Range(RStart, REnd).Select
With Selection
.EntireRow.Hidden = False
For i = 1 To .Rows.Count
If WorksheetFunction.CountBlank(.Rows(i)) = 4 Then
.Rows(i).EntireRow.Hidden = True
End If
Next i
End With
Set RStart = Nothing
Set REnd = Nothing
Range("A1").Select
Application.ScreenUpdating = True
End Sub
Cho dù dử liệu là công thức thì cũng chẳng ai dại gì dùng For --> Với vài ngàn dòng dử liệu, bạn For đến bao giờ mới xong!Nếu vậy thì bạn có thể dùng đoạn code sau:
Mã:Sub AnDong() On Error Resume Next Application.ScreenUpdating = False Dim i As Integer Dim RStart As Range Dim REnd As Range Set RStart = Range("B3") Set REnd = Sheets("SHEET1").Range("B200").End(xlUp).Offset(0, 3) Range(RStart, REnd).Select With Selection .EntireRow.Hidden = False For i = 1 To .Rows.Count If WorksheetFunction.CountBlank(.Rows(i)) = 4 Then .Rows(i).EntireRow.Hidden = True End If Next i End With Set RStart = Nothing Set REnd = Nothing Range("A1").Select Application.ScreenUpdating = True End Sub
Theo mình thì không cần thiết phải rắc rối như vậy. Ai lại làm có 1 tí mà chép cả công thức như thế không khác jì đi mua việc.Nếu vậy thì bạn có thể dùng đoạn code sau:
Mã:Sub AnDong() On Error Resume Next Application.ScreenUpdating = False Dim i As Integer Dim RStart As Range Dim REnd As Range Set RStart = Range("B3") Set REnd = Sheets("SHEET1").Range("B200").End(xlUp).Offset(0, 3) Range(RStart, REnd).Select With Selection .EntireRow.Hidden = False For i = 1 To .Rows.Count If WorksheetFunction.CountBlank(.Rows(i)) = 4 Then .Rows(i).EntireRow.Hidden = True End If Next i End With Set RStart = Nothing Set REnd = Nothing Range("A1").Select Application.ScreenUpdating = True End Sub