2011-12-15 21 views
1

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

事情是这样的:

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) 

这可能吗?

谢谢。

+0

你用VBA代码行吗?问题的第一部分也仅适用于第1列和第2列吗? – Ian 2011-12-15 14:54:23

回答

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,所以代码应该是一点点更复杂),并在12月1日使用MyWorksheet.Columns(“12:12”).Hidden = False(或其中的任何一个)显示该列。

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