
毎月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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
初めてマクロを入力しますが、テキストとおりに入力したのに構文エラーです。修正を教えてください。
Visual Basic(VBA)
-
マクロを簡潔にしたい
Excel(エクセル)
-
【至急】 当方初心者です。 マクロについて知恵をお貸しください。 ★したい動作 ①リストE列2行目か
Visual Basic(VBA)
-
4
Excel VBA 大量のレコードからある列の重複数をカウントする方法?拡張編
Visual Basic(VBA)
-
5
マクロのコードを、少しでも削って短くしたい
Excel(エクセル)
-
6
複数セルに〇印をつけるマクロ
Visual Basic(VBA)
-
7
動かなくなってしまった古いVBAを動くようにしたい
Visual Basic(VBA)
-
8
vba メモリ節約
Visual Basic(VBA)
-
9
VBAでのフルパスの取得
Visual Basic(VBA)
-
10
Excel VBAでAA(BBB) → BBB.AA に置換したい
Visual Basic(VBA)
-
11
VBAの計算について
Visual Basic(VBA)
-
12
【VBAエラー】Nextに対するForがありません 対策について
Visual Basic(VBA)
-
13
Excel VBAのデバッグ
Visual Basic(VBA)
-
14
Excel VBA で End Subのところで「型が一致しません」のエラーとなります。
Visual Basic(VBA)
-
15
【VBA】印刷マクロのループ処理が反映されません
Visual Basic(VBA)
-
16
シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor
Visual Basic(VBA)
-
17
VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「"」付にならないよ
Visual Basic(VBA)
-
18
【マクロ】フォルダにファイルが1つも無い時に、ファイルがありませんとメッセージを表示する
Visual Basic(VBA)
-
19
Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、
Visual Basic(VBA)
-
20
VBA This Workbookモジュールを別ファイルにコピーする方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
このカテゴリの人気Q&Aランキング
-
4
VBA シート上にドロップダウン...
-
5
ユーザーフォームのラベルに時...
-
6
エクセルのエラーメッセージ「4...
-
7
Excel VBA 複数選択したリスト...
-
8
ユーザーフォームのラベルに日...
-
9
Application.ScreenUpdating = ...
-
10
VBA シートのボタン名を変更し...
-
11
PowerPoint VBA で画像の鮮明度...
-
12
Excel VBA ユーザーフォーム1...
-
13
数式が消える
-
14
【Excel VBA】指定行以降をクリ...
-
15
同じ作業を複数のシートに実行...
-
16
VBA 重複チェック後に値をワー...
-
17
実行時エラー 3265「要求された...
-
18
VBAでループ内で使う変数名を可...
-
19
VBA 1次元配列を2次元に追加する
-
20
VBA 変数名に変数を使用したい。
おすすめ情報
公式facebook
公式twitter