☆本期内容概要☆
前两天我们分享了一个完整的EXCEL小应用【中医诊所收费系统:【重磅】Excel VBA 应用分享/中医诊所收费系统/Excel+ListBox版】,打开文件就是一个用户登录界面,今天我们就一起来动手重新做一个这样的登录界面,用户名+密码登录EXCEL,具体代码可能与中医诊所收费系统中的不一样,我们不去管它,条条大路通罗马。 设计思路与过程分步演示: 1、新建一个excel文件,另存为启用宏的工作簿,名称随意,我这里命名为:窗体登录(用户名+密码).xlsm 2、在excel文件中,把sheet1重命名为“Main”,作为主界面使用,在其上插入一个命令按钮CmdLogin,Caption改为“重新登录”。这个主界面今后可以作为进入其他窗体、表页的入口。目前就放一个重新登录的按钮。 3、插入一张工作表,重命名为“tb用户”,输入用户信息: 这张表存有重要信息,我们最后会把它深度隐藏,在工作表界面是看不到它的。要是能看到,密码岂不是形同虚设? 4、打开VBE,即Visual Basic编辑器,插入用户窗体: 5、把窗体名称修改为Usf_Login,Caption修改为“用户登录”: 6、打开工具箱,在窗体上添加控件: (1)标签:LbTitle,Caption系统登录;Label1,Caption“用户ID:”;Label2,Caption“密 码:”,字体大小位置适当调整,背景调成透明。 其他控件属性调整如法炮制,不再赘述。如果没有看到属性窗口,可以右击任意控件,在弹出的菜单中点“属性”,然后点击相应控件则切换到该控件的“属性”。 (2)文本框:TxbUserID,TxtPassWord,用来输入信息。在TxtPassWord的属性中,设置密码掩码(PasswordChar)为*。 (3)命令按钮:CmdLogin,Caption“登录”,CmdExit,Caption“退出”。 7、编写代码: (1)双击用户窗体,点选右侧方法与事件,选择Activate或者Initialize,输入代码:
代码简析:定义模块级变量,以便在本窗体其他过程中引用它们的值。窗体启动,读取用户信息表到数组arr(),用于后续登录时的信息比对。Activate与Initialize在窗体启动时,都会运行其中的代码,区别是Activate方法下,窗体重新激活就会再次运行代码,Initialize只在窗体启动时运行,再次激活时不会运行。 (2)双击登录按钮,输入代码:
代码简析:代码块亦有注释。 CmdLogin的Click事件,把用户输入的用户ID与密码跟arr()中的数据进行比对, 如果找到用户ID,则比较密码,如果密码相符,则登录成功,退出窗体,如果密码不符,则不能登录,清空已输入的密码,并把焦点放到TxtPassWord,以便再次输入; 如果没有找到用户ID则提示用户重新输入用户ID。 这里有个公共变量LoginStatus,如果用户正常登录,其值为1,在后面退出窗体的代码中会用到。 公共变量currUserID,currUserName存下当前用户的信息,供后续过程使用,比如凭证制单中的制单人,凭证审核中的审核人等需要用到当前用户名称的地方。 关于用户ID与密码校验,还有其他方法: (a)Vlookup工作表函数:查找用户ID对应的密码值,与TxbPassWord的值进行比较,再进行相应处理。 (b)SQL语句:查询“tb用户”表中,用户ID=TxbUserID的密码。这种方法要建立数据连接,我们前面分享过【Excel VBA 凭证打印/SQL连接Eexcel文件/Listview控件/CommandButton命令按钮控件】这里不再重复,有兴趣的朋友可以自行测试研究。这种方法还可以用于数据存储在Access数据库的情况,我们后续可能会遇到,界时再详细阐述。 (3)继续输入窗体退出代码:
代码简析:窗体退出,包括用户点击窗体右上角的X按钮。主要是防止用户在没有正确输入用户ID、密码的情况下,点击窗体右上角的X按钮退出窗体,从而直接进入EXCEL工作簿。 如果用户正常登录,此时LoginStatus的值应为1,如果为0,则表明用户非正常进入,我们就退出EXCEL文件。 (4)CmdExit(退出)按钮点击事件:
(5)ThisworkBook 后来又修改了代码,图就不改了。
代码简析: 工作簿打开时,激活UsF_Login窗体,等待用户输入用户ID与密码进入。 工作簿关闭时,先把"tb用户"表深度隐藏,再保存工作簿,如果仅有本工作簿处于打开状态,则关闭EXCEL程序,否则仅关闭本工作簿,保持其他工作簿不被关闭。 (6)插入用户模块(如果已有则不用插入),名称应该是“模块1”,可改可不改,这里我改为“MyModule”,以示区别。设置Public变量:
用户登录成功后,LoginStatus的值为1,在用户窗体退出代码中用到此变量,如果为1,则窗体退出时仅仅是退出窗体,EXCEL文件正常打开,包括后续点击重新登录时,再点击“退出”按钮,程序不会退出。如果为0,则表明用户没有正常登录,我们直接退出EXCEL。 (7)“Main”工作表中CmdLogin(重新登录)命令按钮:
8、给VBA工程添加密码,保护工程。防止别人进入VBE编辑器查看到密码。保护密码这里设为0,各位可自行设置。
|
|