excelperfect
当你打开这个工作簿时,Excel会弹出一个登录框,如下图1所示。当你输入正确的用户名和密码后,才能使用这个工作簿,否则会退出。
图1
这个工作簿中有一个名为“用户中心”的工作表,用来存放用户名、密码等信息,如下图2所示。
图2
打开VBE,插入一个用户窗体,在其中放置标签、文本框、按钮等控件,并将相关控件命名。如下图3所示,用户窗体命名为login,两个文本框分别命名为:txtUserName和txtPassword,两个按钮分别命名为:btnOK和btnCancel。
图3
双击用户窗体进入其代码窗口,输入下面的代码:
Private Sub btnCancel_Click()
ThisWorkbook.Close SaveChanges:=False
End Sub
Private Sub btnOK_Click()
Dim iFoundPass As Integer
On Error Resume Next
With Sheets('用户中心').Range('UserName')
iFoundPass = .Find(What:=txtUserName, After:=.Cells(1, 1),LookIn:=xlValues, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Row
End With
On Error GoTo 0
If iFoundPass = 0 Then
SomethingWrong
Exit Sub
End If
If Sheets('用户中心').Cells(iFoundPass,2) <> txtPassword Then
SomethingWrong
Exit Sub
ElseIf Sheets('用户中心').Cells(iFoundPass,3) < Date Then
Expired
Exit Sub
End If
Sheets('用户中心').Range('LoggedAs')= txtUserName
Unload Me
End Sub
Private Sub txtPassword_Change()
btnOK.Enabled = (txtUserName.TextLength > 4 And _
txtPassword.TextLength> 4)
End Sub
Private Sub UserForm_Initialize()
Me.btnOK.BackStyle = fmBackStyleTransparent
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer,CloseMode As Integer)
If CloseMode = 0 Then Cancel = True
End Sub
Private Sub txtUserName_Change()
btnOK.Enabled= (txtUserName.TextLength > 4 And _
txtPassword.TextLength> 4)
End Sub
Private Sub SomethingWrong()
MsgBox'用户名或密码不正确.',vbCritical + vbInformation, '错误'
End Sub
Private Sub Expired()
MsgBox'你的许可已过期.请联系申请延期或完全许可',vbCritical + vbInformation, '完美Excel'
End Sub
双击ThisWorkbook模块,在其代码窗口中输入下面的代码:
Private Sub Workbook_Open()
Application.EnableCancelKey = xlDisabled
Sheets('数据').Activate
Sheets('用户中心').Visible= xlVeryHidden
login.Show
End Sub
关闭工作簿,重新打开,会弹出上图1所示的登录窗口。
注:建议你动手按照文中的介绍实现图1所示的效果。
联系客服