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
Range("C3").Formula = "=IF(B3="""","""",(B3-A3)+1)"
--
Ciao,
Ignazio
RIO: www.riolab.org
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
> 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/
[...]
> 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.
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 ;)
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