用VBA制做EXCEL登录系统

操作方法

  • 01

    在工作中可能遇到这种情况,就是有一个录入工作需要多人协同完成,每个人所要录入的部份又不相同,于是就在同一个EXCEL工作簿中建立多个工作表,当某一个人录入时,只打开他需要操作的那个工作表,其他工作表自动隐藏起来,防止被误操作。 我看到网上有不少朋友在找有这个功能的表格,于是就试着做了一个,跟大家分享一下。 注意:由于EXCEL的VBA安全性非常低,网上有很多破解的方法,所以对那些数据安全性要求较高的请不要用这种方法。 一、表格部份 这个工作簿中有多个工作表,分成三类。 第一类:工作簿的第一个工作表,里面没有数据,只用于显示登录窗口,起名为“登录”。由于在VBA代码中要调用这个工作表,在实际使用时,这个名字不要改动。 第二类:工作簿的第二个工作表,里面存储了各登录人员的姓名、登录密码以及各人要操作的工作表(权限),起名为“设置”,这个工作表的名字同样不要修改,里面的数据位置也不要改动。 第三类:工作簿的第三及以后的工作表,这些表都是登录人员要操作的表格,应根据自己的需要设置,我为了介绍方便,给他们起名为“表一”、“表二”、...,可以添加多个,表的名字也可任意。 在做上面这些表时,只要注意“登录”表的名字不要改、“设置”表的名字与数据位置不要改,其他部份可随意。 提示:如果非要改变“登录”表与“设置”表的名字,必须在EXCEL中改名后,把VBA代码中相关的名字也改过来才能正常使用。 二、VBA部份 上面表格部份完成后,就需要做VBA代码了,在EXCEL窗口按ALT+F11调出VBA窗口。 1、登录窗体 在工具栏中按“插入-用户窗体”,添加一个窗体。 将插入的窗体调整到适当大小。 2、代码 在所添加的窗体上双击鼠标,然后把下面代码粘贴进去: Private Sub CommandButton1_Click() On Error GoTo 10 '当姓名与密码不对应时,会出现错误,转到10语句处理 Dim n As String Set sh = Sheets("设置") na = TextBox1.Text: ps = TextBox2.Text '取得登录窗口中的姓名与密码 If na = "" Or ps = "" Then MsgBox "未输入用户名或密码,不能登录", , "提示": Exit Sub s = WorksheetFunction.Match(na, sh.[a:a], 0) '查找用户在A列的位置 n = sh.Cells(s, 2) '取出“设置”表中的权限密码,字符型 If n <> ps Then GoTo 10 Call 隐藏表 '检查一下“设置”表的C列及右边各格中的内容,有内容的,说明可以打开内容所指定的工作表 For i = 4 To 255 b = sh.Cells(s, i).Value If b = 1 And sh.Cells(1, i) <> "" Then '单元格为1时,表示有权限打开这个表,就让它显示出来 Sheets(sh.Cells(1, i).Value).Visible = -1 End If Next Unload UserForm1 '退出窗体 Exit Sub 10: MsgBox "姓名或密码错误,不能登录", , "提示" End Sub Sub 隐藏表() TextBox1.Text = "": TextBox2.Text = "" For i = 1 To Worksheets.Count If Sheets(i).Name <> "登录" Then Sheets(i).Visible = 2 Else Sheets(i).Visible = -1 '只让“登录”表显示出来 End If Next End Sub Private Sub CommandButton2_Click() Call 隐藏表 End Sub Private Sub UserForm_Activate() '窗体出现在屏幕上的位置 Me.Top = 220 Me.Left = 120 End Sub 代码中都做了注释,看不明白也不影响使用,只要粘贴上就行了。 再用鼠标双击左侧的thisworkbook模块,把下面代码粘贴上去。 Private Sub Workbook_BeforeClose(Cancel As Boolean) Call UserForm1.隐藏表 ActiveWorkbook.Save '保存当前工作簿文档 End Sub Private Sub Workbook_Open() Call UserForm1.隐藏表 UserForm1.Show '加载登录窗体 End Sub 再用鼠标双击左侧“设置”表模块,把下面代码粘贴上去。 Private Sub Worksheet_Activate() '将各工作表的名字填入第一行中 For i = 2 To Worksheets.Count Cells(1, i + 2) = Sheets(i).Name Next End Sub 再用鼠标双击左侧“登录”表模块,把下面代码粘贴上去。 最后给VBA加上一个保护密码,防止其他人员改动代码。 按“工具-VBA Project属性”,调出“VBA Project”属性窗口,选“保护”选项卡,按下图设置就行了。 至此就完成了整个制做过程,关闭VBA窗口回到EXCEL窗口,就可以在这个工作簿中添加你要操作的全部工作表了,注意添加的位置在“设置”工作表的右边。 使用时的注意事项: 1、在“登录”工作表中,登录窗体是自动显示的,只要输入姓名、密码正确,按“登录”按钮,就会根据“设置”表中的权限,自动打开该操作者所要操作的工作表,与他无关的表会自动隐藏。 2、当以管理员身份(本例中的“张三”)登录后,只要一打开“设置”工作表,就能自动在D1单元格及右边的各单元格中更新工作表名字。 3、任何操作者在操作完成后,要在“登录”窗体上点击“退出”按钮,以便关闭所操作的工作表。 4、为了保证登录功能正常运行,在打开工作簿时一定要启用宏。另外,为了保证工作簿在关闭时只显示“登录”工作表,会自动将其他表隐藏并保存工作簿。 补充说明: 如果想在登录窗口的密码框不显示“明文”,只显示一串星号“***”,可以用下面方法设置。 打开VBA窗口,用鼠标选中登录窗体的密码文本框textbox2,在左边“属性”窗口中找到passwordChar属性,输入一个星号就行了。 补充2 有朋友提出,在显示登录窗口时,不想手工输入“姓名”,最好用下拉框选择“姓名”,想实现这个功能,只要把登录窗口中的姓名“文本框”删除,换成一个“复合框”,再改一下代码就可以了。 1、改文本框为复合框 2、修改代码 分两步,先把原代码中的所有“TextBox1.Text”替换成“ComboBox1.Text”(提示:可以在VBA窗口中按“编辑-替换”,输入内容后选“全部替换”即可)。 再将原代码中的下面这段: Private Sub UserForm_Activate() '窗体出现在屏幕上的位置 Me.Top = 220 Me.Left = 120 End Sub 替换成: Private Sub UserForm_Activate() '窗体出现在屏幕上的位置 Me.Top = 220 Me.Left = 120 For i = 2 To Sheets("设置").[a65536].End(xlUp).Row ComboBox1.AddItem Sheets("设置").Cells(i, 1).Value Next End Sub 这样就可以使用了。

(0)

相关推荐

  • Windows7和WinXP下如何实现不输密码自动登录系统的设置方法介绍

    在Win7或者WinXP下,如果用户设置了密码,每次登陆都要输入,很麻烦。如何能够无需输入密码自动登录Win7或者WinXP系统呢? 下面就介绍这个方法: 1、在开始菜单搜索框输入“rundll32 ...

  • 安装XP SP2以后电脑不断的重新启动在登录系统之前

    问:安装完Windows XP Service Pack 2重新启动后,在登录系统之前,电脑又自动重新启动了,请问如何解决? 答:出现该故障很可能是当前系统安装了UMAX 扫描仪驱动程序所造成的。解决 ...

  • 让Win8自动登录系统 少敲几个键

    Windows 8在安装过程中会要求用户创建登录帐户和密码,而且无法跳过这一步,当安装完毕后每次开机或者重启系统后都会要求输入登录帐户和密码,相信有很多人都不习惯这种改变,因此,今天教大家一个简单的方 ...

  • Win10登录系统方式有哪些?

    Win10登录系统方式有哪些?

  • 惠普笔记本电脑如何设置通过指纹识别功能登录系统?

    在惠普或其他品牌的笔记本电脑中具备支持指纹识别的传感器,通过这一功能,我们可以更加安全方便地登录系统,进行一些身份验证.那么,在接下来的内容中具体介绍一下惠普笔记本电脑如何设置通过指纹识别功能登录系统 ...

  • Win8需要开机两次才能登录系统怎么办?

    Win8需要开机两次才能登录系统怎么办? 故障原因: 第一次启动win8系统不成功可能是因为从硬盘恢复内容到内存时出错.win8的兼容性问题便会导致这样情况的出现.而第二次启动的时候,之前临时保存到硬 ...

  • 如何利用VBA将excel多个工作表数据快速合并到一个工作表上

    利用VBA将数据区域不定的多个工作表数据快速合并到一个工作表方法.有需要的朋友可以跟着教程一起来学习! 方法/步骤 分别有工作表1.2.3数据区域如下图所示: 按ALT+F11打开VBE编辑器,在工程 ...

  • excel财务系统怎么自动生成现金流量表?

    excel财务系统,自动生成现金流量表的方法.现金流量表是自动生成的,不过在录入凭证时需要事先在每一笔现金类凭证分录中指定对应现金流量项目,和金蝶用友等其他财务软件是一样的. 1.录入凭证,录入后如果 ...

  • win7电脑中上次登录系统的时间怎么记录

    有的小伙伴在使用win7系统的电脑上,想要记录上次登录系统的时间,来进行对比,以免自己的账户有安全危机,那么如何进行记录呢?小编就来为大家介绍一下吧.1. 第一步,按win R组合键,接着在下图所示的 ...