Popolare combobox



  • Popolare combobox
    di Salvo18 (utente non iscritto) data: 22/05/2015 15:15:52

    Buonasera,
    vorrei popolare una combobox prendendo gli elementi di una tabella (in particolare i dati nella seconda colonna di questa tabella). Come posso fare? Grazie per l'aiuto


     
          For i = 9 To 7 + Range("Tabella_prova_tblprofessione[#All]").Rows.Count
    
        Foglio1.ComboBox1.AddItem    '??????  Range("Tabella_prova_tblprofessione[#All]")   seconda colonna
        Next



  • di Marius44 data: 22/05/2015 18:45:36

    Ciao
    Scrivi in una cella qualsiasi del foglio "Selez" (senza i doppi apici); il Foglio deve essere quello dove c'è il ComboBox (ATTENZIONE: il Combo è un ActveX e non un Modulo). Quindi inserisci la sub sottoriportata nell'Editor del foglio dove c'è il ComboBox. La macro parte ogni volta che selezioni la cella dove è scritto Selez.
    A me ha funzionato (con Excel 2007).
    Dovresti anche tener presente l'eventuale svuotamento del ComboBox.
    Fammi sapere
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Target.Text = "Selez" Then
            'puoi sostituire ActiveSheet col nome del foglio che ti interessa
            riga = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
            For i = 9 To riga
                ComboBox1.AddItem ActiveSheet.Cells(i, 2)
            Next i
        End If
    End Sub



  • di Obelix (utente non iscritto) data: 23/05/2015 12:00:05

    Dopo un doveroso saluto a Marius:

    @Salvo18
    Non mi è ben chiara l'istruzione "Tabella_prova_tblprofessione[#All]"; sarei curioso di capire cosa dovrebbe rendere.

    Nel codice ho considerato:
    - Foglio1 con ComboBox1
    - Foglio Tabella_prova_tblprofessione con Record da B9:Bn (dove "n" rappresenta l'ultima riga con Record valido)
    - Target Cella "B1" Foglio1
    - la partenza dalla riga 9 colonna "B" Foglio Tabella_prova_tblprofessione

    Modifica il Target, Riga di partenza e colonna a tuo piacere.
     
    Option Explicit
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Target.Address = "$B$1" Then ComboBox1.ListFillRange = "Tabella_prova_tblprofessione!B9:B" & Sheets("Tabella_prova_tblprofessione").Cells(Rows.Count, 2).End(xlUp).Row
    End Sub
    
    oppure, per una migliore leggibilità:
    
    Option Explicit
    
    Dim Rec As Long
        Rec = Sheets("Tabella_prova_tblprofessione").Cells(Rows.Count, 2).End(xlUp).Row
        If Target.Address = "$B$1" Then ComboBox1.ListFillRange = "Tabella_prova_tblprofessione!B9:B" & Rec
    End Sub