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