人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

解決時1000PT。エクセルで添付の画像のスケジュール帳を作る予定です。既存のスケジュール帳は色々試しましたが仕事柄、私にはあいませんでした。
先ほども似たような質問をさせていただいたので恐縮なのですが。
やることは

1.日にちを31日分印刷する
2.曜日を日にち毎に変更する
3.日曜日、休日は左上の3つの〇月〇日〇曜日を赤で印刷
4.土曜はブルーで印刷

月ごとにやって12セットやるくらいであれば問題ないのですが、
365回やるのはつらいので。
1ヶ月ごとに区切りながらの印刷のほうがいいかもしれません。
一気に印刷してしまうと間違いがあったら怖いので。
お詳しい方でお時間のある方
もしよければ具体的な手順つきでよろしくお願いします。

1167593653
●拡大する

●質問者: huruta
●カテゴリ:コンピュータ
✍キーワード:あい いであ エクセル スケジュール ブルー
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● Mook
●0ポイント

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も見させていただきました。この文字列をどうすればよいのでしょうか?シートを右クリックして「コードの表示」をしてそこに貼り付けるのでしょうか

そのあとはどうすれば印刷までいけるのでしょうか?

よろしくお願いします。


2 ● Mook
●1000ポイント

大きい数字が「月」かと思ったのですが、「日」だったでしょうか

先に提示したマクロの該当部分を下記に変更してください。

Const MONTH_RANGE = "A10"
Const DAY_RANGE = "A1"
' ----- 日にちの変更
 Range(MONTH_RANGE).Value = DatePart("m", printDate) & "月"
 Range(DAY_RANGE).Value = DatePart("d", printDate) ' & "日" 

失礼しました。

◎質問者からの返答

うまくいきました!

プリンタから滝のように紙が出ています。ありがとうございました。


3 ● tibitora
●0ポイント

こちらは参考になりますか?

画像付きでの説明があります。

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列はあとで非表示にさせることもできます。

◎質問者からの返答

ご連絡ありがとうございます。参考にさせていただきます。


4 ● hiikunn
●0ポイント

こちらを見つけましたのでお伝えします。

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. セル範囲、条件付き書式

◎質問者からの返答

ご連絡ありがとうございます。参考にさせていただきます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ