0
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

这是我正在执行的宏的一部分。我的 Row 变量从 5 运行到 33,Column 变量从 6 运行到 34。我在 AA6 和 AA2 中的值为 824.6。同样,AB7 和 AB2 中的 824.8。AC8 和 AC2 中的 825 值。等等.. 但是,只有 AC8 被涂成红色,其他的则没有。我不明白错误在哪里。任何人都可以帮忙吗?提前致谢!

4

2 回答 2

0

我不明白你l1l2代码是什么?

作为测试,请用硬编码值替换并尝试以下操作:

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窗口中,以便您可以监视它们的值(不带引号)并希望找到不符合您的条件的单元格:

  1. “单元格(行,列)。值 = 单元格(2,列)。值”
  2. “单元格(行,列)。值 = 单元格(行,2)。值”
于 2013-06-26T06:41:47.410 回答
0

这些值是否正是您所说的,还是显示为四舍五入?

Value属性将使用单元格中的实际值,而不是它们的显示值。因此824.6824.5999用一位小数格式化是不同的值。

最好的办法是在可疑单元格之间放置一个消息框(或某处的公式)。

例如,在下面的表格中,A1 是824.6,B1 被格式化为带一位小数的数字并设置为824.5999。C1 被格式化一般并设置为=a1-b1

      A       B       C
1   824.6   824.6   1E-04

至于如何解决这个问题(如果是问题的话),我相信Text单元格的属性是屏幕上显示的内容。如果你使用它,它应该考虑到单元格格式等等。

你也可以使用类似的东西:

MsgBox "diff = " & CStr(Range("b1").Value - Range("a1").Value)

除此之外,我建议使用F8(step into) 逐步执行宏并将单元格添加到您的监视列表中,以便您查看它们是什么。

于 2013-06-26T06:32:21.507 回答