Obbliga compilazione celle



  • Obbliga compilazione celle
    di tommy270881 data: 25/04/2015 12:31:27

    Buon giorno a tutto il form.
    Avrei bisogno di un aiutino nella redazione di una macro che impedisca all'utente il salvataggio e la stampa del file se le celle: D3; D9; D11; D13; D17 sono vuote.
    E' importante che l'operatore sia libero di compilare il foglio e solo all'atto del salvataggio o della stampa la macro indichi che i campi non sono stati compilati. Deve essere invece possibile chiudere la cartella di lavoro.
    Ringrazio anticipatamente coloro che risponderanno.
    Saluti


  • obbligo complilazione prima di salvataggio
    di canapone (utente non iscritto) data: 25/04/2015 14:20:18


    Ciao,

    faccio un tentativo: sono alle prime armi con il Vba

    Copia il codice in Questa_cartella_lavoro



     
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
            
        If Len(Range("D3")) = 0 Or Len(Range("D9")) = 0 Or Len(Range("D11")) = 0 Or Len(Range("D13")) = 0 Or Len(Range("D17")) = 0 Then
            MsgBox "Le celle D3, D9, D11, D13, e D17 devono essere completate prima di salvare il file"
            Cancel = True
        End If
        
    End Sub
    



  • di tommy270881 data: 25/04/2015 15:20:03

    Ti ringrazio per il codice ma provandolo mi sembra che non funzioni.
    Avevi già provato a fare un tentativo sul tuo documento?


  • allegato file
    di canapone (utente non iscritto) data: 25/04/2015 15:46:21



    Ciao,

    ho allegato il file dove avevo fatto una prova. Se cancelli il contenuto di una delle celle evidenziate in giallo, non dovresti poter salvare il file.

    Sono sicuro che ci verrà in aiuto qualche amicoesperto in Vba del Forum.

    Saluti



  • di alfrimpa data: 25/04/2015 16:09:17

    Ciao

    Ho provato il file di Canapone (carissimi saluti Stefano) ed a me funziona perfettamente.

    Bravo Stefano!

    Alfredo





  • di tommy270881 data: 25/04/2015 17:09:24

    Perfetto avevate ragione. Avevo sbagliato ad incollare il codice Vba all'interno dei moduli. Ora funziona anche a me.
    Tuttavia il modulo può essere ancora stampato. E possibile negare anche la stampa?
    Supponiamo che ora il foglio debba essere da me salvato come vuoto e distribuito agli operatori. Solo all'apertura da parte di questo il modulo deve far funzionare la macro che mi avete suggerito. E' possibile?
    Cerco di spiegarmi meglio.
    Avendo inserito ora questa macro sono costretto a valorizzare i campi su cui abbiamo messo il vincolo: "se non sono compilati impedisci il salvataggio". Altrimenti neanche io posso salvarlo :)
    Il pericolo è che valorizzando i campi gli operatori si dimentichino d'inserire il loro valore.
    Riassumendo avrei bisogno che la Macro impedisse la stampa e che questa si attivi partendo da un foglio privo di valori.
    Grazie ancora tante.



  • di alfrimpa data: 25/04/2015 17:45:19

    Ciao Tommy

    Per impedire la stampa basta inserire il codice di Canapone in

    WorkBook_BeforePrint

    Per l'altro problema forse è meglio che alleghi un file di esempio (strutturalmente uguale al tuo) nel quale specifichi meglio quello che vuoi fare.

    Alfredo





  • di tommy270881 data: 25/04/2015 17:46:19

    Ok ho risolto la questione della stampa.
    E' stato sufficiente ripete l'istruzione sostituendo: Private Sub Workbook_BeforePrint(Cancel As Boolean) alla macro da te precedentemente fornita.
    Resta ora l'altro punto.



  • di tommy270881 data: 25/04/2015 17:52:19

    Ti ringrazio per la risposta. Credo che ci siamo arrivati insieme per la soluzione della stampa.
    Ho allegato il file Test che rappresenta il mio modulo.
    Sostanzialmente ora vorrei svuotare i campi su cui c'e il vincolo di no stampa e no salva per avere un file vuoto iniziale. Alla successiva riapertura la macro deve diventare funzionante.
    Saluti.



  • di alfrimpa data: 25/04/2015 18:11:42

    Ciao Tommy

    Allora devi salvare il tuo file "Test" (vuoto) come "Modello con attivazione di macro di Excel".

    Al termine della compilazione potrai stamparlo/salvarlo con il vincolo che sappiamo e lo si potrà salvare con un altro nome.

    Quando si dovrà fare una nuova compilazione riaprirai nuovamente il file modello "Test" che sarà pronto per un nuovo inserimento di dati.

    Alfredo





  • di tommy270881 data: 25/04/2015 18:17:06

    Credo di non aver compreso la tua risposta.
    Se ora apro il file test e cancello i trattini non mi permette più di salvarlo. E' già stato salvato poi come cartella di lavoro con attivazione di Macro.
    Magari sono io che sono tonto.



  • di alfrimpa data: 25/04/2015 18:50:01

    Ciao Tommy

    E' ovvio che per salvare la cartella (con il foglio vuoto) devi mettere i trattini

    Per ovviare a ciò inserisci la sottostante macro che - all'apertura del file - ti va a cancellare i trattini e rende il file pronto all'uso. (Non tenere conto di quanto detto nel mio post precedente).

    Prova un po' e fai sapere.

    Alfredo
     
    Private Sub Workbook_Open()
    Worksheets("MOD - Acquisto carte credito").Range("D3").ClearContents
    Worksheets("MOD - Acquisto carte credito").Range("D9:d17").ClearContents
    End Sub
    






  • di alfrimpa data: 25/04/2015 18:58:18

    Quindi, in parole povere, se hai la necessità di salvare il file vuoto metti i trattini; alla successiva apertura del file verranno cancellati autonaticamente.

    Alfredo





  • di tommy270881 data: 25/04/2015 19:01:56

    Perfetto grazie mille funziona tutto.
    Ti ringrazio di cuore per l'interessamento e per avermi insegnato qualcosa di nuovo.
    Grazie ancora.



  • di alfrimpa data: 25/04/2015 19:25:10

    Grazie a Te del riscontro!

    Io con queste cose mi ci diverto e sono qui per questo

    Alla prossima.

    Alfredo