【问题标题】:vba excel hide worksheet on date cell valuevba excel隐藏日期单元格值的工作表
【发布时间】:2014-01-09 12:55:56
【问题描述】:

我是一个 vba 新手,但我很享受为其他用户创建程序的想法,并让他们的工作更轻松。我有一个包含 14 个工作表的工作簿。我一直在寻找根据日期值隐藏其中 3 个工作表的 vba 代码。日期值位于工作表 1 单元格 B7 上。我希望隐藏的 3 张纸是第 2 纸、第 3 纸和第 4 纸。这 3 张纸需要在日期前 3 天之前在第 1 表单元格 B7 中隐藏。从日期值来看,我希望工作簿隐藏 3 张工作表,并且只有在使用正确的密码来取消隐藏这 3 张工作表时才能取消隐藏。我花了无数个小时在许多网站上寻找正确的代码。请问你能帮忙吗?

【问题讨论】:

  • 马克,如果你喜欢为其他用户创建程序的想法,那么你就不要search 为你correct 代码:) 你创建一个!无论如何。你能告诉我们你尝试了什么,你在哪里卡住了吗?要求代码的问题必须表明对正在解决的问题的最低限度的理解。包括尝试的解决方案、它们为什么不起作用以及预期的结果。另见:Stack Overflow question checklist

标签: excel vba


【解决方案1】:

您需要做的事情仅靠 Excel 和您所提供的要求是不可能的。即使表格被隐藏,用户仍然可以取消隐藏它们,因为 EXCEL 允许他们这样做。

如果用户可以接受在未经代码同意的情况下取消隐藏工作表的可能性,请继续尝试:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim myDate As Date
    myDate = Range("b7").Value
    Dim curr_date As Date
    curr_date = Date


    If curr_date >= CDate((myDate) - 3) Then

        ActiveWorkbook.Sheets(2).Visible = xlSheetVeryHidden
        ActiveWorkbook.Sheets(3).Visible = xlSheetVeryHidden
        ActiveWorkbook.Sheets(4).Visible = xlSheetVeryHidden

    Else
        ActiveWorkbook.Sheets(2).Visible = xlSheetVisible
        ActiveWorkbook.Sheets(3).Visible = xlSheetVisible
        ActiveWorkbook.Sheets(4).Visible = xlSheetVisible

    End If
End Sub

请记住,您必须调用 VB 编辑器才能键入上述代码。为此,您需要按 Alt + F11,然后您将看到您拥有的 14 张纸的列表。双击 SHEET1 即可编写上述代码。只需复制并粘贴到那里。或者,您可以从栏左上角的组合框中选择Worksheet,从右上角选择Change,然后将代码粘贴到那里。

这是一张简化图片,可以帮助您理解我的意思:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 2017-03-28
    • 1970-01-01
    • 2016-01-11
    相关资源
    最近更新 更多