2011-12-15 29 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にデータが含まれている場合、あなたはMyWorksheet.Columns( "8:8")を使用して、カラム8の非表示を解除することができます。= Falseを隠し。

2番目の問題は、同様の方法で解決できます。 Worksheet_Activate()で、今日がDay(Date)= 1を使用している月の最初の日であるかどうかをチェックします(ユーザーがExcelを使用していない可能性があることを考慮する必要があるので、もっと複雑なもの)、その列をMyWorksheet.Columns( "12:12")を使って表示します。Hidden = False(またはそれがどちらかである)を12月1日に表示します。

このコードはすべて、列が既に存在し、隠れていることを前提としています。

関連する問題