ExcelのVBAでシフト表を作っていますが、バグが出て困っています
毎月21日~翌月20日までのシフト表を作成し、
VBAで日付を更新した上でコピーするマクロを作成しましたが
画像1枚目のように
2か月ごとに19日までしか表示されないバグが出てしまい
どうしても原因がわからないので教えてください。
毎月C2~AF2まで21日~翌20日と表記されればokです
C2 には 日付
D2~AF2までは D2=C2+DAY(1), E2=D2+DAY(1)....にように
左のセルに対して+DAY(1)を入れています
O1 には =C2
Q1 には DATE(YEAR($O$1),MONTH($O$1)+1,DAY(20))
がそれぞれ入っています
ソースコードも記しておきますので教えてください
------------------------------------
Sub sheetcopy()
Dim OldSheet As Worksheet
Worksheets(Worksheets.Count).Select
Set OldSheet = ActiveSheet
ActiveSheet.Copy After:=Worksheets(Worksheets.Count)
atama = DateAdd("m", 1, Range("C2").Value)
Range("C2").Value = atama
ActiveSheet.Name = Year(Range("Q1").Value) & "年" & Month(Range("Q1").Value) & "月"
Dim be As Date
Dim af As Date
be = Range("O1").Value
af = Range("Q1").Value
non = af - be
non = non + 4
Do While non < 34
Columns(non).Hidden = True
non = non + 1
Loop
Range("C4:AG6").ClearContents
Range("C7:AG9").ClearContents
Range("C10:AG12").ClearContents
Range("C13:AG40").ClearContents
Range("C13:AG40").Interior.Color = xlNone
End Sub
----------------------------------------------
前回の質問で
D2セルに
=IFS(C2="","",C2+1>$Q$1,"",1,C2+1)
として、右方にフィルコピーしておき
C2に1か月後の日付を入力するという回答をいただきましたが
うまくいきませんでした
D2セルに=IFS(C2="","",C2+1>$Q$1,"",1,C2+1)を入力しても反映されませんでした
No.3
- 回答日時:
No.1です。
お礼について。
>の意味がわかりかねます
>C2~M2までとの20~31日までと
>N2~AG2までの1日~20日のループ処理を2回行うということでしょうか?
その通りです。
N2~AG2までの1日~20日のループは何月であろうと常に日付は変わらない(年月と曜日は別)ですよね。
C2~M2までの20~31日は月により末日は変動しますし1日までは空白が存在するはず。
ループカウンタが末日を超えたらループを終了させれば良いかと。
まぁ見えないですが別回答がついているようなので、そちらがわかり易ければスル~して下さい。
No.2ベストアンサー
- 回答日時:
以下のように変更してください。
変更点1
>D2~AF2までは D2=C2+DAY(1), E2=D2+DAY(1)....にように
左のセルに対して+DAY(1)を入れています
これをD2~AG2まで、上記を行ってください。
変更点2
以下の行を追加してください。
追加開始~追加終了の間の行です。
atama = DateAdd("m", 1, Range("C2").Value)
Range("C2").Value = atama
ActiveSheet.Name = Year(Range("Q1").Value) & "年" & Month(Range("Q1").Value) & "月"
'追加開始
For wcol = 1 To 33
Columns(wcol).Hidden = False
Next
'追加終了
Dim be As Date
Dim af As Date
No.1
- 回答日時:
先の質問は見かけましたけどやり取りは見てなかったので既出の補足になるかもですが、
>2か月ごとに19日までしか表示されないバグが出てしまい
とは何月を指しているのかについては補足済みなのでしょうか?
済であればスル~して下さい。
>毎月C2~AF2まで21日~翌20日と表記されればokです
いっそC2から月末日までとAF2から逆順で1日まで2つのループじゃ格好良くもない?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelのVBAでシフト表を作っていますが、バグが出て困っています 2 2022/09/13 11:33
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) 【VBA】先月分の取得ができない理由が分かりません。 2 2022/04/24 11:16
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) EXCELのVBAについて 2 2023/07/05 17:17
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelのマクロについて教えてく...
-
Vba 実数および実数タイプの変...
-
ユーザーフォームに別シートか...
-
VBA レジストリの値の読み方に...
-
エクセルVBAについて
-
VBA listBoxから
-
ExcelのVBAコードについて教え...
-
VBA 複数条件の分岐処理の上手...
-
ExcelのVBAです。フォルダ内の...
-
VBAの計算で@が出てしまう件
-
VB.net(VB)で、フォームにExcel...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
VBAの質問になります Userform内で
-
VBAの質問になります メッセー...
-
Excel マクロについての相談
-
Vba SelStart、SelLen教えてく...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA 定義されたプロージ...
-
Excel-VBAのmsgBox()の不思議
-
【VBA】マクロの入ったファイル...
-
VBA 複数条件の分岐処理の上手...
-
現在のブックを閉じないで、マ...
-
VBAで各列の"+"と"o"の合計数を...
-
VBAに詳しい方教えてください。
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ユーザーフォームに別シートか...
-
エクセルのマクロについて教え...
-
ExcelVBA シート名を複数セルか...
-
エクセルのマクロについて教え...
-
VBA listBoxから
-
Excelのマクロについて教えてく...
-
エクセルのマクロについて教え...
おすすめ情報
回答ありがとうございます。
バグが出るのは11月、2023年1月と2月が19日までしか表示されません
2023年4月には17日しか表示されない上以降の翌月からずれてしまいます。
一応参照までにうまくいった月の画像を貼ります
あと
>毎月C2~AF2まで21日~翌20日と表記されればokです
>いっそC2から月末日までとAF2から逆順で1日まで2つのループじゃ格好良くもない?
の意味がわかりかねます
C2~M2までとの20~31日までと
N2~AG2までの1日~20日のループ処理を2回行うということでしょうか?