Condividi tramite

Stampa automatica area dato un determinato valore di una cella

Anonimo
2023-09-16T15:42:10+00:00

Buongiorno a tutti.

Avrei bisogno di aiuto. Dovrei creare una Marco di stampa automatica.

Cerco di spiegare bene la cosa.

Se il valore di una determinata cella è superiore a 0, lui automaticamente dovrebbe stamparmi un area predifinita di una pagina. Questa Marco andrebbe applicata a tutte le pagine che ho.

È possibile?

Grazie mille

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

9 risposte

Ordina per: Più utili
  1. Anonimo
    2023-09-16T22:13:27+00:00

    Buonasera.

    Ti ringrazio son da subito per la tua disponibilità.

    Cercherò di essere più preciso possibile.

    Foglio 1

    Se il valore delle celle contenute nella colonna E (e4, e5, e6, ecc….) è superiore a 0 (valore ottenuto da formula somma.se), automaticamente stampa un determinata “area” del Foglio 1. Questa “area” è una tabella (andrò quindi a selezionale L area interessata per inserirla nella formula).

    Questa macro deve funzionare su tutti i fogli rinnominati con X nome (nomi dei fogli da inserire)

    Se ti serve un esempio te lo carico.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2023-09-16T17:41:08+00:00

    Ciao Mattia,

    Rileggendo la tua richiesta originale, mi rendo conto che potrei averla fraintesa!

    Il mio codice stampa tutti i fogli della cartella di lavoro in risposta al valore della formula in una cella di interesse in un particolare foglio.

    Se però la tua intenzione fosse quella di stampare un solo foglio in risposta al valore di una determinata cella su quel foglio, pubblicherò una soluzione alternativa.

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2023-09-16T17:07:49+00:00

    Ciao Mattia,

    Buonasera. Scusa, dovevo dirlo prima.

    Si, è il risultato di una formula (un somma.se)

    Dato che il valore della cella di interesse è il risultato di una formula, e supponendo che la formula si riferisca a celle dello stesso foglio,, prova invece qualcosa del genere:

    • Fai clic dx sulla linguetta del foglio di interesse
    • Seleziona l'opzione Visualizza Codice dal **** menu contestuale risultante
    • Incolla il seguente codice:

     '========>>

    Option Explicit

    '-------->>

    Private Sub Worksheet_Change(ByVal Target As Range)

    Dim SH As Worksheet 
    
    Dim Rng\_Criterio As Range, Rng\_Stampa As Range, Rng\_Precedente As Range 
    
    Dim arrFogli As Variant 
    
    Dim sIndirizzo As String 
    
    Dim iCtr As Long 
    
    Const sCella\_Criterio As String = **"A1"                            '<<=== Modifica** 
    
    Const dCriterio As Double = **2                                         '<<=== Modifica** 
    
    Set Rng\_Criterio = Me.Range(sCella\_Criterio) 
    
    Set Rng\_Precedente = Rng\_Criterio.Precedents 
    
    If Not Rng\_Precedente Is Nothing Then 
    
        If Not Intersect(Rng\_Precedente, Target) Is Nothing Then 
    
            If Rng\_Criterio.Value = dCriterio Then 
    
                sIndirizzo = Me.PageSetup.PrintArea 
    
                ReDim arrFogli(1 To ThisWorkbook.Sheets.Count) 
    
                For Each SH In ThisWorkbook.Worksheets 
    
                    With SH 
    
                        iCtr = iCtr + 1 
    
                        arrFogli(iCtr) = .Name 
    
                        SH.PageSetup.PrintArea = sIndirizzo 
    
                    End With 
    
                Next SH 
    
                ThisWorkbook.Worksheets(arrFogli).PrintOut 
    
            End If 
    
        End If 
    
    End If 
    

    End Sub

    '<<========

    • Alt+Q per chiudere l'editor di VBA e tornare a Excel.
    • Salva il file con l'estensione xlsm

    Potresti scaricare il mio file di prova Mattia20230916.xlsm

    NB:

    Anche se il codice originale non è più appropriato, dato l'utilizzo di una formula nella cella di interesse, ho apportato una piccola modifica a quel codice per correggere un piccolo errore nell'ordine del codice.

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2023-09-16T16:36:29+00:00

    Buonasera. Scusa, dovevo dirlo prima.

    Si, è il risultato di una formula (un somma.se)

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2023-09-16T16:29:16+00:00

    Ciao Mattia,

    Avrei bisogno di aiuto. Dovrei creare una Marco di stampa automatica.

    Cerco di spiegare bene la cosa.

    Se il valore di una determinata cella è superiore a 0, lui automaticamente dovrebbe stamparmi un area predifinita di una pagina. Questa Marco andrebbe applicata a tutte le pagine che ho.

    Prova qualcosa del genere:

    • Fai clic dx sulla linguetta del foglio di interesse
    • Seleziona l'opzione Visualizza Codice dal **** menu contestuale risultante
    • Incolla il seguente codice:

     '========>>

    Option Explicit

    '-------->>

    Private Sub Worksheet_Change(ByVal Target As Range)

    Dim SH As Worksheet 
    
    Dim Rng\_Criterio As Range, Rng\_Stampa As Range 
    
    Dim arrFogli As Variant 
    
    Dim sIndirizzo As String 
    
    Dim iCtr As Long 
    
    Const sCella\_Criterio As String = **"A1"                           '&lt;&lt;=== Modifica** 
    
    Const dCriterio As Double = **2                                       '&lt;&lt;=== Modifica** 
    
    Set Rng\_Criterio = Intersect(Me.Range(sCella\_Criterio), Target) 
    
    If Not Rng\_Criterio Is Nothing Then 
    
        If Rng\_Criterio.Value = dCriterio Then 
    
            sIndirizzo = Me.PageSetup.PrintArea 
    
            ReDim arrFogli(1 To ThisWorkbook.Sheets.Count) 
    
            For Each SH In ThisWorkbook.Worksheets 
    
                With SH 
    
                    iCtr = iCtr + 1 
    
                    arrFogli(iCtr) = .Name 
    
                   .PageSetup.PrintArea = sIndirizzo 
    
                End With 
    
            Next SH 
    
        End If 
    
        ThisWorkbook.Worksheets(arrFogli).PrintOut 
    
    End If 
    

    End Sub

    '<<======== 

    • Alt+Q per chiudere l'editor di VBA e tornare a Excel.
    • Salva il file con l'estensione xlsm

    Edit:

    Questo codice presuppone che il valore della cella di interesse non sia il risultato di una formula. Se questa ipotesi non è corretta, pubblicherò una procedura rivista.

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento