Nhờ giúp về cách liên kết mật khẩu trong Code với một ô trong Sheet

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

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
Chào các bạn,mình có sử dụng Form để mở khóa cho từng Sheet khác nhau:

Mã:
Option Explicit
Const Pwd = "12345" [COLOR=red](Liên kết đến một ô của Sheet khác)[/COLOR]
Private Sub Cancel_Click()
Sheet3.Select
End
End Sub
Private Sub OK_Click()
    If Password.Text = Pwd Then
        End
     Else
        MsgBox "No Password!"
        Password.Text = ""
        Password.SetFocus
        End If
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then Cancel = True
End Sub
Nhưng khi mình muốn sửa lại mật khẩu,thì phải vào sửa trong Code,thấy bất tiện quá.nên nhờ các bạn
sửa lại đoạn Code trên để có thể sửa mật khẩu trong Code từ một ô của Sheet khác,Các bạn xem File đính kèm.Cảm ơn các bạn.
 

File đính kèm

Lần chỉnh sửa cuối:
Chào các bạn,mình có sử dụng Form để mở khóa cho từng Sheet khác nhau:

Mã:
Option Explicit
Const Pwd = "12345" [COLOR=red](Liên kết đến một ô của Sheet khác)[/COLOR]
Private Sub Cancel_Click()
Sheet3.Select
End
End Sub
Private Sub OK_Click()
    If Password.Text = Pwd Then
        End
     Else
        MsgBox "No Password!"
        Password.Text = ""
        Password.SetFocus
        End If
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then Cancel = True
End Sub
Nhưng khi mình muốn sửa lại mật khẩu,thì phải vào sửa trong Code,thấy bất tiện quá.nên nhờ các bạn
sửa lại đoạn Code trên để có thể sửa mật khẩu trong Code từ một ô của Sheet khác,Các bạn xem File đính kèm.Cảm ơn các bạn.

Bạn thử Const Pwd=Sheet2.[b1].Value thử xem (vì tôi chưa test)
 
Upvote 0
Bạn thử Const Pwd=Sheet2.[b1].Value thử xem (vì tôi chưa test)
Đã là hằng số thì không thể gán kiểu vậy anh à
Có chăng thế này thì được
PHP:
Private Pwd As String
Private Sub UserForm_Initialize()
  Pwd = Sheet2.Range("B1").Value
End Sub
 
Upvote 0
Sửa lại code để thực thi lệnh.

Nhờ các bạn sửa lại cái code ở bài #1 ,để khi nhập mật khẩu đúng thì sẽ thực thi một lệnh,ví dụ:gọi một form khác.cảm ơn các bạn.
 
Upvote 0
Nhờ các bạn sửa lại cái code ở bài #1 ,để khi nhập mật khẩu đúng thì sẽ thực thi một lệnh,ví dụ:gọi một form khác.cảm ơn các bạn.
Thật ra, nếu Password tại ô B1 trên Sheet2 của bạn là 1 chuỗi thì vấn đề rất đơn giản, code chỉ là:
PHP:
If Password = Sheet2.[B1] Then
    'Lệnh 1'
Else
    'Lệnh 2'
End If
Bạn thử thay giá trị tại đây thành "GPE" sẽ thấy điều này. Tuy nhiên, giá trị tại ô B1 lại là 1 số nên vấn đề phức tạp hơn.
Tổng quát, không cần biết ở đó là chuỗi hay số, bạn sử dụng câu lệnh sau:
PHP:
If Password = IIf(IsNumeric(Sheet2.[B1]), WorksheetFunction.Text(Sheet2.[B1], 0), Sheet2.[B1]) Then
    'Lệnh 1'
Else
    'Lệnh 2'
End If
 
Upvote 0
Thật ra, nếu Password tại ô B1 trên Sheet2 của bạn là 1 chuỗi thì vấn đề rất đơn giản, code chỉ là:
PHP:
If Password = Sheet2.[B1] Then
    'Lệnh 1'
Else
    'Lệnh 2'
End If
Bạn thử thay giá trị tại đây thành "GPE" sẽ thấy điều này. Tuy nhiên, giá trị tại ô B1 lại là 1 số nên vấn đề phức tạp hơn.
Tổng quát, không cần biết ở đó là chuỗi hay số, bạn sử dụng câu lệnh sau:
PHP:
If Password = IIf(IsNumeric(Sheet2.[B1]), WorksheetFunction.Text(Sheet2.[B1], 0), Sheet2.[B1]) Then
    'Lệnh 1'
Else
    'Lệnh 2'
End If
Tôi nghĩ vầy cũng được
If Password = Format(Sheet2.Range("B1"),"@") then
Chưa thử nhưng tôi đoán là được
 
Upvote 0
Chào các bạn,mình có sử dụng Form để mở khóa cho từng Sheet khác nhau:

Mã:
Option Explicit
Const Pwd = "12345" [COLOR=red](Liên kết đến một ô của Sheet khác)[/COLOR]
Private Sub Cancel_Click()
Sheet3.Select
End
End Sub
Private Sub OK_Click()
    If Password.Text = Pwd Then
        End
     Else
        MsgBox "No Password!"
        Password.Text = ""
        Password.SetFocus
        End If
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then Cancel = True
End Sub
Nhưng khi mình muốn sửa lại mật khẩu,thì phải vào sửa trong Code,thấy bất tiện quá.nên nhờ các bạn
sửa lại đoạn Code trên để có thể sửa mật khẩu trong Code từ một ô của Sheet khác,Các bạn xem File đính kèm.Cảm ơn các bạn.
Bạn ndu ơi,trường hợp này thì liên kết như thế nào:

Sub Macro4()
Sheet2.Protection.AllowEditRanges.Add Title:="Range1", Range:=Rows( _
"7:20"), Password:="123456" ( Liên kết đến một ô trong Sheet khác )
End Sub
Cảm ơn bạn.
 
Upvote 0
Bạn ndu ơi,trường hợp này thì liên kết như thế nào:

Sub Macro4()
Sheet2.Protection.AllowEditRanges.Add Title:="Range1", Range:=Rows( _
"7:20"), Password:="123456" ( Liên kết đến một ô trong Sheet khác )
End Sub
Cảm ơn bạn.
Ví dụ liên kết đến cell B1 của sheet1 nhé:
Mã:
Sub Macro4()
 Sheet2.Protection.AllowEditRanges.Add "Range1", Rows("7:20"), [COLOR=#ff0000][B]Sheet1.Range("B1").Text[/B][/COLOR]
End Sub
 
Upvote 0
Tôi nghĩ vầy cũng đượcIf Password = Format(Sheet2.Range("B1"),"@") thenChưa thử nhưng tôi đoán là được
Chà,sao mình lại làm theo cách của hai bạn lại không được,các bạn xem lại hộ mình với.Ý của mình là khi ta mở Sheet1 sẽ hiện ra một Form đăng nhập mật khẩu,nếu nhập đúng mật khẩu thì sẽ hiện lên một Form (UserForm1) ,nếu nhập sai mật khẩu thì sẽ bị chuyển sang Sheet3.Cảm ơn các bạn.Các bạn xem File đính kèm.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Chà,sao mình lại làm theo cách của hai bạn lại không được,các bạn xem lại hộ mình với.Ý của mình là khi ta mở Sheet1 sẽ hiện ra một Form đăng nhập mật khẩu,nếu nhập đúng mật khẩu thì sẽ hiện lên một Form (UserForm1) ,nếu nhập sai mật khẩu thì sẽ bị chuyển sang Sheet3.Cảm ơn các bạn.Các bạn xem File đính kèm.
Sửa thành vầy xem:
PHP:
Private Sub OK_Click()
  If Password.Text = Pwd Then
    UserForm1.Show
  Else
    MsgBox "No Password!"
    Sheet3.Activate
  End If
  Unload Me
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom