我是一名vba新手,但他喜欢为其他用户创建程序,让他们更轻松地享受工作量。我有一个包含14个工作表的工作簿。我一直在寻找根据日期值隐藏其中3张的vba代码。日期值位于表1单元格B7上。我希望隐藏的3张纸是纸张2,纸张3和纸张4.这些3张纸需要在纸张1单元格B7中的日期前3天取消隐藏。从日期值我希望工作簿隐藏3张纸,如果使用正确的密码取消隐藏这3张纸,则只能取消隐藏。我花了无数个小时来搜寻许多试图找到正确代码的网站。你能帮忙吗?
答案 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
,然后将代码粘贴到那里。
这是一个简化图片,可以帮助您理解我的意思: