将单元格的值与Excel 2003中的另一个单元格的值进行比较

时间:2015-03-16 16:50:03

标签: vba excel-vba excel

我想将单元格A(1..17)的值与B(1..17)进行比较,如果值相同则为B(1..17)添加注释“Found”。< / p>

以下代码在Excel 2003中不起作用

For i = 1 To 17
        If Range("A" & i).Value = Range("B" & i).Value Then
            Range("B" & i).AddComment ("Found")
        End If
Next i

我收到错误: 运行时错误'13':类型不匹配

由于

3 个答案:

答案 0 :(得分:1)

我找到了:

If Range("A" & i).Text = Range("B" & i).Text Then

答案 1 :(得分:0)

让我们在这里添加你没有告诉我们的内容。这是一个简单的复制品。

  1. 在单元格$ A $ 1中输入1
  2. 在Cell $ B $ 1中输入=#NULL!
  3. 重新编码的代码:

    Public Sub HasTroubleWithSpreadSheetErrors()
        If Range("A1").Value = Range("B1").Value Then ' Error #13 Mismatched Type here
            Debug.Print "Found"
        End If
    
  4. 正如您已经发现的那样,您可以通过比较.Text属性而不是.Value属性来解决这个问题。

    If Range("A1").Text = Range("B1").Text Then ' no error
    

    但作为替代方案,您还可以使用IsError函数检查是否有任何单元格出错。

    If IsError(Range("A1")) Or IsError(Range("A2")) Then
        If Range("A1").Value = Range("B1").Value Then
    

答案 2 :(得分:0)

您无法在已存在的评论中添加评论。听起来这个评论可能已经存在于你循环的前一次迭代中。我建议始终删除Column B中的“已发现”评论,以允许此子/循环在每次运行时在Column B中提供准确的信息。

Sub test()
    For i = 1 To 17

        ' clear the comments, you cant add a new comment when one already exists.
        Range("B" & i).ClearComments

        If Range("A" & i).Value = Range("B" & i).Value Then
             Range("B" & i).AddComment ("Found") ' if this cell contains a comment from a previous iteration, it throws an exception.
        End If
    Next i
End Sub