与列表框 vba 相比,在 sheet 中查找匹配项的最佳方式

Best way to find matches in sheet compared to listbox vba

我基本上想知道将 sheet 中的项目与列表框进行比较的最佳方法是什么,基本上,列表框中的项目需要在 sheet 上找到,如果它们不是发现他们需要转到下一个空闲行 sheet 的底部,

这不应该太难,但我已经尝试使用和 if 语句,但发现它必须搜索 sheet 上的所有行以及列表框中的所有行,这使得它变得迟钝,有时耗时且反应迟钝,

我正在考虑使用 .find 方法,但不想浪费我的时间,

代码更新:

`

          For i = 0 To Me.ListBox1.ListCount - 1

            field1 = Me.ListBox1.List(i)
            field2 = Me.ListBox1.List(i, 1)
            field3 = Me.ListBox1.List(i, 2)


            field2ammend = Right(field2, Len(field2) - 7)


    For Each rCell In rRng.Cells






        If rCell.Value = field1 Then

            comp = field3
            name = field2ammend

            Sheets("Hair").Range("E" & rCell.Row) = comp
            Sheets("Hair").Range("F" & rCell.Row) = name

            Range("A" & rCell.Row & ":H" & rCell.Row).Interior.ColorIndex = 24

            countgood = countgood + 1




        Else




            ListBox2.AddItem (field2)

            'bal = bal + 1
            'Sheets("Hair").Range("B" & lastrows) = field1
            'Sheets("Hair").Range("E" & lastrows) = comp
            'Sheets("Hair").Range("F" & lastrows) = name
            'Range("A" & lastrows & ":H" & lastrows).Interior.ColorIndex = 24
            'lastrows = lastrows + 1
            'countbad = countbad + 1
        End If

下一个 rCell 接下来我

`

任何建议,

谢谢,

我不知道原因,但是,这有帮助吗?

Sub Weiter_Click()
Dim i As Integer
Dim varTemp As Variant

    varTemp = ListBox1.List '<-- for listboxes with one column. you have to edit this to pass your code

    For i = LBound(varTemp) To UBound(varTemp)
        If Columns("A:A").Find(varTemp(i, 0)) Is Nothing Then '<--- there is the column you're looking in
            Cells(1, 1).End(xlDown).Offset(1, 0).Value = varTemp(i, 0)
        Else
            Columns("A:A").Find(varTemp(i, 0)).Interior.ColorIndex = 3 '<--- 3 is red, idk what color you want
        End If
    Next
End Sub