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

有没有一种方法可以自动显示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代码是必需的,但我不确定这将是什么。

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

 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 ie IF system date = 01/09/2012 THEN show column(September) 

这可能吗?

谢谢。

正确的,你需要VBA来实现这一点。 使用Worksheet_Change事件,当事物发生变化时触发。 然后,使用各种方法之一来确定列是不是空的(http://ewbi.blogs.com/develops/2006/03/determine_if_a_.html,或只是谷歌)。 另外,如果这样做的速度很慢,因为如果几乎所有的时候都会触发,则可以使用Worksheet_Activate()事件(可以在这里find所有Excel事件的概述)。

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

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

所有这些代码假定列已经在那里,只是隐藏。