Come faccio a chiamare una funzione VBA in una procedura secondaria
-
21-08-2019 - |
Domanda
So che questa è una domanda semplice per qualcuno là fuori, ma non ho mai realmente utilizzato modulo funzionale a tutti perché non capivo cosa fossero.
Così ho un sacco di cose che posso usare questo per (ridurre la ridondanza), ma voglio sapere come mi chiamo in un sub (come un pulsante di scatto) Procedura da una forma.
Ho provato questo ...
Sub Command_Click()
Call "pptCreator"
End Sub
So che è piuttosto male, ma non ho idea di come portare questo in una procedura.
Soluzione
Ecco alcuni dei diversi modi in cui è possibile chiamare le cose in Microsoft Access:
Per chiamare un modulo sub o una funzione da un modulo
Il sub in forma che si sta chiamando deve essere pubblico, come in:
Public Sub DoSomething()
MsgBox "Foo"
End Sub
Chiama il sub in questo modo:
Call Forms("form1").DoSomething
Il modulo deve essere aperto prima di effettuare la chiamata.
Per chiamare una routine evento, si dovrebbe chiamare una procedura pubblica all'interno della forma, e chiamare la routine evento all'interno di questa procedura pubblica.
Per chiamare una subroutine in un modulo da un modulo
Public Sub DoSomethingElse()
MsgBox "Bar"
End Sub
... basta chiamare direttamente dal vostro routine evento:
Call DoSomethingElse
Per chiamare una subroutine da un modulo senza utilizzare una procedura di evento
Se si vuole, si può effettivamente associare la funzione per l'evento del controllo di modulo, senza dover creare una routine evento sotto il controllo. Per fare questo, è necessario prima di una funzione pubblica nel modulo invece di un sub, in questo modo:
Public Function DoSomethingElse()
MsgBox "Bar"
End Function
Quindi, se si dispone di un pulsante nel modulo, invece di mettere [Routine evento] in caso OnClick della finestra delle proprietà, mettere questo:
=DoSomethingElse()
Quando si fa clic sul pulsante, si chiamerà la funzione pubblica nel modulo.
Per chiamare una funzione invece di una procedura di
Se si chiama un sub è simile al seguente:
Call MySub(MyParameter)
Quindi chiamare una funzione simile a questa:
Result=MyFunction(MyFarameter)
dove Il risultato è una variabile di tipo restituito dalla funzione.
Nota: Non è sempre necessario la parola chiave di chiamata. La maggior parte del tempo, si può chiamare il sub in questo modo:
MySub(MyParameter)
Altri suggerimenti
se pptCreator è una funzione / procedura nello stesso file, si può chiamare, come di seguito
call pptCreator()
Chiamata di una procedura secondaria - 3 Way tecnica
Una volta che avete una procedura, se è stato creato o è parte del linguaggio Visual Basic, è possibile utilizzarlo. Utilizzando una procedura viene indicato anche come chiamarlo.
Prima di chiamare una procedura, si deve prima individuare la sezione di codice in cui si desidera utilizzarlo. Per chiamare una procedura semplice, digitare il suo nome. Ecco un esempio:
Sub CreateCustomer()
Dim strFullName As String
strFullName = "Paul Bertrand Yamaguchi"
msgbox strFullName
End Sub
Sub Exercise()
CreateCustomer
End Sub
Oltre a utilizzare il nome di una procedura di chiamarlo, è anche possibile farlo precedere la parola chiave di chiamata. Ecco un esempio:
Sub CreateCustomer()
Dim strFullName As String
strFullName = "Paul Bertrand Yamaguchi"
End Sub
Sub Exercise()
Call CreateCustomer
End Sub
Quando si chiama un procedimento, fatto o senza la parola chiave di chiamata, è possibile opzionalmente digitare un'apertura e una parentesi chiusa sul lato destro del suo nome. Ecco un esempio:
Sub CreateCustomer()
Dim strFullName As String
strFullName = "Paul Bertrand Yamaguchi"
End Sub
Sub Exercise()
CreateCustomer()
End Sub
Le procedure e livelli di accesso
Come un accesso variabile, l'accesso a una procedura può essere controllato da un livello di accesso. Una procedura può essere reso pubblico o privato. Per specificare il livello di accesso di una procedura, precedere con il privato o la parola chiave Public. Ecco un esempio:
Private Sub CreateCustomer()
Dim strFullName As String
strFullName = "Paul Bertrand Yamaguchi"
End Sub
Le regole che sono state applicate alle variabili globali sono gli stessi:
Privato: Se una procedura è fatto privato, può essere chiamato da altre procedure dello stesso modulo. Procedure di moduli esterni non possono accedere a una tale procedura.
Inoltre, quando una procedura è privata, il suo nome non compare nella finestra di dialogo Macro
Pubblico:. Una procedura creata come pubblico può essere chiamato dalle procedure dello stesso modulo e da procedure di altri moduli
Inoltre, se un procedimento è stato creato come pubblico, quando si accede alla finestra di dialogo Macro, appare il suo nome ed è possibile eseguirlo da lì
Procedure in un modulo di inizio essere utili e generico quando si passa in argomenti.
Ad esempio:
Public Function DoSomethingElse(strMessage As String)
MsgBox strMessage
End Function
Ora è possibile visualizzare qualsiasi messaggio che viene passato con la variabile di stringa denominata strMessage.
Per aggiungere una funzione a un nuovo pulsante sul modulo: (ed evitare l'uso di macro per chiamare la funzione)
Dopo aver creato il tuo Funzione (MyFunctionName function ()) e siete in forma vista di disegno:
- Aggiungi un nuovo pulsante (non credo che è possibile riassegnare un pulsante di vecchio - non è sicuro però).
- Quando la finestra guidata tasto si apre fare clic su Annulla.
- Vai proprietà Button Tab Event - Al clic -. Campo
- A quel campi menu a discesa selezionare:. Routine evento
- Ora cliccate sul pulsante accanto menu a discesa che ha ... in esso e sarete portati ad un nuovo Private Sub nelle forme visive finestra di base.
- In che tipo di Private Sub: Call MyFunctionName
Esso dovrebbe essere simile a questo:
Private Sub Command23_Click ()
chiamata MyFunctionName
End Sub
- Poi basta salvarlo.