Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Stele4 am April 20, 2026, 10:54:50

Titel: VBA-Code verschwindet
Beitrag von: Stele4 am April 20, 2026, 10:54:50
Hallo!
Es passiert nun oefter:
In einem Formular-Modul wurde Code geschrieben, gespeichert, compiliert.
Das Formular ist im Design-Modus und wird von mir geschlossen.
Danach ist der neue Code wieder weg.

Was passiert hier und wie kann das verhindert werden?
Gibt es eine Obergrenze fuer VBA-Code?

'Compact and Repair Database' wird gelegentlich ausgefuehrt.

Gruss Stele
Titel: Re: VBA-Code verschwindet
Beitrag von: Bitsqueezer am April 20, 2026, 11:58:17
Hallo,

eine Obergrenze wäre mir nicht bekannt.

Es kommt allerdings bei dem Problem auf den laufenden Code an.
Zum Beispiel Formular-Timer, die regelmäßig Code ausführen, können auch beim Schreiben von VBA schon in der gleichen Zeile zu Problemen führen (merkt man daran, daß man am Ende der Zeile auf einmal kein Leerzeichen mehr eingeben kann, weil der Code dauernd intern neu compiliert wird durch die Ausführung des Timercodes).

Eine andere Variante ist das Bearbeiten von Klassencode. Wenn man den Code einer Klasseninstanz bearbeitet, die noch irgendwo im Hintergrund läuft, dann bleibt ein geänderter Code oft nur so lange, bis man alle Instanzen beendet hat. Da der Code der bisherigen Klasse der alte war, stellt VBA den wieder her.

Hier hilft nur, konsequent Disziplin einzuhalten, sicherstellen, daß kein Code im Hintergrund noch läuft, erst dann mit Änderungen beginnen. Insbesondere bei eigenen Klassenmodulen ist mir das auch schon oft passiert...

Formulare/Reports sind nebenbei auch Klassenmodule. Bei DoCmd.OpenForm wird das Problem eher nicht oder selten auftreten, wenn man diese Objekte aber mit eigenen Objektvariablen steuert (z.B., um das gleiche Formular mehrfach mit unterschiedlichen Inhalten zu öffnen), kann es zum gleichen Phänomen kommen.

Zuletzt kann natürlich auch immer mal die Datei selbst beschädigt sein. C&R hilft dann gar nicht. Dann ist es am besten, alles als Text zu exportieren und in eine neue Datei wieder zu importieren und alles neu zu kompilieren.
"Application.SaveAsText" und "Application.LoadFromText" im Direktfenster.
Am besten mit einem kleinen VBA-Progrämmchen zu erledigen.

Direktimport der Objekte in einer neuen Access-Datei geht zwar meist, aber i.d.R. zieht man sich dann auch die Beschädigungen mit in die neue Datei.

Gruß

Christian
Titel: Re: VBA-Code verschwindet
Beitrag von: Knobbi38 am April 20, 2026, 12:18:54
Hallo Stele,

das passiert, wenn man Code aus einem anderen Projekt editiert, z.B. bei einem AddIn oder wenn man eine Bibliotheksdatenbank geöffnet hat.

Knobbi38
Titel: Re: VBA-Code verschwindet
Beitrag von: Stele4 am April 20, 2026, 12:37:04
Danke!
Die Moeglichkeiten von Knobbi kann ich ausschliessen. Auf dem Niveau bin ich noch nicht.
Bei denen von Bitsqueezer 'klingelt' es. Gelegentlich kommt es noch(!) zum Abbruch, der nicht vorgesehen war.
Moeglicherweise geistert da noch etwas im Hintergrund.
Mit einem Neustart der DB sollte es behoben sein.

Dank und Gruss!