比较两个范围单元格值的逻辑错误

时间:2014-07-13 09:25:14

标签: vba find cell

该计划旨在将两个命名范围进行比较。如果在两个工作表中都找到了单元格值,则会突出显示绿色的单元格,否则为红色 在我的下面的代码中,我得到一个逻辑错误。

我手动比较两张纸的结果,但结果却完全不同。

Public Sub FindBtn_Click()

range1Name = namedRange1TxtBox
range2Name = namedRange2TxtBox
sheet1Name = Sheet1txt
sheet2Name = Sheet2txt

Dim range1No(), range2No() As Variant
range1No() = Range(range1Name)
range2No() = Range(range2Name)

Dim i, j As Integer
Dim cell As Variant 'Range
For i = LBound(range1No()) To UBound(range1No())
For j = LBound(range2No()) To UBound(range2No())
     Set cell = Worksheets(sheet1Name).Range(range1Name).Find(what:=Worksheets(sheet2Name).Range(range2Name).Cells(i, 1).Value, lookat:=xlWhole)

If Not cell Is Nothing Then ' if jde cell value is found in tops then green jde cell
Worksheets(sheet1Name).Range(range1Name).Cells(i, 1).Interior.ColorIndex = 4
Else
Worksheets(sheet1Name).Range(range1Name).Cells(i, 1).Interior.ColorIndex = 3
End If
Application.StatusBar = "Progress: " & i & " of " & UBound(range1No()) '& Format(i / 9331, "%")
Next j
Next i

2 个答案:

答案 0 :(得分:0)

不花一点时间,我不太确定你的代码究竟出了什么问题。但是这样做怎么样(我在变量中替换了字符串,所以我可以让它在本地工作)。


Public Sub FindBtn_Click()

    range1Name = "firstrange"
    range2Name = "secondrange"
    sheet1Name = "Sheet1"
    sheet2Name = "Sheet2"

    Dim range1cell As Range
    Dim range2cell As Range

    For Each range1cell In Range(range1Name)
        range1cell.Interior.ColorIndex = 3
        For Each range2cell In Range(range2Name)
            If range1cell.Value = range2cell.Value Then
                range1cell.Interior.ColorIndex = 4
                Exit For
            End If
        Next range2cell
    Next range1cell

End Sub

仔细观察,我注意到当你循环浏览j的值时,你似乎并没有在其他任何地方引用j。

答案 1 :(得分:0)

以下代码解决了我的问题基本上我不知道如何正确使用find函数。在执行工作的代码下方:)

谢谢:)

Dim cell1 As Range, cell2 As Range
Dim add1 As Variant

With Worksheets("JDE").Range("JS_No")
For Each cell2 In Worksheets("TOPS").Range("TechID")
Set cell1 = .Find(cell2, LookIn:=xlValues)
If Not cell1 Is Nothing Then
    add1 = cell1.Address
    Do
    cell1.Interior.ColorIndex = 4
    cell2.Interior.ColorIndex = 4
    Application.StatusBar = "Processing: " & add1
    Loop While Not cell1 Is Nothing And cell1.Address <> add1
End If
Next cell2



End With