Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True '入力状態解除
If Not (Application.Intersect(Range("不可勤務"), Target) Is Nothing) Then
With frm不可勤務
.Show vbModeless
Worksheet_SelectionChange Target
End With
ElseIf Not (Application.Intersect(Range("出力"), Target) Is Nothing) Then
With frm勤務入力
.Show vbModeless
Worksheet_SelectionChange Target
End With
End If
End Sub
'--------------------------------------
' ワークシート制御
'--------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
' ワークシートセルの選択位置が変更された場合の処理
'
Dim MyCell As Range
Dim flg As Boolean
If IsAllIntersect(Range("不可勤務"), Target) Then
Call 不可勤務入力処理(Target)
ElseIf IsAllIntersect(Range("出力"), Target) Then
Call 手動勤務入力処理(Target)
Else
On Error Resume Next
Unload frm不可勤務
Unload frm勤務入力
On Error Goto 0
End If
End Sub
Private Function IsAllIntersect(RangA As Range, RangeB As Range) As Boolean
'
'全てが重なっているか?
'
Dim MyCell As Range
Dim flg As Boolean
flg = True
For Each MyCell In RangeB 'はみ出していたら処理しない
If Application.Intersect(RangA, MyCell) Is Nothing Then
flg = False
Exit For
End If
Next
IsAllIntersect = flg
End Function