Ciao, Purtroppo... no, anzi, per fortuna non ho mai dovuto programmare macros in calc percio' non posso esserti di grande aiuto sulla prima parte della tua domanda. Tieni anche presente che sono un programmatore naif percio' sicuramente il metodo da me suggerito non e' il piu' efficace o sicuro o veloce o che ti pare... pero' funziona ;-)
Nell'esempio che ti do esiste una variabile pubblica nel modulo chiamata oDlg che in qualche punto della macro (probabilmente in una funzione initilize) viene inizializzata con il comando oDlg = createUnoDialog(DialogLibraries.La tua library.il <http://library.il>nome che hai dato alla dialog box) Per manipolare la listbox crea un oggetto: oCtrlLB = oDlg.getControl("nome del controllo che vuoi catturare") Ora hai un sacco di metodi a disposizione (io di solito uso XRay e mi copio tutti i risultati in un file) tra cui a te servira' .addItems( anArray ) Il modo migliore per inizializzare la listbox e' usare addItems che prende un array che ti puoi creare con setDataArray(...). Anzi, come ti ho detto non ho mai usato calc, ma penso che selezionando un range di celle sia facile ottenere un array. Se invece vuoi aggiungere gli elementi uno per uno allora usa .addItem( anItem, aPosition ) La seconda parte del tuo problema e' invece semplice perche' per ricavare la posizione dell'elemento selezionato basta chiamare il metodo .getSelectedItemPos() che appunto ti da' la posizione nella lista. Nota che la posizione e' 0-based percio' magari vorrai aggiungere 1 al risultato ottenuto. Per ottenere invece la stringa selezionata, usa il metodo .getItem(nPos) che prende come parametro una posizione e ti restituisce una stringa. Probabilmente avrai bisogno anche di cancellare la listbox in qualche momento per questo basta usare .removeItems( primoElemento, ultimoElemento) solitamente chiamata con parametri 0 e .getCount() Un esempiuccio di una routine che puoi chiamare quando l'utente seleziona un elemento della listbox Sub subItemStatusChanged() As String Dim oCtrlLB As Object Dim nPos as Integer Dim sSelectedItem As String oCtrlLB = oDlg.getControl("Il nome della tua listbox") nPos = oCtrlLB.getSelectedItemPos() sSelectedItem = oCtrlLB.getItem(nPos) End Sub Spero di esserti stato di aiuto! Cheers, Michele On 01/11/05, Wile E Coyote <[EMAIL PROTECTED]> wrote: > > Ciao a tutti > ho un quesito da porvi, devo prendere dei dati da un foglio di calc con > cui devo popolare una listbox di un dialogo, ed una volta scelto > l'elemento nella lista non devo stampare l'elemento come > appare(stringa), ma bensì la sua posizione, possibilmente il risultato > dovrebbe essere un numero intero. Qualcuno saprebbe dirmi dove reperire > esempi sul mio problema o esempi di codice basic. > Grazie > >
