Ẩn Rows theo điều kiện (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

khoa_pr

Thành viên hoạt động
Tham gia
16/6/09
Bài viết
141
Được thích
13
Xin chào mọi người
Tôi đang thiết kế bảng điểm tổng hợp các môn trong cùng một Sheet cho cả 3 học kỳ: Học kỳ I (HKI) từ "Ạ:M23" , HKII từ "A31:M50" , Cả năm (CN) từ A58:M77. Đầu bảng điểm tôi tạo một ComboBox để khi chọn HKI thì vùng HKII và CN Ẩn, HKII thì HKI và CN Ẩn, CN thì HKI và HKII Ẩn, nếu ComboBox rỗng thì các dòng không ẩn. Kèm theo đó những dòng nào trong vùng điểm không có số thứ tự (Cột A) thì sẽ Ẩn.
Tôi viết code trong VBA nó chạy rất tốt (Cấu trúc Select case), nhưng khi cho bảo vệ worksheet (mật khẩu "123") thì chương trình lại báo lỗi ở dòng code :
rng.EntireRow.Hidden = False
Xin được mọi người giúp đỡ.
 

File đính kèm

Tốt nhất là code đang báo lỗi thì tháo hết mật khẩu bỏ qua 1 bên đi

Mật khẩu chỉ để chống người ngay, còn kể gian thì không; Vậy miễn xài là vừa!

Bạn thử với code sau:

PHP:
Option Explicit
Sub BangDiem()
Dim Rng As Range, fRw As Long, lRw As Long
Set Rng = Range("5:85")
Rng.EntireRow.Hidden = False
Select Case [H2].Value
Case "HK1"
    lRw = [B65500].End(xlUp).Row:
    fRw = [b5].End(xlDown).Offset(2).Row
    ActiveWindow.ScrollRow = 5
Case "HK2"
    [5:30,57:85].EntireRow.Hidden = True
    fRw = [B31].End(xlDown).Offset(1).Row:  lRw = 56
    ActiveWindow.ScrollRow = 31
Case "CN"
    [5:57].EntireRow.Hidden = True
    fRw = [B58].End(xlDown).Offset(1).Row:  lRw = 85
    ActiveWindow.ScrollRow = 58
End Select
Rows(fRw & ":" & lRw).Hidden = True
End Sub

Mà bạn không cảm thấy bực mình vì cái mật khẩu đó hay sao chứ?
 
Cảm ơn bạn HYen17 rất nhiều.
Đúng như bạn nói "Mật khẩu chỉ để chống người ngay". Tuy nhiên có một số người dùng không thành thạo, hay xoá nhầm các công thức, nên phải để mật khẩu bạn ạ. Bảng tính mình Upload lên rất đơn giản cho nhẹ, chứ bảng điểm chính còn có cột Xếp loại Học lực từng học kì, xét Lên lớp, Ở lại, Thi lại, rèn luyện hạnh kiểm . . . nên buột phải Protect Sheet.
Cám ơn bạn nhiều
 
Lần chỉnh sửa cuối:
Bạn HYen17 ơi
Sau khi mình thử Code của bạn thì nó có hiện tượng sau:
1- Nếu mình chọn HK1 thì bảng điểm HK2 và CN Ẩn, nhưng dòng 20 của HK1 và dòng 73:77 của Cn không ẩn.
2- Khi mình nhấn ComboBox và không chọn HK1, HK2 và CN thì nó báo lỗi ở dòng Code cuối cùng:
Rows(fRw & ":" & lRw).Hidden = True
Bạn kiểm tra giúp mình với .
 
Xin chào mọi người
Tôi đang thiết kế bảng điểm tổng hợp các môn trong cùng một Sheet cho cả 3 học kỳ: Học kỳ I (HKI) từ "Ạ:M23" , HKII từ "A31:M50" , Cả năm (CN) từ A58:M77. Đầu bảng điểm tôi tạo một ComboBox để khi chọn HKI thì vùng HKII và CN Ẩn, HKII thì HKI và CN Ẩn, CN thì HKI và HKII Ẩn, nếu ComboBox rỗng thì các dòng không ẩn. Kèm theo đó những dòng nào trong vùng điểm không có số thứ tự (Cột A) thì sẽ Ẩn.
Tôi viết code trong VBA nó chạy rất tốt (Cấu trúc Select case), nhưng khi cho bảo vệ worksheet (mật khẩu "123") thì chương trình lại báo lỗi ở dòng code :
rng.EntireRow.Hidden = False
Xin được mọi người giúp đỡ.

Tức là dữ liệu của bạn dài đến dòng 77?
Vậy sao không cho hết lên đây cho dễ test?
 
Nếu các vùng KH1, HK2, CN đã xác định, bạn thử dùng code này
Mã:
Public Sub An()
    [A5:A77].EntireRow.Hidden = True
        If [H2] = "HK1" Then
            [A5:A23].EntireRow.Hidden = False
            Range([B23], [B23].End(xlUp)(2)).EntireRow.Hidden = True
        ElseIf [H2] = "HK2" Then
            [A31:A50].EntireRow.Hidden = False
            Range([B50], [B50].End(xlUp)(2)).EntireRow.Hidden = True
        ElseIf [H2] = "CN" Then
            [A58:A77].EntireRow.Hidden = False
            Range([B77], [B77].End(xlUp)(2)).EntireRow.Hidden = True
        Else
            [A5:A77].EntireRow.Hidden = False
        End If
End Sub
Thân
 

File đính kèm

Chân thành cảm ơn concogia
Tôi chưa hiểu chổ này: Dấu ngoặc vuông [ ] khác gì dấu ngoặc ( ) ?
Code :Range([B23], [B23].End(xlUp)(2)).EntireRow.Hidden = True, Số 2 trong ngoặc (2) có phải là cột B không ? Khi tôi thay [B23] bằng [D23] và số (20 thay bằng (4) thì việc ẩn các dòng trống trong bảng điểm không chính xác ?
Mong đuọc giải thích rõ hơn.
 
Chân thành cảm ơn concogia
Tôi chưa hiểu chổ này: Dấu ngoặc vuông [ ] khác gì dấu ngoặc ( ) ?
Code :Range([B23], [B23].End(xlUp)(2)).EntireRow.Hidden = True, Số 2 trong ngoặc (2) có phải là cột B không ? Khi tôi thay [B23] bằng [D23] và số (20 thay bằng (4) thì việc ẩn các dòng trống trong bảng điểm không chính xác ?
Mong đuọc giải thích rõ hơn.
Range([B23], [B23].End(xlUp)(2)).EntireRow.Hidden = True
Code này chỉ là chọn vùng dữ liệu thôi bạn:
--- Đóng đinh thằng B23
--- [B23].End(xlUp)(2) ==> từ thằng B23 chạy cà tưng ngược lên trên, đụng cell nào có dữ liệu thì xì- tốp, xì- tốp xong rồi thì đi ngược lại 1 cell. Thí dụ trong bài của bạn, khi chọn HK1 thì sẽ hiện từ dòng 5 đến 23, bi giờ mình cho chạy từ 23 ngược lên, đụng thằng có dữ liệu là thằng 19 thì ngừng, sau đó đi ngược lại 1 cell, đó là cell B20
Túm lại, câu đó chọn vùng B20:B23 rồi ẩn đi
Bạn thử thay số 2 đó bằng số khác xem sao
Tôi chưa hiểu chổ này: Dấu ngoặc vuông [ ] khác gì dấu ngoặc ( ) ?
Cũng chỉ là một cách khai báo thôi, bạn tìm đọc các tài liệu VBA trên diễn đàn sẽ hiểu rõ hơn
Thân
 
Lần chỉnh sửa cuối:
Cảm ơn concogia nhiều lắm, vì mình vẫn cứ nghĩ cần phải dùng lệnh cho VBA hiểu cần phải ẩn những dòng Rỗng (xlCellTypeBlanks), nay nhờ các thành viên diễn đàn mà mình hiểu thêm một cách ẩn dòng rất hay.
 
Giúp đỡ gỡ rối Ẩn Row theo điều kiện có mật khẩu bảo vệ sheet

Chào concogia, cùng tất cả các cao thủ !
sau khi thử code của concogia trong file ví dụ đưa lên diễn đàn "Ẩn rơ theo điều kiện", thì các đoạn code chạy tốt, tôi đặt mật khẩu vẫn chạy tốt. Nhưng khi tôi áp dụng vào file GVBM-GVCN 2.5 có đặt mật khẩu bảo vệ Sheet và Workbook, thì ở Sheet "GVCN" mỗi khi tôi kích vào Combobox "Chọn học kì" thì đều bị báo lỗi ở đoạn code sau trong Sheet "GVCN":
.Range("D8:Q52,T8:T52,V8:W52,C75:Q119,T75:T119,V75:W119").Locked = False
Nếu tôi vô hiệu các mật khẩu (pass: 123) hoặc cả đoạn code "Private Sub Worksheet_Activate() . . . End Sub" thì nó lại báo lỗi qua code Modules trong MdBangdiem:Public Sub HK_gvcn()

[A8:A196].EntireRow.Hidden = True 'Bị bôi màu vàng
If [N1] = "HKI" Then
[A8:A62].EntireRow.Hidden = False
Range([B62], [B62].End(xlUp)(2)).EntireRow.Hidden = True
ElseIf [N1] = "HKII" Then
[A75:A129].EntireRow.Hidden = False
Range([B129], [B129].End(xlUp)(2)).EntireRow.Hidden = True
ElseIf [N1] = "CA NAM" Then
[A142:A196].EntireRow.Hidden = False
Range([B196], [B196].End(xlUp)(2)).EntireRow.Hidden = True
Else
[A8:A196].EntireRow.Hidden = False
End If
End SubThường nó hay hiện lỗi "1004" cùng với dòng chữthông báo đại khái là "Lỗi do thuộc tính của sheet".
Mong được sự giúp đỡ của các cao thủ.
Chân thành cảm ơn
 

File đính kèm

Hu hu, cao thủ đâu hết rồi sao không thấy ai giúp đỡ hết vậy ?
 
Web KT

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

Back
Top Bottom