当左边的列包含数据时,是否有一种方法可以自动显示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)
这可能吗?
谢谢。
答案 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日的假(或其中任何一个)。
所有这些代码都假设列已经存在,只是隐藏了。