macro stampa a condizione



  • macro stampa a condizione
    di Filter data: 24/01/2017 08:43:41

    buongiorno,
    da poco ho cominciato ad approfondire le mie conoscenze su Excel e ho creato un file che mi aiuta nella gestione del mio lavoro. non sono un utente esperto in vba e questi sono i miei primi passi.
    provo a spiegare il quesito:
    ho una cartella Excel con più fogli e in base alla scelta da un menu a tendina vorrei creare un modo di stampare determinati fogli.
    ex: se su cella A1="visita periodica biennale" e se A2<50 allora stampa fogli 1,2,3;
    se su cella A1="visita mantenimento brevetto" e A2>50 allora stampa fogli 1,3,5;
    etc per una decina di casi.

    per evitare di creare una macro per ogni opzione possibile, come posso crearne una che distingui l'opzione di stampa?

    grazie a chiunque possa darmi una mano.
     
    Sub stampa()
    '
    ' stampa Macro
    '
    
    '
        Sheets("COPERTINA").Select
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
            IgnorePrintAreas:=False
        Sheets("VISITA GENERALE").Select
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
            IgnorePrintAreas:=False
        Sheets("ISAP").Select
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
            IgnorePrintAreas:=False
        Sheets("ANAMNESI").Select
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
            IgnorePrintAreas:=False
        Sheets("CONTROLLO VACCINALE").Select
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
            IgnorePrintAreas:=False
        Sheets("PREVENZIONE ONCOLOGICA").Select
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
            IgnorePrintAreas:=False
        Sheets("QUESTIONARIO CARDIOLOGICO").Select
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
            IgnorePrintAreas:=False
        Sheets("QUESTIONARIO TBC").Select
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
            IgnorePrintAreas:=False
    End Sub
    



  • di alfrimpa data: 24/01/2017 11:37:35

    Ciao Filter

    Mi pare che il file che hai allegato abbia poco o nulla a che vedere con il codice postato.

    Comunque ti consiglierei di documentarti ed approfondire il metodo BeforePrint dell'oggetto Workbook

    In pratica le istruzioni che vengono inserite tra queste due righe

    Private Sub Workbook_BeforePrint(Cancel As Boolean)

    End Sub

    verranno eseguite prima che venga effettuata la stampa; quindi tu inserisci le condizioni e se queste non sono verificate basterà scrivere Cancel = True e non succederà nulla.

    Alfredo





  • di Filter data: 24/01/2017 12:03:15

    Grazie alfrimpa innanzitutto.
    Seguirò il consiglio e inizierò da dove mi hai consigliato. Ho bisogno di un punto di partenza.
    Il file che ho allegato è il file che vorrei usare: nel tasto stampa ho registrato la macro (che ho specificato nella riga che ho riportato) che vorrei implementare.

    Iniziò a studiare.



  • di alfrimpa data: 24/01/2017 15:21:41

    Giusto per farti un esempio

    Alfredo
     
    Private Sub Workbook_BeforePrint(Cancel As Boolean)
    If ActiveSheet.Range("a1").Value = "Pippo" And ActiveSheet.Range("b1").Value >= 10 Then
        ActiveSheet.PrintPreview
        Else
        Cancel = True
    End If
    End Sub
    






  • di Filter data: 25/01/2017 09:54:27

    GRAZIE, MOLTO UTILE.

    IO NEL FRATTEMPO STUDIO!!!