マクロについてです。 部活の予定表をつくるときにマクロを使いたいのですが、分からなくなりました。 <やりたいこと> ①作業中のシート(シート名は○○月)を末尾にコピー
マクロについてです。 部活の予定表をつくるときにマクロを使いたいのですが、分からなくなりました。 <やりたいこと> ①作業中のシート(シート名は○○月)を末尾にコピー ②シート名を作業中の月+1月にする ③セルの一部を削除&変更 <やりたいことの条件> ②12月まで作ったら1月になるようにする ③書き換え→C2セルの値を+1する。ただし、13になるなら1にする ※C2は数字が、D2は月という文字が入力されています。 変更 →すべてのセルの塗りつぶしをなしにする 変更 →D6:I36、K6:AC36の値を削除 次月というボタンを作ってマクロを実行しようと思います。 ご教授お願いします。 Sub 予定表() ActiveSheet.Copy After:=Sheets(Sheets.Count) With ActiveSheet .Name = Month(DateAdd("m", 1, Date)) .Range("C2").Value = Year(DateAdd("m", 1, Date)) .Range("C2").Value = .Name .UsedRange.Interior.ColorIndex = xlNone .Range("D6:I36,K6:AC36").ClearContents End With End Sub というふうに教えていただいたのですが、うまくいきませんでした。 ご教授お願いします。
Visual Basic | Excel・42閲覧・50
ベストアンサー
以下のようなものでしょうか? ◆何年分保存のシートなのかわかりませんが、1週すると月が重なりますので「年月」としています。提示のものでいいのであれば、 .Name = Format(NewDate, "yy年m月") を .Name = Format(NewDate, "m月") にしてください。 ◆提示にある「.Range("C2").Value = .Name」はなにをしたいのか不明なので削除しました。 Private Sub 次月_Click() ''次月の日付を設定する。 Dim NewDate As Date With ActiveSheet NewDate = DateValue(.Range("C1").Value & "/" & .Range("C2").Value & "/01") ''既存日 NewDate = DateAdd("m", 1, NewDate) End With ''シートを最終位置にコピーする。 ActiveSheet.Copy After:=Sheets(Sheets.Count) ''シートを初期化する。 With ActiveSheet ''シート名を変更する。 ※13カ月以上の場合を考慮し、「yy年m月」とする。 .Name = Format(NewDate, "yy年m月") ''月を設定する。 .Range("C2").Value = Month(NewDate) ''表の色をクリアする。 .Range("A5:AC36").Interior.Color = xlNone ''固定セルの値をクリアする。 .Range("D6:I36,K6:AC36").ClearContents End With End Sub
追伸 年の更新はされないのですかね?されたいのであれば、 .Range(\u0022C1\u0022).Value = Year(NewDate) です。
質問者からのお礼コメント
できました!! ありがとうございました!!
お礼日時:1/26 18:32