Ciao Bart,
Alle 11:25, lunedì 27 marzo 2006, Bart Aimar ha scritto:
[....]
> > Purtroppo il problema tempi non dipende da come è impostato il codice,
> > Tuttavia, un paio di correzioni sul ciclo di eliminazione le farei
> > comunque.
>
> Sono tutt'orecchi!
Ho visto che oramai la cosa è praticamente superata, ma giusto per nn lasciare
in sospeso la questione:
In pratica ti segnalavo due errori che però si sommavano in modo che il ciclo
funzionasse ugualmente, rivediamo quindi il vecchio codice:
> sub Elimina_Tutti_NomiArea
> oDoc = ThisComponent
> oAree=oDoc.NamedRanges'
>
> For i = 0 to oAree.getCount() - 1
> oNomiArea = oAree.ElementNames(n)
> oAree. RemoveByName(oNomiArea)
> next
> End Sub
primo problema:
il ciclo usa la variabile di controllo i e internamente viene però usata la
variabile n
Ovviamente n avrà sempre valore 0
Questo genere di errori si previene usando Option Explicit
secondo problema:
i cicli for ad eliminazione per indice devono sempre lavorare "a rovescio" ,
cioè dall'ultimo elemento al primo.
Impostando infatti il ciclo in modo diretto si ottengono ovviamente errori di
"indice al di fuori dell'area definita" cioè errori per aver richiamato un
elemento con indice troppo alto.
Nel tuo caso il problema non si evidenziava perchè in effetti la variabile i
non era usata e il ciclo eliminava sempre l'elemento n, che però era sempre 0
per i motivi di cui sopra.
In pratica il codice corretto potrebbe essere il seguente:
For i = mAree.getCount() - 1 to 0 step -1
sNome = mAree.ElementNames(i)
mAree.removeByName(sNome)
next i
Una versione più compatta e che non usa nessun indice potrebbe invece essere
la seguente, a mio avviso più elegante e più "StarBasic Instinct" per così
dire...
For Each sName in mAree.ElementNames()
mAree.removeByName(sName)
Next sName
>
> >>>Ti conviene cercare altre vie per fare quello che devi fare.
[...]
> Ma cosa intendi esattamente?
[..]
Intendo dire che si potrebbe pensare di usare la coppia di metodi
getFormulaArray / setFormulaArray per spostare i dati (formule comprese) tra
un doc e l'altro.
Così a sensazione mi sembra un approccio vantaggioso, ovviamente occorrerebbe
verficare nel caso specifico.
ciao
Paolo
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]