[Risolto] Popolare ListBox con array

Creare una macro - Scrivere uno script - Usare le API
Rispondi
maxrome84
Messaggi: 55
Iscritto il: mercoledì 1 giugno 2016, 18:37

[Risolto] Popolare ListBox con array

Messaggio da maxrome84 »

Salve a tutti, sono di nuovo qui a chiedere un consiglio.
Finora per popolare una listBox ho sempre utilizzato questo metodo, scorrendo riga per riga con un ciclo fino all'ultima utilizzata.Ho letto però, che utilizzando un array sarebbe molto piu veloce.Questo sistema infatti va bene per un centinaio di righe ma poi diventa troppo lento.Qualcuno mi puo aiutare?

'questa è una mia funzione, che passato come parametro il nome foglio restituisce l'ultima riga utilizzata
UltimaRiga("Schede clienti")

For i = 1 to LastRow

if clienti.getCellByPosition(0, i).String <> "" then
oDialogo.getControl("ListaClienti").addItem(clienti.getCellByPosition(0, i).string , oDialogo.getControl("ListaClienti").ItemCount)
end if
next i

Quindi dovrei ottenere l'array che per un determinato foglio vada dalla prima all'ultima riga utilizzata.E poi aggiungerlo alla listbox.
Grazie a tutti.
Ultima modifica di charlie il martedì 17 gennaio 2017, 13:51, modificato 2 volte in totale.
Motivazione: Aggiunta spunta verde
Open Office 4 beta
windows 7
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Popolare ListBox con array

Messaggio da patel »

Codice: Seleziona tutto

LBox = Dlg.getControl("ListBox1")
oDoc = ThisComponent
Sheet = oDoc.Sheets(0)
CellRange = Sheet.getCellRangeByName("A1:A4")
Dati = CellRange.GetDataArray
svc = createUnoService("com.sun.star.sheet.FunctionAccess")
Dati1 =  svc.callFunction("TRANSPOSE", Array(Dati))
LBox.getModel.StringItemList = Dati1(0)
se non riesci allega un file di esempio
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
maxrome84
Messaggi: 55
Iscritto il: mercoledì 1 giugno 2016, 18:37

Re: Popolare ListBox con array

Messaggio da maxrome84 »

Grazie! Funziona perfettamente! L'unica cosa, come faccio ad indicare come fine del range l'ultima cella utilizzata?
Open Office 4 beta
windows 7
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Popolare ListBox con array

Messaggio da patel »

CellRange = Sheet.getCellRangeByName("A1:A" & LastRow)
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
maxrome84
Messaggi: 55
Iscritto il: mercoledì 1 giugno 2016, 18:37

Re: Popolare ListBox con array

Messaggio da maxrome84 »

grazie ancora!!!
Open Office 4 beta
windows 7
Rispondi