Forse non hai ben compreso il problema ... se tu scrivessi quel codice in C++ avresti lo stesso risultato ...

L' Else fa parte del blocco "If delta=0" e non del primo If

Quindi tu hai

codice:
If delta < 0 Then
 ...
End If

If delta = 0 Then
  ...
Else
  ...
End If
Se il delta e' < 0 allora la prima If viene eseguita e il codice continua con la seconda If
La seconda If non viene eseguita perche' delta non e' = 0 ma viene giustamente eseguita la Else perche' delta < 0 e' comunque diverso da zero.

Il codice corretto in VB sarebbe

codice:
If delta < 0 Then
  ...
Else
   If delta = 0 Then
     ...
   Else
     ...
   End If
End If