• ベストアンサー

色つき行を非表示にしたい。

お世話になっております。 エクセル(2007)で悩んでいます。 月ごとのカレンダーをつくっているのですが、 A列は日付、B列はWEEKDAY関数で曜日を入れてあります。 C列以降は備考欄にしています。 土日祝日は日付と曜日を色つきセルにして、わかりやすいようにしてるのですが、この色つきセルの行を非表示にしてしまいたいのですが、どのようなマクロが使用できるのでしょうか、ご教示ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

こんばんは。 VBAの力を借りる前に、条件付書式とかオートフィルターは試されましたか? 作業列を使用した案で説明しますが 土日を祝日にするには、空いている列に =Weekday(A2,2)>5 と入れて下までコピィしてみてください。 土日の曜日にはTrueが得られます。 祝日を判断するために、別シートにでも祝日の一覧表を入れておきます。 別シート  A 2009/1/1 2009/5/5 ・・・といった具合です。 これを利用して、日付のシートの空いている列に =COUNTIF(別シート!A:A,A2)>0 と入れて下までコピィすると 祝日の日付の場合に True が得られます。 この2つ組み合わせて =OR(WEEKDAY(A2,2)>5,COUNTIF(別シート!A :A,A2)) と入れて下までコピィしておけば、土日祝日の場合に True が表示されますので この式の結果を利用して条件付書式で、自動で色をつけることが出来ます。 オートフィルターで、土日祝日を非表示にしたり表示にしたり出来ます、 一度、試してみてください。

obbli6
質問者

お礼

このような方法もあるんですね。 大変参考になりました。 ありがとうございました。

その他の回答 (1)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

セルの塗りつぶしの色は  Cells(row,column).Interior.ColorIndex で取得できますので、休日の色の行を非表示にすればよいでしょう。 ある行を非表示にするのは  Rows(範囲).Hidden = True とか  Cells(row,column).EntireRow.Hidden = True でできます。 実は、非表示にする命令は時間がかかるみたいなので、まとめて行ったほうが実行時間が短くできますが、ご質問の内容ですと一月分で10行ほどなのでそれほど気にしなくてもよいかも。 1年分まとめて行うなどの場合は、1行ずつ非表示にするよりも、まとめて範囲指定して非表示にしたほうがよろしいかと思います。

obbli6
質問者

お礼

ありがとうござます。 勉強して、マクロが組めるようにします。

関連するQ&A

専門家に質問してみよう