For Row = row_start To l1 + row_start
For Column = col_start To l2 + col_start
If Cells(Row, Column).Value = Cells(2, Column).Value Or Cells(Row, Column).Value = Cells(Row, 2).Value Then
Cells(Row, Column).Interior.ColorIndex = 3
End If
Next Column
Next Row
这是我正在执行的宏的一部分。 My Row变量从5到33运行,Column变量从6到34运行。我在AA6和AA2中的值为824.6。同样,AB7和AB2中的824.8。 AC8和AC2中的值为825。等等......但是,只有AC8被涂成红色而不是其他颜色。我不明白错误在哪里。有人可以帮忙吗?提前谢谢!
答案 0 :(得分:0)
这些值是否完全您所声明的是什么,或者它们是否显示为圆形?
Value
属性将使用单元格中的实际值,而不是其显示的值。因此,使用一位小数格式化的824.6
和824.5999
是不同的值。
最好的办法是在可疑单元格之间设置一个消息框(或某个公式)。
例如,在下面的工作表中,A1为824.6
,B1的格式为数字,小数点后一位,设置为824.5999
。 C1格式为general并设置为=a1-b1
:
A B C
1 824.6 824.6 1E-04
至于如何解决这个问题(如果是问题),我相信单元格的Text
属性会显示在屏幕上。如果你使用它,它应该考虑单元格格式等。
您还可以使用以下内容:
MsgBox "diff = " & CStr(Range("b1").Value - Range("a1").Value)
除此之外,我建议您使用F8
单步执行宏(步入)并将单元格添加到您的监视列表中,以便您可以看到它们是什么。
答案 1 :(得分:0)
我不明白你代码中的l1
和l2
是什么?
作为测试,请使用硬编码值替换并尝试以下操作:
Sub xxx()
Dim row
Dim column
Dim row_start As Integer
Dim col_start As Integer
row_start = 5
col_start = 6
For row = row_start To 33
For column = col_start To 34
If Cells(row, column).Value = Cells(2, column).Value Or Cells(row, column).Value = Cells(row, 2).Value Then
Cells(row, column).Interior.ColorIndex = 3
End If
Next column
Next row
End Sub
找出正在发生的事情的最简单方法是将光标放在代码中并点击F8
然后不断点击F8
逐步完成循环。将以下两个表达式添加到Watch
窗口,以便您可以监控它们的值(不带引号),并希望找到不符合您标准的单元格: