A-Lex wrote:
oDoc = ThisComponent
perchè hai dovuto creare questa variabile se nn la usi?
Infatti è un... refuso ;) Volevo in effetti scrivere oRange =
oDoc.GetCurrentSelection ;)
qui metti "-1" perchè il ciclo parte da 0 e nn da 1, vero?
Sì. E' dovuto al fatto che per ricavare la prima cella in alto a
sinistra della selezione con il metodo getCellByPosition bisogna partire
da (0,0).
sFormula = sFormula & oCell.Formula
qui alla variabile sFormula assegni se stessa (nel caso nn fosse
vuota?) a cui "accodo" quelo che trovo il oCell?
L'idea di partenza è che delle celle selezionate soltanto una contiene
una formula (altrimenti quale funzione si dovrebbe preferire?) e le
altre sono vuote; una sola cella cioè contiene una stringa nella
proprietà Formula, mentre in tutte le altre c'è una stringa vuota.
Quindi tramite il ciclo vengono concatenate tutte le stringhe vuote
(nessun effetto) e l'unica stringa non vuota (la funzione desiderata).
L'alternativa era fare un controllo con IF:
if oCell.Formula <> "" then
sFormula = oCell.Formula
end if
ma questo vuol dire aggiungere una complessità (e il numero di righe di
codice).
..e nel caso (come dice Stefano) nella selezione ci fossero più celle
"compilate"?
In effetti se le altre celle non sono vuote i loro valori sono
concatenati nella formula finale... con risultati inaspettati.
La macro si può modificare per fare in modo che vengano ignorate le
celle che non contengono una formula (la proprietà Value o String della
cella corrisponde a Formula).
if oCell.Formula <> "" AND oCell.Value <> oCell.Formula AND
oCell.String <> oCell.Formula then
sFormula = oCell.Formula
end if
Il solo metodo Merge(True) equivale a rispondere No alla domanda:
"Spostare il contenuto delle celle nascoste nella prima cella?"
Ciao,
--
MC
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]