Sviluppare funzionalita su Microsoft Office con VBA caricare elementi in una combobox da array.

Login Registrati
Stai vedendo 7 articoli - dal 1 a 7 (di 7 totali)
  • Autore
    Articoli
  • #52190 Score: 0 | Risposta

    IGNAZIO68
    Partecipante

      buongiorno, sto tentando di caricare degli elementi all'interno di una combo, e nel primo caso, dove gli elementi sono specificati nel codice , tutto funziona. Codice : 

      nel secondo caso vorrei caricarli da un elenco contenuto in un range di celle ma ni genera un errore di incompatibilità "tra tipi" . Credo che qualcosa sia sicuramente errato sia nella scrittura del codice che nella dichiarazione delle variabili (forse). Da un paio di giorni che sto provando ma nulla di positivo . . .

      grazie anticipatamente, saluti.

      secondo caso

      Private Sub CommandButton2_Click()
      
      Rem range da M2 a M13
      
      Dim elementi As Variant
      Dim i As Long
      Dim elenco As Range
      
      Set elenco = Range("M2:M13")
      
      elementi = Array(elenco)
      
      For i = LBound(elementi) To UBound(elementi)
          cmb01.AddItem elementi(i)
      Next i
      
      End Sub

       

      primo caso

      Private Sub CommandButton1_Click()
      
      Dim elementi As Variant
      Dim i As Long
      
      elementi = Array("gennaio", "febbraio", "marzo")
      
      For i = LBound(elementi) To UBound(elementi)
          cmb01.AddItem elementi(i)
      Next i
      
      End Sub
      #52191 Score: 0 | Risposta

      Aldo Ercolini
      Partecipante
        19 pts

        Prova cosi':

        Private Sub CommandButton2_Click()
        
        Rem range da M2 a M13
        
        Dim elementi As Variant
        Dim i As Long
        Dim elenco As Range
        
        For Each elenco In Range("M1:M13")
            cmb01.AddItem elenco.value
        next
        
        End Sub
        #52192 Score: 0 | Risposta

        scossa
        Partecipante
          37 pts

          Ciao,

          non alleghi il file e non specifichi che controllo è cmb01 ... se la combobox è un controllo ActiveX sostituisci

          elementi = Array(elenco)
          
          For i = LBound(elementi) To UBound(elementi)
              cmb01.AddItem elementi(i)
          Next i

          con

          elementi = Application.Transpose(elenco)
          Cmb01.List = elementi

           

           

          #52193 Score: 0 | Risposta

          IGNAZIO68
          Partecipante

            Aldo Ercolini ha scritto:

            Prova cosi':

            ottima la tua soluzione, ti ringrazio !!

            scossa ha scritto:

            non alleghi il file e non specifichi che controllo è cmb01 ... se la combobox è un controllo ActiveX sostituisci

            grazie Scossa , da te è possibile sempre imparare cose nuove ! 

             

            nb : il pulsante 2 non funziona .

            Allegati:
            You must be logged in to view attached files.
            #52195 Score: 0 | Risposta

            scossa
            Partecipante
              37 pts

              Ciao

              IGNAZIO68 ha scritto:

              ottima la tua soluzione, ti ringrazio !!

               ok, ma togli la riga elementi = Array(elenco) come ti avevo indicato (non serve a nulla).

              Set elenco = Range("M2:M13")
              
              elementi = Array(elenco)
              
              elementi = Application.Transpose(elenco)
              cmb01.List = elementi
              

               

              Il pulsante 2 non funziona perchè quel codice non ha senso. Se vuoi ciclare le celle segui il suggerimento di Aldo (ciao).

              #52196 Score: 0 | Risposta

              IGNAZIO68
              Partecipante

                scossa ha scritto:

                ok, ma togli la riga elementi = Array(elenco) come ti avevo indicato (non serve a nulla).

                ciao Scossa, fatto ! 

                grazie.

                Private Sub CommandButton5_Click()
                
                    Dim elementi As Variant
                    Dim elenco As Range
                    
                    Set elenco = Range("M2:M13")
                
                    elementi = Application.Transpose(elenco)    
                    cmb01.List = elementi
                
                End Sub
                #52197 Score: 0 | Risposta

                IGNAZIO68
                Partecipante

                  Aldo Ercolini ha scritto:

                  Prova cosi':

                  Aldo ho aggiunto qualcosa per rendere la routine dinamica . . . grazie.

                  Private Sub CommandButton4_Click()
                  
                      Dim ur As Long
                      Dim elementi As Range
                      Dim Elenco As Range
                  
                      ur = Cells(Rows.Count, "m").End(xlUp).Row
                  
                      Set Elenco = Range("m2:m" & ur)
                  
                      For Each elementi In Elenco
                          cmb01.AddItem elementi.Value
                      Next
                  
                  End Sub
                  
                Login Registrati
                Stai vedendo 7 articoli - dal 1 a 7 (di 7 totali)
                Rispondi a: caricare elementi in una combobox da array.
                Gli allegati sono permessi solo ad utenti REGISTRATI
                Le tue informazioni: