Das könnte daran liegen, dass Du die Variablen Phase und Anzahlphase nicht dimensioniert hast.

Du kannst eine Variable zwar nennen wie Du willst - aber damit Bascom vernünftig mit den Variablen arbeiten kann muss es wissen, um was für einen Typ von Variable es sich handelt. Das ist die Geschichte mit "Dim XY as Bit (bzw. byte, Integer o.ä.).

Ein Bit ist die kleinste Einheit und kann nur die Werte 1 oder 0 annehmen. Ideal also, um einen Zustand wie "ein/aus" zu speichern.
Ein Byte sind 8 Bits und kann Werte zwischen 0 und 255 darstellen (keine negativen Zahlen!)
Ein Word sind zwei Bytes und kann Werte zwischen 0 und 65535 darstellen (ebenfalls nur positive Zahlen)
Ein Integer sind auch zwei Bytes, diese Variable kann aber Werte zwischen -32768 und +32767 annehmen.

Und dann gibts noch DWord, Single, Double, Long und String, aber die brauchst Du hier erstmal nicht. Wie Searcher ja schon in seinem Codevorschlag auskommentiert hat, kann man für Deine Anwendung alle Variablen als Byte dimensionieren, um Speicherplatz zu sparen.

Der langen Rede kurzer Sinn:

Wenn Du irgendwo in Deinem Programm Variablen einsetzt, musst Du sie vorher dimensioniert haben.
In Deinem Fall fehlen also irgendwo die Zeilen

Dim Phase as Byte
Dim Anzahlphase as Byte