シートのVBAコード
下記に変更してください。
'予定数を日毎に割当て
Private Sub ExSetYotei(tget As Range)
Dim yoteisu As Long
Dim daysu As Long
Dim startday As Long
Dim lastday As Integer
Dim i As Integer
Dim tdate As Date
Dim youbi As Integer
nowbusy = True
'予定数
yoteisu = tget.Offset(0, -2)
'1日の数量
daysu = tget.Offset(0, -1)
'開始日
startday = tget
'最終日を取得
lastday = MonthLastDay(Worksheets("機種マスター").Range("L9"), _
Worksheets("機種マスター").Range("L10"))
'全日数を空白にする
For i = 1 To lastday
tget.Offset(0, i) = ""
Next
If yoteisu > 0 And daysu > 0 And startday > 0 Then
'開始する曜日を取得
tdate = Format(Worksheets("機種マスター").Range("L9") & "/" & _
Worksheets("機種マスター").Range("L10") & "/" & startday, "yyyy/mm/dd")
youbi = Weekday(tdate)
Do
'土曜と日曜はパス
If youbi <> 1 And youbi <> 7 Then
If yoteisu - daysu > 0 Then
tget.Offset(0, startday) = daysu
yoteisu = yoteisu - daysu
ElseIf yoteisu > 0 Then
tget.Offset(0, startday) = yoteisu
yoteisu = 0
Else
Exit Do
End If
End If
'土曜日の場合
If youbi = 7 Then
youbi = 1
Else
youbi = youbi + 1
End If
startday = startday + 1
Loop Until startday > lastday
'最終日に余りがあればセット
If yoteisu > 0 Then
tget.Offset(0, lastday + 1) = yoteisu
Else
tget.Offset(0, lastday + 1) = ""
End If
End If
nowbusy = False
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim i As Integer
Dim rg As Range
'割当て中はパス
If nowbusy Then
Exit Sub
End If
For i = -3 To -1
'予定数 か 1日の数量 か 開始日 のセルが変更されたかチェック
If Target.Offset(0, i) = "予定" And Target.Offset(1, i) = "実績" Then
'開始日のセルに指定
Set rg = Target.Offset(0, i + 3)
'予定数を日毎に割当て
ExSetYotei rg
Exit For
End If
Next
End Sub
下記のVBAコードを追加してください。
Private nowbusy As Boolean
Private Sub Workbook_Open()
nowbusy = False
End Sub
実行結果の画面
機種名:AIU-1512Bの場合、1日から割り振り、3(土)と4(日)は空白で数量がセットされていません。
機種名:JK-KJ-788の場合、3日から割り振り、3(土)と4(日)は空白で数量がセットされていません。