Sviluppare funzionalita su Microsoft Office con VBA INTERROMPERE SERIE ISTRUZIONI Call Macro1, Macro2 ecc. ecc.

LoginRegistrati
Stai vedendo 6 articoli - dal 1 a 6 (di 6 totali)
  • Autore
    Articoli
  • #30752 Risposta
    Roberto
    Roberto
    Partecipante

      Ciao a tutti,

      ho una macro con diverse istruzioni Call,

      vorrei che se nella Macro2 si verifica la condizione D1=No si interrompa oltre la Macro2 anche la Macro3

      Grazie

      Roby

      Sub MacroCall()
          Sheets("Foglio1").Select
          Range("A1,B1,C1") = ""
      Call Macro1
      Call Macro2
      Call Macro3
      End Sub
      -------------------------------------------------------
      Sub Macro1()
          Range("A1") = "A"
      End Sub
      -------------------------------------------------------
      Sub Macro2()
      If Range("D1") = "No" Then
          MsgBox ("MACRO INTERROTTA")
      '???????   ' CERCO UN'ISTRUZIONE CHE Chiuda Macro2 e Macro3
      Exit Sub
      End If
       Stop      ' si ferma ma poi prosegue fino alla Macro3
       Exit Sub  ' salta la macro2 ma torna a StopCall e continua fino alla Macro3
          Range("B1") = "B"
      End Sub
      -------------------------------------------------------
      Sub Macro3()
          Range("C1") = "C"
      End Sub
      
      #30753 Risposta
      Marius44
      Marius44
      Moderatore
        36 pts

        Ciao

        Potresti intercettare il valore di D1 tra l'esecuzione della macro2 e macro3, cioè

        Sub MacroCall()
            Sheets("Foglio1").Select
            Range("A1,B1,C1") = ""
        Call Macro1
        Call Macro2
        If Range("D1")="NO" then exit sub
        Call Macro3
        End Sub
        #30771 Risposta
        Roberto
        Roberto
        Partecipante

          ciao Marius44,

          non mi è possibile fare così perché nella Macro2 dove ho semplificato l'esempio con il controllo della cella D1 ci sono delle istruzioni molto più complesse che non posso riportare nella macro principale MacroCall

          avrei proprio bisogno se esiste di un'istruzione che chiuda in quel punto la MacroCall.

          Qualcosa come Exit Sub (MacroCall)

          Ho provato di tutto ma non ho trovato niente

          grazie

          #30773 Risposta
          Marius44
          Marius44
          Moderatore
            36 pts

            Ciao

            Allora potresti seguire un'altra via.

            Valorizzare una variabile pubblica nell'esecuzione della macro2 al punto in cui dovrebbe interrompere la sequenza. Inserire all'inizio della macro3 la lettura della variabile pubblica e, se valorizzata, uscire dalla macro.

            La variabile pubblica potrebbe essere dichiarata come Boolean.

             

            Ciao,

            Mario

            #30787 Risposta
            Roberto
            Roberto
            Partecipante

              AHIA andiamo nel difficile per me,

              cercherò di vedere se riesco a combinare qualcosa

              per il momento grazie

              #30789 Risposta
              scossa
              scossa
              Partecipante
                2 pts

                Non è chiaro chi/quando scrive No nella cella D1, comunque (da adattare al tuo codice reale):

                `Sub MacroCall()
                  On Error GoTo uscita_forzata_
                  Sheets("Foglio1").Select
                  Range("A1,B1,C1") = ""
                  Call Macro1
                  Call Macro2
                  Call Macro3
                uscita_forzata_:
                  If Err.Number <> 0 Then MsgBox Err.Description, vbCritical, "cella D1 = No"
                  On Error GoTo 0
                  'eventuale altro codice
                End Sub
                
                Sub Macro1()
                    Range("A1") = "A"
                End Sub
                
                Sub Macro2()
                If Range("D1") = "No" Then
                  Err.Raise vbObjectError + 513, Description:="macro interrotte"
                '???????   ' CERCO UN'ISTRUZIONE CHE Chiuda Macro2 e Macro3
                End If
                'Stop      ' si ferma ma poi prosegue fino alla Macro3
                'Exit Sub  ' salta la macro2 ma torna a StopCall e continua fino alla Macro3
                Range("B1") = "B"
                End Sub
                
                Sub Macro3()
                    Range("C1") = "C"
                End Sub
                `
              LoginRegistrati
              Stai vedendo 6 articoli - dal 1 a 6 (di 6 totali)
              Rispondi a: INTERROMPERE SERIE ISTRUZIONI Call Macro1, Macro2 ecc. ecc.
              Gli allegati sono permessi solo ad utenti REGISTRATI
              Le tue informazioni:



              vecchio frac - 2750 risposte

              patel
              patel - 1080 risposte

              albatros54
              albatros54 - 1061 risposte

              Marius44
              Marius44 - 985 risposte

              Luca73
              Luca73 - 789 risposte