Excel VBA 質問スレッド №1990 (解決済)
横型カレンダー作成と色替えを同時に実行したい
投稿者 : けろ 投稿日時 : 2024/08/13(Tue) 18:04:22 OS : Windows 10 EXCEL : Excel 2013
何度も何度もすみません。
皆さまにご協力していただき、作ったものを合わせてみましたが、うまく判定されない為、どこが悪いのか教えてください。
2行目の日付行、3行目の曜日行、それぞれの最終列の+1列の場所に、インプットボックスに入力された数字(日数分)を繰り返して横に向かってカレンダーを作成。
1列追加したごとに、色替えを実施したいのですが、判定が謎な位置で色替えされてしまいます。
何度も何度もすみません。
皆さまにご協力していただき、作ったものを合わせてみましたが、うまく判定されない為、どこが悪いのか教えてください。
2行目の日付行、3行目の曜日行、それぞれの最終列の+1列の場所に、インプットボックスに入力された数字(日数分)を繰り返して横に向かってカレンダーを作成。
1列追加したごとに、色替えを実施したいのですが、判定が謎な位置で色替えされてしまいます。
Sub カレンダー作成() Dim ws_1 As Worksheet, ws_2 As Worksheet Dim i As Long, j As Long Dim inp As Long Dim lastcolumn_1 As Long, lastrow_2 As Long Dim newDate As Date Dim targetDate As Date Dim checkCode As Integer Set ws_1 = Worksheets("ガントチャート") Set ws_2 = Worksheets("祝日") lastcolumn_1 = ws_1.Cells(2, Columns.Count).End(xlToLeft).Column lastrow_2 = ws_2.Cells(Rows.Count, 1).End(xlUp).Row newDate = DateAdd("d", 1, CDate(Cells(2, lastcolumn_1))) ' lastcolumn_1の数字の1日後取得 On Error Resume Next inp = CInt(InputBox("カレンダーに追加したい日数を入力してください")) ' インプットボックスの文字列を数値に Application.ScreenUpdating = False For i = 1 To inp ws_1.Cells(2, lastcolumn_1 + i).Value = DateAdd("d", i, CDate(Cells(2, lastcolumn_1))) '日付の行に日付をinp日分足していく ws_1.Cells(2, lastcolumn_1 + i).NumberFormatLocal = ws_1.Cells(2, lastcolumn_1).NumberFormatLocal ws_1.Cells(3, lastcolumn_1 + i).Value = DateAdd("d", i, CDate(Cells(3, lastcolumn_1))) '曜日の行に日付を落とし込む(ユーザー書式設定で曜日に変更している) checkCode = 0 targetDate = ws_1.Cells(2, lastcolumn_1).Value If Format(targetDate, "aaa") = "日" Then '日曜日なら、 checkCode = 1 ws_1.Range(ws_1.Cells(2, lastcolumn_1), ws_1.Cells(3, lastcolumn_1)).Interior.Color = RGB(252, 228, 214) End If If Format(targetDate, "aaa") = "土" Then '土曜日なら、 checkCode = 1 ws_1.Range(ws_1.Cells(2, lastcolumn_1), ws_1.Cells(3, lastcolumn_1)).Interior.Color = RGB(221, 235, 247) End If For j = 1 To lastrow_2 If targetDate = ws_2.Cells(j, 1).Value Then '祝日なら、 checkCode = 1 ws_1.Range(ws_1.Cells(2, lastcolumn_1), ws_1.Cells(3, lastcolumn_1)).Interior.Color = RGB(252, 228, 214) End If Next j If checkCode = 1 Then '土・日・祝日のいずれかなら、 ws_1.Range(ws_1.Cells(4, lastcolumn_1), ws_1.Cells(53, lastcolumn_1)).Interior.Color = RGB(242, 242, 242) End If Next i Application.ScreenUpdating = True End Sub
スポンサーリンク
[返信 1] Re : 横型カレンダー作成と色替えを同時に実行したい
投稿者 : けろ 投稿日時 : 2024/08/13(Tue) 18:40:44
すみません。
追記になりますが、色替えをしたいのはinpでカレンダーを追加したときに、追加した分だけ実行したいです。
すみません。
追記になりますが、色替えをしたいのはinpでカレンダーを追加したときに、追加した分だけ実行したいです。
[返信 2] Re : 横型カレンダー作成と色替えを同時に実行したい
投稿者 : ピロリ 投稿日時 : 2024/08/13(Tue) 18:55:51
■[返信 1] けろさん(2024-08-13 18:40:44)の記事
> ・・・色替えをしたいのはinpでカレンダーを追加したときに、追加した分だけ実行したいです。
土日祝の判定も、色替えも、追加した列(lastcolumn_1 + i)を処理していないですよ。
ループ中、ずっと追加した列の左側の列(lastcolumn_1)だけを処理し続けているだけですよ。
■[返信 1] けろさん(2024-08-13 18:40:44)の記事
> ・・・色替えをしたいのはinpでカレンダーを追加したときに、追加した分だけ実行したいです。
土日祝の判定も、色替えも、追加した列(lastcolumn_1 + i)を処理していないですよ。
ループ中、ずっと追加した列の左側の列(lastcolumn_1)だけを処理し続けているだけですよ。
[返信 3] Re : 横型カレンダー作成と色替えを同時に実行したい
投稿者 : けろ 投稿日時 : 2024/08/13(Tue) 19:22:58
ピロリ様
そうでしたすみません。
せっかく1日追加してもずっと最初に読み込んだ最終列を判定しておりました。
何でそこに気づけなかったのか、こんな事で質問してしまって情けないです。
+ i を入れたところ全て解決しました。
ありがとうございます。
■[返信 2] ピロリさん(2024-08-13 18:55:51)の記事
> ■[返信 1] けろさん(2024-08-13 18:40:44)の記事
> > ・・・色替えをしたいのはinpでカレンダーを追加したときに、追加した分だけ実行したいです。
> 土日祝の判定も、色替えも、追加した列(lastcolumn_1 + i)を処理していないですよ。
> ループ中、ずっと追加した列の左側の列(lastcolumn_1)だけを処理し続けているだけですよ。
>
ピロリ様
そうでしたすみません。
せっかく1日追加してもずっと最初に読み込んだ最終列を判定しておりました。
何でそこに気づけなかったのか、こんな事で質問してしまって情けないです。
+ i を入れたところ全て解決しました。
ありがとうございます。
■[返信 2] ピロリさん(2024-08-13 18:55:51)の記事
> ■[返信 1] けろさん(2024-08-13 18:40:44)の記事
> > ・・・色替えをしたいのはinpでカレンダーを追加したときに、追加した分だけ実行したいです。
> 土日祝の判定も、色替えも、追加した列(lastcolumn_1 + i)を処理していないですよ。
> ループ中、ずっと追加した列の左側の列(lastcolumn_1)だけを処理し続けているだけですよ。
>
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2025-07-06 04:42:02 )