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

inserire Funzione in cella tramite VBA

1,370 views
Skip to first unread message

by sal

unread,
Feb 28, 2008, 3:10:12 AM2/28/08
to
Ciao a tutti vengo subito al sodo, devo inserire una funzione in una
cella tramite il VBA.
in effetti devo inserire tre celle nelle colonne A-B-C, però la
colonna C contiene una formula =(B3-A3)+1 che ho cambiato in Funzione
=SE(B3="";"";(B3-A3)+1), la macro che uso per fare questo eccola

Sub Ins()
Range("A3:C3").Select
Selection.Insert Shift:=xlDown
Range("C3").Formula = "=IF(B3="";"";(B3-A3)+1)"
Range("A3").Select
End Sub

Dove sbaglio?, ho cambiato "Range("C3").Formula" in
"Range("C3").Function", so che con il VBA accetta le funzioni in
Inglese quindi ho sostituito "SE" con "IF", ma niente da fare.

Potrei optare con un ulteriore codice VBA di far copiare la cella C4
sulla C3 ma non credo che sia la via giusta.

In attesa di suggerimenti un saluto By Sal

Ignazio

unread,
Feb 28, 2008, 3:20:16 AM2/28/08
to
"by sal" <by....@virgilio.it> ha scritto nel messaggio
news:59f9f195-a4bc-4aff...@34g2000hsz.googlegroups.com...

> Ciao a tutti vengo subito al sodo, devo inserire una funzione in una
> cella tramite il VBA.
> in effetti devo inserire tre celle nelle colonne A-B-C, però la
> colonna C contiene una formula =(B3-A3)+1 che ho cambiato in Funzione
> =SE(B3="";"";(B3-A3)+1), la macro che uso per fare questo eccola
>
> Sub Ins()
> Range("A3:C3").Select
> Selection.Insert Shift:=xlDown
> Range("C3").Formula = "=IF(B3="";"";(B3-A3)+1)"

Range("C3").Formula = "=IF(B3="""","""",(B3-A3)+1)"

--
Ciao,
Ignazio
RIO: www.riolab.org


toni64

unread,
Feb 28, 2008, 3:28:32 AM2/28/08
to

Sub Ins()
Range("A3:C3").Select
Selection.Insert Shift:=xlDown
Range("C3").Formula = "=IF(B3="";"";(B3-A3)+1)"
Range("A3").Select
End Sub

prova con FormulaLocal invece che con Formula
ciao


Maurizio Borrelli

unread,
Feb 28, 2008, 3:30:51 AM2/28/08
to
"by sal" wrote in message
news:59f9f195-a4bc-4aff...@34g2000hsz.googlegroups.com:

> devo inserire una funzione in una
> cella tramite il VBA.
> in effetti devo inserire tre celle nelle colonne A-B-C, però la
> colonna C contiene una formula =(B3-A3)+1 che ho cambiato in Funzione
> =SE(B3="";"";(B3-A3)+1), la macro che uso per fare questo eccola
> Sub Ins()
> Range("A3:C3").Select
> Selection.Insert Shift:=xlDown
> Range("C3").Formula = "=IF(B3="";"";(B3-A3)+1)"
> Range("A3").Select
> End Sub
> Dove sbaglio?, ho cambiato "Range("C3").Formula" in
> "Range("C3").Function", so che con il VBA accetta le funzioni in
> Inglese quindi ho sostituito "SE" con "IF", ma niente da fare.
> Potrei optare con un ulteriore codice VBA di far copiare la cella C4
> sulla C3 ma non credo che sia la via giusta.

Ciao sal.

Queste sono *formule*:

=(B3-A3)+1
=SE(B3="";"";(B3-A3)+1)

Questa e' una *funzione* (la funzione "SE()"):

SE(test; se_vero; se_falso)

Nel formato internazionale gli argomenti delle funzioni sono separati da
una virgola (,).

Il modo piu' pratico per sapere come devi scrivere la stringa di formula
in formato internazionale nel codice vb e' di immettere normalmente la
formula nel foglio di lavoro, quindi ottenerne la versione internazione
nella finestra Immediata digitando ad esempio:

?[a1].formula

e concludendo l'immissione dell'istruzione con il tasto Invio.
Nell'esempio si considera che la formula sia immessa nella cella "A1".

--
Maurizio Borrelli [Microsoft MVP - Excel]
http://www.riolab.org/

Maurizio Borrelli

unread,
Feb 28, 2008, 3:41:58 AM2/28/08
to
"Maurizio Borrelli" wrote in message
news:OFBmXRee...@TK2MSFTNGP05.phx.gbl:

[...]


> Il modo piu' pratico per sapere come devi scrivere la stringa di formula
> in formato internazionale nel codice vb e' di immettere normalmente la
> formula nel foglio di lavoro, quindi ottenerne la versione internazione
> nella finestra Immediata digitando ad esempio:
> ?[a1].formula
> e concludendo l'immissione dell'istruzione con il tasto Invio.
> Nell'esempio si considera che la formula sia immessa nella cella "A1".

Ciao a tutti.

Leggendo la risposta di Ignazio (Ciao!) mi accorgo di non averti fatto
notare che nella stringa della formula da usare nel codice dovrai anche
raddoppiare gli eventuali doppi apici. Sempre nella finestra Immediata
puoi ottenere tale "servizio" cosi':

?replace([a1].formula,chr(34),chr(34)&chr(34))

Poi ti bastera' copiare cio' che hai ottenuto e incollarlo (fra doppi
apici) nel codice.

Ignazio

unread,
Feb 28, 2008, 4:13:20 AM2/28/08
to
"Maurizio Borrelli" <maurizio...@freepass.it> ha scritto nel messaggio
news:%23v0NlXe...@TK2MSFTNGP02.phx.gbl...

> "Maurizio Borrelli" wrote in message
> news:OFBmXRee...@TK2MSFTNGP05.phx.gbl:
>> "by sal" wrote in message
>> news:59f9f195-a4bc-4aff...@34g2000hsz.googlegroups.com:
>
> [...]
>> Il modo piu' pratico per sapere come devi scrivere la stringa di formula
>> in formato internazionale nel codice vb e' di immettere normalmente la
>> formula nel foglio di lavoro, quindi ottenerne la versione internazione
>> nella finestra Immediata digitando ad esempio:
>> ?[a1].formula
>> e concludendo l'immissione dell'istruzione con il tasto Invio.
>> Nell'esempio si considera che la formula sia immessa nella cella "A1".
>
> Ciao a tutti.
>
> Leggendo la risposta di Ignazio (Ciao!) mi accorgo di non averti fatto
> notare che nella stringa della formula da usare nel codice dovrai anche
> raddoppiare gli eventuali doppi apici. Sempre nella finestra Immediata
> puoi ottenere tale "servizio" cosi':
>
> ?replace([a1].formula,chr(34),chr(34)&chr(34))

Ciao Maurizio,
ho seguito la procedura, ma non ottengo il raddoppio degli apici.
Eppure mi aspetterei di ottenere il risultato che dici.
E' come se '[a1].formula' non venisse considerato come testo.

Ignazio

unread,
Feb 28, 2008, 4:40:38 AM2/28/08
to
"Ignazio" <i_putign...@SeScriviAvirgilio.it> ha scritto nel messaggio
news:eucCUqee...@TK2MSFTNGP04.phx.gbl...
[...]

>> Leggendo la risposta di Ignazio (Ciao!) mi accorgo di non averti fatto
>> notare che nella stringa della formula da usare nel codice dovrai anche
>> raddoppiare gli eventuali doppi apici. Sempre nella finestra Immediata
>> puoi ottenere tale "servizio" cosi':
>>
>> ?replace([a1].formula,chr(34),chr(34)&chr(34))
>
> Ciao Maurizio,
> ho seguito la procedura, ma non ottengo il raddoppio degli apici.
> Eppure mi aspetterei di ottenere il risultato che dici.
> E' come se '[a1].formula' non venisse considerato come testo.

Oops .. come non detto.
Funziona perfettamente!
Sbagliavo in alcuni passaggi (si vede che ho poca confidenza con la finestra
immediata .. che purtroppo uso poco).
Scusami Maurizio ;)

by sal

unread,
Feb 28, 2008, 6:27:59 AM2/28/08
to
> Ciao,
> Ignazio e Maurizio
Grazie infinite, ci sto sbattendo la testa da ore, il fatto dei doppi
Apici mi e venuto in mente ma il fatto della virgola al posto del
Punto e virgola sinceramente non l'avevo ancora sentito per il sistema
internazionale.

Comunque anche per l'uso della finestra immediata che non uso mai.

Avevo letto nella ricerca ma nessuno parlava dell'argomento.

Di nuovo Grazie ed alla prossima Sal 8-DDD

0 new messages