Ẩn và hiện dòng có điều kiện

  • Thread starter Thread starter Blad01
  • Ngày gửi Ngày gửi
Liên hệ QC

Blad01

Thành viên thường trực
Tham gia
6/10/07
Bài viết
350
Được thích
28
Em có một danh sách học sinh gồm 100 em (làm dự phòng nên mới nhiều vậy) vì là làm dự phòng nên rất ít khi mới dùng hết số thứ tự trong danh sách đó (nơi em công tác thường thì chỉ có < 50 HS mà thôi), vì thế em muốn tạo một nút giống như hình bên dưới. mặc định lúc đầu là để danh sách từ 1 đến 49 HS. từ 50 đến 100 thì ẩn đi. Danh sách này chỉ xuất hiện khi ta tích vào ô có điều kiện là >= 49 HS như hình phía dưới. Mong các cao thủ chỉ giúp.
Chân thành cảm ơn !.
Lưu ý:
Nếu trong sheet DSHS mà được bỏ ẩn thì đồng thời bên sheet TOAN danh sách học sinh cũng được bỏ ẩn.
Đề bài được nêu rõ trong file đính kèm, trân trọng cảm ơn !.
 
Lần chỉnh sửa cuối:
Theo mình nghĩ, có 2 cách thực hiện :
1/ Dùng VBA thì đơn giản rồi.
2/ Không thích dùng VBA thì bạn có thể dùng CF

Bạn đưa file lên để mọi người thuận tiện giúp bạn.

TDN
 
Theo mình nghĩ, có 2 cách thực hiện :
1/ Dùng VBA thì đơn giản rồi.
2/ Không thích dùng VBA thì bạn có thể dùng CF

Bạn đưa file lên để mọi người thuận tiện giúp bạn.

TDN
Cảm ơn bạn rất nhiều, đây là file đính kèm rất mong nhận được sự giúp đỡ từ các bạn. Mình có thêm một lưu ý nữa là:
Nếu trong sheet DSHS mà được bỏ ẩn thì đồng thời bên sheet TOAN danh sách học sinh cũng được bỏ ẩn.
Đề bài được nêu rõ trong file đính kèm, trân trọng cảm ơn !.
 
Lần chỉnh sửa cuối:
Cảm ơn bạn rất nhiều, đây là file đính kèm rất mong nhận được sự giúp đỡ từ các bạn. Mình có thêm một lưu ý nữa là:
Nếu trong sheet DSHS mà được bỏ ẩn thì đồng thời bên sheet TOAN danh sách học sinh cũng được bỏ ẩn.
Đề bài được nêu rõ trong file đính kèm, trân trọng cảm ơn !.

Mình gợi ý một cách dùng conditional format. Không cần dùng code gì cả.
Bạn xem file đính kèm. Tại sheet DSHS, bạn thử gõ thêm vài tên học sinh vào thử xem.
bạn nghiên cứu làm tương tự cho sheet kế bên nhé.
 

File đính kèm

Cảm ơn bạn rất nhiều, đây là file đính kèm rất mong nhận được sự giúp đỡ từ các bạn. Mình có thêm một lưu ý nữa là:
Nếu trong sheet DSHS mà được bỏ ẩn thì đồng thời bên sheet TOAN danh sách học sinh cũng được bỏ ẩn.
Đề bài được nêu rõ trong file đính kèm, trân trọng cảm ơn !.
Đây là 1 cách dùng VBA, bạn thử xem rồi chỉnh lại đôi chút nếu cần.

TDN
 

File đính kèm

Cảm ơn bạn rất nhiều, đây là file đính kèm rất mong nhận được sự giúp đỡ từ các bạn. Mình có thêm một lưu ý nữa là:
Nếu trong sheet DSHS mà được bỏ ẩn thì đồng thời bên sheet TOAN danh sách học sinh cũng được bỏ ẩn.
Đề bài được nêu rõ trong file đính kèm, trân trọng cảm ơn !.

1 phát trúng 2 đích
Thế này có phải hay hơn bấm nút không?
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn xem file có như ý không nhé.
Bạn Quên cho Control Link với ô M1 nên nó không chịu

TDN
Lại có một trường hợp thế này mong bạn xem và khắc phục giúp mình với. Bây giờ minh muốn khóa và ẩn các công thức trong file mà bạn vừa làm cho mình thì chương trình báo lỗi, mong bạn xém hướng khắc phục
 
Lại có một trường hợp thế này mong bạn xem và khắc phục giúp mình với. Bây giờ minh muốn khóa và ẩn các công thức trong file mà bạn vừa làm cho mình thì chương trình báo lỗi, mong bạn xém hướng khắc phục
Mình chưa rõ ý của bạn : Khoá và ẩn các công thức nghĩa là bạn đã dùng chức năng Protect Sheet đúng không ? Nếu đúng vậy thì trong Code VBA trước khi Unhide thì bạn cho nó UnProtect Sheet và thao tác xong thì chi nó Protect trở lại.

TDN
 
Mình không dành về VBA nên mong bạn hướng dẫn chi tiết hơn có được không
Nếu bạn khoá và ẩn công thức bằng cách vào Menu Tools / Protection... (không đặt Pasword) thì code AnDong bạn dùng như sau :
Sub AnDong()
Application.ScreenUpdating = False
Sheet2.Unprotect
Sheet4.Unprotect

Sheet2.Rows("4:103").EntireRow.Hidden = False
Sheet4.Rows("4:101").EntireRow.Hidden = False
If Sheet2.Range("M1") = 1 Then
Sheet2.Rows("54:103").EntireRow.Hidden = True
Sheet4.Rows("55:101").EntireRow.Hidden = True
End If
Sheet2.Protect
Sheet4.Protect

Application.ScreenUpdating = True
End Sub
TDN
 
Nếu bạn khoá và ẩn công thức bằng cách vào Menu Tools / Protection... (không đặt Pasword) thì code AnDong bạn dùng như sau :TDN
Mình đã làm thử rồi nhưng có một vấn đề thế nàymm chương trình này mình muốn nhiều người có thể sử dụng nếu cứ mỗi lần phải sử dụng tới chức năng ẩn hiện dòng thì chương trình đòi phải nhập Pass vậy người ta làm sao có pass để mở. Bạn xem có cách nào khác khả thi hơn không ??
Chân thành cảm ơn
 
Lần chỉnh sửa cuối:
Mình đã làm thử rồi nhưng có một vấn đề thế nàymm chương trình này mình muốn nhiều người có thể sử dụng nếu cứ mỗi lần phải sử dụng tới chức năng ẩn hiện dòng thì người ta làm sao có pass để mở. Bạn xem có cách nào khác khả thi hơn không ??
Chân thành cảm ơn
Cũng đơn giản thôi, bạn chọn Unprotect sheet [DSHS],
+ Chọn ô M1,
+ Vào Format Cell / Protection
+ Bỏ chọn 2 check box đó đi và OK

Bạn tải lại File ở bài #8, mình đã Upload lại.

TDN
 
Cũng đơn giản thôi, bạn chọn Unprotect sheet [DSHS],
+ Chọn ô M1,
+ Vào Format Cell / Protection
+ Bỏ chọn 2 check box đó đi và OK

Bạn tải lại File ở bài #8, mình đã Upload lại.

TDN
Nhưng với cách này bạn có công nhận với mình là tính bảo mật của file excell không còn nữa, người sử dụng chỉ cần qua sheet TOAN kích vào Protect sheet một lần nữa là tất cả coi như không được bảo vệ. Còn cách nào hay hơn không bạn.
 
Nhưng với cách này bạn có công nhận với mình là tính bảo mật của file excell không còn nữa, người sử dụng chỉ cần qua sheet TOAN kích vào Protect sheet một lần nữa là tất cả coi như không được bảo vệ. Còn cách nào hay hơn không bạn.

Bạn xem cách này tính bảo mật có cao hơn không
(Update của file SD_THCS_boyxin.xls)
  1. Dùng Nút check (2 lựa chọn)
  2. Không dùng VBA (hoàn toàn dùng Name và Conditional Formattings..)
  3. Tính bảo mật cao (các sheet có thể đặt Pas Protect sheet tùy ý, khác nhau)
 

File đính kèm

Nhưng với cách này bạn có công nhận với mình là tính bảo mật của file excell không còn nữa, người sử dụng chỉ cần qua sheet TOAN kích vào Protect sheet một lần nữa là tất cả coi như không được bảo vệ. Còn cách nào hay hơn không bạn.
Ồ, bạn xem kĩ lại code xem : Khi kích hoạt thì Macro sẽ Unprotect rồi thao tác trên sheet và cuối cùng thì Macro sẽ tự Protect trở lại mà.

Mình nghĩ cách trên là nhằm ẩn công thức thôi hoặc giới hạn một số ô cho người dùng mà thôi. Nếu nói về bảo mật của Excel thì mặt này Excel kém lắm. Huống chi là M$ cũng phải chào thua mà.

TDN
 
Ồ, bạn xem kĩ lại code xem : Khi kích hoạt thì Macro sẽ Unprotect rồi thao tác trên sheet và cuối cùng thì Macro sẽ tự Protect trở lại mà.

Mình nghĩ cách trên là nhằm ẩn công thức thôi hoặc giới hạn một số ô cho người dùng mà thôi. Nếu nói về bảo mật của Excel thì mặt này Excel kém lắm. Huống chi là M$ cũng phải chào thua mà.

TDN
Tính bảo mật của Excell đúng là có kém nhưng ý mình ở đây là sử dụng cách của tedaynui thì chỉ cần người sử dụng bấm vào nút Unsheet protect là có thể xem được công thức của mình ngay tức thì, như vậy liệu có cần phải protect nữa hay không ??? Lâu rồi mình có thấy 1 chương trình có thể làm được 2 điều kiện đó là vừa ẩn và hiện dòng theo điều kiện và cũng vừa có thể giữ nguyên chức năng protect vốn như nó đã có.
Chắc chắn VBA có thể làm được điều này, mình tin là như vậy. Mong các bạn cao thủ nghiên cứu và chỉ giúp.
tedaynui mong bạn nghiên cứu và giúp mình với nhé.
Chân thành cảm ơn !.
 
Bạn làm thế nào vậy, rất hay file của bạn đã cài pás rồi làm sao mình có thể biết cách làm được. Bạn có thể hướng dẫn mình và các bạn khác tham khảo được không ?
Chân thành cảm ơn !

Thì tui ghi rõ pas trong file to tướng đó thui (pas: boyxin ở cả 2 sheet)​
 
Mình thấy có thay đổi gì đâu tedaynui khi mình kích vào UnsheetProtect thì vẫn xem được tất cả các công thức của file và nó như chưa bao giờ được khóa.
Nếu bạn muốn Protect Sheet với PWord thì bạn dùng Code sau
Mã:
Sub AnDong()
Application.ScreenUpdating = False
Sheet2.Unprotect ("tedaynui")
Sheet4.Unprotect ("tedaynui")
Sheet2.Rows("4:103").EntireRow.Hidden = False
Sheet4.Rows("4:101").EntireRow.Hidden = False
If Sheet2.Range("M1") = 1 Then
    Sheet2.Rows("54:103").EntireRow.Hidden = True
    Sheet4.Rows("55:101").EntireRow.Hidden = True
End If
Sheet2.Protect ("tedaynui")
Sheet4.Protect ("tedaynui")
Application.ScreenUpdating = True
End Sub
TDN
 
Nếu bạn muốn Protect Sheet với PWord thì bạn dùng Code sau
Mã:
Sub AnDong()
Application.ScreenUpdating = False
Sheet2.Unprotect ("tedaynui")
Sheet4.Unprotect ("tedaynui")
Sheet2.Rows("4:103").EntireRow.Hidden = False
Sheet4.Rows("4:101").EntireRow.Hidden = False
If Sheet2.Range("M1") = 1 Then
    Sheet2.Rows("54:103").EntireRow.Hidden = True
    Sheet4.Rows("55:101").EntireRow.Hidden = True
End If
Sheet2.Protect ("tedaynui")
Sheet4.Protect ("tedaynui")
Application.ScreenUpdating = True
End Sub
TDN
Cảm ơn bạn thật nhiều, bạn thật nhiệt tình giúp đỡ mọi người, cầu mong bạn gặp nhiều may mắn và hạnh phúc trong cuộc sống. Mình đã làm được theo đúng yêu cầu rồi.
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom