Поток ()
Вы можете использовать массив потоков
ReDim Streams(1 To lastColumn) As New Stream
For i = 1 To lastColumn
With Streams(i)
.StreamName = Cells(3, i + 4).Value
.Temperature = Cells(5, i + 4).Value
.Pressure = Cells(6, i + 4).Value
.VapGasFlow = Cells(7, i + 4).Value
.VapMW = Cells(8, i + 4).Value
.VapZFactor = Cells(9, i + 4).Value
.VapViscosity = Cells(10, i + 4).Value
.LightLiqVolFlow = Cells(11, i + 4).Value
.LightLiqMassDensity = Cells(12, i + 4).Value
.LightLiqViscosity = Cells(13, i + 4).Value
.HeavyLiqVolFlow = Cells(14, i + 4).Value
.HeavyLiqMassDensity = Cells(15, i + 4).Value
.HeavyLiqViscosity = Cells(16, i + 4).Value
End With
Next
Используйте StrComp для сортировки строк
Function StrComp(String1, String2, [Compare As VbCompareMethod = vbBinaryCompare])
Ссылка: Как использовать функцию STRCOMP (VBA)
Sub sortStream(ByRef Streams() As Stream)
Dim swapped As Boolean, st As Stream
Dim n As Long
Do
swapped = False
For n = LBound(Streams) + 1 To UBound(Streams)
If StrComp(Streams(n - 1).StreamName, Streams(n).StreamName, vbTextCompare) = 1 Then
Set st = Streams(n - 1)
Set Streams(n - 1) = Streams(n)
Set Streams(n) = st
swapped = True
End If
Next
Loop Until Not swapped
End Sub
Я предложил Stream()
только потому, что хотел написать Bubble Sort. Я бы использовал SortedList
.
SortedList
MSDN SortedList
Представляет коллекцию пар ключ / значение, которые отсортированы по ключам и доступны по ключу и по индексу.
Дополнительный справочник: VBA SortedList
Вам нужно будет внести эти изменения, чтобы использовать SortedList
:
До
Dim streamColl As Collection
Set streamColl = New Collection
streamColl.Add tempStream
После
Dim streamColl As Object
Set streamColl = CreateObject("System.Collections.SortedList")
streamColl.Add Key:=tempStream.StreamName, Value:=tempStream.