Làm cách nào để các dòng ẩn (Hide) hiện (Unhide) dần ra

  • Thread starter Thread starter dvu58
  • Ngày gửi Ngày gửi
Liên hệ QC
Status
Không mở trả lời sau này.

dvu58

Thành viên thường trực
Tham gia
29/4/07
Bài viết
298
Được thích
378
Làm cách nào để các dòng ẩn (Hide) hiện (Unhide)dần ra

Mình muốn dấu (Hide) tất cả các dòng (row), trừ dòng số 1 (việc này thì dễ thôi, không thành vấn đề).

Tuy nhiên,
Vấn đề là: Sau khi nhập dữ liệu ở A1, Enter thì..... row số 2 xuất hiện, sau khi nhập dữ liệu ở A2 thì row 3 xuất hiện, .... và cứ thế các row dần dần thòi ra sau mỗi lần nhập xong dữ liệu ở cột A dòng kế bên trên

Làm cách nào đây, các bạn hỉ?

Mong giúp đỡ.
 
Bạn Hide từ dòng 2 trở đi thì làm gì có chuyện khi bạn nhập liệu tại A1, enter, dòng 2 xuất hiện chứ... Có lẽ có sự nhầm lẩn gì chăng? Còn nếu bạn có 1 file đang bị tình trạng như thế thì post lên cho mọi người xem thử...
 
Cái này đơn giản, bạn hãy hide about 1000 row. Click phải tại tên sh, cửa sổ vba hiện ra và chép đọan này vào
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Row < 100 Then
Rows(Target.Row + 1).EntireRow.Hidden = False
Cells(Target.Row + 1, Target.Column).Select
End If
End Sub
Nghĩa là khi cột A thay đổi thì unhide dòng kế.
(Rows(Target.Row + 1).EntireRow.Hidden = False)
 
Bạn thử code sau nhé
Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 1 And Target.Row < 65000 Then
If Cells(Target.Row, 1).Value <> "" Then
Cells(Target.Row, 1).EntireRow.Hidden = False
Else
If Cells(Target.Row + 1, 1).Value <> "" Then
Cells(Target.Row + 1, 1).EntireRow.Hidden = False
Else
Cells(Target.Row + 1, 1).EntireRow.Hidden = True
End If
End If
End If
End Sub
 
Lần chỉnh sửa cuối:
minhlev đã viết:

Cảm ơn bạn minhlev,

Nhưng code của bạn chưa ổn. Nếu mình sửa lại như sau sẽ chạy được

Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
If Cells(Target.Row, 1).Value <> "" Then
Rows(Target.Row + 1).EntireRow.Hidden = False
Else
If Cells(Target.Row + 1, 1).Value <> "" Then
Rows(Target.Row + 1).EntireRow.Hidden = False
Else
Rows(Target.Row + 1).EntireRow.Hidden = True
End If
End If
End If
End Sub

Không biết có đúng không nữa, bạn xem lại thử
 
Đúng rồi, dưới điều kiện if thứ 2 thì phải là cells(target.row+1,1)
 
Bạn thử lại đoạn code tôi đã sửa nhé.
Code:
Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Column = 1 Then
If Cells(Target.Row, 1).Value <> "" Then
Cells(Target.Row + 1, 1).EntireRow.Hidden = False
Else
If Cells(Target.Row + 1, 1).Value <> "" Then
Cells(Target.Row + 1, 1).EntireRow.Hidden = False
Else
Cells(Target.Row + 1, 1).EntireRow.Hidden = True
End If
Dim i As Integer
For i = 1 To 10
If Cells(Target.Row + i + 1, 1).Value = "" Then _
Cells(Target.Row + i + 1, 1).EntireRow.Hidden = True
Next
End If
End If
Application.ScreenUpdating = True
End Sub
 
minhlev đã viết:
Bạn thử lại đoạn code tôi đã sửa nhé.
Code:
Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Column = 1 Then
If Cells(Target.Row, 1).Value <> "" Then
Cells(Target.Row + 1, 1).EntireRow.Hidden = False
Else
If Cells(Target.Row + 1, 1).Value <> "" Then
Cells(Target.Row + 1, 1).EntireRow.Hidden = False
Else
Cells(Target.Row + 1, 1).EntireRow.Hidden = True
End If
Dim i As Integer
For i = 1 To 10
If Cells(Target.Row + i + 1, 1).Value = "" Then _
Cells(Target.Row + i + 1, 1).EntireRow.Hidden = True
Next
End If
End If
Application.ScreenUpdating = True
End Sub

Cảm ơn bạn nhiều lắm! Chạy tốt rồi
 
Status
Không mở trả lời sau này.
Web KT

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

Back
Top Bottom