【问题标题】:Excel VBA: Hiding columns between two given datesExcel VBA:隐藏两个给定日期之间的列
【发布时间】:2017-05-28 13:34:44
【问题描述】:

我正在制作一张列出全年天数的表格。这些行将由不同的用户手动填充,目的是在全年记录这些值。列特定于一年中的每一天,因此需要大量滚动才能找到特定范围。

我想要实现的是有两个可以填充两个日期的单元格,一个开始日期和结束日期,当输入这些日期时,所有其他列都隐藏在视图之外。

我找到了一种在一个单元格中隐藏给定日期之前的列的方法,但是我想帮助合并一种方法来隐藏另一个单元格中给定日期之后的列。在这种情况下,单元格 E35

目前该方法的 VBA 代码是:

Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice 20160725
    Dim xCell As Range
    If Target.Address <> Range("E34").Address Then Exit Sub
    Application.ScreenUpdating = False
    For Each xCell In Range("H1:NG1")
        xCell.EntireColumn.Hidden = (xCell.Value < Target.Value)
    Next
    Application.ScreenUpdating = True
End Sub

这里有一张参考图: Example

提前谢谢你 // R

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    跟进@dgorti 的回答,在未来的情况下,当您想要监控多个范围的工作表时,您可以使用:

    Private Sub Worksheet_Change(ByVal Target As Range)
    
    If Not Intersect(Target, Range("E34:E35")) Is Nothing Then
      ' perform your code hewe
    
    Else
        ' you can put your Exit Sub here
    End If
    
    End Sub
    

    【讨论】:

      【解决方案2】:
      Private Sub Worksheet_Change(ByVal Target As Range)
       'Updateby Extendoffice 20160725
        Dim xCell As Range
        If Target.Address <> Range("E34").Address AND Target.Address <> Range("E35").Address Then Exit Sub
        Application.ScreenUpdating = False
        For Each xCell In Range("G1:NG1")
          xCell.EntireColumn.Hidden = (xCell.Value < Range("E34").Value or xCell.Value > Range("E35").Value )
        Next
        Application.ScreenUpdating = True
      End Sub
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-04-10
        • 1970-01-01
        • 2013-05-20
        • 2015-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多