あらかじめ、指定日の勤務を予約できるようにします。
予約の指定方法行

追加される制約条件


VBAコード部 変更/追加点のみ
実行時に予約表(勤務を数値に置き換えた計算用の表)の内容を、変化させるセルの表に転記します。
(転記した値が、予約表と一致していること=予約は変更されない が制約条件)
'--------------------------------------
' コマンドボタン制御
'--------------------------------------
Private Sub cmdGo_Click()
'
' 全自動実行
'
Dim StTime As Date
Range("所要時間").Value = ""
StTime = Time
Do
cmdInit_Click '初期化
If SolverDialog(True) >= 3 Then Exit Do '中止?
If Val(Range("目的セル")) = 0 Then
cmdReallocate_Click '均等再配置
Exit Do
End If
Loop
'--------------------------------------
'終了
'--------------------------------------
Range("所要時間").Value = Time - StTime
MsgBox "処理終了!", , "終了"
End Sub
Private Sub 予約転記()
'
' 予約勤務を数値に変換して「変化させるセル」に転記
'
Application.ScreenUpdating = False '画面更新停止
Dim r As Integer, c As Integer
Dim Src
Src = Range("予約勤務")
With Range("変化させるセル")
For r = 1 To .Rows.Count
For c = 1 To .Columns.Count
If Src(r, c) <> "" Then
.Cells(r, c) = CStr(Src(r, c))
End If
Next c
Next r
End With
Application.ScreenUpdating = True '画面更新再開
End Sub
Private Sub cmdInit_Click() 'ソルバー実行
Range("変化させるセル").ClearContents
Call 予約転記
End Sub
次項では、予約勤務の入力チェック方法を考えます。