gestione scelte combobox



  • 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.