隐藏一年的列

时间:2017-05-20 16:43:05

标签: excel vba excel-vba

我想要隐藏过去两年多年的所有日期列。为此(我不知道这是否是正确的方法)我已经做了一些研究,因为我对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循环的原因,并且从该列开始我需要将它们隐藏起来

1 个答案:

答案 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