it-swarm.com.de

Wie rufe ich eine VBA-Funktion in einer Subprozedur auf?

Ich weiß, das ist eine einfache Frage für jemanden da draußen, aber ich habe Funktionsbausteine ​​nie wirklich benutzt, weil ich nicht verstanden habe, was sie waren.

Ich habe also eine ganze Reihe von Dingen, für die ich dies verwenden kann (Verringerung der Redundanz), aber ich möchte wissen, wie ich aus einem Formular in eine Subprozedur (wie einen Knopfklick) aufrufe.

Ich habe das versucht ...

Sub Command_Click()
    Call "pptCreator"
End Sub

Ich weiß, dass das ziemlich schlecht ist, aber ich habe keine Ahnung, wie ich dies in ein Verfahren einbeziehen kann.

13
Justin

Es gibt einige Möglichkeiten, wie Sie Dinge in Microsoft Access aufrufen können:

Aufruf eines Formulars oder einer Funktion aus einem Modul

Das Sub in dem Formular, das Sie anrufen, MUSS öffentlich sein, wie in:

Public Sub DoSomething()
  MsgBox "Foo"
End Sub

Nenne das U-Boot so:

Call Forms("form1").DoSomething

Das Formular muss geöffnet sein, bevor Sie den Anruf tätigen.

Um eine Ereignisprozedur aufzurufen, sollten Sie eine öffentliche Prozedur innerhalb des Formulars und die Ereignisprozedur innerhalb dieser öffentlichen Prozedur aufrufen.

Aufrufen einer Subroutine in einem Modul aus einem Formular

Public Sub DoSomethingElse()
  MsgBox "Bar"
End Sub

... rufen Sie es einfach direkt aus Ihrer Ereignisprozedur an:

Call DoSomethingElse

Aufruf eines Unterprogramms aus einem Formular ohne Verwendung einer Ereignisprozedur

Wenn Sie möchten, können Sie die Funktion tatsächlich an das Ereignis des Formularsteuerelements binden, ohne eine Ereignisprozedur unter dem Steuerelement erstellen zu müssen. Dazu benötigen Sie zunächst eine öffentliche Funktion im Modul anstelle eines Sub-Moduls, z.

Public Function DoSomethingElse()
  MsgBox "Bar"
End Function

Wenn Sie dann eine Schaltfläche im Formular haben, setzen Sie Folgendes, anstatt [Ereignisprozedur] in das OnClick-Ereignis des Eigenschaftsfensters zu setzen:

=DoSomethingElse()

Wenn Sie auf die Schaltfläche klicken, wird die öffentliche Funktion im Modul aufgerufen.

Aufruf einer Funktion anstelle einer Prozedur

Wenn ein Sub wie folgt aufgerufen wird:

Call MySub(MyParameter)

Der Aufruf einer Funktion sieht dann so aus:

Result=MyFunction(MyFarameter)

dabei ist Ergebnis eine vom Typ zurückgegebene Variable vom Typ.

HINWEIS: Sie benötigen nicht immer das Schlüsselwort Call. Die meiste Zeit können Sie das Sub wie folgt aufrufen:

MySub(MyParameter)
28
Robert Harvey

wenn pptCreator eine Funktion/Prozedur in derselben Datei ist, können Sie sie wie folgt aufrufen

call pptCreator()

3
shahkalpesh

Aufrufen einer Unterprozedur - 3-Wege-Technik

Sobald Sie eine Prozedur erstellt haben, können Sie sie verwenden, unabhängig davon, ob Sie sie erstellt haben oder Teil der Visual Basic-Sprache sind. Das Verwenden einer Prozedur wird auch als Aufrufen bezeichnet.

Bevor Sie eine Prozedur aufrufen, sollten Sie zuerst den Codeabschnitt suchen, in dem Sie sie verwenden möchten. Um eine einfache Prozedur aufzurufen, geben Sie ihren Namen ein. Hier ist ein Beispiel:

Sub CreateCustomer()
    Dim strFullName As String

    strFullName = "Paul Bertrand Yamaguchi"

msgbox strFullName
End Sub

Sub Exercise()
    CreateCustomer
End Sub

Sie können nicht nur den Namen einer Prozedur verwenden, um sie aufzurufen, sondern auch das Schlüsselwort "Call". Hier ist ein Beispiel:

Sub CreateCustomer()
    Dim strFullName As String

    strFullName = "Paul Bertrand Yamaguchi"
End Sub

Sub Exercise()
    Call CreateCustomer
End Sub

Wenn Sie eine Prozedur ohne oder ohne das Schlüsselwort Call aufrufen, können Sie optional eine öffnende und eine schließende Klammer auf der rechten Seite des Namens eingeben. Hier ist ein Beispiel:

Sub CreateCustomer()
    Dim strFullName As String

    strFullName = "Paul Bertrand Yamaguchi"
End Sub

Sub Exercise()
    CreateCustomer()
End Sub

Prozeduren und Zugriffsebenen

Wie ein variabler Zugriff kann der Zugriff auf eine Prozedur durch eine Zugriffsebene gesteuert werden. Ein Verfahren kann privat oder öffentlich gemacht werden. Um die Zugriffsebene einer Prozedur anzugeben, stellen Sie ihr das Schlüsselwort Private oder Public vor. Hier ist 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 als privat festgelegt wird, kann sie von anderen Prozeduren desselben Moduls aufgerufen werden. Prozeduren von externen Modulen können nicht auf eine solche Prozedur zugreifen.

Wenn eine Prozedur privat ist, wird ihr Name nicht im Dialogfeld "Makros" angezeigt

Public: Eine als public erstellte Prozedur kann von Prozeduren desselben Moduls und von Prozeduren anderer Module aufgerufen werden.

Wenn eine Prozedur als öffentlich erstellt wurde, wird beim Öffnen des Dialogfelds Makros der Name angezeigt, und Sie können ihn von dort aus ausführen

3
Rockey

Prozeduren in einem Modul werden bei der Übergabe von Argumenten nützlich und generisch.

Zum Beispiel:

Public Function DoSomethingElse(strMessage As String)  
    MsgBox strMessage
End Function

Kann jetzt jede Nachricht anzeigen, die mit der String-Variablen namens strMessage übergeben wird.

1
Mark3308

So fügen Sie einer neuen Schaltfläche in Ihrem Formular eine Funktion hinzu: (und vermeiden Sie die Verwendung eines Makros, um die Funktion aufzurufen)

Nachdem Sie Ihre Funktion (Funktion MyFunctionName ()) erstellt haben und sich in der Formularentwurfsansicht befinden: 

  1. Fügen Sie eine neue Schaltfläche hinzu (ich glaube nicht, dass Sie eine alte Schaltfläche neu zuweisen können - aber nicht sicher). 
  2. Wenn sich die Schaltfläche Wizard öffnet, klicken Sie auf Abbrechen. 
  3. Gehen Sie zum Button-Eigenschaften-Event-Tab - On Click - Feld.
  4. Wählen Sie in diesem Dropdown-Menü Felder aus: Ereignisprozedur.
  5. Klicken Sie nun auf die Schaltfläche neben dem Dropdown-Menü, das ... enthält, und Sie werden zu einem new Private Sub im Formular-Visual Basic-Fenster geleitet.
  6. In diesem privaten Untertyp: Rufen Sie MyFunctionName auf
    Es sollte ungefähr so ​​aussehen:

Private Sub Command23_Click ()

Rufen Sie MyFunctionName auf

End Sub

  1. Dann speichern Sie es einfach.
0
Gary C