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
>
>

Rispondere a