Excel VBA 5.29根据用户名和超级管理 展示不同工作表

Excel VBA 5.29根据用户名和超级管理 展示不同工作表
2021年04月20日 07:30 晓雯子16

前景提要

根据用户名和超级管理展示不同工作表

最近我们也是分享了一些关于登录窗体的操作,上一节我们根据小伙伴们的要求,针对登录窗体的功能,做了进一步的完善,增加了新建用户名和修改用户名密码的功能

今天呢,我们继续往下走,我们来实现小伙伴们的另外一个需求,那就是针对用户名打开对应的工作表,同时

隐藏其他和他无关的工作表。

场景说明

大致琢磨了下,这样的场景,应该是使用在共享文件之类的场景下的,可能一个文件放在局域网内,大家都在这个工作表中操作,那么在这个时候,就会涉及数据的保护,为了避免数据的泄露或者其他人不小秀修改他人的数据,那么这个时候就需要用到今天这个场景,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真心做不到。

财经自媒体联盟更多自媒体作者

新浪首页 语音播报 相关新闻 返回顶部