Chiamare una Funzione/Sub avendo una variabile che mi definisce il nome della Funzione da chiamare

Anonimo
2014-10-06T09:27:28+00:00

devo chiamare una Sub ( Call ...... ) 

il problema è che il  nome della Sub da chiamare in effetti è una variabile di nome "SubDaEseguire"

Non avrei nessun problema a scrivere  Call Sub01

Ma pero "Sub01"  non mi è direttamente noto bensi è il contenuto della variabile "SubDaEseguire"

Posto sotto un estrapolato del codice che sintetizza il problema

Grazie

Public Sub EseguiCodice()

' inanzitutto una serie di condizioni che determinano la esecuzione di Sub01 oppure di Sub02

    Dim SubDaEseguire As String

        If 1 = 1 Then

            SubDaEseguire = "Sub01"

        Else

            SubDaEseguire = "Sub02"

        End If

' la riga sotto chiaramente non funziona perche in effetti devo eseguire la Sub01

' ma con cosa la sostituisco ???

' vorrei evitare il SelectCase SubDaEseguire="Sub01" allora esegui Sub01 eccetera

    Call SubDaEseguire   ' <<<<<<<<<<<<<<<<<

End Sub

Public Sub Sub01()

    MsgBox "Gli eventi di Sub01"

End Sub

Public Sub Sub02()

    MsgBox "Gli eventi di Sub02"

End Sub

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2014-10-06T09:56:31+00:00

Ciao Mancini,

se cambi le sub da chiamare in function puoi usare Eval  così:

Public Sub EseguiCodice()

' inanzitutto una serie di condizioni che determinano la esecuzione di Sub01 oppure di Sub02

    Dim SubDaEseguire As String

        If 1 = 1 Then

            SubDaEseguire = "Sub01()"

        Else

            SubDaEseguire = "Sub02()"

        End If

' la riga sotto chiaramente non funziona perche in effetti devo eseguire la Sub01

' ma con cosa la sostituisco ???

' vorrei evitare il SelectCase SubDaEseguire="Sub01" allora esegui Sub01 eccetera

     Eval(SubDaEseguire)   ' <<<<<<<<<<<<<<<<<

End Sub

Public Function Sub01()

    MsgBox "Gli eventi di Sub01"

End function

Public Sub Function()

    MsgBox "Gli eventi di Sub02"

End Function

La risposta è stata utile?

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2014-10-06T09:47:59+00:00

devo chiamare una Sub ( Call ...... ) 

il problema è che il  nome della Sub da chiamare in effetti è una variabile di nome "SubDaEseguire"

<cut>

http://msdn.microsoft.com/en-us/library/office/ff197132(v=office.15).aspx

Ovvero puoi passare una variabile stringa con il nome della macro da eseguire:

Public Sub mEseguiRun()

    Dim sNomeSub As String

    sNomeSub = "Macro1"

    Application.Run sNomeSub

End Sub

Public Sub Macro1()

    MsgBox "Eseguito Macro1"

End Sub

Trattandosi di Access: la cosa cambia un po'

http://msdn.microsoft.com/en-us/library/office/ff193559(v=office.15).aspx

La risposta è stata utile?

0 commenti Nessun commento

1 risposta aggiuntiva

Ordina per: Più utili
  1. Anonimo
    2014-10-07T09:51:17+00:00

    Ringrazio entrambi,

    2 soluzioni diverse ma valide

    .

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento