Condividi:        

Simulare la pressione del Tasto F9

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

Simulare la pressione del Tasto F9

Postdi papiriof » 02/05/14 16:50

Vorrei simulare la pressione del tasto F9 con una macro in modo non con un clic del mouse alla volta ma in modo continuo come se stessi premendo su F9 tenendo pigiato e uscire dalla macro al verificarsi di una condizione .
Mi spiego: ho dei numeri casuali in A1:A3, B1:B3, C1:C3 questi numeri casuali sono collegati a delle formule in varie celle del foglio in modo tale che ogni volta che pigio F9 ho un certo scenario ,ma uno alla volta ci vuole troppo tempo per controllare, d'altra parte se tengo premuto F9 le situazioni si accavallano troppo velocemente e quindi inservibili allora come fare ad uscire dalla sub se per esempio la cella Z1( ovviamente dipendente dal variare di A1:A3, B1:B3, C1:C3) è uguale ad 1 ??
Si può fare?
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 408
Iscritto il: 16/02/10 13:23

Sponsor
 

Re: Simulare la pressione del Tasto F9

Postdi Dylan666 » 02/05/14 18:08

Non puoi usare Application.CalculateFull che poi è quello che fa F9?
Avatar utente
Dylan666
Moderatore
 
Post: 40105
Iscritto il: 18/11/03 16:46

Re: Simulare la pressione del Tasto F9

Postdi Zer0Kelvin » 02/05/14 18:29

Ciao.
Penso che anche un economico Range.Calculate possa essere sufficiente; es.
Codice: Seleziona tutto
    Do
        '
        '<==istruzioni per impostare i valori delle celle
        '
        Range("Z1").Calculate
    Loop Until Range("Z1") = 1 '<== condizione di uscita
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 388
Iscritto il: 08/04/12 11:23

Re: Simulare la pressione del Tasto F9

Postdi papiriof » 03/05/14 09:23

Ringrazio Dylan e Zer0 ho fatto tutte le prove che credevo utili anche prendendo codici dei 2 suggerimenti ma il più delle volte il computere si imballava alla fine gli unici 2 codici che almeno non bloccano il file sono questi due che io o messo non nel codice del foglio ma nel modulo:
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Sub simulaF99()
Dim x As Integer
Application.Calculation = xlCalculationManual 1
Application.Calculation = xlCalculationAutomatic
End Sub
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Sub simulaF9()
Dim x As Integer
Application.Calculation = xlCalculationManual
Do
Application.CalculateFull 2
Range("C19").Calculate

Loop Until Range("C19") = 10 '<== condizione di uscita
Application.Calculation = xlCalculationAutomatic
End Sub
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Con un bottone posto sul foglio dove vedo i cambiamenti se richiamo la prima macro si comporta che la variazione di tutte le formule
avviene una alla volta invece con la seconda soluzione invece gli scenari si susseguono velocemente e poi come voluto si ferma ma non rispetta la condizione di uscita imposta ??
C'è ancora da dire ( spero utile) che la condizione di uscita dalla macro ,in questo caso nella cella C19 devo avere il valore 10 ,non è una diretta conseguenza dei valori casuali che cambiano ma quest'ultimi fanno cambiare altre celle che a loro volta altre e la somma di C6:C18 è = alla Cella C19
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 408
Iscritto il: 16/02/10 13:23

Re: Simulare la pressione del Tasto F9

Postdi Anthony47 » 03/05/14 19:50

In aggiunta ai suggerimenti gia' collaudati, potresti provare a usare il componente "Ricerca Obiettivo" (Menu /Strumenti /Ricerca obiettivo); se i dati nelle tue celle cambiano ad ogni F9 allora potrebbe bastare questa macro:
Codice: Seleziona tutto
Sub LFZ11()
    Range("D1").ClearContents
    Application.MaxIterations = 10000   
    Range("Z1").GoalSeek Goal:=1, ChangingCell:=Range("D1")
End Sub
Invece di D1 usa una qualsiasi cella libera del tuo foglio.
Quel MaxIterations determina quanti tentativi max verranno fatti prima di abbandonare la ricerca. Ovvio che piu' tentativi fai e piu' chance hai di ottenere il risultato voluto, ma anche piu' tempo impieghera' excel a provare e riprovare; quanto "piu' tempo"? dipende dalle tue formule.

C' e' anche da dire che la transizione da Calculation = xlCalculationManual a xlCalculationAutomatic causa un ricalcolo delle funzioni volatili, che sono presenti tra i predecessori di Z1 (o C19, come nei casi che hai descritto appena sopra); questo spiega perche' "talvolta" la macro si ferma (evidentemente) al valore che cerchi, ma poi visualizza un altro risultato.
GoalSeek funziona sia in xlCalculationManual che xlCalculationAutomatic, se non ci sono altri motivi puoi lasciare l' impostazione in xlCalculationAutomatic.

Ciao a tutti.
Avatar utente
Anthony47
Moderatore
 
Post: 19438
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Simulare la pressione del Tasto F9

Postdi papiriof » 04/05/14 07:27

Grazie Anthony proverò anche questa tua soluzione, intanto segnalo ,eventualmente a chi può servire, questa macro che per adesso funge allo scopo :
Sub simulaF9()
Do While [D21].Value < 14
Application.Calculate
Loop
End Sub
Come ho detto funziona ma ha 2 piccoli inconvenienti :
1)perchè si ferma anche a 14 dato che mi dovrebbe fermare solo con i valori superiori a 14 ?
2)quando trova un risultato si blocca tutto ,nel senso che se ripigi sul bottone che scatena la macro non parte ? parte solo previo scrivere su una cella libera qualcosa dare enter e quindi ripigiare il bottone... così tanto pe capire
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 408
Iscritto il: 16/02/10 13:23

Re: Simulare la pressione del Tasto F9

Postdi Zer0Kelvin » 04/05/14 10:23

Caio.
1) se tu imposti come condizione
Codice: Seleziona tutto
 [D21].Value < 14

mi sembra più che normale che il valore 14 provochi l'uscita dal ciclo, dato che 14 NON E' minore di 14; avresti dovuto scrivere
Codice: Seleziona tutto
 [D21].Value <= 14

2) se lanci la macro una seconda volta, le condizioni sono ancora le stesse che hanno provocato l'uscita dalla macro la prima volta.
Probabilmente devi mettere un ricalcolo prima del ciclo.
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 388
Iscritto il: 08/04/12 11:23

Re: Simulare la pressione del Tasto F9

Postdi papiriof » 04/05/14 16:52

mi sembra più che normale che il valore 14 provochi l'uscita dal ciclo, dato che 14 NON E' minore di 14; avresti dovuto scrivere
Codice: Seleziona tutto
[D21].Value <= 14
He,he GIUSTO!! grazie Zer0
Per Anthony non ho compreso bene come adoperare la macro , quando cerco di aggangiarla a un bottone viene fuori un messaggio di riferimenti al foglio??
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 408
Iscritto il: 16/02/10 13:23

Re: Simulare la pressione del Tasto F9

Postdi Anthony47 » 05/05/14 01:36

Per Anthony non ho compreso bene come adoperare la macro , quando cerco di aggangiarla a un bottone viene fuori un messaggio di riferimenti al foglio??
La macro non ha nulla di particolare, si lancia come qualsiasi altra macro.
Ad esempio:
-disegni un pulsante degli strumenti "Modulo", gli associ quella macro (ti verra' chiesto esplicitamente, dopo che hai disegnato il pulsante, a quale macro associarla)
oppure
-da Excel, premi Alt-F8; selezioni il nome della macro dall' elenco che ti propone, premi Esegui.

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

Re: Simulare la pressione del Tasto F9

Postdi papiriof » 05/05/14 07:44

Anthony47 ha scritto:
Per Anthony non ho compreso bene come adoperare la macro , quando cerco di aggangiarla a un bottone viene fuori un messaggio di riferimenti al foglio??
La macro non ha nulla di particolare, si lancia come qualsiasi altra macro.
Ad esempio:
-disegni un pulsante degli strumenti "Modulo", gli associ quella macro (ti verra' chiesto esplicitamente, dopo che hai disegnato il pulsante, a quale macro associarla)
oppure
-da Excel, premi Alt-F8; selezioni il nome della macro dall' elenco che ti propone, premi Esegui.

Ciao

Faccio esattamente come hai detto quando poi associo quella macro mi vien fuori questo messaggio: "Il riferimento deve essere ad un foglio macro"
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 408
Iscritto il: 16/02/10 13:23

Re: Simulare la pressione del Tasto F9

Postdi papiriof » 05/05/14 08:27

Ho cambiato il nome della macro da Sub "LFZ11()" a Sub "PippoLFZ11()"e adesso gira ma come faccio per la condizione di uscita? una volta lanciata si ferma come gli pare !!
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 408
Iscritto il: 16/02/10 13:23

Re: Simulare la pressione del Tasto F9

Postdi papiriof » 05/05/14 09:09

Ho capito come fare bisogna agire nella macro "Range("f19")" è quel dato che deve cambiare .GoalSeek Goal:=14<---- è la condizione da raggiungere,giusto?
Ora però ci sono altri problemi da risolvere , siccome potrebbe non esserci la condizione desiderata seho capito bene quel10000 sonono il num max che prova?
Altro .. il Range da cambiare e la condizione ,siccome cambiano, non si potrebbe fare che è la stessa macro che me lo richiederebbe con degli inputbox?
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 408
Iscritto il: 16/02/10 13:23

Re: Simulare la pressione del Tasto F9

Postdi Anthony47 » 06/05/14 00:36

Avevo collaudato su XL2003, ma tu usi XL2007, e LFZ11 viene confuso con l' indirizzo di una cella; bene l' uso di "pippo".
Nella macro
Codice: Seleziona tutto
    Application.MaxIterations = 10000    '-1
    Range("Z1").GoalSeek Goal:=1, ChangingCell:=Range("D1")       '-2

La riga -1 dice quanti tentativi fara' excel prima di fermarsi senza aver raggiunto l' obiettivo; piu' e' alto e piu' hai chance di ottenere quello che cercavi; ovviamente, piu' e' alto e piu' tempo potesti dover aspettare.
Il D1 e' una cella libera del tuo foglio di lavoro; l' ho messa per costringere le tue formule a ricalcolarsi. Non devi usare una cella in cui hai le formule, ma una qualsiasi cella libera. Ovviamente questa logica un po' stramba vale in questo caso, giacche' le tue formule si ricalcolano da sole (immagino che usi la funzione Casuale), mentre in genere al GoalSeeker bisogna dare la cella "madre" di tutti i calcoli da controllare.
Z1 e' la cella di cui si guarda il risultato (ho usato Z1 come da tuo quesito iniziale); Goal:=xyz indica quale valore la funzione deve cercare di ottenere in Z1.

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


Torna a Applicazioni Office Windows


Topic correlati a "Simulare la pressione del Tasto F9":


Chi c’è in linea

Visitano il forum: Nessuno e 8 ospiti