View Single Post
 
Old 02-03-2025, 11:25 AM
batman1 batman1 is offline Windows 11 Office 2013
Advanced Beginner
 
Join Date: Jan 2025
Posts: 57
batman1 is on a distinguished road
Default

However, there is no point in using Dictionary, because with the improved FOR the code is faster than with Dictionary
1. We will see this fragment in BuildOverLay
Code:
count = 0
            For k = 1 To UBound(varOverlay_Data, 1)
                If varOverlay_Data(k, lngOS_FamMatchColIndex) = varOverlay_Data(i, lngOS_FamMatchColIndex) Then
                    If varOverlay_Data(k, 1) = varOverlay_Data(i, lngOS_ParColNum) Then
                        count = count + 1
                    End If
                End If
            Next k
'           instead of CountIfs - end
'            -------------------
We'll soon have a condition check: If count = 0 Then. So with count = 1 we already know that the condition is not met, so we don't have to finish the FOR loop. Instead of the above fragment, this fragment will suffice
Code:
count = 0
For k = 1 To UBound(varOverlay_Data, 1)
                If varOverlay_Data(k, lngOS_FamMatchColIndex) = varOverlay_Data(i, lngOS_FamMatchColIndex) Then
                    If varOverlay_Data(k, 1) = varOverlay_Data(i, lngOS_ParColNum) Then
                        count = 1
                        Exit For
                    End If
                End If
            Next k
2. Similarly change the fragment in min3
Code:
count = 0
    For i = 1 To UBound(varOverlay_Data, 1)
        If varOverlay_Data(i, lngOS_NDSRIColNum) = rM Then count = count + 1
    Next i
na ten fragment
Code:
count = 0
    For i = 1 To UBound(varOverlay_Data, 1)
        If varOverlay_Data(i, lngOS_NDSRIColNum) = rM Then
            count = count + 1
            If count > 1 Then Exit For
        End If
    Next i
Now the code is faster
Reply With Quote