innanzi tutto ti conviene modificare il codice che hai in questo modo:
codice:
With cmbTest
.AddItem "zero"
.ItemData(.NewIndex) = 0
.AddItem "uno"
.ItemData(.NewIndex) = 1
.AddItem "due"
.ItemData(.NewIndex) = 2
.AddItem "quattro"
.ItemData(.NewIndex) = 4
End With
poi credo che il problema della forzaturo lo hai nel caricamento della combo per cui è sufficiente mettere un ListIndex=N dove N è il NewIndex della riga appena inserita che soddisfa il tuo criterio di forzatura es poniamo che devi riempirlo con dei dati da tabella tramite un ciclo:
codice:
Sub RiempiCombo(CodiceDaSelezionare as Integer)
MyIndex=-1
With MyCombo
Do While Not MyTab.EOF
.AddItem(MyTab("Descrizione")
.ItemData(.NewIndex)=MyTab("Codice")
If MyTab("Codice")=CodiceDaSelezionare Then
MyIndex=.NewIndex
End If
MyTab.MoveNext
Loop
If MyIndex>-1 then
.ListIndex=MyIndex
End If
End With
End Sub
Con queste righe sei in grado di riempire la combo e selezionare forzatamente una voce dell'elenco a seconda del ItemData.
Per selezianarne una in un secondo momento devi leggere tutti gli itemdata con un ciclo e se trovi quello giusto imposti la proprietà ListIndex sull'indice corrispondente:
codice:
Sub SelezionaSuCombo(CodiceDaSelezionare as Integer)
MyIndex=-1
With MyCombo
For i=0 to .ListCount-1
If .ItemData(i)=CodiceDaSelezionare Then
MyIndex=i
Exit For
End If
Next i
If MyIndex>-1 then
.ListIndex=MyIndex
End If
End With
End sub
Bye