Forum di Excel e VBA, per condividere esperienze e risolvere problemi su: Excel, Word, Access, Power Point, Microsoft Office, macro, Visual Basic e Visual Studio.
gestione scelte combobox di Julio data: 19/01/2013 09:33:44
Ciao, ecco la mia difficolta':
Ho realizzato un userform come fosse un cruscotto che l'utente deve completare agendo sui comandi inseriti (option button, checkbox e taxtbox), al click del tasto "salva configurazione", tutti le scelte vengono riportate su un foglio di Excel, ho difficoltà nella gestione del combobox, le scelte possibili che dovrebbe farmi apparire sono: 0 1 2, l'utente dovra' scegliere tra le tre possibilità e la sua scelta dovra' essere memorizzata su una cella del foglio Excel (sopra descritto), tra cui la sua scelta dal combobox.
Grazie a chi potra' darmi dei consigli.
Buona giornata
Julio
di HarryBosch data: 19/01/2013 11:50:59
Ciao Julio
per caricare le combobox ci sono diversi modi. Se l'elenco è già stabilito potresti ad esempio aggiungere gli elementi in questo modo quando attivi la Userfom. Vedi esempio sotto
E per passare i valori degli oggetti inseriti in un foglio devi semplicemente assegnare tale valore al range che ti interessa (il .value è pure superfluo)
Sheets("Foglio1").[a1] = TextBox1.value
Sheets("Foglio1").[a2] = ComboBox1.value
Per gli OptionButton devi controllarli tutti, con un IF ad esempio, tutti e verificare quello che
assume True come valore.
If optionbutton1 = true then
Sheets("Foglio1").[a3] = optionbutton1.value
elseif .... per gli altri option
Private Sub UserForm_activate()
With ComboBox1
.AddItem "1"
.AddItem "2"
.AddItem "3"
End With
End Sub
di Julio (utente non iscritto) data: 19/01/2013 11:58:39
Ottimo, grazie.
Cosi' ho visto che avevo fatto giusto per gli optbutton o i checkbox, per i combo non ci sarei mai arrivato, credevo fosse rowsource la via.
Appena la provo spuntero': "risolta"
Grazie
Buon weekend
Julio
di HarryBosch data: 19/01/2013 12:28:48
Come ti dicevo ci sono tanti modi; se usi la proprietà RowSource ti serve un intervallo di dati, che può essere richiamato ad esempio in questo modo:
ComboBox1.RowSource = "Foglio1!a1:a3"
oppure inserendo direttamente il nome di un intervallo memorizzato in precedenza.
ps: nel post precedente ho scritto
Sheets("Foglio1").[a3] = optionbutton1.value
che però riporta VERO se tale option è selezionato, senza però dire quale. Ovviamente alla cella andrà assegnato un valore in base all'option selezionato:
Sheets("Foglio1").[a3] = "hai selezionato l'Option 1"
di Julio data: 19/01/2013 14:32:35
Grazie Harry, per il chiarimento.
Ciao
Julio
di Julio data: 19/01/2013 15:30:02
Ho provato, funziona perfettamente.
Ma in quali casi si può usare il rowsource presente nell'elenco delle proprietà?
Forse solo quando ho un unico foglio di lavoro?
Comunque, funziona alla grandissima.
Grazie per l'aiuto
Julio
di HarryBosch data: 19/01/2013 16:01:23
Il Rowsource è sempre quello :)
Che lo modifichi da codice, oppure che lo usi direttamente la finestra della proprietà in fase di progettazione, farà sempre riferimento alla combobox in questione.
Tramite codice assegni la proprietà come abbiamo visto:
ComboBox1.RowSource = "Foglio1!a1:a3"
mentre dalla progettazione, vai nell'apposito spazio e inserisci la stessa cosa: Foglio1!a1:a3
La differenza sta nel fatto che se inserisci il riferimento nella progettazione, questo intervallo rimane ad ogni nuova apertura della Userform, anche se durante l'esecuzione delle diverse routine dovessi modificarlo. Le variazioni effettuate da codice non rimangono memorizzate nella combo, diversamente da quelle impostate dalla finestra.