Ich würde es auch anders machen. Ist evtl aber etwas komplizierter. Mag sein das es auch einfacher geht!

For I = 1 To 5

Loop Until Taster = 0
Waitms 900 'taster entprellen und etwa die Sekunde einhalten
Do

If Taster = 1 then
kurz = kruz + 1
Else lang = lang + 1
End if

next i

So wird alles was nicht kurz war automatisch zu lang.
Später muss ausgewertet werden, wie oft kurz oder lang gedrückt wurde.
Ist die Reihenfolge noch wichtig müsste sie mit abgespeichert werden.
Nachteil, diese Routine läuft sturr ihre fast 5 Sekunden ab, bevor etwas passieren kann. auch wenn es 5 X kurz werden sollte. Die kurz werden dann ggf. auch nicht wirklich erkannt.

Eleganter wäre es mit einem Timer.

Die Timer-ISR läuft alle 20ms ab.
Sie könnte auch dir einen externen INT aktiviert werden, damit sie nicht dauerhaft läuft.

In der ISR wir jedesmal geprüft, ob der Taster noch gedrückt ist. Wenn ja, wir eine Variable hochgezählt, so lange bis er nicht mehr gedrückt ist.
Ist die Variable über 50 wird ein Merke für lang gesetzt und die Variable auf 0 gesetzt.
Ist sie unter 50 war es ein kurzer Tastendruck.
Eine zweite Variable wird bis 5 hochgezählt (sofern alle Codes aus 5 mal drücken bestehen).
Dann wird das Bitmuster ausgewertet.

Vorteil: nach einnam kurz muss nicht gewartet werden bis die Sekunde vorbei ist und es kann direkt nochmal gedrückt werden. So geht kein Tastendruck verloren.

In Abhänigkeit der Taktfrequenz muss noch abgeschätzt werden ob die ISR mit 20ms den restlichen Code noch ausführen lassen kann.

Um den ganzen Code zu schreiben ist es mir jetzt schon zu spät. Ich bin auch erst Ende der Woche wieder Zuhause. Entweder so lange warten, es selbst probieren oder hoffen das dir jemand anders die Arbeit abnimmt.

Aber wenn du es schon selber probierst und man den guten Willen sieht wird man dir sicherlich helfen!