比较两个不同工作表中的两个单元格

时间:2014-08-04 14:20:52

标签: excel vba excel-vba

在比较两个不同工作表中的两个单元格时,我不断收到以下错误消息:

运行时错误'1004' 应用程序定义或对象定义的错误

For j = 2 To 10
            For k = 1 To 26
               If Not Worksheets("Sheet1").cells(j, k).Text = Worksheets("Sheet2").cells(j, k).Text Then
                    Worksheets("Sheet1").cells(j, k).Text = Worksheets("Sheet2").cells(j, k).Text
                    Worksheets("Sheet1").cells(j, k).Interior.Color = RGB(255, 255, 0)
               End If
            Next k
Next j

2 个答案:

答案 0 :(得分:0)

尝试使用ValueValue2。有关差异,请参阅MSDN:

The only difference between this property and the Value property is that the Value2 property doesn't use the Currency and Date data types.

MSDN Value2 vs Value

For j = 2 To 10
            For k = 1 To 26
               If Not Worksheets("Sheet1").Cells(j, k).Value = Worksheets("Sheet2").Cells(j, k).Value Then
                    Worksheets("Sheet1").Cells(j, k).Value = Worksheets("Sheet2").Cells(j, k).Value
                    Worksheets("Sheet1").Cells(j, k).Interior.Color = RGB(255, 255, 0)
               End If
            Next k
Next j

答案 1 :(得分:0)

这将纠正您的问题:

Sub test_me()
  For j = 2 To 10
    For k = 1 To 26
       If Not Worksheets("Sheet1").Cells(j, k) = Worksheets("Sheet2").Cells(j, k) Then
            Worksheets("Sheet1").Cells(j, k) = Worksheets("Sheet2").Cells(j, k)
            Worksheets("Sheet1").Cells(j, k).Interior.Color = RGB(255, 255, 0)
       End If
    Next k
  Next j
End Sub

如果不强制Excel使用特定数据类型,则可以进行比较。根据您要比较的确切内容,您可能会遇到键入差异。虽然我倾向于避免使用Not运算符,但这通常是首选项,因此我在上面的代码中使用了它。此外,根据您调用此代码的方式,这可能是您的错误的原因。我把它放在一个单独的模块中,并且没有问题地运行它。