与列表框 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
我基本上想知道将 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