Sub Igeta_3(Work, LoopFlg) Dim I1Igeta, I2Igeta, I3Igeta As Integer Dim J1Igeta, J2Igeta, J3Igeta 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 7 '行で井桁を見つける For I2Igeta = I1Igeta + 1 To 8 For I3Igeta = I2Igeta + 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 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(I2Igeta, J), Igeta) > 0 And InStr(Work(I3Igeta, J), Igeta) > 0) Then Counter = Counter + 1 J1Igeta = J2Igeta J2Igeta = J3Igeta J3Igeta = J Else Counter = 10 Exit For End If End If Next J If Counter = 3 Then For I = 1 To 9 If I = I1Igeta Or I = I2Igeta Or I = I3Igeta Then Else S = Work(I, J1Igeta) S = Replace(S, Igeta, "") If S <> Work(I, J1Igeta) Then Work(I, J1Igeta) = S LoopFlg = "Igeta_3" End If S = Work(I, J2Igeta) S = Replace(S, Igeta, "") If S <> Work(I, J2Igeta) Then Work(I, J2Igeta) = S LoopFlg = "Igeta_3" End If S = Work(I, J3Igeta) S = Replace(S, Igeta, "") If S <> Work(I, J3Igeta) Then Work(I, J3Igeta) = S LoopFlg = "Igeta_3" End If End If Next I If LoopFlg <> "" Then Exit Sub End If Next Number Next I3Igeta Next I2Igeta Next I1Igeta For J1Igeta = 1 To 7 '列で井桁を見つける For J2Igeta = J1Igeta + 1 To 8 For J3Igeta = J2Igeta + 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 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, J2Igeta), Igeta) > 0 And InStr(Work(I, J3Igeta), Igeta) > 0) Then Counter = Counter + 1 I1Igeta = I2Igeta I2Igeta = I3Igeta I3Igeta = I Else Counter = 10 Exit For End If End If Next I If Counter = 3 Then For J = 1 To 9 If J = J1Igeta Or J = J2Igeta Or J = J3Igeta Then Else S = Work(I1Igeta, J) Work(I1Igeta, J) = Replace(S, Igeta, "") If S <> Work(I1Igeta, J) Then LoopFlg = "Igeta_3" End If S = Work(I2Igeta, J) Work(I2Igeta, J) = Replace(S, Igeta, "") If S <> Work(I2Igeta, J) Then LoopFlg = "Igeta_3" End If S = Work(I3Igeta, J) Work(I3Igeta, J) = Replace(S, Igeta, "") If S <> Work(I3Igeta, J) Then LoopFlg = "Igeta_3" End If End If Next J If LoopFlg <> "" Then Exit Sub End If Next Number Next J3Igeta Next J2Igeta Next J1Igeta End Sub