Mal ein paar Anmerkungen:
Aufgrund der fehlenden Formatierung ist der Code und die Logik schwer verständlich.
Warum deklarierst du einzelne Variablen, andere wiederum nicht? Arbeitest du mit Option Explicit oder sind das globale Variablen, wenn ja -warum?
Benenne die Variablen sinnvoll, unter x,y,q kann man sich nichts Sinnvolles vorstellen.
Warum berechnest du Schleifenlänge = Zeile2 - Zeile1 ohne Schleifenlänge jemals zu verwenden?
Die Festlegung von Start/Endbereich über Inputboxen führt höchstwahrscheinlich zum Crash, wenn dort etwas anderes als eine sinnvolle Zelladresse eingegeben wird.
Bist du dir bewußt, welchen impliziten Typ die Variablen haben, die du typlos deklarierst?
Was passiert mit speicher2, wenn die expliziten Arraygrenzen überschritten werden?
mMn ist dieses Array eh überflüssig, da du innerhalb der Schleife sowieso nur auf dem i-ten Element arbeitest.
Gruß Martin