Condividi:        

[EXCELL] avvio di una macro al variare di una cella

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

[EXCELL] avvio di una macro al variare di una cella

Postdi FORNO » 12/07/14 09:30

Ciao,

sono Federico di Belluno, questo è il mio primo post.

Vi chiedo un aiuto per affinare un modulo che uso al lavoro: devo inviare una mail automaticamente al variare del valore di una cella.

Per l'invio della mail non ho problemi, ho trovato le stringhe giuste ... ma per l'esecuzione automatica della macro, pur avendo trovato vari post con lo stesso o simile codice non riesco ad ottenere risultato. :undecided:

Potete descrivermi la procedura da foglio vergine di excell ?

Vi ringrazio molto per qualsiasi aiuto.

Grazie

Federico
FORNO
Newbie
 
Post: 6
Iscritto il: 11/07/14 17:31

Sponsor
 

Re: [EXCELL] avvio di una macro al variare di una cella

Postdi ricky53 » 14/07/14 01:42

Ciao,
prima di tutto benvenuto nel nostro forum.


Adesso veniamo al tuo quesito: ipotizziamo che la cella di riferimento sia la "A2" sfruttando l'evento "CHANGE" del foglio sul quale lavori potrai far eseguire automaticamente "LA_TUA_MACRO". Per esempio con il seguente codice da inserire nel foglio sul quale lavori e NON in un modulo e neppure in "ThisWorkbook"
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) = "A2" Then
        Call La_TUA_MACRO
    End If
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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [EXCELL] avvio di una macro al variare di una cella

Postdi FORNO » 14/07/14 14:03

ricky53 ha scritto:Ciao,
prima di tutto benvenuto nel nostro forum.


Adesso veniamo al tuo quesito: ipotizziamo che la cella di riferimento sia la "A2" sfruttando l'evento "CHANGE" del foglio sul quale lavori potrai far eseguire automaticamente "LA_TUA_MACRO". Per esempio con il seguente codice da inserire nel foglio sul quale lavori e NON in un modulo e neppure in "ThisWorkbook" ...
[/code]


Grazie mille,

evidentemente sbaglio qualche cosa di principio:

creo un nuovo foglio excell
creo una macro di prova CHIAMATA "PROVA" che sarà quella che devo eseguire senza impostare nessun altro valore di default
creo un'altra macro con il codice che mi indichi senza impostare nessun altro valore di default

"
Sub prova()
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "A2" Then
Call PROVA
End If
End Sub
End Sub
"
al tentativo di eseguire la seconda macro ricevo la risposta: "prevista end Sub"

La mia incompetenza richiede una risposta probabilmente ancora più banale ;)

Grazie

Federico
FORNO
Newbie
 
Post: 6
Iscritto il: 11/07/14 17:31

Re: [EXCELL] avvio di una macro al variare di una cella

Postdi ricky53 » 14/07/14 17:26

Ciao,
nel mio codice che, ribadisco, va copiato nel foglio e NON in altri posti, al posto di "La_TUA_MACRO" devi scrivere "Prova".

Che istruzioni hai nella macro "Prova" ???
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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [EXCELL] avvio di una macro al variare di una cella

Postdi FORNO » 15/07/14 06:23

ricky53 ha scritto:Ciao,
nel mio codice che, ribadisco, va copiato nel foglio e NON in altri posti, al posto di "La_TUA_MACRO" devi scrivere "Prova".

Che istruzioni hai nella macro "Prova" ???


Ciao,

non riesco a capire cosa intendi per copiare nel foglio, scusami ma credo veramente di avere un GAP in questa situazione fondamentale.

Creo un nuovo foglio excell
Creo una macro di nome PROVA con all'interno un semplice MsgBox ("xxx")
Copio il tuo codice dal tuo post
poi ?
FORNO
Newbie
 
Post: 6
Iscritto il: 11/07/14 17:31

Re: [EXCELL] avvio di una macro al variare di una cella

Postdi ricky53 » 15/07/14 11:05

Ciao,
dopo aver selezionato il foglio:
1. tasto destro
2. seleziona visualizza codice
3. nella finestra di destra devi copiare il mio codice
4. cambia il contenuto della cella "A2" ed avrai il tuo messaggio presente in "PROVA"
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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [EXCELL] avvio di una macro al variare di una cella

Postdi Anthony47 » 16/07/14 00:26

Mi permetto di convertire il "punto 1" delle istruzioni di Ricky in:
1. tasto destro sul tab col nome del foglio

La procedura ti consentira' quindi di inserire al posto giusto la macro di WorksheetChange (vedi viewtopic.php?f=26&t=102308&p=592570#p592509).
Se vuoi collaudarla modifica la tua Sub prova in
Codice: Seleziona tutto
Sub prova
   Msgbox(Range("A2").Value)
End Sub


Torna su Excel, modifica la cella A2, ti dovrebbe comparire un messaggio col valore della cella; mentre se fai altre modifiche non dovrebbe succedere nulla.

Tuttavia io sconsiglio di procedere con l' invio automatico di email alla sola modifica di una cella, salvo che non sei in grado di garantire che non partiranno mai email con dati errati o in situazioni sbagliate.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCELL] avvio di una macro al variare di una cella

Postdi ricky53 » 16/07/14 00:36

Ciao,
era necessaria l'implementazione del mio punto "1", io ero stato troppo sintetico.


Hai avuto modo di provare quanto suggerito?
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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [EXCELL] avvio di una macro al variare di una cella

Postdi FORNO » 22/07/14 08:00

Ciao,

scusatemi molto se rispondo solo ora.

Si, ho provato il codice e funziona perfettamente.

Non temo invii incauti in quanto trattasi di invii interni al personale dell'ufficio.

Piuttosto, il codice che ho provato per l'invio dell' email in realtà non fa altro che "preparare" una mail nella cartella "posta in uscita di outlook, c'è invece la possibilità che venga inviata direttamente senza dover entrare in outlook ?

Grazie mille,

ditemi se sono offtopic...

Federico
FORNO
Newbie
 
Post: 6
Iscritto il: 11/07/14 17:31

Re: [EXCELL] avvio di una macro al variare di una cella

Postdi Anthony47 » 22/07/14 14:08

Per rispondere dovresti spiegare quale versione di Outlook usi e in che lingua; per impostare questa informazione una volta per tutte (salvo aggiornamenti futuri) potresti seguire quanto suggerito qui: viewtopic.php?f=26&t=97449

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCELL] avvio di una macro al variare di una cella

Postdi FORNO » 22/07/14 14:40

Ciao,

la versione è la 2013 in italiano, non riesco a capire però il riferimento al "FIRMA", cerco una macro che invii una mail automaticamente ai destinatari senza dover andare su outlook e fare invia ...
FORNO
Newbie
 
Post: 6
Iscritto il: 11/07/14 17:31

Re: [EXCELL] avvio di una macro al variare di una cella

Postdi Anthony47 » 23/07/14 01:43

Nella tua macro di invio email dovresti avere ora una istruzione del tipo ".display"; va cambiata in ".Send".
So che sara' anche necessario impostare un parametro per evitare che sul ".Send" esca un messaggio che chiede di confermare l'invio; ma non avendo Outlook 2013 non so dove e' posizionato.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCELL] avvio di una macro al variare di una cella

Postdi FORNO » 08/09/14 14:02

Ciao,

mi sono accordo di una cosa circa la macro seguente:

"
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = E49 Then
Call PROVA
End If
End Sub
"

che la macro viene eseguita solo quando cambio manualmente il valore nella cella.

Come devo fare per far eseguire la macro al variare del risultato della formula presente nella cella ?

Grazie mille per qualsiasi aiuto.

Federico
FORNO
Newbie
 
Post: 6
Iscritto il: 11/07/14 17:31

Re: [EXCELL] avvio di una macro al variare di una cella

Postdi ricky53 » 08/09/14 14:15

Ciao,
l'evento "Worksheet_Change" NON rileva i cambiamenti di valori su celle che contengono formule !!!

Significa che se tu vuoi rilevare la modifica, es. in "A1", che contiene la formula
Codice: Seleziona tutto
=C1*3/D1
, cambiando la cella "C1" oppure "D1" cui la cella "A1" si riferisce la risposta è

"LA MODIFICA DEL CONTENUTO DELLA CELLA 'A1' NON VIENE RILEVATA" !!!
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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [EXCELL] avvio di una macro al variare di una cella

Postdi Anthony47 » 09/09/14 00:39

Come Ricky ti ha gia' detto, una formula non innesca l' evento Worksheet_Change; devi quindi risalire a quali celle compilate dall' utente modificano il contenuto di E49 (nel tuo esempio) e subordinare al loro cambiamento l' esecuzione della Call PROVA.
Una certa semplificazione la puoi ottenere con questo codice:
Codice: Seleziona tutto
Dim oldE49     'RIGOROSAMENTE in testa al modulo
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("E49").Precedents) Is Nothing And _
    Range("E49").Value <> oldE49 Then
    Call prova
    oldE49 = Range("E49").Value
End If
End Sub
Sostituisce la tua Private Sub Worksheet_Change.
In questo modo la Call Prova scatta se viene modificato dall' utente uno qualsiasi dei "predecessori" della cella E49 (limitatamente al solo foglio corrente), e se il contenuto di E49 e' cambiato rispetto al valore "precedente".

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCELL] avvio di una macro al variare di una cella

Postdi tempusfugit » 04/08/20 07:20

Buongiorno Ragazzi,
come faccio a dire che : se il contenuto delle celle del range (I5:i18) sulla intera riga successiva mi deve apparire un messaggio (nella riga con range (B6:H6)?

Grazie.
Massimiliano
[code][/code]
Dim oldIùJ5 'RIGOROSAMENTE in testa al modulo
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("I5:I18").Precedents) Is Nothing And _
Range("I5").Value <> oldI5 Then
Call Prova
oldI5 = Range("I5").Value
End If
End Sub

Sub Prova()

PIPPO = MsgBox("IN QUESTA FASCIA ORARIA E' POSSIBILE INSERIRE UNA SOLA PRENOTAZIONE! Vuoi proseguire?", vbYesNo)

End Sub
tempusfugit
Newbie
 
Post: 6
Iscritto il: 29/07/20 07:27

Re: [EXCELL] avvio di una macro al variare di una cella

Postdi Anthony47 » 04/08/20 09:45

Non accodarti a vecchie discussioni, aprine una tutta per il tuo quesito (posting.php?mode=post&f=26)

In questo caso, tra l'altro, mi pare che stai riproponendo un quesito a cui hai ricevuto gia' una risposta, vedi viewtopic.php?f=26&t=111469
Quindi rispondi lì e certamente si arrivera' a una conclusione.
Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "[EXCELL] avvio di una macro al variare di una cella":


Chi c’è in linea

Visitano il forum: Ricky0185 e 42 ospiti