2008/7/17 Michele Corà <[EMAIL PROTECTED]>:
> Salve a tutti, ho un piccolo problema con i diagrammi di OO.
> Mi capita spesso di dover creare grafici di serie di dati la cui quantità
> varia a seconda della misurazione e vorrei fare in modo che i grafici si
> adattassero automaticamente al numero di dati presenti.
> Le colonne dati sono sempre le stesse, mentre cambia il numero delle righe
> dei dati.
> E' possibile programmare un grafico perchè vada a prendersi la sorgente dei
> dati da una cella? Come la funzione INDIRETTO di Calc?
>
> Qapla!
>
> --
> ..Seconda stella a destra poi diritto fino al mattino...
>
> Kor-ha
> E-Mail : [EMAIL PROTECTED]
> GruppoSole Ricerche Solari Italia: http://grupposole.astrofili.org
> I'm a VRML Dreamer: http://www.lucia.it/vrml
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

Ciao,

Ho dato un'occhiata alle proprieta' di un grafico e sembrerebbe
abbastanza semplice. C'e' un parametro chiamato EndRow che appunto
identifica l'ultima riga del range di dati usato da Calc per disegnare
il grafico.

Basta percio' che riadatti un pochino questa macro e dovresti essere a posto:

***NOTA IMPORTANTISSIMA ***
Non sono un programmatore ne' un utente assiduo di di Calc. Questo
esempio l'ho buttato giu' in 5 minuti e se un software engineer lo
legge e scopre dove abito sono nei guai! (pero' funziona)


Sub subCambiaRangeAlGrafico()
        ' il documento
        oDoc = ThisComponent()
        ' il foglio
        oSheet = oDoc.Sheets(0)

        ' il numero di righe (il valore e' nella cella A1 nel foglio 1
        ' ma puoi metterlo dove ti pare. Magari in una cella con un nome
        ' dove c'e' una formula che ti calcola il numero di righe
        ' o mettere una input box
        nRowCount = oSheet.getCellByPosition(0,0,0).value
        
        ' l'oggetto grafico (il primo diagramma del foglio)
        oChart = oSheet.Charts(0)
        
        ' il range di dati del diagramma
        oRanges = oChart.getRanges()
        
        ' setta il numero di riga finale (non so quanti range hai nel tuo 
grafico)
        oRanges(0).EndRow = nRowCount
        
        ' infine aggiorna il grafico impostando il nuovo range
        oChart.setRanges(oRanges)

End Sub

Come funge?
La macro funziona solo se:
- il grafico da modificare e' nel primo foglio ( oSheet = oDoc.Sheets(0) );
- il grafico sia il primo grafico del foglio ( oChart = oSheet.Charts(0) ).
- c'e' un solo range di dati (modifico oRanges(0) )
Altre note:
Il valore dell'ultima riga e' nella cella A1. come scritto nei
commenti puoi far aprire una input box o mettere nella cella A1 una
funzione che calcoli l'ultima riga (mi pare esista una funzione che
conta le righe, usi quella + la prima riga del range - 1 )
EndRow e' 0-based (credo!! :-) ), cioe' se la tua serie di dati
finisce alla riga 100 EndRow = 99

Ciao,

Michele

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Rispondere a