ブックコード
下記に変更してください。
'予定数を日毎に割当て
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
Dim lrow As Long
Dim lcol As Long
Dim s1 As String
nowbusy = True
'予定数
yoteisu = tget.Offset(0, -2)
'1日の数量
daysu = tget.Offset(0, -1)
'開始日
startday = tget
'最終日を取得
lastday = MonthLastDay(Worksheets("機種マスター").Range("L9"), Worksheets("機種マスター").Range("L10"))
lrow = Worksheets("機種マスター").Range(Worksheets("機種マスター").Range("L4")).Row
lcol = Worksheets("機種マスター").Range(Worksheets("機種マスター").Range("L4")).Column + 5
'全日数を空白にする
For i = 1 To lastday
tget.Offset(0, i) = ""
Next
If yoteisu > 0 And daysu > 0 And startday > 0 Then
Do
s1 = Cells(lrow, lcol + startday).ID
'土曜と日曜と祝日はパス
If s1 <> "土" And s1 <> "日" And s1 <> "祝" 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
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
シートのVBAコード
下記に変更してください。
'日付をセット
Private Sub ExDaySet()
Dim i As Integer
Dim s As String
Dim saijitu As String
Dim lastday As Integer
Dim tdate As Date
Dim ncol As Integer
Dim nrow As Integer
tdate = Format(Range("L9") & "/" & Range("L10") & "/1", "yyyy/mm/dd")
Worksheets(Sheets.Count).Select
Worksheets(Sheets.Count).Range(Range("L4")).Select
ActiveCell.Offset(columnOffset:=6).Activate
lastday = MonthLastDay(Range("L9"), Range("L10"))
For i = 1 To lastday
'国民の祝日か判定
saijitu = GetSaijituName(tdate)
If saijitu <> "" Then
'フォント色をセット
ActiveCell.Font.Color = Range("L8").Interior.Color
'祭日名のコメントを追加
ActiveCell.AddComment saijitu
ActiveCell.Comment.Visible = True
'追加したコメントを選択
Selection.Comment.Shape.Select True
'自動サイズにする
Selection.AutoSize = True
' コメントを非表示する
ActiveCell.Comment.Visible = False
ActiveCell.ID = "祝"
Else
'曜日の取得
s = GetWeekDay(tdate)
'文字のフォント色をセット
If s = "日" Then
ActiveCell.Font.Color = Range("L7").Interior.Color
ActiveCell.ID = "日"
ElseIf s = "土" Then
ActiveCell.Font.Color = Range("L6").Interior.Color
ActiveCell.ID = "土"
Else
ActiveCell.Font.Color = Range("L5").Interior.Color
End If
End If
'中央配置
ActiveCell.HorizontalAlignment = xlHAlignCenter
ActiveCell = i & "(" & s & ")"
tdate = tdate + 1
ActiveCell.Offset(columnOffset:=1).Activate
Next
Worksheets(Sheets.Count).Range(Range("L4")).Select
End Sub
実行結果の画面
[2007年5月の場合]
機種名:AIU-1512Bの場合、2日から割り振り、3(憲法記念日)と4(国民の祝日)と5(土)と6(日)は空白で数量がセットされていません。