在Excel中自动显示(取消隐藏)列

时间:2011-12-15 13:32:56

标签: excel vba

当左边的列包含数据时,是否有一种方法可以自动显示Excel(2003,2007和/或2010)中的列(非隐藏)?

这样的事情:

IF column to the left contains data
THEN show column


+-----+-----+  
|  C  |  C  |     //If column1 contains data
|  O  |  O  |     //Then reveal/show (unhide) column2
|  L  |  L  |
|  U  |  U  |
|  M  |  M  |
|  N  |  N  |
|  1  |  2  |
+-----+-----+

我猜测VB代码是必需的,但不确定这是什么。

除此之外,有没有办法自动显示按日期(每个月的第一天)开始的列?这有点复杂。例如:

FOR all dates
    IF system date = year(month.day1)  //If it is the first day of a new month
        THEN show column(month)  //Then show the corresponding column for that month
    ENDIF
ENDFOR

i.e. IF system date = 01/09/2012
     THEN show column(September)

这可能吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

正确,您需要VBA才能实现这一目标。使用Worksheet_Change事件,当事情发生变化时会触发该事件。然后,使用各种方法之一来确定列是否为空(http://ewbi.blogs.com/develops/2006/03/determine_if_a_.html,或只是谷歌)。或者,如果这样做很慢,因为如果几乎一直触发,您可以使用Worksheet_Activate()事件(可以找到所有Excel事件的概述here)。

如果第7列包含数据,则可以使用MyWorksheet.Columns(“8:8”)取消隐藏第8列。隐藏= False。

你的第二个问题可以用类似的方式解决。在Worksheet_Activate()中,检查今天是否是使用Day(Date)= 1的一个月中的第一天(我想它需要考虑到用户今天可能没有使用Excel,所以代码应该是一点点更复杂的)并使用MyWorksheet.Columns(“12:12”)显示该列。隐藏= 12月1日的假(或其中任何一个)。

所有这些代码都假设列已经存在,只是隐藏了。