Condividi:        

excel macro in VBA

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

excel macro in VBA

Postdi d_cirrotti » 27/07/07 11:55

allora,
ho bisogno di due soluzioni VBA.
prima: mi occorre che una macro sia lanciata ogni qualvolta una cella assume un determinato valore:
diciamo ogni volta che A1 =2 la macro "macro1" viene lanciata.
(la cella A1 dopo la macro cambiera' valore).

seconda: vorrei che una macro, la 'macro2" venga lanciata ogni 3 minuti.

e' possibile?

vi prego aiutatemi.

:cry:
d_cirrotti
Utente Junior
 
Post: 41
Iscritto il: 27/07/07 11:50

Sponsor
 

chiedo scusa per non aver letto i precedenti

Postdi d_cirrotti » 27/07/07 17:21

e vediamo se ho capito da solo:

apro il codice VBA della mia macro, che si chiama "prima"

e al termine di tutto il codice ci metto
Application.OnTime Now + TimeValue ( "00:03:00")

cosi' lancio la macro una volta
e poi ci pensera' lei a lanciarsi ogni tre minuti.

e' giusto quello che scrivo?

prima di inserire Apllication.OnTime devo inserire qualcosaltro?

e dopo?

specifico che sono parecchio ignorante.

un grazie anticipato.
d_cirrotti
d_cirrotti
Utente Junior
 
Post: 41
Iscritto il: 27/07/07 11:50

Postdi Anthony47 » 28/07/07 00:52

Ciao e benvenuto nel forum.
Se vuoi riavviare la macro “prima”, in coda alle istruzioni gli inserirai
Codice: Seleziona tutto
Application.OnTime Now + TimeValue ( "00:03:00"), "prima"


Per altri spunti puoi guardare:
http://www.pc-facile.com/forum/viewtopic.php?t=52172http://www.pc-facile.com/forum/viewtopic.php?t=61836

Ho visto che hai guardato anche la discussione http://www.pc-facile.com/forum/viewtopic.php?t=46965, [Excel] Macro per importazione dati DDE, ma qell’ argomento era abbastanza complicato e specializzato, non usava Application.OnTime e soprattutto partiva quando si attivava il dde link (che tu non usi, vero?). Anche il problema posto dall’ utente ENRIDINTI era alquanto diverso dai tuoi.

Se poi vuoi lanciare una macro ognivolta che la cella A1 contiene 2, allora userai una macro di tipo Worksheet_Change, che si avvia ogni volta che il foglio cambia; all’ interno della macro controllerai subito se e’ stata A1 che ha cambiato e se A1 contiene 2, uscendo in caso di test negativo. Qualcosa come:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
If Range("A1").Value <> 2 Then Exit Sub
Application.EnableEvents = False
'
'  QUI le istruzioni effettive da eseguire
'
Application.EnableEvents = True
End Sub

(questa e’ la macro che tu chiami Macro1).

Questa macro la inserirai sul “modulo” del foglio il cui A1 vuoi tenere sotto controllo: da excel apri il vba editor con Alt-F11, doppioclick sul nome del foglio che compare nell’ elenco a sx (la cosiddetta “finestra progetto”), copi il codice e lo incolli nel frame “vuoto” di dx; infine aggiungi le istruzioni che vuoi eseguire, dopo Application.EnableEvents = False

Fai sapere come evolve…
Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19440
Iscritto il: 21/03/06 16:03
Località: Ivrea

grazie

Postdi d_cirrotti » 30/07/07 10:02

allora,
la soluzione per far partire la macro ogni 3 minuti, l' ho trovata venerdi' sera:
il suggerimento di anthony e' stato prezioso;
ho utilizzato la funzione ontime al termine della macro, ma non ha funzionato.

poi ho fatto cosi':
ho creato una seconda macro : "seconda" il cui ruolo e' solamente quello di far partire "prima";
al termine della macro "prima", subito prima di end sub, ho inserito la funzione on time che lancia dopo 3 minuti "seconda";
Ha funzionato!!! :D
Codice: Seleziona tutto
Application.OnTime Now + TimeValue ( "00:03:00"), "seconda"

per quanto riguarda l'altro suggerimento, non l'ho ancora implementato, ero troppo soddisfatto per la buona riuscita dell'evento on tima, che mi sono preso il week'end lontano dal pc.[/quote]
d_cirrotti
Utente Junior
 
Post: 41
Iscritto il: 27/07/07 11:50

grazie

Postdi d_cirrotti » 30/07/07 10:02

allora,
la soluzione per far partire la macro ogni 3 minuti, l' ho trovata venerdi' sera:
il suggerimento di anthony e' stato prezioso;
ho utilizzato la funzione ontime al termine della macro, ma non ha funzionato.

poi ho fatto cosi':
ho creato una seconda macro : "seconda" il cui ruolo e' solamente quello di far partire "prima";
al termine della macro "prima", subito prima di end sub, ho inserito la funzione on time che lancia dopo 3 minuti "seconda";
Ha funzionato!!! :D
Codice: Seleziona tutto
Application.OnTime Now + TimeValue ( "00:03:00"), "seconda"

per quanto riguarda l'altro suggerimento, non l'ho ancora implementato, ero troppo soddisfatto per la buona riuscita dell'evento on tima, che mi sono preso il week'end lontano dal pc.[/quote]
d_cirrotti
Utente Junior
 
Post: 41
Iscritto il: 27/07/07 11:50

Postdi Anthony47 » 30/07/07 16:13

d_cirrotti ha scritto:ho utilizzato la funzione ontime al termine della macro, ma non ha funzionato.

Probabilmente avevi inserito il codice non in coda alla macro da eseguire a tempo. Purtroppo nel primo post parlavi di "macro2" da temporizzare, nel secondo di una macro che si chiamava "prima" (e non era chiaro se era quella che volevi temporizzare); cosi' me la sono cavata con un suggerimento generico: se vuoi temporizzare "prima", accodagli questo codice.
D' altra parte quando si impara provando e riprovando rimane piu' soddisfazione...

Ciao, alla prossima.
Avatar utente
Anthony47
Moderatore
 
Post: 19440
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "excel macro in VBA":


Chi c’è in linea

Visitano il forum: Nessuno e 42 ospiti