No.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行に置き換えられます。
参考になりました。
No.6
- 回答日時:
ご参考に祝日を表示していないカレンダーのプログラムを載せます。
土日色づけ。まず最小限短くを心がけました。祝日を表示するといかに長くなるか分かります。各月を下に増やし、年間カレンダーにするのは、下記の行を示す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
No.5
- 回答日時:
マクロでということなので、プログラムを書きます。
分からない部分等ありましたら、補足で質問してください。
(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のカレンダーができると思います。
なるべく変更しそうな個所にはコメントを入れましたが、修正したい時に、わからない部分は、質問してください。
もっと、スマートに書ける方もいるかもしれませんが、参考にしてみてください。
No.4
- 回答日時:
No.3
- 回答日時:
どのように作りたいのでしょう?
(1)すべて手作業で、色の変更や図の挿入の仕方を教えて欲しい。
(2)関数で作るようにしたい(指定セルに年を入れると内容が変化する。)
(3)マクロで処理する。(指定セルに年を入れ、ボタンを押すとカレンダーが作成される
(2)はNo.2の方のホームページを参照してもできると思います。
ただ、祝日などは、手作業になるような気がしますが
(中には、1998年固定のものや、1-2-3で作成した物もありましたが)
(3)は作ってみました。
といっても祝日を考慮に入れて土日の色を変えたシンプルなものです。
絵は手作業で入れて頂かないといけませんが・・・
もし、マクロでということでしたら教えてください。
No.2
- 回答日時:
WEB検索で「エクセル カレンダー」で検索してみてください。
http://www.portnet.ne.jp/~suga16/JLink/soft/cale …
http://www.dec.sakura.ne.jp/~taicho/t-pies/downl …
http://www.kasei.ac.jp/~student/report97/ouyou2_1/
http://www.f6.dion.ne.jp/~kon8/ouyou/reson2.html
http://homepage1.nifty.com/tabotabo/calen.htm
http://homepage3.nifty.com/minuet/excel1.htm
http://www.epark.co.jp/pcmake/vol-08.htm
十分読んでいませんが、参考にはなるでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 日用品・生活雑貨 小冊子の製本 1 2022/08/29 09:02
- Excel(エクセル) エクセルの条件付き書式について エクセルでカレンダーを作りました。縦に日付が並んでいて、横にスケジュ 3 2022/10/10 15:32
- その他(プログラミング・Web制作) 出務表のwebページを作りたいです 3 2022/04/05 15:35
- Excel(エクセル) エクセルでカレンダーを作りたい 5 2023/05/16 07:32
- Excel(エクセル) Excelで東証のカレンダーを作りたい 6 2022/12/30 20:55
- その他(クラウドサービス・オンラインストレージ) Googleカレンダーの予定の色を変えたい、文字色を変えたい。 1 2022/10/18 21:43
- Visual Basic(VBA) excel2016でリストからカレンダーに内容を反映させたいです 2 2022/10/27 15:32
- アニメ 何かしらのアニメでA5よりも小さいサイズに1年間が全て入ってるカレンダー(2023)を探しています 3 2022/12/07 02:45
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- ホームページ作成・プログラミング ホームページ月額更新管理費用 4 2023/04/22 12:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
土曜は平日?
-
父母の日はただの日曜
-
本日(5/6)は祝日の振替休日です...
-
国旗掲揚日を教えてください
-
金土祝前って、日曜は入るんで...
-
電子カレンダーで日本の祝日に...
-
案内状に記載する日付の書き方
-
応答日の計算
-
平均的な睡眠時間はどれくらい...
-
土日祝日以外の万年カレンダー...
-
なぜ6月は祝日がないんですか?...
-
出勤日数を数える関数を教えて...
-
outlookの祝日設定
-
エクセルで国民の祝日を調べる...
-
岡山で祝日営業の病院
-
ゴールデンウイーク中の昭和の...
-
2024年のGoogleカレンダーについて
-
勤労感謝の日は何故第4月曜日に...
-
ゴールデンウィークに休まず働...
-
中々治療が上手くいかずいつ ど...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
案内状に記載する日付の書き方
-
金土祝前って、日曜は入るんで...
-
土曜は平日?
-
ゴールドジムのウィークエンド...
-
Excel 2ヶ月後の日付(土日祝...
-
2024年のGoogleカレンダーについて
-
GW以降と6月に祝日がないことを...
-
祝日って、ごみ収集もお休みな...
-
父母の日はただの日曜
-
GWって、祝日になりますか? 会...
-
土日祝日以外の万年カレンダー...
-
EXCEL関数(土日祝日自動色分け)
-
電子カレンダーで日本の祝日に...
-
国旗掲揚日を教えてください
-
5/6日は振替休日になっています...
-
11月23日木曜・勤労感謝の日(...
-
いいかげん
-
Excel2016 特定の曜日のみ表示...
-
DELLのデスクトップPC (Optiple...
-
Find関数で日付を検索した時に...
おすすめ情報