Wie rufe ich eine VBA-Funktion in eine Sub-Prozedur
-
21-08-2019 - |
Frage
Ich weiß, dass dies eine einfache Frage für jemanden da draußen, aber ich habe nie wirklich Funktionsbaustein überhaupt verwendet, weil ich verstand nicht, was sie waren.
Also habe ich eine ganze Reihe von Dingen habe ich dies für verwenden können (auf Redundanz abgeholzt), aber ich möchte wissen, wie ich in einem Unter nennen (wie eine Schaltfläche klicken) Verfahren aus einem Formular.
Ich habe versucht ...
Sub Command_Click()
Call "pptCreator"
End Sub
Ich weiß, dass ist ziemlich schlecht, aber ich habe keine Ahnung, wie diese in ein Verfahren zu bringen.
Lösung
Hier sind einige der verschiedenen Möglichkeiten, wie Sie die Dinge in Microsoft Access aufrufen:
Um ein Formular Unter oder Funktion aus einem Modul
aufrufenDie Unter in Form fordern Sie öffentlich sein müssen, wie in:
Public Sub DoSomething()
MsgBox "Foo"
End Sub
Rufen Sie den Unter wie folgt aus:
Call Forms("form1").DoSomething
Das Formular muss geöffnet sein, bevor Sie den Anruf zu tätigen.
eine Ereignisprozedur aufzurufen, sollten Sie ein öffentliches Verfahren in der Form nennen, und innerhalb dieser öffentlichen Verfahren, um die Ereignisprozedur aufrufen.
Um ein Unterprogramm in einem Modul aus einem Formular aufrufen
Public Sub DoSomethingElse()
MsgBox "Bar"
End Sub
... es einfach anrufen direkt von Ihrer Ereignisprozedur:
Call DoSomethingElse
Um ein Unterprogramm von einem Formular aufrufen, ohne eine Ereignisprozedur mit
Wenn Sie möchten, können Sie tatsächlich binden die Funktion der Veranstaltung Form Kontrolle ohne eine Ereignisprozedur unter der Kontrolle zu schaffen. Um dies zu tun, müssen Sie zunächst eine öffentliche Funktion im Modul anstelle eines Unter, wie folgt aus:
Public Function DoSomethingElse()
MsgBox "Bar"
End Function
Dann, wenn Sie auf eine Schaltfläche auf dem Formular haben, anstatt, [Ereignisprozedur] in das OnClick-Ereignis des Eigenschaftsfenster setzen diese:
=DoSomethingElse()
Wenn Sie auf die Schaltfläche klicken, wird die öffentliche Funktion im Modul aufrufen.
Um eine Funktion anstelle einer Prozedur
aufrufenWenn Sie einen Unter Aufruf wie folgt aussieht:
Call MySub(MyParameter)
Dann Aufruf einer Funktion wie folgt aussieht:
Result=MyFunction(MyFarameter)
Dabei Ergebnis eine Variable vom Typ von der Funktion zurückgegeben wird.
Hinweis: Sie müssen nicht immer das Call-Schlüsselwort. Die meiste Zeit können Sie rufen Sie die Unter wie folgt aus:
MySub(MyParameter)
Andere Tipps
Wenn pptCreator eine Funktion / Prozedur in der gleichen Datei ist, können Sie es wie unten
nennen könnte call pptCreator()
Eine Sub-Prozedur aufrufen - 3-Wege-Technik
Wenn Sie eine Prozedur haben, ob Sie es erstellt oder es ist Teil der Visual Basic-Sprache ist, können Sie es verwenden. Unter Anwendung eines Verfahrens wird auch als Aufruf es bezeichnet.
Vor dem Aufruf einer Prozedur, sollten Sie zunächst den Abschnitt des Codes ausfindig machen, in dem Sie es verwenden möchten. Um eine einfache Prozedur aufrufen, ihren Namen ein. Hier ein Beispiel:
Sub CreateCustomer()
Dim strFullName As String
strFullName = "Paul Bertrand Yamaguchi"
msgbox strFullName
End Sub
Sub Exercise()
CreateCustomer
End Sub
den Namen einer Prozedur Neben der Verwendung zu nennen, können Sie auch mit dem Call-Schlüsselwort vorangestellt es. Hier ein Beispiel:
Sub CreateCustomer()
Dim strFullName As String
strFullName = "Paul Bertrand Yamaguchi"
End Sub
Sub Exercise()
Call CreateCustomer
End Sub
Wenn Sie eine Prozedur aufrufen, ohne oder ohne Call-Schlüsselwort, können Sie optional eine Öffnung und eine Schließung Klammern auf der rechten Seite des Namens eingeben. Hier ein Beispiel:
Sub CreateCustomer()
Dim strFullName As String
strFullName = "Paul Bertrand Yamaguchi"
End Sub
Sub Exercise()
CreateCustomer()
End Sub
Verfahren und Zugriffsebene
Wie ein Variable Zugriff, der Zugang zu einem Verfahren kann durch eine Zugriffsebene gesteuert werden. Eine Prozedur kann aus privaten oder öffentlichen werden. Um die Zugriffsebene eines Verfahren angeben, voraus es mit dem privaten oder dem öffentlichen Schlüsselwort. Hier ein Beispiel:
Private Sub CreateCustomer()
Dim strFullName As String
strFullName = "Paul Bertrand Yamaguchi"
End Sub
Die Regeln, die auf globale Variablen angewendet wurden, sind die gleichen:
Privat: Wenn eine Prozedur privat gemacht wird, kann es durch andere Verfahren des gleichen Moduls aufgerufen werden. Verfahren von außen Module können nicht ein solches Verfahren zugreifen zu können.
Auch wenn ein Verfahren privat, sein Name erscheint nicht im Dialogfeld Makros
öffentlich. Ein Verfahren wie Öffentlichkeit erstellt wird, kann durch Verfahren des gleichen Moduls und durch Verfahren von anderen Modulen aufgerufen werden
Auch wenn ein Verfahren wurde als öffentliche erstellt, wenn Sie das Dialogfeld Makros zuzugreifen, dessen Name angezeigt und Sie können von dort ausführen
Verfahren in einem Modul nützlich und generic starten, wenn Sie in Argumenten übergeben.
Zum Beispiel:
Public Function DoSomethingElse(strMessage As String)
MsgBox strMessage
End Function
Kann jetzt jede Nachricht anzeigen, die in dem String-Variable übergeben wird genannt strMessage.
, um eine Funktion, um einen neuen Knopf auf Formular hinzufügen: (und vermeiden, mit Makro-Funktion aufzurufen)
Nach dem Erstellen Ihrer Funktion (Funktion MyFunctionName ()) und Sie sind in Form der Entwurfsansicht:
- Fügen Sie eine neue Schaltfläche (Ich glaube nicht, dass Sie eine alte Taste zuweisen können - nicht sicher, obwohl).
- Wenn die Schaltfläche Assistent Fenster öffnet, klicken Sie auf Abbrechen.
- Gehen Sie auf die Schaltfläche Eigenschaften Ereignis Tab - Bei Klick -. Feld
- Auf den Feldern im Dropdown-Menü auswählen. Ereignisprozedur
- Klicken Sie nun neben auf die Schaltfläche im Dropdown-Menü, das ... in ihm hat, und Sie werden auf eine neue Private Sub in den Formen Visual Basic-Fenster gezogen werden.
- In diesem privaten Typ: Rufen Sie MyFunctionName
Es sollte wie folgt aussehen:
Private Sub Command23_Click ()
Anruf MyFunctionName
End Sub
- Dann ist es einfach speichern.