あらかじめ、指定日の勤務を予約できるようにします。
予約の指定方法行
追加される制約条件
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
次項では、予約勤務の入力チェック方法を考えます。