Есть коллекция col. Каждый элемент коллекции имеет свойство Length и Count (т.е. длина и количество)
Нужно найти номер элемента коллекции, который дает минимальную разницу с заданой длиной iLen. Элементы коллекции заведомо меньше либо равны iLen. При этом нужно перебирать только те элементы коллекции, у которых Count>0. Если такие элементы не найдены, то функция возвращает -1
Попробовал сделать наподобие сортировки массива по возрастанию, но не получается.
- Код: Выделить всё
Public Function FindFeedStock(ByVal iLen As Double, _
ByVal col As Collection) As Integer
Dim i#, diff As Double, diff1 As Double, j#
FindFeedStock = -1
For i = 1 To col.Count
If col(i).Count > 0 Then
For j = 1 To col.Count - 1 - i
If col(j).Count > 0 Then
diff = iLen - col(j).Length: diff1 = iLen - col(j + 1).Length
If diff > 0 Then
FindFeedStock = IIf(diff > diff1 And col(j + 1).Count > 0 And diff1 > 0, j + 1, FindFeedStock)
End If
End If
Next j
End If
Next
End Function