|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
我也编一个数独vb,工作表范围在a1:i9,是个初步的就是只有唯一答案的,代码也不算多算,参与一下吧!
Sub 九宫()
Dim a(1 To 9) As Integer
For Each d In Range("a1:i9")
If d = "" Then
n = n + 1
End If
Next
'所定区域的确定
For m = 1 To n
For i = 1 To 9
For j = 1 To 9
If Cells(i, j) = "" Then
x = (Int(i / 3.1)) * 3 + 1: y = (Int(j / 3.1)) * 3 + 1
For Each h In Union(Range(Cells(1, j), Cells(9, j)), Range(Cells(i, 1), Cells(i, 9)), Range(Cells(x, y), Cells(x + 2, y + 2)))
If h <> "" Then
a(h) = 1
End If
Next
'判断
If a(8) + a(7) + a(6) + a(5) + a(4) + a(3) + a(2) + a(1) + a(9) = 8 Then
For k = 1 To 9
If a(k) <> 1 Then
Cells(i, j) = k
p = p + 1
End If
Next
End If
End If
Erase a
Next
Next
Next
If p = n Then
MsgBox "ok"
Else: MsgBox "some err"
End If
End Sub
|
|