Option Explicit
Option Private Module

Private varSmallLarge As Variant, varLargeSmall As Variant

Sub Detail_Kaiseki() '複数解の有無、解析時間、エラーなどの結果を表示するためのモジュール Dim dblSL As Double, dblLS As Double, dblFirstTime As Double, dblSecondTime As Double Dim s As String, strResult As String, strSinTime As String Dim v As Variant, varDetail As Variant With Worksheets(1) v = .Range("B2:J10").Value varDetail = v dblFirstTime = Timer If Sudoku_Kaiseki(v, s, False) <> 0 Then MsgBox s, vbExclamation + vbOKOnly: Exit Sub End If dblSecondTime = Timer dblSL = dblSecondTime - dblFirstTime varSmallLarge = v v = varDetail dblFirstTime = Timer If Sudoku_Kaiseki(v, s, True) <> 0 Then MsgBox s, vbExclamation + vbOKOnly: Exit Sub End If dblSecondTime = Timer dblLS = dblSecondTime - dblFirstTime varLargeSmall = v If Check_Equal() Then strResult = "解:一意のみ" Else strResult = "解:複数有り" If dblSL < dblLS Then strSinTime = CStr(dblSL) Else strSinTime = CStr(dblLS) MsgBox "解析時間:" & Left$(strSinTime, 6) & "秒" & vbCrLf & strResult, vbInformation + vbOKOnly, "解析終了" .Range("B2:J10").Value = v .Range("M2:U10").Value = varDetail End With End Sub
Public Function Check_Equal() As Boolean '複数解チェック Dim i As Long, j As Long For i = 1 To 9 For j = 1 To 9 If varSmallLarge(i, j) <> varLargeSmall(i, j) Then Exit Function Next Next Check_Equal = True End Function
Sub Cells_Clear() Worksheets(1).Range("B2:J10,M2:U10").ClearContents End Sub
Sub Red_String() With Worksheets(1) .Range("B2:J10").Value = .Range("M2:U10").Value End With End Sub