PDA

Vollständige Version anzeigen : Funktion öffentlich festlegen und aufrufen


Motorroller
24.07.2007, 11:32
Ich möchte für einen bestimmten Ablauf, der sich bei betätigen unterschiedlicher Schaltflächen immer wiederholt, eine Funktion festlegen, die ich dann bei betätigen einer dieser Schaltflächen auslöse.

Wo genau muss ich diese Funktion hinschreiben und wie erfolgt der Aufruf innerhalb des Ereignisses?

FW
24.07.2007, 11:38
... wenn sich die betroffenen Schaltflächen in einem Formular befinden, genügt folgendes:Private Sub deineschaltfläche1_Click
deineprozedur
End Sub

Private Sub deineschaltfläche2_Click
deineprozedur
End Sub

Private Sub deineprozedur
'deincode
End SubAnsonsten musst Du deineprozedur in ein Standardmodul packen und mit Public deklarieren...

Motorroller
24.07.2007, 12:23
Ansonsten musst Du deineprozedur in ein Standardmodul packen und mit Public deklarieren...
Und wie sähe das aus?

Mir kommt es darauf an, dass ich auch eventuell Werte einer Variablen übergeben will.

FW
24.07.2007, 13:06
... naja, haltPublic Sub deineprozedur(ByVal deinevariable As deindatentyp)
'deincode
End Subwobei es unabhängig von einer Parameterübergabe ist, ob Deine prozedur Public oder Private ist, sondern davon, ob diese von verschiedenen Formularen aufgerufen werden soll...

Prian0815
24.07.2007, 13:11
Hi Motoroller, Also erst mal schnell den Unterschied zwischen Funktion und Prozedur klären.
Eine Funktion gibt einen Wert zurück und der Aufruf erfolgt daher so:

If Len(CheckDeleteRelations(Me)) > 0 Then

Deklaration der Funktion in einem Modul:

Function CheckDeleteRelations(frm As Form) As String
Anweisungen
End Function

Eine Prozedur kann wie eine Funktion Parameter empfangen, gibt aber keinen Wert zurück.
Hier Beispiel Aufruf:

Eingabesperre frm, False

Beispiel Deklaration
[CODE]
Sub Eingabesperre(frm As Form, blnAN As Boolean)
/CODE]
Wenn diese Sub jetz noch als Public in einem Modul deklariert ist, ist Sie von jeder Stelle im Prog aus aufrufbar. Bei meinem Beispiel ist sie als Sub in einem Formular-Modul deklariert, und daher auch nur innerhalb dieses Formulares aufrufbar. Ich hoffe dass dir das jetzt weiterhilft.

Motorroller
24.07.2007, 13:31
... naja, haltPublic Sub deineprozedur(ByVal deinevariable As deindatentyp)
'deincode
End Subwobei es unabhängig von einer Parameterübergabe ist, ob Deine prozedur Public oder Private ist, sondern davon, ob diese von verschiedenen Formularen aufgerufen werden soll...
Nicht, das wir uns falsch verstehen, wobei ich erst einmal ein kleines Dankeschön an Euch richten will, für die Vorschläge.

Ich kenne aus der Programmiersprache, dass man bestimmte Programmteile auslagert, also ganz oben in den Code als Funktion schreibt und dann im eigentlichen Programmteil bestimmte Werte, die in einer Funktion erzeugt wurden, weiter nutzt.

Oder, um es auf meine Bedürfnisse anzupassen:
Ich schreibe etwas in einem Private Sub und habe darin eine Variable. Dieser wird dort ein Wert zugewiesen. Nun will ich, nachdem dieses Private Sub durchgelaufen ist, den Wert, der darin erzeugt wurde, auch im weiteren Ablauf nutzen. Wie mache ich das.

Beispiel:
Deklaration eines Private Sub
Private Sub Beispiel1
Dim zaehler as Integer

Zaehler = 0

If Bedingung then
zaehler = 1
End If

End Sub

Gebe ich nun folgenden Code an einer anderen Stelle ein,

Private Sub Anwendung
MsgBox zaehler
End Sub

kann ich da mit der Variable Zaehler schon nichts mehr anfangen.

ergo1
24.07.2007, 13:53
Hallo Motorroller

Dann definierst die Variable wie folgt am Anfang nach Option Explicit

Public intZaehler as Integer

Motorroller
24.07.2007, 14:17
Na. So geht es doch schon viel besser. Besten Dank für den erlösenden Ratschlag.