Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Convalida dati multipla.

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Convalida dati multipla.

Postdi ahidai » 18/04/14 10:50

Buongiorno a tutti, ho trovato sul sito questo codice che fa al caso mio.

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$I$2" Then
        [J2] = ""
        [K2] = ""
        [L2] = ""
    End If
   
    If Target.Address = "$J$2" Then
        [K2] = ""
        [L2] = ""
    End If

    If Target.Address = "$K$2" Then
        [L2] = ""
    End If
   
End Sub


L’unico problema è che lo dovrei usare su diverse celle. Ho provato a fare in questo mio:

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$I$2: $I$1000" Then
        [J2:J1000] = ""
        [K2:K1000] = ""
        [L2:L1000] = ""
    End If
   
    If Target.Address = "$J$2: $J$1000" Then
        [K2:K1000] = ""
        [L2:L1000] = ""
    End If

    If Target.Address = "$K$2: $K$1000" Then
        [L2:L1000] = ""
    End If
   
End Sub


Purtroppo non funziona. Qualcuno potrebbe darmi una mano?
Grazie anticipatamente e buona giornata.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Sponsor
 

Re: Convalida dati multipla.

Postdi ricky53 » 18/04/14 12:14

Ciao,
è strano quello che vuoi fare: per esempio al cambiamento di una qualunque cella dell'intervallo "I2:I1000" tu vuoi cancellare il contenuto dell'intervallo "J2:L1000".
E' questa la tua reale necessità?
Se la risposta è "SI" allora il codice da utilizzare è il seguente
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
   Intervallo = "I2: I1000"
    If Not Intersect(Target, Range(Intervallo)) Is Nothing Then
        Application.EnableEvents = False
        Range("J2:L1000").ClearContents
        Application.EnableEvents = True
    End If
   
    Intervallo = "J2: J1000"
    If Not Intersect(Target, Range(Intervallo)) Is Nothing Then
        Application.EnableEvents = False
        Range("K2:L1000").ClearContents
        Application.EnableEvents = True
    End If
' ..... scrivi tu il resto
End Sub
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Convalida dati multipla.

Postdi ahidai » 18/04/14 12:46

ricky53 ha scritto:Ciao,
è strano quello che vuoi fare: per esempio al cambiamento di una qualunque cella dell'intervallo "I2:I1000" tu vuoi cancellare il contenuto dell'intervallo "J2:L1000".
E' questa la tua reale necessità?
Se la risposta è "SI" allora il codice da utilizzare è il seguente
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
   Intervallo = "I2: I1000"
    If Not Intersect(Target, Range(Intervallo)) Is Nothing Then
        Application.EnableEvents = False
        Range("J2:L1000").ClearContents
        Application.EnableEvents = True
    End If
   
    Intervallo = "J2: J1000"
    If Not Intersect(Target, Range(Intervallo)) Is Nothing Then
        Application.EnableEvents = False
        Range("K2:L1000").ClearContents
        Application.EnableEvents = True
    End If
' ..... scrivi tu il resto
End Sub



Ciao Ricky e grazie per la risposta. Effettivamente mi sono spiegato male, non voglio cancellare al cambiamento di una qualunque cella l'intervallo "I2:I1000" e così via.
Semplicemente volevo cancellare al cambiamento della cella es. I2 solo le celle adiacenti J2, K2 e L2; al cambiamento della cella J2 cancellare il contenuto delle celle K2 e L2; al cambiamento della cella K2 cancellare il contenuto della cella L2.
E cosi via per le altre celle I3 che cancella solo le celle adiacenti J3, K3 e L3; J3 che cancella il contenuto delle celle K3 e L3; K3 che cancella il contenuto della cella L3 fino ad arrivare a 1000 celle.
Spero di essere stato chiaro e colgo l’occasione per augurarti a te e a tutti i frequentatori del forum una serena Pasqua.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: Convalida dati multipla.

Postdi ricky53 » 18/04/14 14:22

Ciao,
allora sostituisci
Codice: Seleziona tutto
Range("J2:L1000").ClearContents


con
Codice: Seleziona tutto
Range(Cells(Target.Row, Target.Column + 1), Cells(Target.Row, Target.Column + 3)).ClearContents


Per gli altri intervalli dovrai cambiare "+3" con "+2"
e ....
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Convalida dati multipla.

Postdi ahidai » 18/04/14 15:07

ricky53 ha scritto:Ciao,
allora sostituisci
Codice: Seleziona tutto
Range("J2:L1000").ClearContents


con
Codice: Seleziona tutto
Range(Cells(Target.Row, Target.Column + 1), Cells(Target.Row, Target.Column + 3)).ClearContents


Per gli altri intervalli dovrai cambiare "+3" con "+2"
e ....


Perfetto Ricky, funziona alla perfezione!!!!!!
Grazie ancora e rinnovo gli auguri di Pasqua.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: Convalida dati multipla.

Postdi ricky53 » 18/04/14 15:27

Ciao,
ricambio gli auguri con simpatia
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Convalida dati multipla.

Postdi ricky53 » 20/04/14 01:23

Ciao,
volendo dare una sforbiciata alla formula proposta (che è valida per la colonna "I")
Codice: Seleziona tutto
Range(Cells(Target.Row, Target.Column + 1), Cells(Target.Row, Target.Column + 3)).ClearContents
si ottiene
Codice: Seleziona tutto
Target.Offset(0, 1).Resize(1, 3).ClearContents




Per la colonna "J" devi sostituire
Codice: Seleziona tutto
Resize(1, 3)


con
Codice: Seleziona tutto
Resize(1, 2)



Per la colonna "K" è più semplice e devi ....
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia


Torna a Applicazioni Office Windows


Topic correlati a "Convalida dati multipla.":


Chi c’è in linea

Visitano il forum: Nessuno e 14 ospiti