| | Post: 170 | Registrato il: 13/12/2015
| Città: MILANO | Età: 58 | Utente Junior | 2010 | | OFFLINE | |
|
20/05/2017 13:02 | |
Ciao a tutti,
ho provato ad adattare un colpo di genio di Patel ( http://www.freeforumzone.com/discussione.aspx?idd=10424271 ) ma sbaglio qualcosa.
Obiettivo: al cambio del valore in T3 attivare la macro AggPROD.
La sequenza dovrebbe essere la seguente:
1)L'operatore inserisce il valore in una cella della colonna R.
2)Il valore incrementa il numero in T3 del foglio PRODUZIONE
3)la modifica attiva la macro.
BG66
Excel 2010 |
|
| | Post: 3.212 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | ONLINE |
|
20/05/2017 13:18 | |
Gene non ho visto la macro di Patel (che saluto) ma una macro non può partire al variare del risultato di una formula (T3).
La macro può partire quando interviene una variazione "fisica" nel tuo caso in colonna R.
Alfredo |
| | Post: 170 | Registrato il: 13/12/2015
| Città: MILANO | Età: 58 | Utente Junior | 2010 | | OFFLINE | |
|
20/05/2017 16:02 | |
Ciao Alfredo,
infatti la voglia di approfondire è nata proprio dal provare la soluzione di Patel (che ringrazio).
Nel mio caso specifico non avendo formule nelle celle la cosa più semplice era quella di puntare sulla colonna R.
BG66
Excel 2010 |
| | Post: 3.214 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | ONLINE |
|
20/05/2017 16:05 | |
|
| | Post: 171 | Registrato il: 13/12/2015
| Città: MILANO | Età: 58 | Utente Junior | 2010 | | OFFLINE | |
|
20/05/2017 16:45 | |
Ciao Alfredo,
ritornando su quello generico. Ma se volessi attivare l'avvio macro in celle non contigue?
ho provato cosi ma l'esegue comunque per ogni cella:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("R26, R47, R68, R89, R110")) Is Nothing And Target.Value <> “” Then Call AggPROD
MsgBox "Aggiornamento Eseguito"
End Sub
La distanza celle è sempre di 21 fino a R655...
Gene
PS l'aiuto per capire lo sbaglio nel " Patel script" è, comunque, gradito [Modificato da BG66 20/05/2017 16:50] BG66
Excel 2010 |
| | Post: 3.215 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | ONLINE |
|
20/05/2017 16:50 | |
Che intendi per celle non contigue?
La macro che hai postato viene eseguita in base a due condizioni:
1) viene modificata una delle celle indicate nel range
2) che il valore della cella oggetto di modifica (target) sia diverso da vuoto.
Alfredo |
| | Post: 172 | Registrato il: 13/12/2015
| Città: MILANO | Età: 58 | Utente Junior | 2010 | | OFFLINE | |
|
20/05/2017 16:53 | |
Ahi,
nell'ultimo script non gli dico ( o comunque vorrei farlo) che nelle celle R26-R47-R68 ect se il valore è diverso da vuoto (quindi l'utente ha digitato un numero) avvia AggProd?
[Modificato da BG66 20/05/2017 16:55] BG66
Excel 2010 |
| | Post: 3.216 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | ONLINE |
|
20/05/2017 17:06 | |
Si è così ma se viene digitata una lettera (non un numero) la macro parte lo stesso.
Bisognerebbe aggiungere un'altra condizione cioè
If IsNumber(target.value) Then
Alfredo |
| | Post: 173 | Registrato il: 13/12/2015
| Città: MILANO | Età: 58 | Utente Junior | 2010 | | OFFLINE | |
|
21/05/2017 05:24 | |
Ma, indipendentemente da lettere e numeri, al momento il problema è che con qualsiasi cella viene lanciata la macro.
Vedi esempio in file allegato.
https://www.dropbox.com/s/6whvy7iraf2jrxs/T09_MAGGIO_2017_pCS1.xls?dl=0[Modificato da BG66 21/05/2017 11:20] BG66
Excel 2010 |
| | Post: 385 | Registrato il: 24/06/2015
| Città: CATANIA | Età: 80 | Utente Senior | Excel2019 | | OFFLINE |
|
21/05/2017 13:01 | |
Ciao Gene
se la condizione è TUTTA su una riga ... non sortisce l'effetto desiderato.
Prova così
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("R26, R47, R68, R89, R110")) Is Nothing And Target.Value <> “” Then
Call AggPROD
MsgBox "Aggiornamento Eseguito"
End If
End Sub
Non sono entrato nel merito del resto (lo vedrò, con calma, nel pomeriggio).
Ciao,
Mario |
| | Post: 174 | Registrato il: 13/12/2015
| Città: MILANO | Età: 58 | Utente Junior | 2010 | | OFFLINE | |
|
21/05/2017 16:02 | |
Ciao Mario,
azz...era proprio quello!!
Ma, senza l'arrivo della cavalleria (te),come me ne sarei potuto accorgere? Usando Option explicit?
Approfitto per richiederti ulteriore aiuto:
E' corretto utilizzare (Range("R26, R47, R68, R89, R110, etc,etc")o c'è un metodo per sfruttare la distanza celle che è sempre di 21 fino a R655?
Conoscendoti credo che a partire dalle 15.00 per almeno 90' sarai impegnato (Forza Juve) ma comunque attendo il tuo approfondimento per il mio errato adattamento del "Patel Script"
[Modificato da BG66 21/05/2017 16:06] BG66
Excel 2010 |
| | Post: 386 | Registrato il: 24/06/2015
| Città: CATANIA | Età: 80 | Utente Senior | Excel2019 | | OFFLINE |
|
21/05/2017 17:09 | |
Ciao Gene
dopo aver "goduto" per il secondo obiettivo raggiunto, eccomi.
Se vuoi che la macro venga attiva SOLO quando c'è un cambiamento in quelle specifiche righe, prova con questa variante:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns("R")) Is Nothing Then
For i = 26 To 655 Step 21
If Target.Row = i Then
Stop
Call AggPROD
MsgBox "Aggiornamento Eseguito"
Exit For
End If
Next i
End If
End Sub
Ho messo uno Stop per consentirti delle prove (se va bene, toglilo).
Fai sapere. Ciao,
Mario
|
| | Post: 175 | Registrato il: 13/12/2015
| Città: MILANO | Età: 58 | Utente Junior | 2010 | | OFFLINE | |
|
22/05/2017 05:59 | |
Ciao Mario,
scusa il ritardo nella risposta. Ma ieri pomeriggio una buca stradale mi ha lasciato come ricordo fratture a 2 costole e un gomito rotto.
In ogni caso tutto funziona (macro e braccio dx, peccato che io sono mancino....)
Grazie ancora.
E dolori permettendo, a presto.
[Modificato da BG66 22/05/2017 13:55] BG66
Excel 2010 |
| | Post: 387 | Registrato il: 24/06/2015
| Città: CATANIA | Età: 80 | Utente Senior | Excel2019 | | OFFLINE |
|
22/05/2017 06:40 | |
Ciao Gene
mi dispiace per l'incidente. Ti auguro una pronta guarigione per ... deliziarci con i tuoi quesiti
Ciao,
Mario |
|
|