前景提要最近我们也是分享了一些关于登录窗体的操作,上一节我们根据小伙伴们的要求,针对登录窗体的功能,做了进一步的完善,增加了新建用户名和修改用户名密码的功能 今天呢,我们继续往下走,我们来实现小伙伴们的另外一个需求,那就是针对用户名打开对应的工作表,同时隐藏其他和他无关的工作表。 场景说明大致琢磨了下,这样的场景,应该是使用在共享文件之类的场景下的,可能一个文件放在局域网内,大家都在这个工作表中操作,那么在这个时候,就会涉及数据的保护,为了避免数据的泄露或者其他人不小秀修改他人的数据,那么这个时候就需要用到今天这个场景,A只能打开和A有关的工作表,B只能打开和B有关的工作表 代码区这里呢,我们保持代码的延续性,我们继续在之前的代码中增加功能,今天的场景,我们可以结合我们之前学习的工作表的隐藏的方式来实现,大家还有印象吗? 来, Private Sub CommandButton1_Click() Me.Hide Dim k&, sth As Worksheet, rng As Range, sth1 As Worksheet Set sth = ThisWorkbook.Worksheets("用户名") s = ComboBox1.Value With sth.UsedRange Set rng = .Find(what:=s, searchformat:=True) If Not rng Is Nothing Then ss = rng.Offset(0, 1).Text GoTo line2 Else GoTo line End If End With line2: If ComboBox1.Value = s And TextBox2.Value = ss Then MsgBox "欢迎你登陆!" sth.Visible = xlSheetVeryHidden Application.Visible = True If s <> "admin" Then For Each sth1 In Worksheets If sth1.Name <> s Then sth1.Visible = xlSheetVeryHidden End If Next sth1 Else For Each sth1 In Worksheets sth1.Visible = xlSheetVisible Next sth1 End If Else line: MsgBox "您的输入不合法请重新输入!" Application.Visible = True sth.Visible = xlSheetVeryHidden Application.Quit End If End Sub 今天的代码我仅仅是展示了一个部分,这一个部分是写在登录窗体中的,其他的部分,因为没有任何的变动,所以这里节省篇章,就不展示出来了,我们的思路是,在判断登录用户名是否正确的同时,去根据用户名去寻找对应的工作表,找到则将工作表展示,其他的工作表名称不等于用户名的,则隐藏。 当前工作簿有这么多的工作表,我们来测试下。 我们可以看到,代码成功的实现了工作表的隐藏,隐藏之后呢,仅仅展示和A1有关的工作表,其他无关的工作表就都全部隐藏了,深度隐藏,没有办法通过右键来展开隐藏的 BUT,如果你的用户名是超级管理员的话,那么所有的工作表都对你开放展示,就算之前被隐藏了,现在也是可以展示出来的。 代码解析上面的功能,6不6 其实也是很简单,主要是利用了我们之前学习的工作表的深度隐藏 sth1.Visible = xlSheetVeryHidden 然后加上几个简单的判断既可以实现,隐藏和非隐藏的切换了,代码是很简单的,大家要掌握的还是方法和思路 当然,我相信肯定会有小伙们说能破解!! 这里我要说,别太为难Excel了。。 太高级别的保护,Excel真心做不到。 |
|