Em có bài toán này mong cả nhà giải quyết giúp bằng VBA. Yêu cầu đề bài trong file đính kèm mong cả nhà giúp đỡ, Em xin cám ơn nhiều ạ.
Tóm lại như thế này ạ: Em muốn các dòng trong vùng B9:B23 có số thứ tự trong khoảng I6:J6 thì hiện, số thứ tự ngoài vùng I6:J6 thì ẩn ạHiểu chủ thớt nói gì chết liền
Chắc là vầy:Tóm lại như thế này ạ: Em muốn các dòng trong vùng B9:B23 có số thứ tự trong khoảng I6:J6 thì hiện, số thứ tự ngoài vùng I6:J6 thì ẩn ạ
Sub InTHBH()
Dim Rng As Range, sRng As Range, Cll As Range
Set sRng = Range("B9:B23")
sRng.EntireRow.Hidden = False
For Each Cll In sRng
If Cll.Value < Range("I6").Value Or Cll.Value > Range("J6").Value Then
If Rng Is Nothing Then
Set Rng = Cll
Else
Set Rng = Union(Rng, Cll)
End If
End If
Next
Rng.EntireRow.Hidden = True
Sheet1.PrintPreview
End Sub
Em cám ơn, đúng ý rồi ạ. Những vẫn bị lỗi. Khi em chọn khoảng hiện từ 3-6 thì stt từ 1-2 vẫn hiện lên ạChắc là vầy:
Mã:Sub InTHBH() Dim Rng As Range, sRng As Range, Cll As Range Set sRng = Range("B9:B23") sRng.EntireRow.Hidden = False For Each Cll In sRng If Cll.Value < Range("I6").Value Or Cll.Value > Range("J6").Value Then If Rng Is Nothing Then Set Rng = Cll Else Set Rng = Union(Rng, Cll) End If End If Next Rng.EntireRow.Hidden = True Sheet1.PrintPreview End Sub
Bạn lấy lại Code bài 4 ý. Lúc trước nhầm cái And với cai OrEm cám ơn, đúng ý rồi ạ. Những vẫn bị lỗi. Khi em chọn khoảng hiện từ 3-6 thì stt từ 1-2 vẫn hiện lên ạ
Chuẩn rồi ạ, em cám ơn nhiều ạBạn lấy lại Code bài 4 ý. Lúc trước nhầm cái And với cai Or
Uổi. Quên chưa bẫy lỗiSao rồi chị ơi
View attachment 206342
Sub InTHBH()
Dim Rng As Range, sRng As Range, Cll As Range
Set sRng = Range("B9:B23")
sRng.EntireRow.Hidden = False
For Each Cll In sRng
If Cll.Value < Range("I6").Value Or Cll.Value > Range("J6").Value Then
If Rng Is Nothing Then
Set Rng = Cll
Else
Set Rng = Union(Rng, Cll)
End If
End If
Next
If Not Rng Is Nothing Then Rng.EntireRow.Hidden = True
Sheet1.PrintPreview
End Sub
Bạn sửa dòng If Cll.Value < Range("I6").Value Or Cll.Value > Range("J6").Value Then thành If Cll.Value < Sheets("Tên sheet").Range("I6").Value Or Cll.Value > Sheets("Tên sheet").Range("J6").Value ThenCod trên thì ok rồi ạ, nhưng khi em thay đổi chút thì không tự động chạy đc. Bây giờ vùng điều kiện I6:J6 e lấy ở Sheet khác thì không tự động chạy đc như file e đính kèm, Mong cả nhà giúp đỡ e. EM cảm ơn nhiều ạ.
Bạn sửa dòng If Cll.Value < Range("I6").Value Or Cll.Value > Range("J6").Value Then thành If Cll.Value < Sheets("Tên sheet").Range("I6").Value Or Cll.Value > Sheets("Tên sheet").Range("J6").Value Then
Bạn thay cái "Tên sheet" bằng tên Sheet chứa I6, J6 trong File của Bạn
Bạn xem thửEm cảm ơn ạ, nhưng ô điều kiện của e lại lấy dữ liệu từ ô khác, chỉ khi nào mình enter hay tác động vào 1 ô ở sheet 1 thì nó mới tự chạy thôi ạ, e xin hỏi như thế thì xử lý sao ạ?
Được rồi ạ, Em cảm ơn nhiều ạ.Bạn xem thử
Vẫn chưa đc chị xinh ơi, Bây giờ bài toán của e là: Điều kiện giá trị giữ dòng là Sheet1(I6:J6), vùng này sẽ lấy điều kiện từ sheet2. Khi mình nhập giá trị vào sheet 2 thì sheet1 sẽ tự động ẩn các dòng ngoài vùng giá trị các giá trị, k cần Print nữa ạ . Mong chị giúp đỡBạn xem thử
Thế thì Bạn xóa dòng Sheet1.PrintPreview đi là xongVẫn chưa đc chị xinh ơi, Bây giờ bài toán của e là: Điều kiện giá trị giữ dòng là Sheet1(I6:J6), vùng này sẽ lấy điều kiện từ sheet2. Khi mình nhập giá trị vào sheet 2 thì sheet1 sẽ tự động ẩn các dòng ngoài vùng giá trị các giá trị, k cần Print nữa ạ . Mong chị giúp đỡ
Nhưng khi e nhập điều kiện vào ô trong Sheet 2 thì Sheet 1 không tự nhảy, mà phải tác động vào Sheet 1 nó mới tự nhảy ạThế thì Bạn xóa dòng Sheet1.PrintPreview đi là xong
Bạn phải cho cái sự kiện Worksheet_Change nằm trong Sheet2 nó mới chạy được chứNhưng khi e nhập điều kiện vào ô trong Sheet 2 thì Sheet 1 không tự nhảy, mà phải tác động vào Sheet 1 nó mới tự nhảy ạ
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Change As Range, Rng As Range, sRng As Range, Cll As Range, fNumb As Long, eNumb As Long
Set Change = Intersect(Target, Sheet2.Range("D4:E4"))
Set sRng = Sheet1.Range("B9:B23")
fNumb = Sheet2.Range("D4").Value: eNumb = Sheet2.Range("E4").Value
If Not Change Is Nothing Then
sRng.EntireRow.Hidden = False
For Each Cll In sRng
If Cll.Value < fNumb Or Cll.Value > eNumb Then
If Rng Is Nothing Then
Set Rng = Cll
Else
Set Rng = Union(Rng, Cll)
End If
End If
Next
If Not Rng Is Nothing Then Rng.EntireRow.Hidden = True
End If
End Sub
Bạn phải cho cái sự kiện Worksheet_Change nằm trong Sheet2 nó mới chạy được chứ
Mã:Private Sub Worksheet_Change(ByVal Target As Range) Dim Change As Range, Rng As Range, sRng As Range, Cll As Range, fNumb As Long, eNumb As Long Set Change = Intersect(Target, Sheet2.Range("D4:E4")) Set sRng = Sheet1.Range("B9:B23") fNumb = Sheet2.Range("D4").Value: eNumb = Sheet2.Range("E4").Value If Not Change Is Nothing Then sRng.EntireRow.Hidden = False For Each Cll In sRng If Cll.Value < fNumb Or Cll.Value > eNumb Then If Rng Is Nothing Then Set Rng = Cll Else Set Rng = Union(Rng, Cll) End If End If Next If Not Rng Is Nothing Then Rng.EntireRow.Hidden = True End If End Sub