【问题标题】:How to hide and unhide sheets with the push of a button?如何通过按一下按钮隐藏和取消隐藏工作表?
【发布时间】: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 等等。

标签: excel vba


【解决方案1】:

要切换给定工作表的可见性,您可以使用:

Worksheets("Grund").Visible = Not Worksheets("Grund").Visible

但请记住,正如@Josh Eller 所说,这并不能提供任何真正的保护

【讨论】:

  • 非常感谢@cybernetic.nomad!不,我知道保护问题。但在这种情况下没有问题。
猜你喜欢
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-01
  • 2021-10-19
相关资源
最近更新 更多