Forum des VBA-Tutorials

[ereignissprozedur] - kein makro benutzen (Access)

Ralf @, Donnerstag, 26. Oktober 2017, 13:09 (vor 26 Tagen)

Nachdem ich es nicht hinbekommen habe ein Makro zu adressieren habe ich das gefunden
Genauso gut kann man von dort aber auch VBA-Code starten, indem man [Ereignisprozedur] auswählt. Sämtliche Makroaktionen stehen in VBA als Eigenschaften des DoCmd-Objekts zur Verfügung. Damit könnte man alles, was mit Makros möglich ist, genauso auch in VBA umsetze
aber nicht verstanden.

Ich habe 10 EMail Adressfelder,
bei Doppelklick auf das Adressfeld wird im Moment jeweils eine Funktion gestartet,
also 10 Funktionen die fast gleich lauten.
Jetzt wollte ich ein Makro schreiben was die Funktion startet mit Übergabe 1-10 oder so. Habe ich nicht hinbekommen (u.A. Fehler 2001).
Jetzt habe ich obigen Text in eurem Forum gefunden, mir ist allerdings nicht klar wie ich von dem Feld [ereignissprozedur] zum DoCmd VBA Code komme.

[ereignissprozedur] - kein makro benutzen

Martin Asal, Donnerstag, 26. Oktober 2017, 13:52 (vor 26 Tagen) @ Ralf

Nach dem Auswählen von [Ereignisprozedur] musst du natürlich noch auf den Button dahinter mit den drei ... klicken, um an den VBA-Editor zu gelangen.

Dort ist dann schon Code angelegt, der ca so aussieht:

Private Sub Text0_DblClick(Cancel As Integer)
 
End Sub

Wenn du dazwischen "DoCmd." eintippst, erscheint, sobald du den Punkt getippt hast, eine Liste. Das sind sämtliche Makroaktionen. Du kannst also deine Makros dort eintippen (Im Makroeditor gibt es auch einen Punkt "Makros zu Visual Basic konvertieren", aber da ich nie Makros verwenden würde, kann ich dir nicht sagen, wie das funktioniert).

Für dich ist aber etwas anderes sinnvoll:

Unter das "End Sub" schreibst du in einer neuen Zeile

Private Sub MeinCode(Parameter)
 
End Sub

In diese Sub schreibst du einmal deinen Code. Und in den Code für den Doppelklick:

Private Sub Text0_DblClick(Cancel As Integer)
Meincode Me.Text0.Name
End Sub

Damit startest du bei einem Doppelklick die Prozedur "MeinCode", und übergibst als Parameter den Namen des aufrufenden Felds.

Sinnvollerweise solltest du dir dann auch ein wenig VBA aneignen. Ich empfehle das VBA-Tutorial

Martin

[ereignissprozedur] - kein makro benutzen

Ralf, Freitag, 27. Oktober 2017, 06:08 (vor 25 Tagen) @ Martin Asal

Nach dem Auswählen von [Ereignisprozedur] musst du natürlich noch auf den Button dahinter mit den drei ... klicken, um an den VBA-Editor zu gelangen.

Dort ist dann schon Code angelegt, der ca so aussieht:

Private Sub Text0_DblClick(Cancel As Integer)
 
End Sub

Wenn du dazwischen "DoCmd." eintippst, erscheint, sobald du den Punkt getippt hast, eine Liste. Das sind sämtliche Makroaktionen. Du kannst also deine Makros dort eintippen (Im Makroeditor gibt es auch einen Punkt "Makros zu Visual Basic konvertieren", aber da ich nie Makros verwenden würde, kann ich dir nicht sagen, wie das funktioniert).

Für dich ist aber etwas anderes sinnvoll:

Unter das "End Sub" schreibst du in einer neuen Zeile

Private Sub MeinCode(Parameter)
 
End Sub

In diese Sub schreibst du einmal deinen Code. Und in den Code für den Doppelklick:

Private Sub Text0_DblClick(Cancel As Integer)
Meincode Me.Text0.Name
End Sub

Damit startest du bei einem Doppelklick die Prozedur "MeinCode", und übergibst als Parameter den Namen des aufrufenden Felds.

Sinnvollerweise solltest du dir dann auch ein wenig VBA aneignen. Ich empfehle das VBA-Tutorial

Martin

Danke Martin,
VB(A) programmiere ich seit 20 Jahren, das bekomme ich hin.
Aber ich habe es wohl nicht verständlich genug dargelegt.
Genau deine Lösung benutze ich bisher für 5 EMailfelder, jeweils eine Sub pro EMailfeld. Also habe ich jetzt 5 fast identische Subs Text0_DblClick bis Text5_DblClick.
jetzt möchte ich auf 10 EMailFelder erweitern und könnte natürlich einfach bis Text10_DblClick weiter machen, allerdings widerstrebt es dem Programmierer in mir.

Als Lösung fand ich bisher nur die Möglichkeit ein Makro zu schreiben welches das Sub (dann als Funktion) mit Parameter aufruft, was ich aber nicht hinbekommen habe (Fehler: 2001 und andere).
Dann las ich obigen Text mit dem DoCmd.Befehl und verstand es so dass ich damit direkt VBA Code auführen könnte.
Ziel ist es ein Funktion Text_DblClick(WelchesFeld as int) zu haben in welcher das aufrufende Feld ausgewertet wird, mit Application.Caller oder ähnlich.

[ereignissprozedur] - kein makro benutzen

PhilS ⌂, Freitag, 27. Oktober 2017, 10:04 (vor 25 Tagen) @ Ralf

Ziel ist es ein Funktion Text_DblClick(WelchesFeld as int) zu haben in welcher das aufrufende Feld ausgewertet wird, mit Application.Caller oder ähnlich.

Du kannst anstelle von [Ereignisprozedur] auch =Text_DblClick(1) direkt in die Eigenschaft schreiben.

Alternativ zu dem übergebenen WelchesFeld knnst du auch mit der ActiveControl-Property das geklickte Steuerelement ermitteln.

[ereignissprozedur] - kein makro benutzen

Martin Asal, Montag, 30. Oktober 2017, 18:49 (vor 21 Tagen) @ Ralf

Hallo Ralf,

ich glaube, du hast den Text im Tutorial falsch verstanden. An der von dir zitierten Stelle geht es um Makros. Nicht VBA. Du weißt schon: Access gliedert sich in Tabellen, Abfragen, Formulare, Berichte, MAKROS, Module. Der Text rät davon ab, Makros zu benutzen.

Gelegentlich redet man auch in der VBA-Welt von "Makros", aber das ist etwas ganz anderes. Ich habe den Text nochmals überarbeitet, damit das noch deutlicher wird. Allerdings waren die Begrifflichkeiten schon vorher präzise.

Martin

RSS-Feed dieser Diskussion
powered by my little forum