Chuyển password từ userform vào Allow Edit Range

Liên hệ QC

jackylai

Thành viên mới
Tham gia
26/11/07
Bài viết
19
Được thích
5
Chào các bạn,

Hiện tại mình có file đính kèm bên dưới,
Mình muốn khi người dùng nhập password (dĩ nhiên là nhập đúng pass) vào textbox password trên userform và nhấn OK thì, các vùng (Edit Range) được cho phép sẽ được mở ra và có thể nhập liệu vào bình thường.
Sử dụng VBA

Mong mọi người dành ít thời gian check giúp mình
Thanks
 

File đính kèm

Bạn viết code nhấn nút trên Form:
Mã:
Private Sub cmdOK_Click()
Sheet1.Unprotect "3333"
Unload Me
End Sub
 
Upvote 0
Không, ý mình là chỉ điền password cho Vùng (Edit Range) được phép thôi,
 

File đính kèm

  • Edit_Range.jpg
    Edit_Range.jpg
    237.7 KB · Đọc: 52
Upvote 0
Không, ý mình là chỉ điền password cho Vùng (Edit Range) được phép thôi,

Anh Sealand đã làm đúng ý bạn rồi, tại bạn không biết sử dụng thôi. Bạn chọn tất cả (Ctrl+A) rồi vào Format Cell (Ctrl+1) tại thẻ protect bạn bỏ chọn Lock & Hide. OK. Sau đó bạn chọn khối ô cần Protect, chọn lại Format Cell, lần này chọn Lock và Hide. Thế là bạn được như ý rồi còn gì!
 
Upvote 0
Chưa phải rồi ,

1. Những phần bạn nói phía trên mình đã hiểu và thực hiện được.
2. Ý của mình là Worksheet đã bị khóa (Protected) và mình không muốn user unprotect nó, lúc này user chỉ nhập được vào những vùng đã cho phép (những vùng này cũng có password (user được biết) khác với password của worksheet)
3. Trong excel có hai chức năng: Allow Users to Edit Ranges sau đó là Protect Worksheet
4. Password nhập trong textbox của userform là password đã đặt cho Ranges trong "Allow Users to Edit Ranges"
 
Upvote 0
Tốt nhất bạn nói rõ khi khoá và khi mở làm ra sao nếu không dùng VBA, chứ thực sự mình không hiểu .
 
Upvote 0
Chào các bạn,

Hiện tại mình có file đính kèm bên dưới,
Mình muốn khi người dùng nhập password (dĩ nhiên là nhập đúng pass) vào textbox password trên userform và nhấn OK thì, các vùng (Edit Range) được cho phép sẽ được mở ra và có thể nhập liệu vào bình thường.
Sử dụng VBA

Mong mọi người dành ít thời gian check giúp mình
Thanks
Bài này tưởng đơn giản, ai ngờ không tìm ra cách nào cả!
Theo tôi là VÔ PHƯỜNG (vì đã tìm "nát" trên Google rồi)
Vậy bạn nên tìm phương pháp khác để thể hiện ý định của mình còn hơn!
 
Upvote 0
Bài này tưởng đơn giản, ai ngờ không tìm ra cách nào cả!
Theo tôi là VÔ PHƯỜNG (vì đã tìm "nát" trên Google rồi)
Vậy bạn nên tìm phương pháp khác để thể hiện ý định của mình còn hơn!

Anh em check file phía dưới để rõ hơn nhé, khi mình dùng macro để record chức năng unprotect thì có xuất hiện code, nhưng chưa biết vận dụng nó thế nào vào userform. Mong anh em check lại lần nữa
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0

Anh em check file phía dưới để rõ hơn nhé, khi mình dùng macro để record chức năng unprotect thì có xuất hiện code, nhưng chưa biết vận dụng nó thế nào vào userform. Mong anh em check lại lần nữa
Xuất hiện code thế nào? Sao không đưa lên đây luôn!
 
Upvote 0
Xin lỗi mình nhầm, khi gõ password để mở thì không record được, nhưng lúc đặt thì có đoạn code như bên dưới

Sub Macro2()
'
' Macro2 Macro
Range("B4:C12").Select
ActiveSheet.Protection.AllowEditRanges(1).Delete
ActiveSheet.Protection.AllowEditRanges.Add Title:="VUNGNHAPLIEU", Range:= _
Range("B4:C12"), Password:="1111"
End Sub
 
Upvote 0
Haha, trong cái khó ló cái không, mình tìm ra cách rồi
- Đâu cần tội lỗi đi điền password vào vùng đó làm gì, cứ lúc nào userfom load lên thì worksheet tự động unprotect, còn khi thoát userform thì tự động protectsheet đó lại phần phần kia là thừa rồi
Hèn gì vba excel không có phần đó

Cảm ơn anh em giúp đỡ mình nhé
 
Upvote 0
Bực mình quá, chả lẽ chịu?!!. Lọ mọ mãi giờ mình mới tìm ra ngón nghề của Ex. Các bạn tham khảo nhé

1/Code khoá (thiết lập mật khẩu):

Mã:
Sub khoa()
Dim Sh As Worksheet
Set Sh = Application.ActiveSheet
Sh.Unprotect "22"
Sh.Protection.AllowEditRanges("GPE").ChangePassword "11"
Sh.Protect "22"
End Sub
2/Code mở (Gỡ mật khẩu) vùng Allow Edit Range

Mã:
Sub mo()
Dim mk
Dim Sh As Worksheet
Set Sh = Application.ActiveSheet
mk = InputBox("Nhap MK mo", "Sealand")
If mk <> "11" Then
MsgBox "Sai Mat khau"
Exit Sub
Else
Sh.Protection.AllowEditRanges("GPE").Unprotect "11"
End If
End Sub
Tham khảo file ví dụ mình gửi kèm
 

File đính kèm

Upvote 0
Trong đoạn code trên chỗ "GPE" có phải là name của vùng được allow không anh Sealand? Sao mình quét ngang không thấy tên đó hiện lên?
Cảm ơn anh nhiều về bài viết hay
 
Upvote 0
GPE là Title của Allow Edit Range chứ không phải là Name. Do vậy bạn quét sẽ không hiện trong ô Name được

Bạn phải lưu ý kẻo nhầm lẫn
AllowEditRanges("GPE")<>Range("GPE")
 
Lần chỉnh sửa cuối:
Upvote 0
Code rất hay anh Sealand ơi, tuy nhiên vùng "edit" sẽ bị vô hiệu khi sheet đã unprotect. Cho nên mọi việc cũng do ProtectSheet chi phối.
 
Upvote 0
Nếu đã Unprotect thì cần gì Allow Edit Range nữa. Mục đích của nó là khi sheet bị khoá thì một số User vẫn có thể cập nhật 1 số vùng cho phép, trên sheet có 3 trường hợp:

1/Vùng khoá: Đây là vùng khoá hoàn toàn. Vùng này chỉ có thể nhập khi Unprotect.

2/Vùng Allow Edit Range: Đây là vùng bán khoá, chỉ những người dùng có Pass. mới cập nhật.

3/Vùng không khoá: Tự do cập nhật.

Đây là vấn đề khá hay cho việc thiết lập các sheet đa người dùng theo cấp độ khác nhau.
 
Lần chỉnh sửa cuối:
Upvote 0
Chính xác, mình đang làm một bảng dữ liệu liên quan đến nhiều người dùng.
Trong bảng có các vùng khác nhau và password khác nhau để tránh đỗ lỗi qua lại.
 
Upvote 0
Web KT

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

Back
Top Bottom