Form Đăng nhập và phân quyền cơ bản

Liên hệ QC

ongke0711

Thành viên gắn bó
Tham gia
7/9/06
Bài viết
1,954
Được thích
2,534
Giới tính
Nam
Chào các bạn,

Tôi lanh thang trên net và lụm được một kiểu Form đăng nhập và phân quyền cũng khá hay, đem về chỉnh sửa chút và chia sẻ với các bạn.
Form này sẽ phân quyền cho người dùng theo 3 kiểu: Ẩn sheet, khoá sheet và toàn quyền thao tác với sheet. Cũng theo kỹ thuật này thì các bạn muốn phát triển phân quyền cho Userform cũng được. Nếu các bạn muốn phân quyền chi tiết hơn nữa như: Xem, Sửa, Xoá, Nút lệnh thì tôi chưa ngâm cứu tới nhé, các bạn đừng bảo tôi hướng dẫn thêm :) (nếu trên MS Access thì tôi đã làm được).
Các bạn xem clip và tự thao tác để nắm rõ hơn nhé.

Screen Shot 2020-04-07 at 1.30.10 PM.png


Video:

<iframe width="560" height="315" src="
" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 

File đính kèm

  • Login va Phan Quyen.xlsb
    71.3 KB · Đọc: 94
Vụ Msgbox thì theo tôi thì lấy thẳng từ sheet vào luôn chắc là ok. Tạo một sheet lưu toàn bộ các thông báo của ứng dụng.
Vì tôi dùng Win7 nên không thấy bị lỗi font nhưng có nhiều bạn dùng Windows 10 thì báo lỗi font như các bạn đã gặp.
Screen Shot 2020-04-07 at 9.39.48 PM.png

Screen Shot 2020-04-07 at 9.38.28 PM.png
 
Lần chỉnh sửa cuối:
Upvote 0
Đang chọc điện thoại mai làm cho... chuối viết như vậy nó hiểu sai ... Tim bài của mạnh và anh batman1 là có câu trả lời
 
Upvote 0
Lần chỉnh sửa cuối:
Upvote 0
ủa 3 hàm này win 10 64 bit hiển thị bình thường mà ta
Mã:
Public Sub Main_UniMsgbox()
    Dim m As String
    m = "Chào các thành viên gi" & ChrW(7843) & "i pháp Excel"
    UniMsgbox (m)
End Sub
Public Sub Main_UniMsgbox3()
 msgBoxUni "Sai tên " & ChrW(273) & ChrW(259) & "ng nh" & ChrW(7853) & "p. Vui lòng nh" & ChrW(7853) & "p l" & ChrW(7841) & "i.", vbCritical, "Thông báo"

End Sub
Bài đã được tự động gộp:

hàm này cũng chạy bình thường
Public Sub Main_UniMsgbox4()
Application.Assistant.DoAlert "Thông báo", "Chào các thành viên gi" & ChrW(7843) & "i pháp Excel", 0, 4, 0, 0, 0
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Vụ Msgbox thì theo tôi thì lấy thẳng từ sheet vào luôn chắc là ok. Tạo một sheet lưu toàn bộ các thông báo của ứng dụng.
Vì tôi dùng Win7 nên không thấy bị lỗi font nhưng có nhiều bạn dùng Windows 10 thì báo lỗi font như các bạn đã gặp.
View attachment 235017

View attachment 235018

Vụ Msgbox thì theo tôi thì lấy thẳng từ sheet vào luôn chắc là ok. Tạo một sheet lưu toàn bộ các thông báo của ứng dụng. --> Em cũng thường dùng cách này cho Application.Assistant.DoAlert để hiện thị thông báo tiếng việt ạ.

Máy em Win 10 64bit và Office 2016 thì test thấy bình thường.
Anh @ongke0711 cho em hỏi là User và Pass không phân biệt chữ hoa chữ thường hả? Em test chữ hoa hay thường gì thì vẫn đăng nhập được hết ráo. Hihi
 
Upvote 0
Anh @ongke0711 cho em hỏi là User và Pass không phân biệt chữ hoa chữ thường hả? Em test chữ hoa hay thường gì thì vẫn đăng nhập được hết ráo. Hihi

Cảm ơn bạn đã test.
Vì tôi nói thiết kế cơ bản thôi nên không đi sâu hơn nữa các thuộc tính bảo mật cao. Nếu bạn muốn phân biệt chữ Hoa - thường cho Username thì chỉ cần thêm hàm mảng EXACT() vô là được.
Thay công thức ô "B8": {=IFERROR(MATCH(TRUE,EXACT(UserName,B5),0)+4,"")}
 
Upvote 0
1/ Tìm trên GPE có bài giải thích của anh batmam1 cho vấ đề này ...
2/ Kể cả khi ta Record Macro Trên Word xong ta lấy nó xong chạy thì có cái nó sẻ đúng trên máy này mà sai trên máy khác ( Lỗi Font)
3/ Vì vậy để chạy đúng trên tất cả các máy thì tất cả các từ có dấu phải chuyển mã hết thì nó chạy mới chính xác
VD sau: sẻ đúng trên máy này và sai trên máy khác
Mã:
Public Function UniMsgbox(Optional Message$, Optional TimeOut = "", Optional Format = "", Optional Msg)
    Dim Title As String                 '' Tieu De: Written by Kieu Manh - Tel: 0922.366.377
    If Format = "" Then Format = 64     '' Mac dinh la 64 ...Tuy Chon Tham So 1,2,3,4,5,48,64,65,67,68...
    If TimeOut = "" Then TimeOut = 5    '' Thoi gian Thoat Mac dinh la 5 Giay
    Title = "Written By Ki" & ChrW(7873) & "u" & " M" & ChrW(7841) & "nh"
    Msg = CreateObject("Wscript.shell").PopUp(Message, TimeOut, Title, Format)
End Function
Public Sub Main_UniMsgbox()
    Dim m As String
    m = "Chào các thành viên gi" & ChrW(7843) & "i pháp Excel"
    UniMsgbox (m)
End Sub
VD sau sẻ chạy đúng trên tất cả các máy
Mã:
Public Function UniMsgbox(Optional Message$, Optional TimeOut = "", Optional Format = "", Optional Msg)
    Dim Title As String                 '' Tieu De: Written by Kieu Manh - Tel: 0922.366.377
    If Format = "" Then Format = 64     '' Mac dinh la 64 ...Tuy Chon Tham So 1,2,3,4,5,48,64,65,67,68...
    If TimeOut = "" Then TimeOut = 5    '' Thoi gian Thoat Mac dinh la 5 Giay
    Title = "Written By Ki" & ChrW(7873) & "u" & " M" & ChrW(7841) & "nh"
    Msg = CreateObject("Wscript.shell").PopUp(Message, TimeOut, Title, Format)
End Function

Public Sub Main_Manh()
    Dim m As String
    m = "Ch" & ChrW(224) & "o C" & ChrW(225) & "c Th" & ChrW(224) & "nh Vi" & ChrW(234) & "n Gi" & ChrW(7843) & "i Ph" & ChrW(225) & "p Excel"
    UniMsgbox (m)
End Sub
@giaiphap test dùm Mạnh

Còn tại sao nó đúng trên máy này sai trên máy khác Mạnh xin chịu ... còn cách xử lý cho nó chạy đúng trên tất cả các máy thì Mạnh đã nêu ở trên
 
Upvote 0
1/ Tìm trên GPE có bài giải thích của anh batmam1 cho vấ đề này ...
2/ Kể cả khi ta Record Macro Trên Word xong ta lấy nó xong chạy thì có cái nó sẻ đúng trên máy này mà sai trên máy khác ( Lỗi Font)
3/ Vì vậy để chạy đúng trên tất cả các máy thì tất cả các từ có dấu phải chuyển mã hết thì nó chạy mới chính xác
VD sau: sẻ đúng trên máy này và sai trên máy khác
Mã:
Public Function UniMsgbox(Optional Message$, Optional TimeOut = "", Optional Format = "", Optional Msg)
    Dim Title As String                 '' Tieu De: Written by Kieu Manh - Tel: 0922.366.377
    If Format = "" Then Format = 64     '' Mac dinh la 64 ...Tuy Chon Tham So 1,2,3,4,5,48,64,65,67,68...
    If TimeOut = "" Then TimeOut = 5    '' Thoi gian Thoat Mac dinh la 5 Giay
    Title = "Written By Ki" & ChrW(7873) & "u" & " M" & ChrW(7841) & "nh"
    Msg = CreateObject("Wscript.shell").PopUp(Message, TimeOut, Title, Format)
End Function
Public Sub Main_UniMsgbox()
    Dim m As String
    m = "Chào các thành viên gi" & ChrW(7843) & "i pháp Excel"
    UniMsgbox (m)
End Sub
VD sau sẻ chạy đúng trên tất cả các máy
Mã:
Public Function UniMsgbox(Optional Message$, Optional TimeOut = "", Optional Format = "", Optional Msg)
    Dim Title As String                 '' Tieu De: Written by Kieu Manh - Tel: 0922.366.377
    If Format = "" Then Format = 64     '' Mac dinh la 64 ...Tuy Chon Tham So 1,2,3,4,5,48,64,65,67,68...
    If TimeOut = "" Then TimeOut = 5    '' Thoi gian Thoat Mac dinh la 5 Giay
    Title = "Written By Ki" & ChrW(7873) & "u" & " M" & ChrW(7841) & "nh"
    Msg = CreateObject("Wscript.shell").PopUp(Message, TimeOut, Title, Format)
End Function

Public Sub Main_Manh()
    Dim m As String
    m = "Ch" & ChrW(224) & "o C" & ChrW(225) & "c Th" & ChrW(224) & "nh Vi" & ChrW(234) & "n Gi" & ChrW(7843) & "i Ph" & ChrW(225) & "p Excel"
    UniMsgbox (m)
End Sub
@giaiphap test dùm Mạnh

Còn tại sao nó đúng trên máy này sai trên máy khác Mạnh xin chịu ... còn cách xử lý cho nó chạy đúng trên tất cả các máy thì Mạnh đã nêu ở trên
Máy em đâu có bị đâu mà test, anh nhờ @befaint test kìa.
 
Upvote 0
----------------------------------

Máy tính bị lỗi hiển thị như vậy vì thiếu Font bổ trợ.

Hoặc vì trên cùng một chuỗi "Chào các thành viên ..." người viết code vô tình viết đến hai kiểu mã hóa Unicode và Utf8.

Ví dụ như gõ af oo,... với Unikey trong VBE thì sẽ thành mã hóa UTF8. Hàm ChrW thì luôn luôn là Unicode.

Cũng có thể cài đặt Font cũng có thể viết Đồng bộ code để sửa lỗi hiển thị.
 
Upvote 0
----------------------------------

Máy tính bị lỗi hiển thị như vậy vì thiếu Font bổ trợ.

Hoặc vì trên cùng một chuỗi "Chào các thành viên ..." người viết code vô tình viết đến hai kiểu mã hóa Unicode và Utf8.

Ví dụ như gõ af oo,... với Unikey trong VBE thì sẽ thành mã hóa UTF8. Hàm ChrW thì luôn luôn là Unicode.

Cũng có thể cài đặt Font cũng có thể viết Đồng bộ code để sửa lỗi hiển thị.

Bạn hướng dẫn rõ thêm vụ này giùm nhe. Cảm ơn.
 
Upvote 0
----------------------------------

Máy tính bị lỗi hiển thị như vậy vì thiếu Font bổ trợ.

Hoặc vì trên cùng một chuỗi "Chào các thành viên ..." người viết code vô tình viết đến hai kiểu mã hóa Unicode và Utf8.

Ví dụ như gõ af oo,... với Unikey trong VBE thì sẽ thành mã hóa UTF8. Hàm ChrW thì luôn luôn là Unicode.

Cũng có thể cài đặt Font cũng có thể viết Đồng bộ code để sửa lỗi hiển thị.
dòng tô đậm đó có vẻ không thuyết phục lắm ... vậy tại sao cũng máy đó tất cả các từ có dấu Mạnh chuyển mã hết lại chạy OK ???!!!
 
Upvote 0
@ongke0711

Nếu chắc chắn máy tính đã có Font bổ trợ thì viết:
"Chào các thành viên gi" & ChrW(7843) & "i pháp Excel"
Nhưng đa số máy tính đều không có font cho dạng Unicode + Utf8 này.

Nếu không thì phải viết:
"Ch" & ChrW(224) & "o c" & ChrW(225) & "c th" & ChrW(224) & "nh vi" & ChrW(234) & "n gi" & ChrW(7843) & "i ph" & ChrW(225) & "p Excel"


@kieu manh
Bác không tin thì thử xóa hết Font chỉ cài font mặc định của Windows xem sao.


Còn máy bạn nào chưa có thì Cài bộ Font Tiếng Việt đầy đủ vào.
 
Upvote 0
Máy mạnh mấy cái cài win có sao xài vậy chứ ko cải thêm font Bao giờ
 
Upvote 0
Xin chào ongke0711,
Hôm nay OT test không gặp phải vấn đề lỗi như bài #2 và #8 nữa rồi Anh ạ.
Các thông báo không thấy bị lỗi font Anh, chắc Anh đã khắc phục.
Cảm ơn Anh nhiều.
 
Upvote 0
Chào các bạn,

Tôi lanh thang trên net và lụm được một kiểu Form đăng nhập và phân quyền cũng khá hay, đem về chỉnh sửa chút và chia sẻ với các bạn.
Form này sẽ phân quyền cho người dùng theo 3 kiểu: Ẩn sheet, khoá sheet và toàn quyền thao tác với sheet. Cũng theo kỹ thuật này thì các bạn muốn phát triển phân quyền cho Userform cũng được. Nếu các bạn muốn phân quyền chi tiết hơn nữa như: Xem, Sửa, Xoá, Nút lệnh thì tôi chưa ngâm cứu tới nhé, các bạn đừng bảo tôi hướng dẫn thêm :) (nếu trên MS Access thì tôi đã làm được).
Các bạn xem clip và tự thao tác để nắm rõ hơn nhé.

View attachment 234962

Cập nhật: Phân biệt chữ Hoa - thường khi nhập [Tên đăng nhập] và [Mật khẩu].

File đính kèm bên dưới.
 

File đính kèm

  • Login va Phan Quyen (Case-sensitive).xlsb
    69.3 KB · Đọc: 101
Upvote 0
Bữa nào rảnh mò tiếp tới cái này. Anh có file access luôn không?
 
Upvote 0
Web KT
Back
Top Bottom