2012-06-05 4 views
8

Das ist eine vage Frage und schwer zu erklären. Ich versuche meine Access-Datenbank zu programmieren, aber der VBA-Teil nervt mich wirklich. Immer wenn ich etwas eintippe und die Leertaste drücke, wird der Speicherplatz automatisch wiederhergestellt und das vorherige Wort, das ich gerade eingegeben habe, wiederhergestellt. Auch Intellisense wird für einen Bruchteil einer Sekunde auftauchen, flackern und weggehen und den Cursor auf den Text zurücksetzen, den ich gerade eingegeben habe. Dies führt dazu, dass ich ständig Dinge an Orten schreibe, an denen sie nicht sein sollten, und dass es an Leerzeichen zwischen den Elementen meines Codes mangelt. Weiß jemand, warum das passieren würde? Die Datenbank, die ich verwende, wurde in Access 2007 erstellt, aber ich entwickle es in 2010. An der Spitze steht Microsoft Access 2007-2010.Warum ist mein VBA für MS Access Buggy?

Danke für Ihre Hilfe.

+1

Siehe auch: http://stackoverflow.com/questions/1164138/vba-editor-auto-deletes-spaces-at-the-ends-of-lines –

+0

Das ist auch hilfreich und kann das Problem teilweise lösen, Vielen Dank. – Scotch

Antwort

13

Die wahrscheinlichste Ursache ist, dass Sie ein Formular mit einem aktiven Timer-Ereignis geöffnet haben.

Was passiert, wenn Sie Ihren Code bearbeiten, wird Code in regelmäßigen Abständen ausgeführt. Jedes Mal, wenn der andere Code ausgeführt wird, wird der Just-in-Time-Compiler für VBA ausgeführt.

Normalerweise, wenn Sie Code schreiben, die Echtzeit-Kompilierung geschieht, wenn Sie von einer Zeile Code in einem anderen: kompilieren Fehler werden angehoben, Leerraum getrimmt usw.

aber in Ihrem Fall Sie haben ein Stück Code, der ausgeführt wird. Bevor es ausgeführt werden kann, muss der Compiler ausgeführt werden. Und es macht die gleichen Dinge, die es normalerweise tut. Am ärgerlichsten trimmt es nach hinten ablaufenden Leerraum von Ihrer Linie.


Die Lösung besteht darin, die Form mit dem aktiven Timer-Ereignisse zu schließen, oder das Timer-Intervall auf 0 gesetzt, während Sie Ihren Code bearbeiten.

+1

Vielen Dank für Ihre Erklärung. Das scheint es größtenteils gelöst zu haben. Der vorherige Entwickler verwendet nach meinem Verständnis eine versteckte Form mit einem aktiven Timer-Ereignis, um "Globals" zu verfolgen. Auf jeden Fall scheint das Schließen aller Formulare das Problem zu beheben. Vielen Dank! – Scotch

+2

+1 Ich habe auch @Scott aufgewertet, damit das OP abstimmen kann. – Fionnuala

+1

Akzeptiert Ihre als die richtige Antwort. Aus irgendeinem Grund verursachen Formulare ohne Timer immer noch dieses Problem. Es ist frustrierend, diese Formulare während des Codierens schließen zu müssen. Es ist eine Erleichterung, diese Antwort zu tippen, da ich meine Leertaste nicht zerquetschen und meinen Cursor zurücksetzen muss. – Scotch