Forum des VBA-Tutorials

[ereignissprozedur] - kein makro benutzen (Access)

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.


gesamter Thread:

 RSS-Feed dieser Diskussion

powered by my little forum