【初月無料キャンペーン中】gooドクター

エクセル2000を使って、年間カレンダー(1月から12月まで全て1枚の中に入っているカレンダー)を作りたいと思います。作り方を教えてください。土日の色を変えたり、絵を入れたものを作りたいのですが。

gooドクター

A 回答 (7件)

おはようございます。


imogasiさんのプログラム拝見しました。
最終日の確認を
>月末 = DateSerial(y, m + 1, 1) - 1
>月末日 = Day(月末)
とされてますね!
今まで気が付きませんでした。(なさけない)

私の
>'月末の日付取得
>For j = 31 To 28 Step -1
>If (IsDate(wk_year & "/" & i & "/" & j)) Then
>max_day = j
>Exit For
>End If
>Next j
部分は
max_day = day(DateSerial(wk_year, j + 1, 1) - 1)
で1行に置き換えられます。
参考になりました。
    • good
    • 0

ご参考に祝日を表示していないカレンダーのプログラムを載せます。

土日色づけ。まず最小限短くを心がけました。祝日を表示するといかに長くなるか分かります。各月を下に増やし、年間カレンダーにするのは、下記の行を示すlをコントロールすれば、少しの変更で出来ます。
Sub cal01()
y = InputBox("何年分?")
m = InputBox("何月分?")
l=1
Cells(l, 2) = y & "/" & m
Cells(l, 3) = "月カレンダー "
a = "日月火水木金土"
'-------
For i = 1 To 7
Cells(l+1, i) = Mid(a, i, 1)
Next i
月末 = DateSerial(y, m + 1, 1) - 1
月末日 = Day(月末)
l = 3
'----
For i = 1 To 月末日
日 = DateSerial(y, m, i)
'---日曜
If Weekday(日) = 1 Then
l = l + 1
Cells(l, Weekday(日)).Interior.ColorIndex = 6
End If
'---土曜
If Weekday(日) = 7 Then
Cells(l, Weekday(日)).Interior.ColorIndex = 7
End If
'---
Cells(l, Weekday(日)) = i
Next i
'------編集(フォント・罫線・列幅など設定。省略)
End Sub
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/10/16 16:56

マクロでということなので、プログラムを書きます。


分からない部分等ありましたら、補足で質問してください。

(1)まずシート名[祝日]を作りA1セルに
**************この下から**************
月,日,週,曜日,(1:月曜日)
1,1,,,正月
1,,2,1,成人の日
2,11,,,建国記念日
3,21,,,春分の日
4,29,,,みどりの日
5,3,,,憲法記念日
5,4,,,国民の休日
5,5,,,子供の日
7,20,,,海の日
9,15,,,敬老の日
9,23,,,秋分の日
10,,2,1,体育の日
11,3,,,文化の日
11,23,,,勤労感謝の日
12,23,,,天皇誕生日
**************この上まで**************
をコピーし、「データ」→「区切り位置」→「カンマやタブなどの・・・」オプションボタンがチェックされているのを確認し
→「次へ」→「カンマ」チェックボックスをチェックし→「完了」
これは祝日のデータが変更される事を考慮し、シートに作りました。
春分の日、秋分の日は、日が変動するので注意してください(ここでは固定になっています)
春分、秋分の式は探せばあると思いますが、国が決めた日が優先されるそうなので
私には、どうしようもありません。
だいたいこの日あたりだと思います。
(2)標準モジュールへ
Sub カレンダー作成()

wk_year = Range("A1")
'シートチェック
For Each sh In Sheets
If (sh.Name = wk_year & "年") Then
MsgBox wk_year & "年は既に作成されています。" & Chr(13) & "再度作成する場合は、シートを削除してください"
Exit Sub
End If
Next sh

'シート作成
Sheets.Add
ActiveSheet.Name = wk_year & "年"

'月タイトル表示セル
monthcell = Array("A4", "I4", "Q4", "A14", "I14", "Q14", "A24", "I24", "Q24", "A34", "I34", "Q34")
'月ごとの日曜日の表示セル
daycell = Array("A5", "I5", "Q5", "A15", "I15", "Q15", "A25", "I25", "Q25", "A35", "I35", "Q35")

For i = 1 To 12 '月分
'月末の日付取得
For j = 31 To 28 Step -1
If (IsDate(wk_year & "/" & i & "/" & j)) Then
max_day = j
Exit For
End If
Next j
'月初めの曜日取得
wk_week = Weekday(wk_year & "/" & i & "/1")

'月表示
Range(monthcell(i - 1)) = StrConv(i, vbWide) & "月"
'曜日表示
For j = 1 To 7
With Range(daycell(i - 1)).Offset(0, j - 1)
.Value = Choose(j, "日", "月", "火", "水", "木", "金", "土")
.HorizontalAlignment = xlCenter
.ColumnWidth = 3
Select Case j - 1
Case 0 '日曜日
.Font.ColorIndex = 3 '赤
Case 6 '土曜日
.Font.ColorIndex = 5 '青
End Select
End With
Next j
'日表示
offsetrow = 1
offsetcol = wk_week - 1
For j = 1 To max_day
With Range(daycell(i - 1)).Offset(offsetrow, offsetcol)
.Value = j
Select Case offsetcol
Case 0 '日曜日
.Font.ColorIndex = 3 '赤
Case 6 '土曜日
.Font.ColorIndex = 5 '青
Case Else
If (hurikae = 1) Then
.Font.ColorIndex = 3 '赤
Else
.Font.ColorIndex = 0 '黒
End If
End Select
'祝日チェック
hurikae = 0 '振替休日用フラグ
For k = 2 To Worksheets("祝日").Cells(Rows.Count, 1).End(xlUp).Row
If (i = Worksheets("祝日").Cells(k, 1)) Then
If (Worksheets("祝日").Cells(k, 2) <> "") Then '日付指定
If (j = Worksheets("祝日").Cells(k, 2)) Then
If (offsetcol = 0) Then
hurikae = 1
Else
.Font.ColorIndex = 3 '赤
End If
Exit For
End If
Else '曜日指定
If ((wk_week > Worksheets("祝日").Cells(k, 4) And _
offsetrow = Worksheets("祝日").Cells(k, 3) + 1) Or _
(wk_week <= Worksheets("祝日").Cells(k, 4) And _
offsetrow = Worksheets("祝日").Cells(k, 3) + 1)) Then
If (offsetcol = Worksheets("祝日").Cells(k, 4)) Then
.Font.ColorIndex = 3 '赤
Exit For
End If
End If
End If
ElseIf (i < Worksheets("祝日").Cells(k, 1)) Then
Exit For
End If
Next k
End With
If (offsetcol = 6) Then
offsetrow = offsetrow + 1
offsetcol = 0
Else
offsetcol = offsetcol + 1
End If
Next j
Next i
End Sub
を貼り付けてください。
(3)Sheet1(他のシートでも構いません)
ボタンを貼り付けてマクロ名「カレンダー作成」を選択し、「OK」を押す。

(4)A1セルに年(例:2003)を入力しボタンを押す。

以上で1つのシートに3×4のカレンダーができると思います。
なるべく変更しそうな個所にはコメントを入れましたが、修正したい時に、わからない部分は、質問してください。
もっと、スマートに書ける方もいるかもしれませんが、参考にしてみてください。
    • good
    • 0
この回答へのお礼

とても詳しいご回答ありがとうございます。さっそくやってみます。

お礼日時:2002/10/16 16:55

No.4のものです。


(1)の方法で
http://www.benri.com/calendar/2003.html
のようなカレンダーをコピー、形式を選択して貼り付けでもできます。
    • good
    • 0

どのように作りたいのでしょう?



(1)すべて手作業で、色の変更や図の挿入の仕方を教えて欲しい。
(2)関数で作るようにしたい(指定セルに年を入れると内容が変化する。)
(3)マクロで処理する。(指定セルに年を入れ、ボタンを押すとカレンダーが作成される

(2)はNo.2の方のホームページを参照してもできると思います。
   ただ、祝日などは、手作業になるような気がしますが
   (中には、1998年固定のものや、1-2-3で作成した物もありましたが)
(3)は作ってみました。
   といっても祝日を考慮に入れて土日の色を変えたシンプルなものです。
   絵は手作業で入れて頂かないといけませんが・・・

もし、マクロでということでしたら教えてください。

この回答への補足

ご回答ありがとうございます。(3)のマクロで作ってみたいと思います。よろしくお願いいたします。

補足日時:2002/10/16 00:56
    • good
    • 0
    • good
    • 0

適当な枠を作って数字を入れるだけでできますよ。


色はフォントの色を変えるだけです。
絵を入れたければ図の挿入でできます。

質問があまりに漠然なのですが,要は手作業で作成する手間は有りますが,何も難しいことはないですよ。
(カレンダー作成ソフトのような手軽さを期待しているのならちょっとExcelでは無理です。)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2002/10/16 16:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

gooドクター

人気Q&Aランキング