我将我的vba代码放在这里,向您显示到目前为止在该主题上的进展。该宏旨在用于在单击命令按钮时激活。
谢谢您的建议,很遗憾,我看不到标记的重复项是否可以解决我的问题。我会尽力澄清一下。在每个工作表中,在相同的范围内,有两个相同的9 * 9宽度和高度单元格块,并且每个单元格都填充有一个从1到9的单个数字。在两个工作表中,单元格的值也相同。我希望从代码中得到的结果是比较每个单元格中两个范围的每个值,如果它们全部匹配,则在msgbox中写入成功,否则失败。我尝试在定义每个范围后编写.Value,但这也不起作用。
我总是会遇到运行时错误13:类型不匹配。我猜这种类型的问题与我的值不是同一类型有关,但是我在每个声明的范围内只有数字。我已经搜索了这个问题,但是由于我似乎无法弄清这个问题的根源,我希望您可以解决我的困境。
Sub Check()
If Sheets("Sudoku").Range("B2:J10") = Sheets("Solution").Range("B2:J10") Then
MsgBox "Success!"
Else
MsgBox "Fail!"
End If
End Sub
任何回答将不胜感激! 谢谢大家的回答,我们终于提出了解决方案!如果有人对此感兴趣,我将其放在下面。它是Odatas版本的略微修改版本。
Sub Check()
Dim i As Integer
Dim j As Integer
For i = 2 To Sheets("Sudoku").Cells(Sheets("Sudoku").Rows.Count, "B").End(xlUp).Row
For j = 2 To Sheets("Sudoku").Cells(2, Sheets("Sudoku").Columns.Count).End(xlToLeft).Column
If Sheets("Sudoku").Cells(j, i).Value = Sheets("Megoldás").Cells(j, i).Value Then
Else
MsgBox ("Fail!")
Exit Sub
End If
Next
Next
MsgBox ("Success!")
End Sub
答案 0 :(得分:0)
您需要遍历所有值。
Sub Check()
Dim i As Integer
Dim j As Integer
For i = 1 To Sheets("Sudoku").Cells(.Rows.Count, "A").End(xlUp).Row
for j= 1 to Sheets("Sudoku")..Cells(1, .Columns.Count).End(xlToLeft).Column
If Sheets("Sudoku").Cells(j, i).value = Sheets("Solution").Cells(j, i).value Then
Else If
MsgBox("Fail")
Exit Sub
End If
Next
Next
MsgBox("Success")
End Sub