Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VBA: scrivere una formula su più righe

930 views
Skip to first unread message

draleo

unread,
Jan 3, 2010, 7:16:01 AM1/3/10
to
In una macro
Ho una formula abbastanza lunga e per motivi di maggior leggibiltà vorrei
dividerla in più righe, ma il debug così da errore

Range("AE6").FormulaR1C1 = _
"=(COUNTA(RC[-2])+COUNTA(RC[-3])+" & Chr(13) & _
"COUNTA(RC[-4])+COUNTA(RC[-6]))"
Come fare?
grazie
draleo

Antonio

unread,
Jan 3, 2010, 9:03:01 AM1/3/10
to

"draleo" ha scritto:

Prova con registratore di macro, scrivi la formula nella cella AE6, attiva
il registratore, posiziona il cursone nella barra delle formule (a fine
formula) e premi invio, blocca il registratore e vedi il codice che viene
fuori.

Ciao
Antonio

draleo

unread,
Jan 3, 2010, 10:19:01 AM1/3/10
to
Non succede niente di quanto sperato (nel senso che il registratore mostra la
formulona tutta su una riga)
Forse non mi sono spiegato: il problema non è il funzionamento della formula
(se nel codice VBA la scrivo tutta su una riga , essa funziona)
Il problema è che per motivi di maggior leggibilità del codice (è fastidioso
spostarsi con le barre di scorrimento per leggerla tutta), vorrei dividerla
nel codice in più righe in modo di leggerla interamente a colpo d'occhio
Quindi al termine della riga, cosa scrivo per far continuare la formula
sulla riga successiva?
grazie
draleo

"Antonio" ha scritto:

lorenzoeffe

unread,
Jan 3, 2010, 10:36:13 AM1/3/10
to

"draleo" <dra...@discussioni.com> ha scritto nel messaggio
news:996A030C-759F-4047...@microsoft.com...

> Non succede niente di quanto sperato (nel senso che il registratore mostra
> la
> formulona tutta su una riga)
> Forse non mi sono spiegato: il problema non è il funzionamento della
> formula
> (se nel codice VBA la scrivo tutta su una riga , essa funziona)
> Il problema è che per motivi di maggior leggibilità del codice (è
> fastidioso
> spostarsi con le barre di scorrimento per leggerla tutta), vorrei
> dividerla
> nel codice in più righe in modo di leggerla interamente a colpo d'occhio
> Quindi al termine della riga, cosa scrivo per far continuare la formula
> sulla riga successiva?
> grazie

A parte che nella cella no, ma sulla barra delle formule la formula dovresti
vederla tutta, se proprio non è lunghissima,
Se hai il 2007 puoi allargare (verticalmente) la barra della formula così la
vedi sicuramente tutta intera.
ciao, Lo

paoloard

unread,
Jan 3, 2010, 10:56:10 AM1/3/10
to

"draleo" <dra...@discussioni.com> ha scritto nel messaggio
news:996A030C-759F-4047...@microsoft.com...
> Non succede niente di quanto sperato (nel senso che il registratore mostra
> la
> formulona tutta su una riga)
> Forse non mi sono spiegato: il problema non è il funzionamento della
> formula
> (se nel codice VBA la scrivo tutta su una riga , essa funziona)
> Il problema è che per motivi di maggior leggibilità del codice (è
> fastidioso
> spostarsi con le barre di scorrimento per leggerla tutta), vorrei
> dividerla
> nel codice in più righe in modo di leggerla interamente a colpo d'occhio
> Quindi al termine della riga, cosa scrivo per far continuare la formula
> sulla riga successiva?
> grazie
> draleo
>

ciao draleo, in una macro un'istruzione lunga può essere divisa su più righe
mediante il carattere di sottolineatura, cosa che mi pare tu hai fatto. Non
è che l'errore è causato invece da un'altra ragione? per es. dal doppio =
(uguale) dopo FormulaR1C1?
--
ciao paoloard
http://riolab.org

paoloard

unread,
Jan 3, 2010, 11:10:00 AM1/3/10
to

"paoloard" <xxp...@alice.it> ha scritto nel messaggio
news:O4IpG1Ij...@TK2MSFTNGP05.phx.gbl...
>
cut

> ciao draleo, in una macro un'istruzione lunga può essere divisa su più
> righe mediante il carattere di sottolineatura, cosa che mi pare tu hai
> fatto. Non è che l'errore è causato invece da un'altra ragione? per es.
> dal doppio = (uguale) dopo FormulaR1C1?
> --

no no, sorry, quello va bene
ciao
--
paoloard
http://riolab.org

eliano

unread,
Jan 3, 2010, 5:17:01 PM1/3/10
to

"paoloard" ha scritto:

LOL
Ciao Paolo.
Io non mi intendo di formule, ma non è che in una somma andarci a sommare un
chr(13) faccia un po' imbestialire il Vbe ??
Comunque in una formula RC non è raccomandabile andarci ad inserire un
carattere 10, 13 o similia, anche se preceduto dal segno + .
Eliano

paoloard

unread,
Jan 4, 2010, 5:14:34 AM1/4/10
to

"eliano" <eli...@discussions.microsoft.com> ha scritto nel messaggio
news:2FAB02D1-E522-4A0A...@microsoft.com...
>
>
cut

> Io non mi intendo di formule, ma non è che in una somma andarci a sommare
> un
> chr(13) faccia un po' imbestialire il Vbe ??
> Comunque in una formula RC non è raccomandabile andarci ad inserire un
> carattere 10, 13 o similia, anche se preceduto dal segno + .
> Eliano

allora draleo! hai sentito eliano? seguine le traccie, ache se Aquila della
Notte ha il piede leggero :-)

draleo

unread,
Jan 4, 2010, 8:47:01 AM1/4/10
to
Mahh! Ho provato anche a togliere i caratteri carattere 10, 13 e sostituirli
con la semplice barra spaziatrice

Range("AE6").FormulaR1C1 = _

"=(COUNTA(RC[-2])+COUNTA(RC[-3])+" _


"COUNTA(RC[-4])+COUNTA(RC[-6]))"

Ho provato anche tante altre soluzioni
ma il risultato è che il debug da sempre errore. Credo proprio che nelle
macro non sia possibile scrivere una formula in formato R1C1 in più righe.
A meno che ....qualcuno non mi dimostri il contrario
grazie
draleo

"paoloard" ha scritto:

Scossa

unread,
Jan 4, 2010, 9:00:13 AM1/4/10
to
> A meno che ....qualcuno non mi dimostri il contrario
> grazie

Cosa non va in questa?:

Public Sub m()


Range("AE6").FormulaR1C1 = _

"=(COUNTA(RC[-2])+COUNTA(RC[-3])+" & Chr(10) & _


"COUNTA(RC[-4])+COUNTA(RC[-6]))"

End Sub

Fai sapere se hai risolto, grazie.

Bye!
Scossa

draleo

unread,
Jan 4, 2010, 10:03:01 AM1/4/10
to
Finalmente !!! questa funziona.
Una curiosità didattica: perchè se termino la riga
con & Chr(10) & _ FUNZIONA
mentre
con & Chr(13) & _ NON FUNZIONA dando errore di runtime 1004 (errore
definito dall'applicazione o dall'oggetto) ???
Grazie
draleo

"Scossa" ha scritto:

> .
>

Scossa

unread,
Jan 4, 2010, 10:13:04 AM1/4/10
to
On 4 Gen, 16:03, draleo <dra...@discussioni.com> wrote:

> con  & Chr(10) & _  FUNZIONA
> mentre
> con & Chr(13) & _   NON FUNZIONA dando errore di runtime 1004 (errore

Chr(10) inserisce un carattere LF (line Feed) che è quello che
inseriresti manualmente per andare a capo in una cella (Alt+Invio)

Chr(13) inserisce un carattere CR (Carriage Return) che è quello che
ottieni quando premi Invio da solo.

Bye!
Scossa

0 new messages