原紙を作り、1月から12月までシートを最後尾に追加した後に、
シートのタイトルもシート名と同じにしてスケジュールを作成
Dim myWS As Object
Dim InputName As String
Dim i As Integer
Dim buf As String
InputData: ’<エラーでここに戻る>
’<シート名を「26.1」と入力>
InputName = Application.InputBox(Prompt:="シート名を入力してください", Title:="新規")
'<何も入力せずOKの場合、処理を終わりにします。>
If InputName = "" Then Exit Sub
'<キャンセルの場合、処理を終わりにします。>
If InputName = "False" Then Exit Sub
'<全角が混じっている場合に半角へ変換します。>
InputName = StrConv(InputName, vbNarrow)
'<同じワークシート名がないか確認します。>
For Each myWS In Sheets
If myWS.Name = InputName Then
MsgBox "この名前は既に使われています。再入力してください。"
GoTo InputData
End If
Next
’<最後尾にシートが追加>
ActiveSheet.Copy After:=Sheets(Sheets.Count)
'<追加されたワークシートに入力された名前を付けます。>
ActiveSheet.Name = InputName ’<シート名は:26.1>
'<これをシリアル値にするため、Replaceで.(カンマ)の区切りを/(スラッシュ)に変換
’&の後ろの1は1日の意味
buf = Replace(InputName, ".", "/") & "/1"
’26/1/1になるが、これでは、西暦になるので
’Hを結合させる
buf = "H" & buf
’最後にシリアル値に変換して、セルに代入
Range("K3").Value = DateSerial(Year(buf), Month(buf), 1)