Hiện các ComboBox và TextBox Khi nhập đúng mật khẩu. (1 người xem)

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

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

khamha

Không có việc gì khó...
Tham gia
4/6/10
Bài viết
662
Được thích
846
Nghề nghiệp
CNVC Laos
Nhờ các bạn viết cho đoạn Code như sau:
1, Khi mở Form thì các ComboBox ,TextBox và Label được quy định sẽ ẩn (đã viết Code)
2, Phải nhập mật khẩu tại TextBox”T_Pass” ,mật khẩu phải khớp với mật khẩu tại ô P!C2 thì mới cho hiện các ComboBox ,TextBox và Label đã ẩn ở trên.
3, Nếu nhập mật khẩu sai 3 lần thì sẽ Save và thoát Form
Các bạn xem File đính kèm ,Cảm ơn.
 

File đính kèm

Nhờ các bạn viết cho đoạn Code như sau:
1, Khi mở Form thì các ComboBox ,TextBox và Label được quy định sẽ ẩn (đã viết Code)
2, Phải nhập mật khẩu tại TextBox”T_Pass” ,mật khẩu phải khớp với mật khẩu tại ô P!C2 thì mới cho hiện các ComboBox ,TextBox và Label đã ẩn ở trên.
3, Nếu nhập mật khẩu sai 3 lần thì sẽ Save và thoát Form
Các bạn xem File đính kèm ,Cảm ơn.

Bạn dùng code sau:

Mã:
Private Sub Cmd_Hien_Click()
Dim i As Integer
If T_Pass <> P.[c2] Then
        i = i+ 1
        MsgBox "Mat khau khong dung", vbCritical
        T_Pass = "": T_Pass.SetFocus
 
    Else
        H_Pass
        T_Pass.Visible = False
        Label1.Visible = False
End If
If i > 2 Then
    MsgBox "Mat khau khong dung, chuong trinh se thoat. Vui long lien he voi Admin.", vbCritical, "Mat khau!"
    Unload Me
End If
End Sub
 
Upvote 0
Bạn dùng code sau:

Mã:
Private Sub Cmd_Hien_Click()
Dim i As Integer
If T_Pass <> P.[c2] Then
        i = i+ 1
        MsgBox "Mat khau khong dung", vbCritical
        T_Pass = "": T_Pass.SetFocus
 
    Else
        H_Pass
        T_Pass.Visible = False
        Label1.Visible = False
End If
If i > 2 Then
    MsgBox "Mat khau khong dung, chuong trinh se thoat. Vui long lien he voi Admin.", vbCritical, "Mat khau!"
    Unload Me
End If
End Sub
Anh không đặt Public i As Integer thì sao 3 lần nhập nó thoát Form được anh?
 
Upvote 0
Xin phép thêm code anh Hai Lúa Miền Tây để đúng ý thứ 3 của anh Khamha
[GPECODE=vb]
Public k As Integer
Private Sub Cmd_Hien_Click()
If T_Pass <> P.[c2] Then
k = k + 1
MsgBox "Mat khau khong dung", vbCritical
T_Pass = "": T_Pass.SetFocus

Else
H_Pass
T_Pass.Visible = False
Label1.Visible = False
End If
If k > 2 Then
MsgBox "Mat khau khong dung, chuong trinh se thoat. Vui long lien he voi Admin.", vbCritical, "Mat khau!"
Unload Me
ThisWorkbook.Save
'ThisWorkbook.Close
End If
End Sub[/GPECODE]
 
Upvote 0
Bạn khamha phải thực hiện như sau:

PHP:
Private MyCount As Byte

Private Sub Cmd_Hien_Click()
    If T_Pass = "" Then
        MsgBox "Ban phai nhap mat khau!"
        T_Pass.SetFocus
    Else
        If T_Pass = "khamha" Then
            MyCount = 0
            Dim i As Long
            For i = 1 To 11
                Me("Pw" & Format(i, "00")).Visible = True
            Next
            lblWarning.Visible = False
            T_Pass.Visible = False
            Cmd_Hien.Visible = False
        Else
            MyCount = MyCount + 1
            If MyCount = 3 Then
                MsgBox "Ban da nhap sai mat khau 3 lan, ban khong con quyen su dung!"
                ThisWorkbook.Save
                If Application.Workbooks.Count = 1 Then
                    Application.Quit
                Else
                    ThisWorkbook.Close False
                End If
            Else
                MsgBox "Ban da nhap khong dung mat khau lan thu: " & MyCount
                T_Pass = ""
                T_Pass.SetFocus
            End If
        End If
    End If
End Sub

Tôi có 1 số góp ý trên form bạn:

1) Không cần phải Active Form mới cho ẩn mọi controls, bạn nên ẩn ngay từ đầu.

2) Nếu không cho ai được quyền đổi password thì không cần phải đối chiếu với ô C12 mà làm trực tiếp trên code luôn (If T_Pass = "khamha" Then)

3) T_Pass phải không cho hiển thị là chuỗi, mà phải chuyển về dạng mật mã, trường hợp này tôi đánh dấu * cho các ký tự nhập vào.

4) Khi thoát form, lưu ý đến vấn đề đang mở 1 file hay nhiều file, vì sẽ nguy hiểm nếu thoát hoàn toàn mà các file excel khác đang mở (cái này tôi đã bẩy lỗi cho bạn).

Bạn xem file có đúng ý chưa nhé.
 

File đính kèm

Upvote 0
Xin phép thêm code anh Hai Lúa Miền Tây để đúng ý thứ 3 của anh Khamha
[GPECODE=vb]
Public k As Integer
Private Sub Cmd_Hien_Click()
If T_Pass <> P.[c2] Then
k = k + 1
MsgBox "Mat khau khong dung", vbCritical
T_Pass = "": T_Pass.SetFocus

Else
H_Pass
T_Pass.Visible = False
Label1.Visible = False
End If
If k > 2 Then
MsgBox "Mat khau khong dung, chuong trinh se thoat. Vui long lien he voi Admin.", vbCritical, "Mat khau!"
Unload Me
ThisWorkbook.Save
'ThisWorkbook.Close
End If
End Sub[/GPECODE]

Góp ý tí xíu nhé, nếu biến trong môi trường của Form và nó chỉ hoạt động trong form đó thì chỉ cần biến Private không cần phải là biến Public, vì như thế, biến nhẹ nhẹ thì không nói gì, những biến đối tượng có khi làm cho bộ nhớ nặng nề hơn trong suốt toàn cục, còn mình khai biến Private thì khi form thoát là nó tự giải phóng biến đó luôn.

-----------------------------------------

To khamha: Bạn có thể tham khảo thêm tại bài viết này:
http://www.giaiphapexcel.com/forum/...orm-đăng-nhập-trong-Excel&p=483244#post483244
 
Lần chỉnh sửa cuối:
Upvote 0
Chào HoangTrongNghia ,Bạn xem sao mình thay đoạn Code dưới mà nó ko hoạt động.

Private Sub Cmd_Hien_Click()
If T_Pass = "" Then
MsgBox "Ban phai nhap mat khau!"
T_Pass.SetFocus
Else
'If T_Pass = "khamha2" Then
If T_Pass <> P.[c2] Then
MyCount = 0
Dim i As Long
For i = 1 To 11
Me("Pw" & Format(i, "00")).Visible = True
Next
lblWarning.Visible = False
T_Pass.Visible = False
Cmd_Hien.Visible = False
Else
MyCount = MyCount + 1
If MyCount = 3 Then
MsgBox "Ban da nhap sai mat khau 3 lan, ban khong con quyen su dung!"
ThisWorkbook.Save
If Application.Workbooks.Count = 1 Then
Application.Quit
Else
ThisWorkbook.Close False
End If
Else
MsgBox "Ban da nhap khong dung mat khau lan thu: " & MyCount
T_Pass = ""
T_Pass.SetFocus
End If
End If
End If
End Sub

Ý mình là muốn mật khẩu có thể thay đổi ̣được trong P.[c2]
 
Upvote 0
Chào HoangTrongNghia ,Bạn xem sao mình thay đoạn Code dưới mà nó ko hoạt động.


'If T_Pass = "khamha2" Then
If T_Pass <> P.[c2] Then


Ý mình là muốn mật khẩu có thể thay đổi ̣được trong P.[c2]

Tôi ghi là = (dấu bằng) bạn ghi là <> (dấu khác) thì làm sao mà chạy code?

Vả lại, bạn là người điều chỉnh được trong code, mắc mớ gì ghi trong sheet làm chi, ghi hẳn trực tiếp trong VBA luôn cho rồi!

Muốn thay đổi quyền đăng nhập, bạn tham khảo thêm cái này, nhưng cũng chỉ là làm sinh động thêm thôi nhé!

http://www.giaiphapexcel.com/forum/...orm-đăng-nhập-trong-Excel&p=462499#post462499
 
Lần chỉnh sửa cuối:
Upvote 0
Hỏi vậy để mình muốn áp dụng vào khi làm Form cho người khác dùng,khi đó sẽ khoá toàn bộ VBA và cũng để cho họ chủ động sửa MK theo ý.
Hình như bạn chưa Test thử,vì mình đã dùng cả "=" và "<>" nhưng nó ko hoạt động,bạn xem lại giúp mình nhé .thank
 
Upvote 0
Hỏi vậy để mình muốn áp dụng vào khi làm Form cho người khác dùng,khi đó sẽ khoá toàn bộ VBA và cũng để cho họ chủ động sửa MK theo ý.
Hình như bạn chưa Test thử,vì mình đã dùng cả "=" và "<>" nhưng nó ko hoạt động,bạn xem lại giúp mình nhé .thank

Bạn gửi cái file đó lên đi, tôi mới biết được bạn dùng như thế nào, khi tôi nói như vậy là tôi đã thử trên file của tôi thì chạy tốt đó.
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom