VBA にての実現方法です。
祝日の定義はカレンダーを参考にしましたが適宜変更ください。
日にちの位置は画像を参考に定義しましたが、変更の場合はそれぞれの左上のセルを記述してください。
開始日から指定日数の間を印刷します。
Option Explicit Const MONTH_RANGE = "A1" Const DAY_RANGE = "A10" Const WD_RANGE = "E10" Const COLOR_RANGE = "A1:H16" ' ---- 曜日によって色を変える範囲 Public HolidayArray2007 As Variant '----------------------------------------------------- Sub printSchedule() '----------------------------------------------------- ' ----- 祝日定義 2007 年用 HolidayArray2007 = Array("1/1", "1/8", "2/12", "3/21", "4/30", "5/3", "5/4", "5/5", "7/16", "9/17", "9/24", "10/8", "11/3", "11/23", "12/24") Dim d As Integer Dim dtmp As Variant For d = LBound(HolidayArray2007) To UBound(HolidayArray2007) dtmp = Split(HolidayArray2007(d), "/") HolidayArray2007(d) = DateSerial(2007, dtmp(0), dtmp(1)) Next ' ----- 印刷指定 開始年, 月, 日, 日数 drawAndPrint 2007, 1, 1, 365 End Sub '----------------------------------------------------- Sub drawAndPrint(yy As Integer, mm As Integer, dd As Integer, num As Integer) '----------------------------------------------------- Dim startDate As Date Dim printDate As Date Dim wdayArray As Variant wdayArray = Array("dummy", "(日)", "(月)", "(火)", "(水)", "(木)", "(金)", "(土)") startDate = DateSerial(yy, mm, dd) For printDate = startDate To startDate + num - 1 ' ----- 日にちの変更 Range(MONTH_RANGE).Value = DatePart("m", printDate) Range(DAY_RANGE).Value = DatePart("d", printDate) & "日" Range(WD_RANGE).Value = wdayArray(DatePart("w", printDate)) ' ----- 日にちの文字の色を変更 Range(COLOR_RANGE).Font.ColorIndex = dayColor(printDate) ' ----- 1枚目のシートを印刷 Worksheets(1).PrintOut Next End Sub '----------------------------------------------------- Function dayColor(day) '----------------------------------------------------- ' ----- 祝日判定 Dim d As Integer For d = LBound(HolidayArray2007) To UBound(HolidayArray2007) If day = HolidayArray2007(d) Then dayColor = 3 Exit Function End If Next ' ----- 曜日判定 Select Case DatePart("w", day) Case vbSunday dayColor = 3 Case vbSaturday dayColor = 5 Case Else dayColor = 1 End Select End Function
不明な点はコメントいただければ、補足説明します。
ご連絡ありがとうございます。回答2も見させていただきました。この文字列をどうすればよいのでしょうか?シートを右クリックして「コードの表示」をしてそこに貼り付けるのでしょうか
そのあとはどうすれば印刷までいけるのでしょうか?
よろしくお願いします。
大きい数字が「月」かと思ったのですが、「日」だったでしょうか
先に提示したマクロの該当部分を下記に変更してください。
Const MONTH_RANGE = "A10" Const DAY_RANGE = "A1"
' ----- 日にちの変更 Range(MONTH_RANGE).Value = DatePart("m", printDate) & "月" Range(DAY_RANGE).Value = DatePart("d", printDate) '& "日"
失礼しました。
うまくいきました!
プリンタから滝のように紙が出ています。ありがとうございました。
こちらは参考になりますか?
画像付きでの説明があります。
http://www.rericca.com/qa/exs01.htm
自分だけのスケジュール帳を作ってみる! その1
最近、スケジュール帳が人気です。
どうせなら、自分でオリジナルを作ってしまいましょう。!
まず、Excelでこの2つのデータを入力。
A2 → 2006/1/1
D1 → 9:00
では、早速スタート♪
1 B1のセルを選択して、=A1 と数式を入力
(これで、B1には常にA1と同じデータがはいります)
2 次に、A1からB1を範囲選択
フィルハンドルにマウスをあわせ、366行目までドラッグ。
(これで、今年の12/31までの日付がはいります。)
3 同じ要領で、D1のセルもフィルハンドルを使ってO1までドラッグ
(20時まで必要ない場合は少なくてもOK)
4 A,B列は###が目立ちますが、間違ったわけではありません。
「オーバーフロー」といって、幅が足りないだけです。
この部分の表示を切り替えます。
5 A列を列単位で選択し、右クリック→[セルの書式設定]
↓
[表示形式]のシート
分類:ユーザー定義 種類: d
6 B列を列単位で選択。
5.と同じ要領で、セルの書式設定の表示形式
分類:ユーザー定義 種類:aaa(半角英数)
★日付の書式設定については、ここをクリック★
7 お好みで、列幅や文字位置を調整する
8 各月の境目に2行程度、空白行を挿入
<<例>>1月と2月の間に2行挿入
1日と2日(33行目と34行目)を行単位で選択→右クリック→挿入
9 すべての月に挿入しおわったら、A1?B1を結合→"1月"と入力
他の月も同じ要領で。
10 バランスよく罫線で囲んでおきましょう。
ここまで出来上がったらこうなっているはず
けっこう簡単にできるでしょう?カレンダーにも、もちろん使えますよね。
http://www.rericca.com/qa/exs02.htm
自分だけのスケジュール帳を作ってみる! その2
前回までのデータはこれ
今日は、これを編集していきます。
土曜日は青、日曜日は赤にする。
この場合、曜日が文字で入力されているのなら、
オートフィルタで選択して色をつけることができます。
ただ、今回はその方法は使えません。
ではどうするか?
条件付書式設定を使います。
考え方は、「万年暦」と似ていますね。
<手 順>
1.A2からC列の一番下のセルまでを範囲選択します。
2.メニューバーから[書式]―[条件付書式]
条件付書式設定のダイアログボックスを開きます。
3.まず 条件1
セルの値が を 数式が に変更
=$C2<>"" と入力して → 書式 のボタンを押す
書式設定のダイアログボックスが開くので、
フォントのシートからフォントの色を赤にする。
この条件式を必ず一番上にすること。
4.条件2
数式が =WEEKDAY($A2)=7
つまり土曜日だったら、フォントの色を青くする
5.条件3
数式が =WEEKDAY($A2)=1
つまり日曜日だったら、フォントの色を赤にする
6.設定が終わったらOKをクリック
土曜日が青、日曜日が赤になっていることを確認しましょう。
大丈夫でしょうか?
そのあと、C列に祝祭日を入力していきます。
たとえば、1月1日に元旦
1月10日に成人の日・・・など。
こうすることで、祝祭日も赤い文字色に変えられるのです。
面倒な時は、あ など一文字でもかまいません。
文字がはいっていることが大切。
C列はあとで非表示にさせることもできます。
ご連絡ありがとうございます。参考にさせていただきます。
こちらを見つけましたのでお伝えします。
http://121ware.com/navigate/learn/ug/chotry/042/
スケジュール帳
http://homepage3.nifty.com/pcsalon/eg/eg02.htm
エクセルでスケジュール帳を作っているが土曜日は青色に、日曜日は赤色に
するにはどうすればいいかというご質問です。
条件付き書式でセルの値が土曜日のとき、フォントの色を青色などと設定します。
詳しくは
エクセル基礎講座10回目
エクセル応用講座2回目
をご覧ください。
http://homepage3.nifty.com/pcsalon/excel/E10.htm
10. 条件付書式
http://homepage3.nifty.com/pcsalon/eo/eo02.htm
2. セル範囲、条件付き書式
ご連絡ありがとうございます。参考にさせていただきます。