2011-12-15 4 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

+0

Здравствуйте. Код VBA должен быть хорошим, да. Кроме того, это применимо ко всем столбцам в электронной таблице. – MusTheDataGuy

ответ

0

Правильно, вам нужен VBA для достижения этого. Используйте событие Worksheet_Change, которое срабатывает всякий раз, когда что-то меняется. Затем используйте один из различных методов, чтобы определить, не является ли столбец пустой (http://ewbi.blogs.com/develops/2006/03/determine_if_a_.html или просто Google). Альтернативно, если это замедляется, потому что если срабатывает почти все время, вы можете использовать событие Worksheet_Activate() (можно просмотреть общий список всех событий Excel here).

Если ваша колонка 7 содержит данные, вы можете отобразить столбец 8 с помощью MyWorksheet.Columns («8: 8»). Hidden = False.

Ваша вторая проблема может быть решена аналогичным образом. В Worksheet_Activate() проверьте, является ли сегодня первый день месяца, используя Day (Date) = 1 (я думаю, он должен учитывать, что пользователь не может использовать Excel в этот день, поэтому код должен быть немного более сложный) и показать этот столбец с помощью MyWorksheet.Columns («12:12»). Hidden = False (или что бы это ни было) на 1 декабря.

Весь этот код предполагает, что столбцы уже есть, просто скрыты.

Смежные вопросы