我想要隐藏过去两年多年的所有日期列。为此(我不知道这是否是正确的方法)我已经做了一些研究,因为我对Excel编程一无所知,并且我已经创建了这个VBA脚本,但它确实似乎不起作用:
Function OcultarFechas(Range)
Rg1 = Range ' B2:AA2
Flag = "ok"
For Each c1 In Range(Rg1).Cells
If Year(c1) <> Year(Date) Then
Columns(c1.Column).EntireColumn.Hidden = True
Else
Flag = "notok"
End If
If Flag = "notok" Then Exit For
Next c1
End Function
最好在打开电子表格时执行脚本,但现在使用此代码,我认为我需要在单元格上调用函数,如:&#34; = OcultarFechas(B2:AA2)&#34;
PS。订购日期是为什么我在找到当前年份时退出for循环的原因,并且从该列开始我需要将它们隐藏起来
答案 0 :(得分:1)
您无法使用UDF隐藏列。
尝试这样的事情......
Sub HideColumns()
Dim c As Long, lc As Long
lc = Cells(2, Columns.Count).End(xlToLeft).Column
Columns.Hidden = False
For c = 2 To lc
If Year(Cells(2, c)) < Year(Date) Then
Columns(c).Hidden = True
End If
Next c
End Sub
上面的代码将找到Row2中使用的最后一列,并通过第2列循环到找到的最后一列,并检查年份条件并相应地隐藏列。
要在打开工作簿时自动调用此过程,请将以下代码放在ThisWorkbook Module上。
Private Sub Workbook_Open()
Call HideColumns
End Sub