列表框显示顺序与范围的查找方法

我正在使用以下来填充用户窗体上的列表框。 我发现find的第一个匹配值总是显示为列表框中显示的最后一个值。 其他find的值以列表框的顺序显示在列表框中。 我怎样才能得到第一个发现的价值出现在列表的开始?

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 

如果您的范围中的第一个单元格与您的search条件相符,那么您所描述的内容通常会发生,这是因为Excel 在search区域的左上angular单元格后面开始search。 使用

 Set rngFind = .Find(tbCustSearch.Text, After:=.Cells(.Rows.Count, .Columns.Count), LookIn:=xlValues, LookAt:=xlPart) 

以开始关注范围内的最后一个单元格。 由于查找自动换行,这将是您的范围左上angular的单元格。