› Sviluppare funzionalita su Microsoft Office con VBA › Uscire automaticamente da combobox
-
AutoreArticoli
-
Buongiorno a tutti,
volevo chiedervi un consiglio. Ho un codice di questo tipo:
Private Sub combobox_Change()
If combobox.ListIndex = 2 Then
Dim temp As Variant
temp = Application.InputBox("Inserire manualmente il colore desiderato", ecc ecc)
End If
End SubFondamentalmente serve a fare in modo che, se si sceglie un determinato campo, si possa inserire manualmente il valore di una variabile temp. Il problema è che mentre si apre la InputBox la combobox rimane comunque aperta, e dà la possibilità di cambiarne il valore. Il risultato è che sarebbe possibile spostarsi dal listIndex=2 mantenendo però la necessità di compilare la InputBox. C'è un modo per forzare l'uscita dalla combobox dentro l'evento?
non è chiaro il problema, allega un file di esempio con anche spiegazioni
Chiedo scusa. Allego file di esempio. Noterai che quando scegli "colore personalizzato", ti si apre un inputbox nella quale puoi immettere manualmente il colore, ma la tendina originale rimane ancora aperta e quindi nel frattempo puoi scegliere un altro dei colori standard, che è una cosa assolutamente da evitare. Non vorrei cambiare l'evento da change ad after_update perchè vorrei che l'apertura della inputbox fosse immediata quando scelgo il colore personalizzato. Volevo fare in modo da forzare la chiusura della combobox dentro l'evento change per evitare che si possano scegliere altri colori una volta che si apre l'inputbox per immettere manualmente un colore personalizzato.
Allegati:
You must be logged in to view attached files.Ciao
Invece di una InputBox Usa una TextBox (con una Label).
Quando si apre il Form la TextBox e la Label sono invisibili, se scegli il 4° diventano visibili e col focus sulla TextBox.
Vedi se va bene.
Ciao,
Mario
Allegati:
You must be logged in to view attached files.Grazie per la risposta Mario, la tua idea funziona ma c'è solo un piccolo problema, nel mio form originale ho saturato spazio per mettere ulteriori controlli 🙂
Potrei richiamare un nuovo form piccolino con dentro la tua textbox, ma la tengo come ultima soluzione per evitare di appensantire troppo la struttura del file... Secondo te non c'è un modo per forzare l'uscita dalla combo mantenendo l'inputBox? Tipo non è possibile in qualche modo chiamare l'evento exit dentro l'evento change?
Ciao
Hai "saturato lo spazio"??? Ma guarda che lo schermo è grande.
A parte lo scherzo, vedi se puoi inserire magari solo la TextBox ed hai risolto.
Che io sappia non c'è un modo per uscire da un Change. Spero di sbagliarmi e che qualcuno trovi la soluzione più adatta alle tue esigenze.
Ciao,
Mario
Si Mario, alla fine opterò per la textbox, da qualche parte ce la farò stare, grazie di tutto
potrebbe essere una soluzione?
Private Sub ComboBox1_Change() If ComboBox1.ListIndex = 4 Then cambia End If End Sub Private Sub cambia() Dim temp As Variant Dim i As Integer Dim a As String Dim n For i = 0 To ComboBox1.ListCount - 1 a = a & ComboBox1.List(0) & "|" ComboBox1.RemoveItem (0) Next n = Split(a, "|") temp = Application.InputBox("Inserire manualmente il colore desiderato") For i = 0 To UBound(n) - 1 ComboBox1.AddItem n(i) Next ComboBox1.AddItem temp ComboBox1.ListIndex = i End Sub -
AutoreArticoli
