>>>> Function Riordina_A (_ ColRior as integer, AscDesc as boolean)as >>>> variant ' Riordina l'elenco prezzi con criteri ' a scelta... >>>> >>> 4. è possibile impostare più criteri di ordinamento? tipo la finestra >>> di dialogo: per col. C, quindi per col. D....? >>> >> Non saprei... non ho mai provato... ma era passato qualcosa in lista... >> ma non ricordo... so che avevo dato un consiglio stupido e mi avevano >> subito smentito... >> >> Forse qualcuno può aiutarci? >> > speriamo :-) >
L'hai già scritto tu nel codice Bart!! :-) Dim aSortFields(1) As New com.sun.star.util.SortField '____^^^^^^^^^ 'Fields, quindi plurale, quindi: Dim aSortFields(1) As New com.sun.star.util.SortField Dim aSortDesc(0) As New com.sun.star.beans.PropertyValue aSortFields(0).Field = ColRior aSortFields(0).SortAscending = AscDesc aSortFields(1).Field = ColRior+1 aSortFields(1).SortAscending = AscDesc aSortDesc(0).Name = "SortFields" aSortDesc(0).Value = aSortFields() oMioRange.Sort(aSortDesc()) Se sostituisci il corrispondente nel tuo esempio utilizza come primo criterio di ordinamento la colonna 2 e poi la 3 (ColRior+1)! ;-) >>>> oLastCell = getLastUsedCell(oSheet) lcolEnd = oLastCell.Endcolumn >>>> lrowEnd = oLastCell.EndRow oMioRange = >>>> osheet.getCellRangeByPosition(0,1,lcolEnd,lrowEnd) >>>> >>> 5. in fondo alla tabella ci sono commenti e schifezze varie, c'è un >>> modo per determinare, anche interattivamente, il range di >>> righe/colonne da riordinare? >>> Intendi che infondo alla tua tabella ci sono commenti e schifezze che non devono essere riordinate? In tal caso o usi la soluzione di Bart con una stringa fissa alla fine della tabella oppure non so... >> Hai, hai... vedo che non era solo un mio problema... :-) >> > in modo "desperado" potrei risolvere definendo il range all'interno del > codice in modo costante, l'inconveniente sarebbe (penso) avere una serie > di righe vuote all'inizio (corrispondenti alle righe del range che non > contengono dati). > Se ti accontenti, potresti poi rimuovere in un secondo tempo le celle bianche, tanto sapresti dove sono... Il problema sarebbe definire un range abbastanza ampio da comprendere sempre i dati da ordinare e non troppo ampio per eventualmente non rallentare troppo il processo di ordinamento... Beh, poi ci sarebbe anche la famosa function che avevamo tirato fuori tempo fa, ma che dava problemi di focus con finestre di ricerca aperte, se per te non è un problema la puoi recuperare qui: http://it.openoffice.org/servlets/ReadMsg?list=dev&msgNo=1060 insieme alla descrizione del problema riscontrato da Bart. La parte che ti permette di selezionare il range inizia dalla funzione "getRange" che ti restituisce il range selezionato, poi devi manipolarlo per ottenere quel che ti serve. Se però il range da selezionare è ampio o ti serve qualcosa di più automatizzato, non credo sia la soluzione migliore... >> oltre ad eseguire il codice a valle la sub chiamante veniva informata >> del valore della riga finale... >> Ma nel nostro caso non serve! >> >> Intendo dire che se vuoi che un modulo restituisca qualcosa devi usare >> una Function, >> impostrare una variabile = nome_function, >> e all'interno della function impostare il >> nome_function = valore_elaborato >> >> > questo mi sembra un vero ambaradan, mi sfugge anche il concetto di modulo, > ma questa è ignoranza mia. > Immagino che Bart intendesse con "modulo" una certa sequenza di codice che può comprendere sub o function, anche se comunemente con modulo si identifica uno dei "fogli" in cui vai a scrivere il codice basic. ;-) Esempio basilare di function, se serve: sub esempioDiFunction 'la riga successiva permette di assegnare 'alla variabile "a" il valore che otterremo 'dalla funzione "assegnaA" a = assegnaA msgbox a end sub function assegnaA() as string 'la riga successiva consente alla function 'di restituire un valore che verrà assegnato 'alla variabile "a" nella sub iniziale assegnaA = "assegnata" end function Ciao! Emanuele. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
