1167593653 解決時1000PT。エクセルで添付の画像のスケジュール帳を作る予定です。既存のスケジュール帳は色々試しましたが仕事柄、私にはあいませんでした。

先ほども似たような質問をさせていただいたので恐縮なのですが。
やることは

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

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

回答の条件
  • 1人2回まで
  • 登録:2007/01/01 04:34:13
  • 終了:2007/01/01 21:43:20

回答(4件)

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912007/01/01 06:14:05

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

不明な点はコメントいただければ、補足説明します。

id:huruta

ご連絡ありがとうございます。回答2も見させていただきました。この文字列をどうすればよいのでしょうか?シートを右クリックして「コードの表示」をしてそこに貼り付けるのでしょうか

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

よろしくお願いします。

2007/01/01 21:20:59
id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912007/01/01 08:05:37

ポイント1000pt

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

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

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

失礼しました。

id:huruta

うまくいきました!

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

2007/01/01 21:42:50
id:tibitora No.3

tibitora回答回数3037ベストアンサー獲得回数2022007/01/01 07:49:19

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

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

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

id:huruta

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

2007/01/01 21:17:29
id:hiikunn No.4

hiikunn回答回数102ベストアンサー獲得回数12007/01/01 10:31:17

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

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

id:huruta

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

2007/01/01 21:17:32
  • id:Mook
    過分なポイントありがとうございました。

    質問が終了しましたので、コメントを移動しました。
    http://q.hatena.ne.jp/1167494528 より移動
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    http://q.hatena.ne.jp/1167593653
    ですが、回答回数が2回まででした(コメントも付けられない)ので、こちらで失礼します。
    (気付いていただけると良いのですが。)

    実行方法は、こちらで回答したとおりです。
    シートのコードを表示で表示されるウィンドウにコードを貼り付け、
    ツールバーの「ツール」⇒「マクロ」⇒「マクロ」から printScheduleを
    実行です。

    もしマクロが無効になっている場合は、
    「ツール」⇒「オプション」⇒「セキュリティ」⇒「マクロセキュリティ」
    で中を選択し、再起動後にマクロを有効にしてください。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません