我正在使用以下内容在userform上填充列表框。我发现找到的第一个匹配值总是最终显示为列表框中显示的最后一个值。其他找到的值将按列表框中的查找顺序显示。如何在列表的开头显示第一个找到的值?
With Sheet8.Range("B6:B99999")
Set rngFind = .Find(tbCustSearch.Text, LookIn:=xlValues, lookat:=xlPart)
' If value found then set a variable for the address
If Not rngFind Is Nothing Then
strFirstFind = rngFind.Address
' Add the values to the listbox
Do
If rngFind.Row > 1 Then
lbCustSearch.AddItem rngFind.Offset(0, -1)
lbCustSearch.List(lbCustSearch.ListCount - 1, 1) = rngFind.Value
lbCustSearch.List(lbCustSearch.ListCount - 1, 2) = rngFind.Offset(0, 1)
lbCustSearch.List(lbCustSearch.ListCount - 1, 3) = rngFind.Offset(0, 2)
lbCustSearch.List(lbCustSearch.ListCount - 1, 4) = rngFind.Offset(0, 3)
lbCustSearch.List(lbCustSearch.ListCount - 1, 5) = rngFind.Offset(0, 4)
lbCustSearch.List(lbCustSearch.ListCount - 1, 6) = rngFind.Offset(0, 5)
lbCustSearch.List(lbCustSearch.ListCount - 1, 7) = rngFind.Offset(0, 6)
End If
' Find the next address to add
Set rngFind = .FindNext(rngFind)
Loop While Not rngFind Is Nothing And rngFind.Address <> strFirstFind
End If
答案 0 :(得分:1)
如果您的范围中的第一个单元格符合您的搜索条件,那么您所描述的内容通常会发生,因为Excel会在搜索区域的左上角单元格之后开始搜索。使用
Set rngFind = .Find(tbCustSearch.Text, After:=.Cells(.Rows.Count, .Columns.Count), LookIn:=xlValues, LookAt:=xlPart)
以便开始照看范围中的最后一个单元格。由于“查找”会自动换行,因此这将是您的范围左上角的单元格。