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]

Rispondere a