vba excel隐藏日期单元格值的工作表

时间:2014-01-09 12:55:56

标签: excel-vba vba excel

我是一名vba新手,但他喜欢为其他用户创建程序,让他们更轻松地享受工作量。我有一个包含14个工作表的工作簿。我一直在寻找根据日期值隐藏其中3张的vba代码。日期值位于表1单元格B7上。我希望隐藏的3张纸是纸张2,纸张3和纸张4.这些3张纸需要在纸张1单元格B7中的日期前3天取消隐藏。从日期值我希望工作簿隐藏3张纸,如果使用正确的密码取消隐藏这3张纸,则只能取消隐藏。我花了无数个小时来搜寻许多试图找到正确代码的网站。你能帮忙吗?

1 个答案:

答案 0 :(得分:0)

只有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 Editor来键入上面的代码。为此,您需要按 Alt + F11 ,然后您将看到一张包含14张纸的列表。双击SHEET1即可编写上述代码。只需复制并粘贴即可。或者,您可以从条形图左上方的组合框中选择Worksheet,然后从右上角选择Change,然后将代码粘贴到那里。

这是一个简化图片,可以帮助您理解我的意思: Hiding Sheets based on Date