› Excel e gli applicativi Microsoft Office › Formula in MsgBox
-
AutoreArticoli
-
Ciao,
vorrei inserire la seguente formula in un MsgBox :
=(MAX(A:N)-SOMMA.SE(Foglio1!C:C;"<>pippo";Foglio1!G:G))
ho provato così:
Sub formula() MsgBox Evaluate("(MAX(A:N)-SOMMA.SE(Foglio1!C:C;"<>pippo";Foglio1!G:G))") End Subma da errore di compilazione. Dove sbaglio?
Grazie in anticipo
Ciao
che io sappia quanto inserito in una MsgBox è una Stringa e, quindi, non può fare calcoli.
L'errore sta in quel Evaluate.
Ciao,
Mario
ho visto in rete che formule semplici tipo
MsgBox Evaluate("Sum(A1:A30)")vengono eseguite senza errori. La mia è un po' più complessa ma forse con la sintassi giusta si riesce
thunder wrote:complessa ma forse con la sintassi giusta si riesce
prova a sostituire la funzione Somm.se con Sumif, e poi da errore sul fatto che pippo è tra apici, e con gli apici precedenti il vba non riesce a capire
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Albatros ha ragione: le formule vanno tradotte in inglese.
Prendi la formula di cui sopra, incollala in una cella qualsiasi e vedi se funziona.
Poi vai in finestra immediata, digita
?activecell.formulaTi compare la medesima formula, scritta in inglese:
=(MAX(A:N)-SUMIF(Foglio1!C:C,"<>pippo",Foglio1!G:G))Adesso togli il segno di uguale, mettici una parentesi quadra aperta e chiudila alla fine dell'espressione. Questo è quello che devi passare al tuo Msgbox:
msgbox [(MAX(A:N)-SUMIF(Foglio1!C:C,"<>pippo",Foglio1!G:G))]ho sostituito ma da come risultato la formula solo come testo.
Per adesso ho risolto inserendo la SOMMA.SE in una cella distinta del foglio ed operando così:
Sub Messaggio() MsgBox Evaluate("Sum(MAX(A:N)-SUM(Foglio1!L2))") End Subthunder wrote:ma da come risultato la formula solo come testo
Ma in un msgbox compare sempre un testo, cosa altro dovrebbe apparire?
Se poi desideri, converti in un qualsiasi altro tipo:
dim valore as double valore = Cdbl([(MAX(A:N)-SUMIF(Foglio1!C:C,"<>pippo",Foglio1!G:G))]) msgbox valoreMa anche così otterrai sempre un testo nella finestra di messaggio.
Le parentesi quadre stanno al posto di Evaluate, ma non devi smazzarti con gli apici. Altrimenti è ovvio che devi prevedere di raddoppiare le virgolette per ogni virgoletta che deve entrare in una stringa, ed è facile confondersi.
No volevo dire che nel MsgBox compariva proprio la formula!
Comunque così funziona grazie
-
AutoreArticoli
