Avvio macro di
Valentina |
Ciao a tutti! non riesco a scrivere il codice
giusto per questa situazione. ho in a1 una formula che rilascia come
risultato o una stringa (variabile) o valore vuoto(“ “). vorrei
far partire in automatico una macro (macro1) ogni volta che a1
rilascia una stringa. qualcuno può aiutarmi? complimenti per il
sito! - valentina
|
|
di Roberto |
Ciao valentina prova questa routine
private sub worksheet_change(byval target as range)
foglio1.select if range("a1").value <> "" then
call macro1 end if end sub
|
|
di Apoben64 |
Ciao valentina e benvenuta nel forum ! in
aggiunta la post di roberto , guarda se ti può essere utile il post
"avviare una macro selezionando una cella " di jimmy. facci
sapere! |
|
Per roberto & apoben64 di
Valentina |
grazie per risposte superveloci. la
routine di roberto è tale per cui la cella a1, per il solo fatto di
contenere una formula, viene “vista†come non vuota anche quando
rilascia un valore vuoto. ciò causa l’avvio della macro in ogni
caso. fate la prova ponendo in a1 una formula del tipo:
=se(d1=1;â€pippoâ€;†“) e vedrete che macro1 parte già
all’inserimento della formula, indipendentemente dal valore di d1.
c’è un’altra cosa che non riesco a capire. se macro1 consiste,
ad es., nel far apparire la scritta “prova†in f1, per quale motivo
una volta che è stata eseguita, sia pure nel modo appena detto,
viene preclusa la possibilità di cancellare la scritta “prova†da f1
? |
|
di Big ronnie |
Ciao valentina, sicuramente non ti elimina la
scritta prova, perchè in d1 hai il valore 1 e quindi soddisfi la
macro worksheets_change che si genera ogni volta che cambia qualcosa
nel foglio.inserendo in d1 qualcosa di diverso da 1 funziona tutto
correttamente |
|
Per big ronnie di
Valentina |
Il fatto è che la macro parte comunque, come
dicevo, inserendo o meno l' 1 in d1. il fatto di non poter cancellare
la scritta una volta avviata la macro è una nota a margine che però
mi lascia perplessa. |
|
Ancora per big ronnie di
Valentina |
sono ancora qui a fare prove. vedi, se in
a1 non ci fosse la formula che ho detto, tutto funzionerebbe
correttamente come dici tu: inserendo in a1 un numero o una lettera
qualsiasi si avvia la macro e dopo avrei anche la possibilità di
cancellare la scritta provocata dalla macro. purtroppo, però, la
cosa non è così semplice perchè in realtà in a1 ho una formula, del
tipo descritto nel post precedente. bene, l’inserimente di tale
formula in a1, è già sufficiente, a quanto pare, per rendere la
cella a1 “non vuotaâ€, e di conseguenza far partire la macro. nelle
mie intenzioni la macro dovrebbe avviarsi soltanto quando la formula
in a1 rilascia come risultato una stringa qualsiasi; quando, al
contrario, rilascia valore vuoto, la macro non dovrebbe avviarsi.
spero di aver chiarito i termini del problema. grazie in ogni
caso. - valentina
|
|
di Apoben64 |
Ciao valentina, personalmete ritengo che il tuo
quesito sia semplice, la strada indicata da big ronnie è quella
giusta ma un esempio sarebbe determinante. se vuoi puoi
contattarmi utilizzando la sezione contatti. in questo modo
avrai il mio indirizzo email e mandarmi una copia del file che stai
utilizzando. un saluto luca.
|
|
Per apoben64 di
Valentina |
Ciao luca!
l’esempio è presto fatto:
1. in a1 c’è la seguente formula: =se(d1=1;â€pippoâ€;†“)
in tal modo, ogni volta che scrivo 1 in d1, compare la stringa
“pippo†in a1. qualunque altra cosa scriva in d1, compare valore
vuoto in a1. naturalmente sto semplificando, perchè, in realtà, a
determinati valori di d1 corrispondono determinate stringhe (tutte
diverse) in a1, mentre ad altri determinati valori in d1 corrisponde
valore vuoto in a1. 2. la macro 1 fa sì che in f1 venga posta la
scritta “prova†(questa è una macro qualsiasi). 3. la macro1
deve: • avviarsi se in a1 compare una stringa qualunque; •
non avviarsi se in a1 c’è valore vuoto.
attualmente ho
problemi con la posta elettronica ma mi riprometto, qualora questo
esempio non sia sufficientemente chiarificatore, di contattarti in
futuro. ho già verificato le indicazioni di big ronnie (ed
approfitto per ringraziarlo) ma nel mio caso funzionano
perfettamente solo se in a1 non c’è alcuna formula. grazie di cuore
a tutti! -- valentina
|
|
di Jimmy |
Ciao valentina! in effetti, per il solo fatto
di contenere una formula, a1 non è mai una cella vuota e quindi la
macro si avvia comunque. a mio avviso, la strada da seguire potrebbe
essere la seguente. innanzitutto memorizzare all'interno di una
variabile il risultato rilasciato dalla formula in a1.
successivamente, utilizzando specifiche funzioni vba, controllare se
il valore memorizzato nella variabile è una stringa. in caso
affermativo (true), dare istruzioni affinchè venga avviata la macro.
spero che il suggerimento ti sia di qualche utilità. |
|
di Big ronnie |
Ciao valentina, copia questo codice nell'editor vba
di worksheets("foglio1") ed inserisci la formula
=se(d1=1;"pippo";"") in worksheets("foglio1") cella a1.a me funziona
perfettamente.
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("a1") <> "" Then Macro1
End Sub
Sub Macro1()
Worksheets(1).Range("f1") = "prova"
End Sub
| |
|
di Jummy |
Ciao big ronnie! non so se valentina ha provato
il tuo codice, ma io l'ho fatto ed il risultato è che appena lo
eseguo parte la macro1 e scrive correttamente "prova" in f1 anche se
nulla è stato digitato d1. questo significa che il codice interpreta
la formula in a1 come un oggetto che la rende non vuota. in tale
situazione, facendo persistere la condizione per generare macro1
impedisce, tra l'altro, di cancellare la scritta "prova". il caso
comincia ad interessarmi. |
|
Errore di battitura di
Jimmy |
Chiedo scusa per un errore di battitura. ripeto il
messaggio.
ciao big ronnie! non so se valentina ha
provato il tuo codice, ma io l'ho fatto ed il risultato è che appena
lo eseguo parte la macro1 e scrive correttamente "prova" in f1 anche
se nulla è stato digitato d1. questo significa che il codice
interpreta la formula in a1 come un oggetto che la rende non vuota.
tale situazione, facendo persistere la condizione per generare
macro1 impedisce, tra l'altro, di cancellare la scritta "prova". il
caso comincia ad interessarmi. |
|
di Big ronnie |
Ciao jimmy,credo che quella che tu esegui è la
macro1 che non è altro che un comando di scrivere la parola prova in
f1.il fatto che non ti da la possibilità di cancellarla sarà forse
xchè hai inserito macro1 nella macro worksheet_change? per jimmy e
valentina.provate ad inserire la macro worksheets_change in
foglio1(editor), macro1 in un modulo di codice,la formula in a1(del
foglio1) e non eseguite nessun codice ma lavorate solo su d1(del
foglio1) inserendo il num.1 e togliendolo ed il gioco e fatto. |
|
Ringraziamento a big ronnie di
Valentina |
Ciao ronnie! ho seguito con scrupolo i tuoi
suggerimenti e...funziona!!! un grazie di cuore credo anche a nome
di jimmy. |