Cancellare contenuto celle
Hai un problema con Excel? 
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
Vuoi Approfondire?