【发布时间】:2019-11-05 16:07:46
【问题描述】:
我有一个 Excel 工作簿,其中包含三张纸上的信息。
表 2(称为 Grund)应该对成功按下密码保护按钮(称为“管理员”)的人可见。再次按下按钮时,它应该隐藏工作表。此按钮位于工作表 1(称为 Hela)上。
工作表 1 中某些列 (BC:BI) 中的信息将通过密码保护按钮以相同的方式隐藏和取消隐藏。
我将按钮设置为使用调用功能来启动我的宏。
我设法让列按预期隐藏和取消隐藏(请参见下面的代码),但我找不到以与列相同的方式隐藏和取消隐藏工作表的方法。
在下面的代码中,工作表受到保护,因此我尝试解决此问题,并且需要以与我想的相同的方式设置工作表的宏。
我尝试了“xlhidden”和“.hidden=not”的不同变体以及不同的“if”、“ifs”等。
这是隐藏和取消隐藏列的宏
Sub hideunhidecol()
Dim pwd As String
pwd = "admin"
'
ActiveSheet.Unprotect Password:=pwd 'unprotect the sheet'
Columns("BC:BI").Hidden = Not Columns("BC:BI").Hidden
With ActiveSheet
.Protect Password:=pwd, DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
.EnableSelection = xlNoRestrictions
'protect the sheet'
End With
End Sub
【问题讨论】:
-
您使用什么代码来隐藏/取消隐藏工作表?把它放在一个工作簿模块中,不要使用
ActiveSheet,而是你想要的工作表的名称。 -
旁注,您应该知道在 Excel 中所做的任何事情都绝对不安全。如果有人想取消隐藏您的工作表,无论工作簿/工作表保护如何,他们都可以。
-
试试 activesheet.visible=xlSheetHidden activesheet.visible=xlsSheetVisible 等等。