Sub Igeta_4(Work, LoopFlg) Dim I1Igeta, I2Igeta, I3Igeta, I4Igeta As Integer Dim J1Igeta, J2Igeta, J3Igeta, J4Igeta As Integer Dim I, J As Integer Dim Number As Integer Dim Igeta As Integer Dim Counter As Integer Dim S As String If LoopFlg <> "" Then Exit Sub '確定文字がすでに見つかっているのでこのサブルーチンは実施しない For I1Igeta = 1 To 6 '行で井桁を見つける For I2Igeta = I1Igeta + 1 To 7 For I3Igeta = I2Igeta + 1 To 8 For I4Igeta = I3Igeta + 1 To 9 For Number = 1 To 9 Igeta = Number Counter = 0 For J = 1 To 9 If InStr(Work(I1Igeta, J), Igeta) > 0 Or InStr(Work(I2Igeta, J), Igeta) > 0 Or InStr(Work(I3Igeta, J), Igeta) > 0 Or InStr(Work(I4Igeta, J), Igeta) > 0 Then If (InStr(Work(I1Igeta, J), Igeta) > 0 And InStr(Work(I2Igeta, J), Igeta) > 0) Or (InStr(Work(I1Igeta, J), Igeta) > 0 And InStr(Work(I3Igeta, J), Igeta) > 0) Or (InStr(Work(I1Igeta, J), Igeta) > 0 And InStr(Work(I4Igeta, J), Igeta) > 0) Or (InStr(Work(I2Igeta, J), Igeta) > 0 And InStr(Work(I3Igeta, J), Igeta) > 0) Or (InStr(Work(I2Igeta, J), Igeta) > 0 And InStr(Work(I4Igeta, J), Igeta) > 0) Or (InStr(Work(I3Igeta, J), Igeta) > 0 And InStr(Work(I4Igeta, J), Igeta) > 0) Then Counter = Counter + 1 J1Igeta = J2Igeta J2Igeta = J3Igeta J3Igeta = J4Igeta J4Igeta = J Else Counter = 10 Exit For End If End If Next J If Counter = 4 Then For I = 1 To 9 If I = I1Igeta Or I = I2Igeta Or I = I3Igeta Or I = I4Igeta Then Else S = Work(I, J1Igeta) S = Replace(S, Igeta, "") If S <> Work(I, J1Igeta) Then Work(I, J1Igeta) = S LoopFlg = "Igeta_4" End If S = Work(I, J2Igeta) S = Replace(S, Igeta, "") If S <> Work(I, J2Igeta) Then Work(I, J2Igeta) = S LoopFlg = "Igeta_4" End If S = Work(I, J3Igeta) S = Replace(S, Igeta, "") If S <> Work(I, J3Igeta) Then Work(I, J3Igeta) = S LoopFlg = "Igeta_4" End If S = Work(I, J4Igeta) S = Replace(S, Igeta, "") If S <> Work(I, J4Igeta) Then Work(I, J4Igeta) = S LoopFlg = "Igeta_4" End If End If Next I If LoopFlg <> "" Then Exit Sub End If Next Number Next I4Igeta Next I3Igeta Next I2Igeta Next I1Igeta For J1Igeta = 1 To 6 '列で井桁を見つける For J2Igeta = J1Igeta + 1 To 7 For J3Igeta = J2Igeta + 1 To 8 For J4Igeta = J3Igeta + 1 To 9 For Number = 1 To 9 Igeta = Number Counter = 0 For I = 1 To 9 If InStr(Work(I, J1Igeta), Igeta) > 0 Or InStr(Work(I, J2Igeta), Igeta) > 0 Or InStr(Work(I, J3Igeta), Igeta) > 0 Or InStr(Work(I, J4Igeta), Igeta) > 0 Then If (InStr(Work(I, J1Igeta), Igeta) > 0 And InStr(Work(I, J2Igeta), Igeta) > 0) Or (InStr(Work(I, J1Igeta), Igeta) > 0 And InStr(Work(I, J3Igeta), Igeta) > 0) Or (InStr(Work(I, J1Igeta), Igeta) > 0 And InStr(Work(I, J4Igeta), Igeta) > 0) Or (InStr(Work(I, J2Igeta), Igeta) > 0 And InStr(Work(I, J3Igeta), Igeta) > 0) Or (InStr(Work(I, J2Igeta), Igeta) > 0 And InStr(Work(I, J4Igeta), Igeta) > 0) Or (InStr(Work(I, J3Igeta), Igeta) > 0 And InStr(Work(I, J4Igeta), Igeta) > 0) Then Counter = Counter + 1 I1Igeta = I2Igeta I2Igeta = I3Igeta I3Igeta = I4Igeta I4Igeta = I Else Counter = 10 Exit For End If End If Next I If Counter = 4 Then For J = 1 To 9 If J = J1Igeta Or J = J2Igeta Or J = J3Igeta Or J = J4Igeta Then Else S = Work(I1Igeta, J) Work(I1Igeta, J) = Replace(S, Igeta, "") If S <> Work(I1Igeta, J) Then LoopFlg = "Igeta_4" End If S = Work(I2Igeta, J) Work(I2Igeta, J) = Replace(S, Igeta, "") If S <> Work(I2Igeta, J) Then LoopFlg = "Igeta_4" End If S = Work(I3Igeta, J) Work(I3Igeta, J) = Replace(S, Igeta, "") If S <> Work(I3Igeta, J) Then LoopFlg = "Igeta_4" End If S = Work(I4Igeta, J) Work(I4Igeta, J) = Replace(S, Igeta, "") If S <> Work(I4Igeta, J) Then LoopFlg = "Igeta_4" End If End If Next J If LoopFlg <> "" Then Exit Sub End If Next Number Next J4Igeta Next J3Igeta Next J2Igeta Next J1Igeta End Sub