Ciao oregon.

Purtroppo non è un codice che ho scritto io ed è pure scritto in modo poco comprensibile; ciò che posso dirti è che per aggiungere gli item viene usato il metodo AddItem della combobox;
Nel software è previsto un array di combobox, quindi nel codice la combobox corrente è indicata dall'indice i:
codice:
NameConv(i).AddItem recappLocal.Fields("Descrizione").value
dove appunto NameConv(i) è la combobox e recappLocal è il recordset contenente i dati.
Mi sono creata una variabie array locale al form (Private cWidth() As Long) nella quale per ogni indice (combobox) memorizzo la lunghezza massima.

Questo è il codice nella sua interezza (le righe in rosso le ho aggiunte io):
codice:
Dim myA As Single
Dim myB As Single
myA = 0
myB = 0 

With recTagTableLocal
            
       ReDim cWidth(numNameConv)

       For i = 0 To numNameConv
            If IsNull(.Fields("Cod" & i).value) = True Then
                  CodiciN(i) = 0
            Else
                  CodiciN(i) = .Fields("Cod" & i).value
            End If

            recappLocal.Open "select * from Tab" & Format(i, "0") & " where ID=" & CodiciN(i) & " and Action <> 'D'", ConfigurationDB, adOpenStatic, adLockOptimistic

            If recappLocal.EOF = False Then 'sta caricando i dati nelle combobox
                  If IsNull(recappLocal.Fields("Descrizione").value) = True Then
                        NameConv(i).AddItem " "
                        myA = Len(" ") 
                  Else
                        NameConv(i).AddItem recappLocal.Fields("Descrizione").value
                        myA = Len(recappLocal.Fields("Descrizione").value)       
                  End If
                  If (CodiciN(i) <> 0) Then
                        NameConv(i).itemdata(NameConv(i).NewIndex) = CodiciN(i)
                        NameConv(i).ListIndex = 0
                  End If
                        
                  If myA > myB Then 
                        myB = myA 
                  Else 
                        myB = 100
                  End If
                                          
            End If

            cWidth(i) = myB
                    
            recappLocal.Close
                   
       Next i
                
End With
Ora, quando viene generato l'evento DropDown, nel codice relativo devo richiamare l'istruzione SendMessage ma la larghezza della tendina viene ridimensionata male, cioè è troppo larga; perciò forse devo fare una qualche conversione, ma non saprei proprio come fare.
Oppure semplicemente mi sono impappinata io da qualche parte nel codice.

Grazie per il tuo aiuto
lady