首页 文章

Excel VBA:隐藏两个给定日期之间的列

提问于
浏览
1

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

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

我已经找到了一种方法来隐藏一个单元格中给定日期之前的列,但是像某些方法一样有助于合并一种方法来隐藏另一个单元格中给定日期之后的列 . 在这种情况下,单元格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

2 回答

  • 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
    
  • 3

    跟进@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
    

相关问题