Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

excel: eseguire macro quando una formula restituisce un certo valore

2,489 views
Skip to first unread message

fa.brizio

unread,
Aug 12, 2008, 8:40:09 AM8/12/08
to
Ciao.
Avrei un problema con excel.
in particolare vorrei riuscire a far eseguire a excel una macro quando
una certa formula restituisce un certo valore.
qualcuno sa dirmi come fare?

poniamo che nella cella C1 ci sia =A1-B1
mi interessa che quando il risultato di C1 sia 3 si avvia la macro1

altra cosa che mi interesserebbe è far partire una macro quando una
cella contiene un valore maggiore di un'altra cella

poniamo di avere nella cella A1 una data e nella cella B1 la formula
molto semplice =oggi()
mi interessa che venda fatta partire una macro quando A1 è
strettamente minore di B1

come posso fare?
Grazie

sgtpepper

unread,
Aug 12, 2008, 2:15:05 PM8/12/08
to

"fa.brizio" ha scritto:

Ciao fabrizio
premetto che sono poco ferrato in VBA ma provo comunque a proporti una
soluzione.
Atteso che non dici quale evento dovrebbe far partire la tua macro
(apertura del file, chiusura del file, selezione di una cella, attivazione di
un pulsante, ecc)
scrivi queste righe di comando nel punto in cui venga effettuato questo
controllo con eventuale lancio della macro

If Range("c1").Value = 3 Then
macro1 'nome della tua macro
End If

mentre per l'altro controllo scrivi :

if range("a1").Value<range("b1").Value Then
macro2 ' nome della tua macro
End If

Saluti


fa.brizio

unread,
Aug 14, 2008, 8:24:50 AM8/14/08
to
On 12 Ago, 20:15, sgtpepper <sgtpep...@discussions.microsoft.com>
wrote:

> "fa.brizio" ha scritto:
>
>
>
>
>
> > Ciao.
> > Avrei un problema conexcel.
> > in particolare vorrei riuscire a far eseguire aexcelunamacroquando
> > una certa formula restituisce un certo valore.
> > qualcuno sa dirmi come fare?
>
> > poniamo che nellacellaC1 ci sia =A1-B1

> > mi interessa che quando il risultato di C1 sia 3 si avvia la macro1
>
> > altra cosa che mi interesserebbe è far partire unamacroquando una
> >cellacontiene un valore maggiore di un'altracella
>
> > poniamo di avere nellacellaA1 una data e nellacellaB1 la formula
> > molto semplice =oggi()
> > mi interessa che venda fatta partire unamacroquando A1 è

> > strettamente minore di B1
>
> > come posso fare?
> > Grazie
>
> Ciao fabrizio
> premetto che sono poco ferrato in VBA ma provo comunque a proporti una
> soluzione.
> Atteso che non dici quale evento dovrebbe  far partire la tuamacro
> (apertura del file, chiusura del file, selezione di unacella, attivazione di

> un pulsante, ecc)
> scrivi queste righe di comando nel punto in cui venga effettuato questo
> controllo con eventuale lancio dellamacro
>
> If Range("c1").Value = 3 Then
> macro1 'nome della tuamacro
> End If
>
> mentre per l'altro controllo scrivi :
>
> if range("a1").Value<range("b1").Value Then
> macro2 ' nome della tuamacro
> End If
>
> Saluti- Nascondi testo citato
>
> - Mostra testo citato -

Grazie mille...
nel primo caso vorrei che la macro partisse non appena la formula
restituisce un certo valore
non so come dire...
come accade per la formatazione condizionale
non appena la formula restituisce un valore cambia lo stile della
cella
così vorrei per la macro
non appena la formula restituisce un determinato valore parte la macro

nel secondo caso vorrei che la macro partisse ogni volta che cambia il
valore della data e all'apertura del file
quindi ogni volta che apro il file deve verificare che a1 sia minore
di b1 e nel caso eseguire la macro
ma anche tutte le volte che a1 viene modificata vorrei che venisse
eseguito il controllo e nel caso la macro

hai idea di come si possa fare?
grazie per l'aiuto

il picchio

unread,
Aug 14, 2008, 8:47:01 PM8/14/08
to
> Grazie mille...
> nel primo caso vorrei che la macro partisse non appena la formula
> restituisce un certo valore
> non so come dire...
> come accade per la formatazione condizionale
> non appena la formula restituisce un valore cambia lo stile della
> cella
> così vorrei per la macro
> non appena la formula restituisce un determinato valore parte la macro
>
> nel secondo caso vorrei che la macro partisse ogni volta che cambia il
> valore della data e all'apertura del file
> quindi ogni volta che apro il file deve verificare che a1 sia minore
> di b1 e nel caso eseguire la macro
> ma anche tutte le volte che a1 viene modificata vorrei che venisse
> eseguito il controllo e nel caso la macro
>
> hai idea di come si possa fare?

Guardando l'editor, vi sono tre eventi (riguardo l'oggetto Worksheet) che,
da quello che hai scritto, possono fare il tuo caso: Change, Deactivate,
Selection Change.
Guarda con calma, riflettendo ai diversi effetti di questi eventi poi, una
volta scelto, proviamo a mettere giù del codice adatto al caso.
Un saluto

>grazie per l'aiuto

Maurizio Borrelli

unread,
Aug 15, 2008, 8:18:12 AM8/15/08
to
"fa.brizio" wrote in message
news:9253449a-3241-49a3...@t54g2000hsg.googlegroups.com:

Ciao fa.brizio.

Il valore di una cella contenente una formula che fa riferimento al
valore di altre celle, nello specifico le celle [A1] e [B1], cambia
quando cambiano i valori delle celle da cui dipende e viene ricalcolata.
Pertanto potresti:

1. intercettare gli eventi Change di [A1] e [B1]:

1.a

Event Change(Target As Range)
Membro di Excel.Worksheet

-oppure-

1.b

Event SheetChange(Sh As Object, Target As Range)
Membro di Excel.Workbook

-oppure-

1.c

Event SheetChange(Sh As Object, Target As Range)
Membro di Excel.Application

Oppure, probabilmente meglio, nel tuo caso:

2. intercettare il ricalcolo del Foglio di lavoro:

2.a

Event Calculate()
Membro di Excel.Worksheet

-oppure-

2.b

Event SheetCalculate(Sh As Object)
Membro di Excel.Workbook

-oppure-

2.c

Event SheetCalculate(Sh As Object)
Membro di Excel.Application

(Facci sapere se e eventualmente come hai risolto. Grazie!)

--
Ciao!
Maurizio Borrelli [Microsoft MVP Office System]
http://www.riolab.org/


0 new messages