La mia idea di soluzione si basa su uno stile di una cella.
(1) Aggiungi un nuovo stile per le celle che avranno elenchi a discesa. L'ho chiamato "Dropdown".
(2) Applicare lo stile per le celle che si sta per avere elenchi a discesa. Qui è B2.
(3) Impostare gli elementi di convalida per il proprio elenco a discesa. Li ho messi nelle celle E2: G2.
(4) Se si desidera avere elenco di convalida dinamica mettere in Data> Data Validation> Fonte: =OFFSET($E2;0;0;1;COUNTA($E2:$K2))
oppure dichiarare un intervallo denominato per questo come consigliato Aprillion. E 'molto utile. Nel mio esempio posso aggiungere un nuovo elemento di convalida in H2 e verrà automaticamente incluso nell'elenco di convalida.
(5) Eseguire una macro quando si desidera impostare tutte le celle con un menu a discesa di stile sul valore predefinito. Nel mio caso il valore predefinito è '- Choose from the list -
. Questo valore verrà impostato anche se non è presente nell'elenco di convalida.
Sub DropDownListToDefault()
Dim oCell As Range
Dim ACell As Range
Set ACell = ActiveCell
For Each oCell In ActiveSheet.UsedRange.Cells
If oCell.Style = "Dropdown" Then
oCell.Value = "'- Choose from the list -"
End If
Next
ACell.Select
End Sub
Dopo l'esecuzione della macro si avrà la seguente scelta:
Se si desidera che un utente di scegliere qualcosa dal menu a tendina è molto facile non accettare il valore di default in ulteriore elaborazione .
fonte
2015-08-26 10:53:57
Significa che il valore in B1 SET il valore predefinito per tutti i menu a discesa? – peege
valori predefiniti sono possibili con VBA e con una formula. non c'è però una funzione incorporata 'eval', quindi non è possibile scrivere un testo di una funzione in una cella ed eseguirla da qualche altra parte, tuttavia è possibile specificare un intervallo denominato usando 'OFFSET' e usare' = my_named_range' nei dati validazione, sarebbe sufficiente? – Aprillion
@peege No. Il valore predefinito è in C1. In D1, E1, F1, ecc. Ci sono altri valori che un utente può scegliere dall'elenco a discesa (che è in A1). C1 è un primo valore dell'array. –