Lets start with the code
Dim v1 As Variant = Nil
Dim v2 As Variant = 12
If v1 < v2 Then
Break
Elseif v2 < v1 Then
Break
End If
Which break statement would YOU expect to be hit ? I will say that the one that does get hit here is NOT what I expected at all.
When you compare variants they convert to a common type. Not sure that I know what the common type that would be used is here.
It doesnt appear to be any of the numeric types.
And the comparison doesn’t seem to be relying on the hash value of a variant.
If you add in code to explicitly convert each variant to some other type (Uint64, int64, Object, String, etc) you see that those all have a nil variant being treated as if its 0 and the non-nil variant as if they are the numeric value.