为了保护Excel工作表,有时需要对工作表的打开设置权限,这就需要创建用户登录界面。在Excel中,制作用户登录窗口的方式很多,使用控件是其中的一种重要方法。本文介绍使用VBA窗体控件、文本框控件和按钮控件等来制作用户登录窗口的方法。

  1、启动Excel并打开工作表,打开Visual Basic编辑器,在工程资源管理器中鼠标右击,选择关联菜单中的“插入”|“用户窗体”命令插入一个用户窗体。按F4键打开“属性”对话框,在"Caption"文本框中输入文字“用户登录”更改窗体标题,如图1所示。

如何在Excel中制作用户登录窗口  图1 创建用户窗体并设置其属性

  2、从“工具箱”对话框中分别选择“文本框”控件、“标签”控件和“命令按钮”控件,在窗体中绘制这些控件,如图2所示。在“属性”对话框中将两个“标签”控件的"Caption"属性分别设置为“登录名”和“登录密码”,将“命令按钮”控件的"Caption"属性分别设置为“确定”和“取消”,如图3所示。

如何在Excel中制作用户登录窗口  图2 向窗体中添加控件

如何在Excel中制作用户登录窗口  图3 修改控件的

  3、在窗体中选择第二个“文本框”控件,在“属性”对话框中将"PasswordChar"属性设置为字符“*”,如图4所示。这样,在该文本框中输入的字符将被“*”替代。

如何在Excel中制作用户登录窗口  图4 更改“文本框”控件的

  4、鼠标右击窗体中的“确定”按钮,选择关联菜单中的“查看代码”命令打开“代码”窗口,此时Visual Basic编辑器将自动在“代码”窗口中为控件添加Click事件。为该按钮添加的Click事件程序如下:

  Private Sub CommandButton1_Click()

  If TextBox1.Text"郭轶凡"Then '判断用户名是否正确

  MsgBox"用户登录名错误,您无权登录!" '不正确给出提示

  With TextBox1

  .SelStart=0 '设置选择文字的开始字符

  .SelLength=Len(TextBox1.Text) '设置选择文本的长度

  .SetFocus '文本框获得焦点

  End With

  ElseIf TextBox2.Text"abcdef "Then '如果密码错误

  MsgBox"密码输入错误,请重新输入!" '给出提示

  With TextBox2

  .SelStart=0 '设置选择文本的开始字符

  .SelLength=Len(TextBox2.Text) '设置选择文本的长度

  .SetFocus '获得焦点

  End With

  Else

  MsgBox"登录成功,欢迎你的到来!" '登录成功提示

  Unload Me '卸载窗体

  End If

  End Sub

  提示

  在这里,程序首先判断第一个文本框的Text属性值是否为设定的用户名,如果不是则给出提示,同时使用With结构设置非常关键的SelStart属性和SelLength属性,使文本框中的文字能够高亮显示。同时,使用SetFocus方法使文本框获得焦点以方便用户更改用户名。如果输入的是设定的用户名,程序接着判断第二个文本框中的Text属性值是否是设定的密码,如果不是则执行与用户名错误相同的操作。如果用户名和密码均正确,程序给出提示并卸载窗体。

  5、接着在“代码”窗口中输入程序代码,为“取消”按钮添加Click事件代码,具体程序如下所示:

  Private Sub CommandButton2_Click()

  Unload Me '卸载窗体

  ThisWorkbook.Close '关闭工作簿

  End Sub

  6、按F5键运行程序出现“用户登录”窗口,在“登录名”文本框中输入人名,如果非授权用户,程序给出提示,如图4所示。单击“确定”按钮关闭提示对话框后,“登录名”文本框获得焦点,在其中输入正确登录名。在“登录密码”文本框中输入密码,如果密码错误,程序给出提示,如图5所示。如果输入正确的用户名和登录密码,程序提示登录成功,如图6所示。单击“确定”按钮关闭对话框,“用户登录”窗体将关闭。

如何在Excel中制作用户登录窗口  图5 登录名输入错误提示

如何在Excel中制作用户登录窗口  图6 密码输入错误提示

如何在Excel中制作用户登录窗口  图7 登录成功提示

  7、在工程资源管理器中双击"ThisWorkbook"选项打开“代码”窗口,在其中输入如下程序代码使工作簿打开时用户窗体可见。切换到Excel,保存文档,完成本实例的制作。

  Private Sub Workbook_Open()

  UserForm1.Show

  End Sub