Pagina 1 di 1

[Risolto] Popolare ListBox con array

Inviato: martedì 17 gennaio 2017, 9:52
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.

Re: Popolare ListBox con array

Inviato: martedì 17 gennaio 2017, 11:25
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

Re: Popolare ListBox con array

Inviato: martedì 17 gennaio 2017, 12:18
da maxrome84
Grazie! Funziona perfettamente! L'unica cosa, come faccio ad indicare come fine del range l'ultima cella utilizzata?

Re: Popolare ListBox con array

Inviato: martedì 17 gennaio 2017, 12:31
da patel
CellRange = Sheet.getCellRangeByName("A1:A" & LastRow)

Re: Popolare ListBox con array

Inviato: martedì 17 gennaio 2017, 12:35
da maxrome84
grazie ancora!!!