![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
毎月21日~翌月20日までのシフト表を作成し、
VBAで日付を更新した上でコピーするマクロを作成しましたが
2か月ごとに19日までしか表示されないバグが出てしまい
どうしても原因がわからないので教えてください。
毎月C2~AG2まで21日~翌20日と表記されればokです
C2 には 日付
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
![「ExcelのVBAでシフト表を作っていま」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/e/543182113_631feb1033390/M.png)
No.1ベストアンサー
- 回答日時:
こんにちは
>毎月C2~AG2まで21日~翌20日と表記されればokです
ご提示のコードでは、D2以降に日付を入力している様には見えませんけれど、関数で表示しているってことでしょうか?
それで、余分になる翌月20日以降の列を非表示にしているってことなのかなぁ・・
(説明が無いし、図も見えないので勝手な推測ですけれど・・)
もしそうなら、ご提示のコードでは列を非表示にする処理しかしていないことが原因と思われます。
小の月の翌月を作成するのに、そのままシートをコピーして非表示の処理だけを行えば、もともと非表示になっている列は非表示のままですから。
2月の翌月(=3/21)にはもっと非表示のままになるのかな?
コードが正しいのなら、先に一旦表示にする処理を入れれば宜しいのでは?
余談ですが、もしも関数で日付を表示させているのなら、最終日がQ1セルにあるので、それ以降は空欄になるような式にしておけば良いのではないかとも思いますが・・
(関数では列は非表示にはできませんけれど・・)
例えば、D2セルに
=IFS(C2="","",C2+1>$Q$1,"",1,C2+1)
として、右方にフィルコピーしておくとか。
もしそれで済むのなら、マクロも
・シートをコピーし、名前を変更
・C2の日付を1か月後に
・必要な部分をクリア
の処理だけで済むようになるものと思います。
D2セルに
=IFS(C2="","",C2+1>$Q$1,"",1,C2+1)
として、右方にフィルコピーしC2の日付を1か月後にしてもうまくいきません
=IFS(C2="","",C2+1>$Q$1,"",1,C2+1)がうまく反映されませんでした
D2~AF2はそれぞれD2=C2+DAY(1)、E2=D2+DAY(1)のように
それぞれ左のセルに対して+DAY(1)をとるように運用していました
No.2
- 回答日時:
画像が不鮮明なのでよくわかりません。
gyazo.comを利用すると鮮明な画像がアップできます。
下記URLはそのサンプルです。(画像の内容は本件とは無関係です)
https://gyazo.com/f94ab002421b0b1c3eb9d3c3b6e7d2c3
gyazo.comへアップされてはいかがでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【再投稿】VBAのシフト表でバグが出て困っています 3 2022/09/24 08:29
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた 2 2023/03/06 23:57
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba TextBox1.ControlSourceに...
-
サブフォルダに格納されている...
-
VBA 別ブックからコピペしたい...
-
IF文、条件分岐の整理方法
-
Excel VBA 定義されたプロージ...
-
VBAコードのインデント表示
-
時間短縮のために、テキストフ...
-
【ExcelVBA】インデックスが有...
-
Outlookの「受信日時」「件名」...
-
Excel-VBAのmsgBox()の不思議
-
VBAの質問です、複数のテキスト...
-
重複確認
-
現在のブックを閉じないで、マ...
-
excelのVBAについて、以下のコ...
-
Excel VBA 選択範囲の罫線色の...
-
エクセルのマクロについて教え...
-
Excel 範囲指定スクショについ...
-
vba アクティブシートの名前変...
-
IEを使わないでhtmlテキストを...
-
Excel VBA マクロ あるフォルダ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAなくなるの?
-
VBAでCOPYを繰り返すと、処理が...
-
vba 削除
-
プログラミング
-
Excelのマクロについて教えてく...
-
Excelのマクロについて教えてく...
-
エクセルのVBAコードについて教...
-
久しぶりのプログラミング
-
ユーザーフォームに別シートか...
-
エクセルVBAコードで教えて下さ...
-
VBA 別ブックからコピペしたい...
-
ExcelのVBAコードについて教え...
-
VBAコードについて教えてくださ...
-
vba アクティブシートの名前変...
-
Excelのマクロについて教えてく...
-
エクセルVBA
-
Geogebraの操作方法について
-
マクロの記録を使用したマクロ...
-
Excel(M365) Vlookup/セル反転(...
-
Excel 範囲指定スクショについ...
おすすめ情報