Excel VBA でシートを複製、名称変更、セルの値(日付)を変更・その1

会社で、営業さんの行動予定を毎日Excelの表を使って作成して、プリントアウトして貼りだしているんですが、
毎日の分をコピーして、
しかもシートの左上のセルにある日付を入力し直して…
という気が遠くなりそうな作業を(おばあちゃんが)しています。
時間のあるときにまとめて作成してくれているみたいなんですが、
メンバーが変わったりもするので
「せっかく作ってくれたんですが…」
みたいなことがよく起こります。

これを自動化しました。

こんな感じの表。

実際にはここに行き先が入ります。
塗りつぶしてあるのはメンバー名。

セルA2には日付。
セルB3にはIF関数がはいってて、A2の日付に連動します。

その下のA列にはメンバーとエリア。

一日ごとにシートが分かれていて、1ブックでひと月分。

今回は、シート"1日"を元に、その月の分を日付をいれて複製するように組みました。

Option Explicit
'---------- 基本仕様 ----------
' シートを末尾にコピーする
' シート名を変える
' A2の日付を変える
' 31日までループする

Const FIRST_DATE = "2012/12/1"      '開始日

Sub 予定表作成()
    
Dim i As Integer
Dim firstDay As Date
Dim myDate As Date

firstDay = FIRST_DATE
    
    '1から31までのループ
    For i = 1 To 30
        Worksheets("1日").Copy after:=Worksheets(Worksheets.Count)      '1日のコピーを末尾に作る
        Worksheets(Worksheets.Count).Name = i + 1 & "日"                'コピーしたシートの名前を変える
        
        myDate = DateAdd("d", i, firstDay)                              '日付を1日足して
        Range("A2").Value = myDate                                      'A2にいれこむ
    
    Next i
End Sub

ブックには"1日"のみを用意しておいて、マクロを実行します。

そうするとだーーーーっと31日まで作成されます。

1日は作成してあるので、
カウンタ変数が1は2日にあたります。
なので31日まで作成する時はカウンタ変数が30になります。

31日までない月の場合は、このカウンタ変数を書き換えないといけません。

たとえば開始日と終了日を入力したら
その分だけ作成する、という仕様だと
月の途中からも作れるしいいなぁと思います。

次のステップはそうしたい!!


あと、、はてな記法、ExcelVBAには対応してないんだね。。

※先生に添削してもらってコードを書きなおしたので、
別記します。
Excel VBA でシートを複製、名称変更、セルの値(日付)を変更・その2 - プログラミングお勉強記録