La consultazione del forum è libera per tutti.
Per poter porre un quesito è invece necessario essere un utente registrato (clicca qui se non lo sei).
Tutti gli utenti che richiedono un supporto, come da REGOLAMENTO, sono caldamente invitati ad allegare un file di esempio con l'indicazione di quello che si desidera ottenere.
Salve,
Ho creato un menu a discesa dinamico in un foglio Excel
Poi l'ho collegato tramite convalida dati in un altro foglio. A funzionare funziona ma la voci del menu a discesa sono troppo piccole anche se una volta selezionata la voce desiderata la formattazione si imposta su quella scelta per le celle.
È possibile ingrandire il testo delle voci del menu a tendina?
Grazie
Ciao
Con una Convalida, che io sappia, NO.
Potresti utilizzare una ComboBox e intervenire su di essa.
Ciao,
Mario
Possono essere aggiunti elementi alla ComboBox dinamicamente, in modo da avere la lista aggiornata delle voci da inserire nelle celle? Insomma come si può fare con la convalida dati. Grazie
Ciao
Certamente. Se fai una ricerca in rete avrai milioni di risposte sia per quanto riguarda l'aggiunta di elementi sia per quanto riguarda l'autocompletamento.
Se hai difficoltà, prova ad allegare il tuo file (senza dati sensibili) e si cercherà di trovare la soluzione.
Ciao,
Mario
Ciao Mario,
Allora ci sono riuscito a metà. Ho creato il Combobox, ma non so come aggiungere gli elementi dinamicamente. Un altro problema è che non ho capito come copiare le combobox sulle celle sottostanti (per un intervallo di 50 riga diciamo) come invece faccio con i menu a discesa.
Allego il file excel. A sinistra uso il metodo dei menu a discesa a destra le combobox.
Grazie per l'aiuto.
ciao
lo facciamo con il vba
è assurdo creare 50/60 combo
ho sfruttato la tabella a sinistra per i dati
doppio click sulla colonna B
si apre la form
scegli la marca e si scrive sulla cella attiva
chiude il form
ho messo CALIBRI 12
ma puoi personalizzarti i colori e il font
se Marius la vuole migliorare mi fa un piacere
io mastico poco il VBA
sul foglio
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range("B3:B100")) Is Nothing Then Application.EnableEvents = False UserForm1.Show Application.EnableEvents = True End If End Sub
sull form
Private Sub ComboBox1_Click() ActiveCell = ComboBox1.Text Unload Me ActiveCell.Offset(0, 1).Select End Sub Private Sub UserForm_Activate() UserForm1.ComboBox1.RowSource = "Tabellacars" End Sub
Ti ringrazio Gianfranco. Funziona, anche se avrei voluto fare a meno di usare il VBA.
Ci sono però un paio di cosette che vorrei rifinire. Lo so che forse in parte avrei dovuto pensarci prima di creare il ComboBox o il menu a discesa.
1) È possible far ordinare la tabella in ordine alfabetico automaticamente? In modo che quando si utilizza un menu a discesa o una combobox la lista risulti già in ordine ogni volta che si aggiunge una voce alla tabella.
2) Il comboxbox si apre troppo lontano dalla cella interessata. È possibile avvicinarlo?
3)Quando si clicca su una cella per aprire il combobox, il cursore si sposta sulla cella immediatamente a destra una volta chiuso. È possible farlo posizionare altrove, tipo sotto?
Grazie
ciao
se filtri la tabella da a a Z avrai la combo in ordine alfabetico. mica la cambi ogni trenta secondi vero?
2) Il comboxbox si apre troppo lontano dalla cella interessata. È possibile avvicinarlo?
si poi ci provo a mettere le coordinate Marius sarebbe più veloce
3)Quando si clicca su una cella per aprire il combobox, il cursore si sposta sulla cella immediatamente a destra una volta chiuso. È possible farlo posizionare altrove, tipo sotto?
certo
Private Sub ComboBox1_Click() ActiveCell = ComboBox1.Text Unload Me ActiveCell.Offset(1, 0).Select End Sub
ok
li vedi quei +210 e +30
non so nel tuo schermo siano validi
giocaci fin che trovi la posizione che vuoi
Private Sub ComboBox1_Click() ActiveCell = ComboBox1.Text Unload Me ActiveCell.Offset(1, 0).Select End Sub Private Sub UserForm_Activate() UserForm1.ComboBox1.RowSource = "Tabellacars" End Sub Private Sub Userform_Initialize() With ActiveCell Me.Top = .Top + .Height + 210 Me.Left = .Left + .Width + 30 End With End Sub
Salve a tutti
Non vi si può lasciare soli un momento che ... create meraviglie!!!
Mi scuso per il ritardo ma sono stato impegnato.
per Gianfranco55
Troppo buon per i complimenti ma li meriti tu per intero. Ottimo lavoro.
Alcuni piccoli miglioramenti:
a) modificare la proprietà Caption della UserForm1 in "Scegli la marca" (oppure la casa)
b) la macro del doppio click va modificata così
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range("B3:B100")) Is Nothing Then Application.EnableEvents = False UserForm1.Left = Cells(Target.Row, 3).Left + 20 'xxxxxxxxxx aggiunta UserForm1.Top = Cells(Target.Row, 3).Top + 40 'xxxxxxxxxx aggiunta UserForm1.Show Application.EnableEvents = True End If End Sub
da notare le righe che ho aggiunto. In questo modo la UserForm si allinea sempre alla cella selezionata
c) se si vuole l'ordinamento alfabetico la macro dell'attivazione della UserForm va cambiata così
Private Sub UserForm_Activate() Application.ScreenUpdating = False Application.Goto Reference:="Tabellacars" ActiveWorkbook.Worksheets("liste").ListObjects("Tabellacars").Sort.SortFields. _ Clear ActiveWorkbook.Worksheets("liste").ListObjects("Tabellacars").Sort.SortFields. _ Add Key:=Range("B2"), SortOn:=xlSortOnValues, Order:=xlAscending, _ DataOption:=xlSortTextAsNumbers With ActiveWorkbook.Worksheets("liste").ListObjects("Tabellacars").Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("C1").Select Sheets("Foglio1").Select Application.ScreenUpdating = True UserForm1.ComboBox1.RowSource = "Tabellacars" End Sub
Fate sapere. Ciao,
Mario
Fantastico.
Non ci capisco niente di VBA e ne volevo far a meno per evitare rogne, ma vale la pena usarlo se si ha questa possibilità di modificare i comportamenti degli oggetti.
Unica cosa il ComboBox appare ancora troppo lontano. Non ho capito come avvicinarlo alla cella in cui inserire la marca selezionata. Ho provato a spippellare con i valori ma niente.
Allego di nuovo il file con glia ggiornamenti. Grazie di tutto!
Ciao
Hai ragione! Una mia deprecabile dimenticanza.
Cambia la proprietà StartUpPosition della UserForm1 da 1 - CenterOwner a 0 - Manual
Ciao,
Mario
ciao
e leva questa
nel file è ancora presente
Private Sub Userform_Initialize() With ActiveCell Me.Top = .Top + .Height + 210 Me.Left = .Left + .Width + 30 End With
Un paio di problemi.
Il ComboBox si visualizza ancora distante dalla cella interessata e se si clicca su una più in basso nella colonna quasi scompare. Ho provato dalla cella 39i e addiritura si è bloccato il foglio, forse perché il Combo era scomparso e non era possible selezionare niente o chiuderlo. Non so se il fatto che abbia settato la protezione foglio e bloccato di conseguenza alcune celle abbia qualcosa a che fare con quest'ultimo problema. Ho aggiunto qualcosa poii al progetto.
Allego il file con gli ultimi aggiornamenti, anche quello indicato da gianfranco.
Grazie
ciao
prova così
ma ti ripeto giocaci fino a che non trovi quello che ti piace
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range("B3:B100")) Is Nothing Then Application.EnableEvents = False UserForm1.Left = Cells(Target.Row, 3).Left + 20 'xxxxxxxxxx aggiunta UserForm1.Top = Cells(Target.Row, 3).Top + 200 'xxxxxxxxxx aggiunta UserForm1.Show Application.EnableEvents = True End If End Sub