Ordina una tabella usando una colonna

From The Document Foundation Wiki
< Macros‎ | Calc
Jump to navigation Jump to search
This page is a translated version of the page Macros/Calc/ba023 and the translation is 100% complete.
Other languages:
English • ‎italiano

Questa pagina fornisce una procedura macro di LibreOffice Basic che ordina una tabella in base ai valori in una colonna. È un esempio tratto dal Capitolo 13 ("Calc come database") della Guida 7.0 Calc.

Descrizione

In una macro di Calc, i dati all'interno di un intervallo vengono ordinati chiamando il metodo sort() sull'oggetto intervallo. Quando viene chiamata un'operazione di ordinamento su un intervallo, un array di proprietà noto come descrittore di ordinamento viene passato al metodo sort. All'interno delle proprietà di un descrittore sono contenuti i "campi di ordinamento", che sono strutture che informano Calc su come ordinare un intervallo in base ai dati contenuti in una delle sue righe o colonne.

Ad esempio, la macro seguente ordina un foglio di valutazione della classe nelle celle $Sheet1.A1:H11 in base al voto medio in ordine decrescente. Il foglio di calcolo collegato contiene tale foglio di valutazione.

Codice

 1Sub SortAverageGrade
 2  Dim oSheet
 3  Dim oRange
 4  Dim oSortFields(0) as new com.sun.star.util.SortField
 5  Dim oSortDesc(0) as new com.sun.star.beans.PropertyValue
 6
 7  oSheet = ThisComponent.Sheets(0)
 8  REM Imposta l'intervallo su cui ordinare
 9  oRange = oSheet.getCellRangeByName("A1:H11")
10
11  REM Ordina per il campo Voto medio nell'intervallo in ordine decrescente
12  oSortFields(0).Field = 7
13  oSortFields(0).SortAscending = FALSE
14
15  REM Imposta i campi di ordinamento da utilizzare
16  oSortDesc(0).Name = "SortFields"
17  oSortDesc(0).Value = oSortFields()
18  
19  REM Ora ordina l'intervallo!
20  oRange.Sort(oSortDesc())
21End Sub

Questo Foglio di calcolo Calc contiene il codice soprastante Basic di LibreOffice.