Condividi tramite

CREARE UN MODULO E RICHIAMARLO ROUTINE

Anonimo
2014-10-26T12:06:00+00:00

Buongiorno

Per evitare di copiare un codice uguale per ogni maschera, ho letto che si può creare un modulo, chiamandolo" modifica dati" e richiamarlo dalla routine della maschera. Cosa devo scrivere nella routine codice della maschera per richiamare il modulo? Di seguito il codice sempre uguale che vorrei inserire nel modulo.

Grazie

 Dim ind As Integer

Dim subForm As Form

Set subForm = Me.Controls(Me.NomeSottomaschera).Form

    For ind = 0 To subForm.Controls.Count - 1

        If subForm.Controls(ind).ControlType = 109 Then    'testo

           subForm.Controls(ind).Locked = False

        End If

        If subForm.Controls(ind).ControlType = 111 Then    'combo

           subForm.Controls(ind).Locked = False

           subForm.Controls(ind).Enabled = True

        End If

    Next

Microsoft 365 e Office | Accesso | 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

  1. Anonimo
    2014-10-27T09:05:42+00:00

    Ciao Christian_boy,

    Il messaggio di errore indica che hai chiamato il modulo bas con lo stesso nome della routine Sblocca.

    Non puoi dare al modulo lo stesso nome di una delle routine pubbliche che contiene o che altri moduli contengono.

    Rinomina il modulo Bas ad esempio con nome BasSblocca

    Ciao

    Giorgio Rancati

    La risposta è stata utile?

    0 commenti Nessun commento

6 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2014-10-27T08:39:55+00:00

    Ciao

    La chiamata Call l'ho inserita in un pulsante della maschera principale e il codice l'ho inserito in un mdulo esterno . Quando il codice si blocca intendo che si apre l'editor di VBA e in giallo viene evidenziata la scritta CALL SBLOCCA (ME) e mi appare il seguente messaggio "Errore di compilazione. Prevista variabile  o routine e non modulo.

    Spero di esserti stato utile grazie.

    Private Sub Modifica_Click()

    Call Sblocca(Me)

    End Sub

    ,

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2014-10-27T08:06:44+00:00

    Ciao Christian_boy,

    il codice del modulo funziona o quantomeno non genera errori.

    Potresti dare qualche informazione ?

    Se si blocca che errore ricevi ?

    Dove hai messo la riga Call Sblocca(Me) ? Puoi mostrare il codice in cui è presente ?

    Ciao

    Giorgio Rancati

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2014-10-26T22:44:12+00:00

    Ciao Giorgio

    Il codice si blocca in questo punto del codice

     Call Sblocca(Me)

    Cosa può essere? 

    Per maggior chiarezza ti copio il modulo

    grazie

    Public Sub Sblocca(ByRef MainForm As Form)

    Dim ind As Integer

    If MainForm.NomeSottomaschera = "MascheraPrincipale" Then

        For ind = 0 To MainForm.Controls.Count - 1

            If MainForm.Controls(ind).ControlType = 109 Then    'testo

                MainForm.Controls(ind).Locked = False

            End If

            If MainForm.Controls(ind).ControlType = 111 Then    'combo

                 MainForm.Controls(ind).Locked = False

                 MainForm.Controls(ind).Enabled = True

            End If

        Next

    Else

        Dim subForm As Form

        Set subForm = MainForm.Controls(MainForm.NomeSottomaschera).Form

        For ind = 0 To subForm.Controls.Count - 1

            If subForm.Controls(ind).ControlType = 109 Then    'testo

               subForm.Controls(ind).Locked = False

            End If

            If subForm.Controls(ind).ControlType = 111 Then    'combo

               subForm.Controls(ind).Locked = False

               subForm.Controls(ind).Enabled = True

            End If

        Next

    End If

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2014-10-26T17:34:31+00:00

    Ciao Christian_boy,

    inserisci in un modulo bas il codice all'interno di una sub, dai alla sub ad esempio il nome BloccaSblocca e modifica il prefisso Me con l'oggetto Form che richiama la sub pubblica

    Public Sub BloccaSblocca(Byref MainForm as Form)

        Dim ind As Integer

        Dim subForm As Form

        Set subForm = MainForm.Controls(MainForm.NomeSottomaschera).Form

        For ind = 0 To subForm.Controls.Count - 1

            If subForm.Controls(ind).ControlType = 109 Then    'testo

               subForm.Controls(ind).Locked = False

            End If

            If subForm.Controls(ind).ControlType = 111 Then    'combo

               subForm.Controls(ind).Locked = False

               subForm.Controls(ind).Enabled = True

            End If

        Next

    End Sub

    poi all'interno della maschera la richiami con:

    Private Sub Modifica_Click()

     Call BloccaSblocca(Me) 

    End Sub

    Modifica_Click è il nome di un pulsante nel cui evento click viene richiamato il codice posto nel modulo bas

    Ciao

    Giorgio Rancati

    La risposta è stata utile?

    0 commenti Nessun commento