Access Anfänger: Wo schreibe ich den VBA-Code hin?
Code in Access gehört in Module (wohin sonst?)
Angenommen, es geht um folgende Funktion:
Public Function MeineFunktion(S As Long) As Long MeineFunktion = S+1 End Function
Allgemein verwendbarer Code mit Public Functions usw. wie in diesem Fall gehört in ein globales Modul (also nicht in ein Formular- oder Berichts-Klassenmodul).
Also: Code in die Zwischenablage nehmen, im Datenbankfenster "Module" auswählen, Schaltfläche "Neu" - den Code in dem Modul einfügen, das Modul speichern. Dabei fragt Access nach dem zu vergebenden Namen des Moduls.
Den so gespeicherten Code durchkompilieren (je nach Access-Version im VB-Editor: "Extras / ... kompilieren" oder "Testen / Alle Module kompilieren und speichern".
Die erstellte Funktion(en) ruft man dort auf, wo man sie braucht.
Also z.B. in der OnLoad-/BeimLaden-Ereignisprozedur des Startformulars (wenn es um eine Einmalaktion beim Starten der Anwendung geht), im BeforeUpdate-/VorAktualisierung-Ereignis eines Formularfelds (wenn es um eine Plausibilitätsprüfung geht), im OnClick-/BeimKlicken-Ereignis einer Schaltfläche (für schaltflächen-gesteuerte Aktionen).
Ein typischer Aufruf sieht also so aus:
Private Sub Button_Click() MsgBox "13 + 1 = " & MeineFunktion(13) End Sub
Ansonsten ist die Verwendung davon abhängig, was die Funktion machen soll (eine Konversionsfunktion könnte man z.B. in einem berechneten Abfragefeld für eine Aktualisierungsabfrage verwenden). Die SQL dieser Abfrage sieht dann in unserem Beispiel z.B. so aus:
UPDATE MeineTabelle SET MeinFeld = MeineFunktion(MeinFeld)
Im Abfrageentwurf sind im Gegensatz zu SQL die Parameter durch Semikola anstelle von Kommata zu trennen. Auch ist zu beachten, dass Access die Namen der eingebauten Funktionen ebenso wie einige Parameterwerte "eindeutscht". Das Maß aller Dinge sollte daher nicht der Abfrageentwurf, sondern die resultierende SQL sein. (Siehe auch den Artikel "SQL - was ist das?").