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
"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
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
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
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/