Cancellare contenuto celle



  • Cancellare contenuto celle
    di fseno data: 12/05/2017 12:47:14

    Ciao a tutti Mi chiamo Federica e mi sono appena iscritta al forum per imparare il codice VBA per necessità lavorative!
    Mi servirebbe il vostro aiuto relativamente a questo problema:
    Ho un file excel con delle colonne con menù a tendina. Le scelte disponibili in ogni cella dipendono dalla scelta della cella precedente (INDIRETTO).
    Nel caso in cui l'utente compili tutte e 5 le scelte, ma poi vuole cambiare la seconda scelta, le celle con le scelte successive (che erano state precedentemente completate) mantengono il contenuto, che risulta quindi ora incoerente in quanto la scelta seconda è stata modifica. Vorrei quindi creare una VBA che elimini in automatico il contenuto delle celle nel caso in cui si vada a modificare la scelta in una cella precedente.
    Qualcuno riuesce ad aiutarmi ?
    Mi sono appena iscritta e quindi non riesco a capire come allegarvi un estratto del file, sorry..
    Grazie mille!!



  • di Mister_x (utente non iscritto) data: 12/05/2017 15:18:49

    ciao

    un approccio di sub() da inserire nel modulo del foglio
    questa controlla in sequenza le celle da A1 a E1
    quindi poniamo il caso che tu ai dato un valore a tutte e modifichi la B1 , la c1,d1,e1 vengono azzerate

    non sapendo a priori il tuo problema ho messo un valore nullo, tuttavia se vuoi cancellare basta abilitare il clearcontenst in questo modo
    If Target.Address() = "$D$1" Then Range("E1").ClearContents

    ciao
    PS le celle interessate le puoi modificare a tuo piacimento, basta seguire la logica
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Intersect(Target, Range("A1,B1,C1,D1,E1")) Is Nothing Then Exit Sub
     Application.EnableEvents = False
      If Target.Address() = "$A$1" Then Range("B1,C1,D1,E1") = "" '.ClearContents
      If Target.Address() = "$B$1" Then Range("C1,D1,E1") = "" '.ClearContents
      If Target.Address() = "$C$1" Then Range("D1,E1") = "" '.ClearContents
      If Target.Address() = "$D$1" Then Range("E1") = "" '.ClearContents
     Application.EnableEvents = True
    End Sub
    
    






  • di alfrimpa data: 12/05/2017 15:55:19

    Ciao Federica

    Se non risolvi (ma non credo) con il codice datoti da Mister_x (che saluto) per allegare un file in alto ed in basso a destra della schermata della discussione trovi il pulsante "Allega file".

    Tieni presente che la macro di Mister_x non va inserita in un modulo standard bensì nel modulo del foglio interessato.

    Spero di essere riuscito a spiegarmi.

    Alfredo





  • di fseno data: 15/05/2017 11:55:19

    Ciao Mister X! Grazie mille per la velocissima risposta!
    Ho solo un dubbio... ma se io devo applicare questo codice a più celle, ad esempio a tutte le celle delle colonne C, D, E, F, G (che sono dipendenti le une dalle altre solo se lette in riga), come faccio?
    Grazie mille ancora !

    Fede



  • di Mister_x (utente non iscritto) data: 15/05/2017 12:14:58

    ciao
    la sub() o macro puo variare in questo modo
    io ho valutato il cambio dalla colonna A:A alla Colonna E:E

    ciao
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    Dim Nriga As Long
    If Intersect(Target, Range("A:A,B:B,C:C,D:D,E:E")) Is Nothing Then Exit Sub
    Nriga = Target.Row
     Application.EnableEvents = False
      If Target.Column = 1 Then Range("B" & Nriga & ":E" & Nriga) = ""  '.ClearContents
      If Target.Column = 2 Then Range("C" & Nriga & ":E" & Nriga) = ""  '.ClearContents
      If Target.Column = 3 Then Range("D" & Nriga & ":E" & Nriga) = ""  '.ClearContents
      If Target.Column = 4 Then Range("E" & Nriga & ":E" & Nriga) = ""  '.ClearContents
     Application.EnableEvents = True
    End Sub






  • di fseno data: 15/05/2017 13:14:21

    Ciao Mister X, come sempre grazie mille!

    Ho inserito il codice nello sheet di mio interesse, ma con risultato nulla. Ti allego il file che sto usando, le colonne di mio interesse cono dalla J alla P. Ho esteso la sub per le colonne di mio interesse, ma nulla... riusciresti ad aiutarmi?

    Grazie Fede



  • di Mister_x (utente non iscritto) data: 15/05/2017 15:15:16

    ciao

    ecco perché si dice sempre di inserire un vostro file.
    comunque la sub() o macro in questo caso , per il tuo utilizzo, si delinea in questo modo

    posto il tuo file con questa inserita

    ciao

     
    Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    Dim Nriga As Long
    If Intersect(Target, Range("J9:P100000")) Is Nothing Then Exit Sub
    Nriga = Target.Row
     Application.EnableEvents = False
      If Target.Column = 10 Then Range("K" & Nriga & ":P" & Nriga) = ""  '.ClearContents
      If Target.Column = 11 Then Range("L" & Nriga & ":P" & Nriga) = ""  '.ClearContents
      If Target.Column = 12 Then Range("M" & Nriga & ":P" & Nriga) = ""  '.ClearContents
      If Target.Column = 13 Then Range("N" & Nriga & ":P" & Nriga) = ""  '.ClearContents
      If Target.Column = 14 Then Range("O" & Nriga & ":P" & Nriga) = ""  '.ClearContents
      If Target.Column = 15 Then Range("P" & Nriga & ":P" & Nriga) = ""  '.ClearContents
     Application.EnableEvents = True
    End Sub






  • di fseno data: 18/05/2017 15:27:10

    Ciao Mister X ! Grazie mille! Ho avuto occasione solo ora di provare la VBA e funziona alla perfezione!!

    Visto che ci sono volevo chiederti un'altra cosa. Devo creare dei pulsanti da mettere nella barra delle funzioni con una macro associata per un file standard che sto predisponendo. Come faccio ad associare ad un pulsante personalizzato una comando di macro ?

    Come sempre ... grazie mille,
    Fede



  • di alfrimpa data: 18/05/2017 15:39:37

    Ciao Federica

    Potresti dare uno sguardo qui

    h t t p://www.valterborsato.it/excel/Macro/pulsante_macro/assegnare_macro_a_pulsanti.html

    Oppure in alternativa potresti crearti una userform (da richiamare quando vuoi) che faccia da "pulsantiera" con tutti i pulsanti e le macro.

    Alfredo





  • di fseno data: 18/05/2017 16:30:00

    Ciao! Grazie mille!

    Fede