Das Problem scheint klar:

Selbst wenn das Relais durch den Taster eingeschlatet wird, so wird es in der Zeile Portb.1 = 0 nach der If-Abfrage
If Stellenstunde = _hour And Stellenminute
wieder ausgeschaltet, wenn die Weckzeit nicht erreicht ist.