Condividi tramite

Unire due o più macro in modo da usare un unico pulsante di attivazione

Anonimo
2014-08-21T10:25:37+00:00

Carissimi, ho un quesito da porvi.

Innanzi tutto preciso che utilizzo la versione di office per Mac 2011.

Ho creato due macro: una per stampare un foglio e cancellare il contenuto di alcune celle dopo la stampa ed una seconda per copiare il contenuto di alcune celle in un altro foglio nelle prime celle vuote disponibili di un elenco.

Separatamente le due macro funzionano bene ma se le unisco utilizzando ad esempio una unica macro contenente call macro1 e call macro2, come ho visto in più suggerimenti su internet, funziona solo parzialmente (esegue parzialmente solo la prima macro e poi si blocca).

Come posso fare?

Vi allego la descrizione delle due macro.

1ª MACRO:

Sub STAMPA()

'

' STAMPA Macro

'

'

    ActiveWindow.SelectedSheets.PrintOut Copies:=1

    Range("G1").Select

    Selection.Activate

    ActiveCell.Value = ActiveCell.Value + 1

    Range("G4").Select

    Selection.Activate

    ActiveCell.Value = ActiveCell.Value + 1

    ActiveSheet.Unprotect

    Range("B6:H8").Select

    Selection.ClearContents

    Range("A10:H33").Select

    Selection.ClearContents

    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

End Sub

2ª MACRO

Sub REGISTRA()

'

' Registra Macro

'

'

    Worksheets("Riepilogo").Activate

    Range("A1:G1").Select

    Selection.Copy

    Workbooks("elenco ric. 12 mesi vuoto.xlsx").Activate

    Sheets("Master").Activate

    For colonna = 1 To 1

        For riga = 1 To 54

            Cells(riga, colonna).Select

            If Cells(riga, colonna).Value = "" Then

                Cells(riga, colonna).Select

                Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _

        False, Transpose:=False

                Exit Sub

            End If

        Next riga

    Next colonna

End Sub

Attendo vostra cortese risposta e ringraziandovi anticipatamente saluto cordialmente.

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

3 risposte

Ordina per: Più utili
  1. Anonimo
    2014-08-22T07:27:40+00:00

    ...

    Attendo vostra cortese risposta e ringraziandovi anticipatamente saluto cordialmente.

    Quando si lavora su fogli e in particolare su file diversi è bene tenere presente che gli spostamenti e le selezioni (peraltro quasi sempre inutili) potrebbero far 'perdere il riferimento' del foglio/file sul quale dovremmo trovarci e di conseguenza le macro potrebbero non lavorare correttamente.

    T'invito a leggere questo interessante articolo proprio sull'argomento e ti allego le tue due macro 'leggermente' modificate, che recepiscono quanto detto.

    Dopo aver letto i commenti in esse contenuti e modificato le parti evidenziate, provale, prima singolarmente e quindi congiuntamente.


    Sub STAMPA()

    '

    ' STAMPA Macro

    '

      ActiveWindow.SelectedSheets.PrintOut Copies:=1

      '--- ThisWorkbook è il file che contiene la macro in esecuzione

      With ThisWorkbook

    '--- indica il foglio sul quale vuoi lavorare

    With .Worksheets("Foglio1")

          '--- tutti gli oggetti/metodi con il . faranno riferimento al foglio Foglio1

          .Range("G1").Value = .Range("G1").Value + 1

          .Range("G4").Value = .Range("G4").Value + 1

          .Unprotect

          .Range("B6:H8,A10:H33").ClearContents

          .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

        End With

      End With

    End Sub

    Sub REGISTRA()

    '

    ' Registra Macro

    '

    Dim colonna As Long, riga As Long

      colonna = 1

      '--- il riferimento è ora al book "elenco ric. 12 mesi vuoto.xlsx" foglio Master

      With Workbooks("elenco ric. 12 mesi vuoto.xlsx").Sheets("Master")

        For riga = 1 To 54

          If .Cells(riga, colonna).Value = "" Then

            ThisWorkbook.Worksheets("Riepilogo").Range("A1:G1").Copy

            .Cells(riga, colonna).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

            Exit For

          End If

        Next

      End With

    End Sub


    La risposta è stata utile?

    0 commenti Nessun commento
  2. Eliminata

    Questa risposta è stata eliminata a causa di una violazione del codice di comportamento. La risposta è stata segnalata manualmente o identificata tramite il rilevamento automatizzato prima dell'esecuzione dell'azione. Per ulteriori informazioni, fai riferimento al codice di comportamento.


    I commenti sono stati disattivati. Ulteriori informazioni

  3. Anonimo
    2014-08-21T11:58:25+00:00

    Carissimi, ho un quesito da porvi.

    [cut]

    Separatamente le due macro funzionano bene ma se le unisco utilizzando ad esempio una unica macro contenente call macro1 e call macro2, come ho visto in più suggerimenti su internet, funziona solo parzialmente (esegue parzialmente solo la prima macro e poi si blocca).

    [cut]

    Ciao Eleonora,

    Quando il codice si blocca, quale errore incontri e quale riga di codice viene evidenziata?

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento