| 
    
     |  | 実行タイミング、日付の範囲、シートの範囲等が解らないので ActiveSheetのC2の日付から、其の月の月末までの日付までを
 ActiveSheet以降のシートのC2に、もしシートが無いならシートを追加して
 代入して行くサンプルを示します
 
 Option Explicit
 
 Public Sub Sample()
 
 '各シートの書き込み位置
 Const cstrPos As String = "C2"
 
 Dim i As Long
 Dim lngSheetNumb As Long
 Dim vntTop As Variant
 Dim dtmEnd As Date
 
 'ActiveSheetに就いて
 With ActiveSheet
 'C2の値を変数に取得
 vntTop = .Range(cstrPos).Value
 '変数の値が日付と認められ無いなら
 If Not IsDate(vntTop) Then
 '変数の値が文字列なら
 If VarType(vntTop) = vbString Then
 '半角に出きる全角を半角に変換
 vntTop = StrConv(vntTop, vbNarrow)
 '変数の中の"("を捜す
 i = InStr(1, vntTop, "(", vbTextCompare)
 '"("が有る場合
 If i <> 0 Then
 '"("拠り前の文字を取得
 vntTop = Left(vntTop, i - 1)
 '変数の値が日付と認められるなら
 If IsDate(vntTop) Then
 '変数の値をシリアル値とする
 vntTop = CDate(vntTop)
 Else
 'C2の値が日付では無いとする
 i = 0
 End If
 End If
 End If
 Else
 'C2の値が日付で有るとする
 i = 1
 End If
 'C2の値が日付では無いならSubを抜ける
 If i = 0 Then
 Exit Sub
 End If
 '月末の日付を変数に格納する
 dtmEnd = DateSerial(Year(vntTop), Month(vntTop) + 1, 0)
 'ActiveSheetのSheet番号を取得
 For i = 1 To Worksheets.Count
 If .Name = Worksheets(i).Name Then
 lngSheetNumb = i
 Exit For
 End If
 Next i
 End With
 
 'Worksheetsコレクションに就いて
 With Worksheets
 '先頭日付〜最終日付まで繰り返し
 For i = vntTop To dtmEnd
 'Sheet番号がコレクションの最大値を超えるなら
 If .Count < lngSheetNumb Then
 'コレクションにシートを追加
 .Add After:=.Item(.Count)
 End If
 'Sheet番号のC2に就いて
 With .Item(lngSheetNumb).Range(cstrPos)
 '書式を設定
 .NumberFormatLocal = "ggge""年""m""月""d""日(""aaa"")"""
 '日付をC2に代入
 .Value = i
 End With
 'Sheet番号を更新
 lngSheetNumb = lngSheetNumb + 1
 Next i
 End With
 
 Beep
 MsgBox "処理が終了しました"
 
 End Sub
 
 
 |  |