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

我正在制作一整年的表格。 这些行将由不同的用户手动填充,目的是在整个一年中logging这些值。 列是特定于一年中的每一天,因此需要大量的滚动才能find特定的范围。

我想要实现的是有两个单元格可以填充两个date,一个开始和结束date,当这些被input时,所有其他列都隐藏的视图。

我发现了一个方法来隐藏一个单元格中给定的date之前的列,但像一些帮助合并一种方法来隐藏列在另一个单元格中给定的date之后。 在这种情况下,单元格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 

这里有一个参考图片: 例子

先谢谢你// R

 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 

继续使用@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