- ベストアンサー
日程表の祝日の列に網掛けをする方法
日程表を作っています。条件付き書式で土曜日、日曜日、祝日と日付に色をつけています。マクロを使い土、日の列に網掛けをすることはできましたが、祝日の列に自動で網掛けをすることができません。COUNTIF 関数はマクロで認識できないのですが、何かいい方法はありませんか。教えてください。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>COUNTIF関数はマクロで認識できないのですが VBAでワークシート関数を利用するには http://www.relief.jp/itnote/archives/001834.php VBAで使用できるワークシート関数一覧 http://www.relief.jp/itnote/archives/001974.php 祝日のリストを別に作成するのが楽かも知れないです。 そのリスト内に合致するかどうかの判断を入れてあげればいいのでは。
その他の回答 (2)
- n-jun
- ベストアンサー率33% (959/2873)
ANo.1です。 今一つピンとこないのですが、気になった点。 ・RangeはRange("A1"のようになるので、D列ならRange("D" & 変数)。 ・変数にRowを用いるのは混乱する。(RowはExcelでは既に予約語として登録されている。Colは問題なし。) あとはANo,2さんの方法を参考にされては。
- imogasi
- ベストアンサー率27% (4737/17069)
>COUNTIF関数はマクロで認識できないのですが なぜ認識する必要あるのか? ーーー あえて言えば Sub test03() Dim cl As Range For Each cl In Range("A1:D20") If Left(cl.Formula, 9) = "=COUNTIF(" Then MsgBox cl.Address End If Next End Sub で出来るとも言えるが。 ーーー セル内容(値)が祝日の日付のセルに色や網掛けすればよいのでしょう。 祝日リストを別に用意して、VLOOKUPで聞けばしまいです。 祝日リストはこれは人間が作らないと難しいでしょう。 ーーー 例データ 極く簡略化して説明 A列 2008/7/20 2008/7/21 2008/7/22 2008/7/23 2008/7/24 2008/7/25 H1:H2に祝日リスト 2008/1/1 2008/7/21 ーー A1:A6範囲指定して 条件付き書式 式が =NOT(ISERROR(VLOOKUP(A1,$H$1:$H$10,1,FALSE))) 書式設定 で出来ます。 結果は、7/21が色が付きました。 無理すればVLOOKUP関数はVBAでもApplicationをつけて使えます。 見つからない場合というのを、OnErrorなどで捕まえるとかの難しいことが起こりそうだが。 VBAを使うならFindメソッドで祝日リストにあるかどうか判定するなど考えられる。 >祝日の列に とはどういう状態?祝日のセルに、では無いですか。質問で言っていることが心配だが。
お礼
imogasiさん 早速詳しくおしえてくださいましてありがとうございました。私の説明が不十部のため、ご苦労をおかけしました。 実は条件付書式で、網掛けができるようになりました。 2008 9 1 2 3 4 15 23 15と23は祝日で赤の色がつきます 月火水木 月 火 曜日にも文字に赤の色がつきます。 A ■ ■ B ■ ■ ←網掛けをつけたい C ■ ■ 別のシートに祝日リストを作っています。 VBAは自己流でしてますので試行錯誤の状態です。Findメソッドも研究してみます。ありがとうございました。
お礼
n-junさん早速ありがとうございました。現在作成している日程表は次のようになっています。 2008 9 1 2 3 4 15 23 15と23は祝日で赤の色がつきます 月火水木 月 火 曜日にも文字に赤の色がつきます。 A ■ ■ B ■ ■ ←網掛けをつけたい C ■ ■ 別のシートに祝日リストを作っています。 VBAは自己流で正式には学習しておりません。作ったVBAは次のようです。 Sub 休み網掛け() Dim Row As Integer Dim Col As Integer Sheets("日程表").Select For Row = 4 To 21 ActiveSheet.Cells(4,Row).Select If Range(4,Row).NamberFormat = OR(WEEKDAY(D$3,2)=7,COUNTIF(祝日,D$3)>0 Then ↑この式に構文エラーが出ます。 For Co = 5 To 21 With Active.Cells(Col,Row).Interior .Pattern = xlPatternGray50 後は略します。 どうなおしたらよいかわかりません。初歩的なミスだと思うのですが・・・よろしければお教えください。