In einem Variant kann auch ein
IDispatch - Interface stecken.
Daher ist es ganz normal, dass der Compiler keine weiteren Prüfungen mehr vornimmt.
Ein IDispatch Interface funktioniert so:
zur Laufzeit fragt die Anwendung nach der Nummer der Methode / Property.
Falls es die Methode / Property gibt wird in einem zweiten Schritt die Methode aufgerufen.
Dies wird auch "late bindung" genannt, weil erst zur Laufzeit geprüft wird ob es die Methoden überhaupt gibt.