Modul vom Formular aus starten

Hallo, ich habe eine Anfängerfrage: Wie kann ich ein Modul (Datenuebernahme) per Mausklick in einem Formular (Button) starten??
Danke für eure Hilfe!
rina

Hallo, Rina!

Hallo, ich habe eine Anfängerfrage: Wie kann ich ein Modul
(Datenuebernahme) per Mausklick in einem Formular (Button)
starten??

Grundsätzlich startest Du kein Modul, sondern Funktionen oder Prozeduren. Wenn diese in einem Modul stehen, müssen Sie vom Formular aus auch zugänglich sein. In einem globalen Modul (das sind die Dinger, die in dem Modulfenster stehen) sind das i. d. R. alle Prozeduren und Funktionen (wenn sie nicht mit „Private Sub…“ anfangen. In einem Formular-Modul (in dem normalerweise nur die Ereignisprozeduren stehen und Funktionen, die eigentlich nur in diesem Formular verwendet werden) sind sie das in der Regel nicht. Diese müssten ggf. explizit durch das Voranstellen von „Public Sub …“ öffentlich gemacht werden.

Wenn Du nun eine Prozedur aus einem globalen Modul aufrufst, machst Du das so:

Sub Command1\_Click()
 dim lngTest as Long

 Call meineRoutine(Variable1, Variable2) 
 ' ... wenn Variablen übergeben werden sollen
 lngTest = meineFunktion(Variable3)
 ' ... wenn meineFunktion einen Long-Wert basierend auf Variable3
 ' berechnet
 ' Du könntest statt dem Call auch schreiben:
 meineRoutine Variable1, Variable2 ' beachte: Keine Klammern
 ' ich persönlich finde das Call aber etwas übersichtlicher,
 ' weil hier der Aufruf einer Prozedur ganz offensichtlich ist.
End Sub

Und einen Aufruf aus einem anderen Formular:

Sub Command1\_Click
 Call AnderesFormular.Form\_Activate()
End Sub

Gruß, Manfred

Hallo rina,

hab ich aus der Access-Hilfe:
_ÖffnenModul-Aktion

Mit Hilfe der ÖffnenModul-Aktion können Sie ein angegebenes Visual Basic-Modul
so öffnen, dass eine bestimmte Prozedur angezeigt wird.
Hierbei kann es sich um eine Sub-Prozedur, eine Function-Prozedur oder eine
Ereignisprozedur handeln.

Einstellung

Die ÖffnenModul-Aktion verwendet die folgenden Argumente.

Aktionsargument Beschreibung
Modulname = Name des zu öffnenden Moduls. Lassen Sie dieses Feld leer, wenn Sie
alle Standardmodule in der Datenbank nach einer bestimmten Prozedur durchsuchen
und das betreffende Modul so öffnen möchten, dass diese Prozedur angezeigt wird.

Wenn Sie ein Makro, das die ÖffnenModul-Aktion enthält, in einer Bibliotheksdatenbank
ausführen, sucht das Modul mit dem angegebenen Namen zuerst in der Bibliotheksdatenbank
und dann in der aktuellen Datenbank.
Prozedurname = Name der Prozedur, an der das Modul geöffnet werden soll.
Wenn Sie dieses Feld leer lassen, wird das Modul geöffnet und dessen Deklarationsbereich angezeigt.

Anmerkung Für mindestens eines der Argumente Modulname oder Prozedurname müssen Sie einen gültigen Namen eingeben._

Beispiel:
OpenModule-Methode - Beispiel

Dieses Beispiel öffnet das Modul Dienstprogramme an der Funktion IsLoaded().

DoCmd.OpenModule "Dienstprogramme","IsLoaded"

hoffe, geholfen zu haben

gruss
moritzbock

Hallo, ich habe eine Anfängerfrage: Wie kann ich ein Modul
(Datenuebernahme) per Mausklick in einem Formular (Button)
starten??
Danke für eure Hilfe!
rina

Hallo Manfred! Danke für deine Antwort. Leider komm ich damit entweder nicht klar oder ich hab es nicht verstanden. Entschuldige wenn ich mich halt ein bischen falsch ausdrücke bei der Beschreibung meines Problems…für mich war mit dem Begriff Modul starten schon alles klar…aber nochmals genau…ich möchte das eine Prozedur startet, also ausgeführt wird. Ich wäre dir sehr dankbar wenn du es mir nochmal „idiotensicher“ erklären würdest wie ich vorgehen sollte.
Vielen Dank und liebe Grüße Rina

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo, Rina!

Hallo Manfred! Danke für deine Antwort. Leider komm ich damit
entweder nicht klar oder ich hab es nicht verstanden.
Entschuldige wenn ich mich halt ein bischen falsch ausdrücke
bei der Beschreibung meines Problems…für mich war mit dem
Begriff Modul starten schon alles klar…aber nochmals
genau…ich möchte das eine Prozedur startet, also ausgeführt
wird. Ich wäre dir sehr dankbar wenn du es mir nochmal
„idiotensicher“ erklären würdest wie ich vorgehen sollte.
Vielen Dank und liebe Grüße Rina

Alla, Du legst ein Modul an. Dazu gehst Du im Datenbankfenster auf die Module und klickst dort auf „Neu“. Du findest folgende Zeilen:

Option Compare Database
Option Explicit

Die ergänzt Du nun wie folgt um eine Prozedur und eine Funktion. (Das ist das, was Du wahrscheinlich schon hast, sprich: aufrufen willst)

function Quadrat(pdblZahl as double) as double
 Quadrat = pdblZahl \* pdblZahl
End Function

Sub EinfacheMeldung(pstrText as string)
 msgbox "Folgender Text wurde übergeben: "& pstrText
End Sub

Jetzt gehe ich mal davon aus, dass Du in Deinem Formular ein Textfeld hast, in das Du eine Zahl einträgst. Dann hast Du eine Schaltfläche, die zunächst die Quadratzahl berechnen und ausgeben lässt. Weiterhin wird eine Textmeldung angezeigt. Diese Schaltfläche nenne ich mal Command1, das Textfeld Text1.

sub Command1\_Click()
 dim dblQ as double

 call EinfacheMeldung(me.Text1) ' gibt die Meldung aus
 dblQ = Quadrat(me.Text1) ' vorsicht: Wenn keine Zahl eingegeben,
 ' gibt's einen Fehler
 msgbox "Quadratzahl ist: "& dblQ
End Sub

Das Call ist also das Aufrufen einer Prozedur. Der andere Aufruf ist eine Funktion. Theoretisch kannst Du auch Funktionen wie Prozeduren aufrufen (das Aufrufen von Code aus Makros heraus funktioniert sogar nur so), sollte aber eigentlich unterbleiben. Funktionen liefern Resultate, Prozeduren nicht. So sollte man das auch handhaben.

Zur Not schick mal vorbei, was Du willst…

Gruß, Manfred

Hallo Manfred!
Ich habe in dem Formular einen Button angelegt. Wenn man dort drauclickt soll die Prozedur gestartet werden. Mein Code sieht daher mit deiner Hilfe so aus (der Rest war ja schon so vorgegeben):

Sub Datenuebernahme_Click()
On Error GoTo Err_Datenuebernahme_Click
Dim stDocName As String
Call Datenuebernahme ’ meine auszuführende Prozedur
Exit_Datenuebernahme_Click:
Exit Sub
Err_Datenuebernahme_Click:
MsgBox Err.Description
Resume Exit_Datenuebernahme_Click
End Sub
Aber irgendwie ist das noch nicht richtig so. Es funktionioert nicht. Fehlermeldung: Unzulässige Verwendung einer Eigenschaft. Was mache ich falsch?? Danke für deine Hilfe!! rina

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Rina,

vieleicht suchst du den Fehler an der falschen Stelle?!!?

  1. Hat die funktion wirklich keine Parameter ?
    oder
  2. u.U. wird der Fehler in der Prozedur ausgeloest und schlaegt auf die Formular-Sub durch.

Versuche doch mal folgendes:
Oeffne das Modul in der Enwurfsansicht
Stelle den Cursor auf die erste ausfuehbare Zeile deiner Funktion
Druecke f9 ( Beakpoint setzen)
Drucke f5 ( Funktion ausfuehren)
dann immer weiter mit f8 ( zeilenweise ausfuehren)

irgendwann muesste die Funktion in einen Fehler laufen, und dann weist du auch in welcher Zeile das Problem ist.

Hope this helps

Peter

Hallo an alle Helfer!! Ich hab meinen dummen Fehler gefunden…war ein echt blöder Anfängerfehler. Ich hatte dem Modul und der Funktion darin den selben Namen gegeben und musste jetzt feststellen das ich dies nicht darf weil sonst nix passiert :wink:
Danke!! LG rina