August 19, 2022, 22:26:24

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Debugger öffnet Makrofenster

Begonnen von ibins, September 18, 2021, 09:58:41

⏪ vorheriges - nächstes ⏩

ibins

Liebe Hilfe-Community,

seit Tagen google ich durch die Gegend, finde aber keine Lösung und hoffe, ihr könnt mir helfen.
Ich arbeite zur Zeit an einer Datenbank zur Vermietung von Ferienwohnungen. Vor einigen Jahren habe ich schon eine Vereinsverwaltung mit Access verwirklicht. Der Debugger war immer sehr hilfreich.

Seit einigen Monaten kann man den Debugger im VBA Editor (hoffenlich ist das der richtige Begriff  :-\ ) nicht mehr manuell starten. Wenn ich auf den grünen Pfeil oder F5 drücke, öffent sich ein Fenster mit der Überschrift "Makros" und fordert mich auf, einen Makronamen einzugeben. Das gleiche Fenster öffnet sich unter Extras - Makros... Makros gehe ich von Anfang an aus dem Weg. Den Assistenten benutze ich auch nicht.

Meine bisherigen Versuche: Verweise kontrolliert, Datenbank kompilieren und reparieren, Access-Spezialtasten sind aktiviert

Weiss jemand Rat? Bin für jeden Denkansatz dankbar!

Viele Grüße
Ibins

MzKlMu

Hallo,
was verstehst Du unter Debugger im VBA Editor ?
Eigentlich ist der VBA Editor doch der Debuger (Menüpunkt:Debuggen).
Und wo drückst Du den grünen Pfeil und wann und wo drückst du F5 ?
Gruß
Klaus

trebuh

Hallo Ibins,

Wenn Du den VBA-Editor geöffnet hast, musst Du unter dem Menü "Debuggen"
den Befehl "Komplimieren" starten.

Unter der Taste "F5" startest Du eine Makroaufzeichnung (grüner Pfeil).

Gruß
Hubert

MzKlMu

Hallo,
Zitat von: undefined.... eine Makroaufzeichnung
Access hat keine Makroaufzeichnung (und noch nie eine gehabt).
Gruß
Klaus

PhilS

Zitat von: ibins am September 18, 2021, 09:58:41Seit einigen Monaten kann man den Debugger im VBA Editor (hoffenlich ist das der richtige Begriff  :-\ ) nicht mehr manuell starten. Wenn ich auf den grünen Pfeil oder F5 drücke, öffent sich ein Fenster mit der Überschrift "Makros" und fordert mich auf, einen Makronamen einzugeben.
Der Start-Befehl ([F5] / grüner Play-Pfeil) ist kontextabhängig!

Wenn sich der Cursor in einer Public Prozedur (Function oder Sub) ohne Argumente in einem normalen Modul (kein Klassenmodul) befindet, dann wird diese Sub Prozedur direkt gestartet.

In allen anderen Fällen kann der Code nicht automatisch gestartet werden, weil er nicht erreichbar (private) ist, eine Objektinstanz erforderlich ist, oder Argumente übergeben werden müssen. In diesen Fällen öffnet sich das "Macros"-Fenster, in dem du eine der ausführbaren Prozeduren (siehe oben, allerdings nur Sub) auswählen kannst, um sie auszuführen.

In allen anderen Office Anwendungen meint der Begriff "Macros" Prozeduren im VBA-Code. In Access ist das irreführend, weil dort Macros etwas anderes sind.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

ibins

Vielen Dank für die Antworten!

Der grüne Pfeil funktioniert bei einer Sub leider auch nicht. Das Fenster "Makros" öffent sich.
Auch das Prüfen des Codes durch Einzelschritte oder bis zu einem Haltepunkt geht nicht. In einer Private Sub, wenn ich Einzelschritte prüfen möchte, kommt nur das "bling" das mich akustisch darauf aufmerksam macht, dass ich einen Fehler mache.

Wie kann ich sonst herausfinden, welche Variblen welche Werte zugewiesen werden? Nur durch debug.print? Ich möchte den Code doch nur manuell starten und nicht immer wieder ins Formular zurückspringen und über Schaltflächen oder sonstiges den Code aktivieren. Das ist sooo umständlich.

Habe schon große Zweifel an meinem Oberstübchen und habe mir ein YouTube Video zum Debuggen angeschaut. Alles was dort erzählt wird, funktioniert bei mir nicht.  :'(


ibins

Zitat von: PhilS am September 18, 2021, 12:36:54In allen anderen Fällen kann der Code nicht automatisch gestartet werden, weil er nicht erreichbar (private) ist, eine Objektinstanz erforderlich ist, oder Argumente übergeben werden müssen. In diesen Fällen öffnet sich das "Macros"-Fenster, in dem du eine der ausführbaren Prozeduren (siehe oben, allerdings nur Sub) auswählen kannst, um sie auszuführen.

Habe noch vergessen zu erwähnen, dass das Makro-Fenster leer ist. Ich kann keine ausführbaren Prozeduren auswählen, nur einen neuen Namen eingeben, auf Erstellen klicken und bekomme die Meldung "Ungültiger Prozedurname". 

Beaker s.a.

@ibins
Das Formularmodul ist ein Klassenmodul, siehe
ZitatWenn sich der Cursor in einer Public Prozedur (Function oder Sub) ohne Argumente in einem normalen Modul (kein Klassenmodul) befindet, dann wird diese Sub Prozedur direkt gestartet.

gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

ibins

Vielen Dank bei allen Helfern!
Sehr schade...
Das heisst, im Formularmodul kann ich auch keinen Einzelschrittbefehl geben, obwohl der nicht ausgegraut ist? Nicht sehr praktisch, aber ich nehme es so hin und wurstle weiter mit debug.print.

Beaker s.a.

Hallo,
Natürlich geht das; - du musst die Prozedur eben nur aus dem
Formular starten. Ist zwar etwas "unhandlich", aber anderer-
seits macht es auch wenig Sinn eine Prozedur in einem Form, wo
es sich doch meistens um die Eventhandler handelt, ohne den
Zusammenhang mit diesem zu testen. Da laufen ja oft, ohne
weiteres Zutun, ganze Event-Kaskaden ab.

gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

PhilS

Zitat von: ibins am September 18, 2021, 14:59:19[...]aber ich nehme es so hin und wurstle weiter mit debug.print.
Die Funktionsweise von Haltepunkten ist dir bekannt?



Zitat von: Beaker s.a. am September 18, 2021, 15:27:14Ist zwar etwas "unhandlich", aber anderer-
seits macht es auch wenig Sinn eine Prozedur in einem Form, wo
es sich doch meistens um die Eventhandler handelt, ohne den
Zusammenhang mit diesem zu testen.
Es ist zwar richtig, dass der Kontext des Events für die Ausführung des Codes relevant sein kann, aber ich würde immer versuchen komplexere Logik in eine eigene Prozedur zu packen und nicht direkt in den Event-Handler. Neben anderen Vorteilen kann man die dann auch einfacher Testen, auch wenn es dafür eine Hilfsprozedur braucht.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

MzKlMu

Hallo,
statt Haltepunkt setzen verwende ich lieber den Stop Befehl. Der bleibt erhalten wenn man die Arbeit mit Access unterbricht. Einen Haltepunkt muss man dann immer neu setzen. Stop unterbricht den Codeablauf und mann kann debuggen. Man kann dann auch die Inhalte der Variablen sehen, wenn man den Cursor über die Variable stellt. Mit dem Einzelschrittmodus geht es dann weiter. Egal in welchem Modus, auch im Formularmodus.

Alles völlig problemlos.

Gruß
Klaus

Beaker s.a.

Hallo Phillip,
Sicher, da bin ich ganz bei dir. Solche Prozeduren (mit Bezug
zu einem Form) teste ich allerdings auch immer mit einem Halte-
punkt im Form-Modul.
Ausgelagerte Prozeduren werden oft eben durch einen Event-Handler
aufgerufen, und übergeben u.U. Parameter aus dem Form und liefern
ein Ergebnis zurück.

gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.