毎月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
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 SelStart、SelLen教えてく...
-
【VBA】マクロの入ったファイル...
-
A列に記載されているフォルダ...
-
VBA listBoxから
-
ExcelVBA シート名を複数セルか...
-
現在のブックを閉じないで、マ...
-
Outlookの「受信日時」「送信者...
-
ユーザーフォームに別シートか...
-
VBAコンボボックスで選択した値...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
Outlookの「受信日時」「件名」...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
Excelのマクロでワードのテキス...
-
【ExcelVBA】インデックスが有...
-
VBA 別ブックからコピペしたい...
-
VBA実行後に元のセルに戻りたい
-
VBAに詳しい方教えてください。
-
エクセルのマクロについて教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのコードを教えてください
-
【ExcelVBA】インデックスが有...
-
ExcelVBA シート名を複数セルか...
-
エクセルvbaについて
-
エクセルのマクロについて教え...
-
【VBA】マクロの入ったファイル...
-
VBA UserFormからの転記で
-
エクセルVBAの配列について
-
Excelで「Ctrl+c」、「Ctrl+v...
-
VBAコードについて教えてくださ...
-
ExcelのVBAコードについて教え...
-
Excel マクロについての相談
-
VBAで質問があります
-
VBAコードについて
-
【ExcelVBA】VBA実行でダイアロ...
-
Excel関数またはVBAでの質問に...
-
ExcelのVBAコードについて教え...
-
ExcelのVBAコードについて教え...
-
ExcelのVBAコードについて教え...
-
Outlookの「受信日時」「件名」...
おすすめ情報