Risultati da 1 a 10 di 10

Discussione: Combobox a cascata dati univoci



  1. #1
    L'avatar di nessi
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Milano
    Età
    53
    Messaggi
    159
    Versione Office
    2013/2016
    Likes ricevuti
    3
    Likes dati
    35

    Combobox a cascata dati univoci

    Ciao a tutti,
    mi presento, sono nuovo nel forum.
    ho un problemino da cui non riesco ad uscire. ho un file di un certo numero di colonne, la userform mi serve per filtrare i dati e viene eseguito con due combobox con cui scelgo il modello nella colonna C che filtra i Codici prodotto nella colonna D per rendere il risultato dei seriali dei modelli filtrati nella Listbox1.
    Funziona tutto benissimo se non che non riesco a filtrare i dati univoci (come per la combobox1) nella combobox2.
    questo il codice che attualmente uso per la userform:

    Option Explicit
    'variabile utilizzate da tutta la UserForm
    Private sh As Worksheet
    Private wk As Workbook
    'evento scatenato all'avvio della UserForm
    Private Sub UserForm_Activate()
    'dichiaro le variabili
    Dim col As Collection
    Dim v As Variant
    Dim lng As Long

    'metto un riferimento al workbook
    'che contiene il codice
    Set wk = ThisWorkbook
    'metto un riferimento al foglio
    'con la tabella(qui Foglio1)
    With wk
    Set sh = .Worksheets("COMMESSE")
    End With
    'creo la Collection
    Set col = New Collection
    'rendo univoci i dati presenti in
    'colonna C del Foglio COMMESSE inserendoli
    'nella Collection
    On Error Resume Next
    With sh
    For lng = 2 To .Range("C" & _
    .Rows.Count).End(xlUp).Row
    col.Add .Cells(lng, 3).Value, CStr(.Cells(lng, 3).Value)
    Next
    End With
    'carico la ComboBox1
    For Each v In col
    With Me.ComboBox1
    .AddItem v
    End With
    Next

    'Set a Nothing delle variabili oggetto
    Set col = Nothing

    End Sub
    'evento scatenato al click su di una voce
    'della ComboBox1; serve per selezionare
    'le voci da inserire in ComboBox2
    Private Sub ComboBox1_Click()
    'dichiaro le variabili
    Dim lng As Long
    With Me.ComboBox2
    'pulisco la ComboBox2
    .Clear
    'carico i dati nella ComboBox2
    For lng = 2 To sh.Range("C" & _
    sh.Rows.Count).End(xlUp).Row
    If sh.Cells(lng, 3).Value = _
    Me.ComboBox1.Text Then
    .AddItem sh.Cells(lng, 4).Value
    End If
    Next
    End With
    End Sub
    'evento scatenato al click su di una voce
    'della ComboBox2; serve per selezionare
    'le voci da inserire in Listbox1
    Private Sub ComboBox2_Click()
    'dichiaro le variabili
    Dim lng As Long
    With Me.ListBox1
    'pulisco la listbox1
    .Clear
    'carico i dati nella Listbox1
    For lng = 2 To sh.Range("D" & _
    sh.Rows.Count).End(xlUp).Row
    If sh.Cells(lng, 4).Value = _
    Me.ComboBox2.Text Then
    .AddItem sh.Cells(lng, 5).Value
    End If
    Next
    End With
    End Sub
    'evento scatenato alla distruzione della UserForm
    Private Sub UserForm_Terminate()
    'Set a Nothing delle variabili oggetto
    Set sh = Nothing
    Set wk = Nothing
    End Sub

    grazie in anticipo per qualunque consiglio potrete darmi.
    File Allegati File Allegati

  2. #2
    L'avatar di Gerardo Zuccalà
    Clicca e Apri
    Data Registrazione
    May 2015
    Località
    Milano, Italy
    Età
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1126
    Ciao nessi
    benvenuto in Forumexcel.it
    Un piccolo consiglio se non vuoi perdere alcune informazioni del codice VBA
    Inserisci i codice tra Tag [CODE] [CODE]
    vedi Immagine
    Ciao

  3. #3
    L'avatar di nessi
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Milano
    Età
    53
    Messaggi
    159
    Versione Office
    2013/2016
    Likes ricevuti
    3
    Likes dati
    35
    osp. scusate, (parto bene eh? :236:)
    grazie per il benvenuto.
    grazie anche per il consiglio, ho intenzione (e purtroppo, spesso, necessità, lavoro molto con Excel e quindi VBA) di permanere a lungo in questo splendido forum. col tempo imparerò tutti i trucchi e regole.
    intanto ancora scusa.

  4. #4
    L'avatar di nessi
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Milano
    Età
    53
    Messaggi
    159
    Versione Office
    2013/2016
    Likes ricevuti
    3
    Likes dati
    35
    Codice: 
    Option Explicit
     'variabile utilizzate da tutta la UserForm
     Private sh As Worksheet
     Private wk As Workbook
     'evento scatenato all'avvio della UserForm
     Private Sub UserForm_Activate()
        'dichiaro le variabili
        Dim col As Collection
        Dim v As Variant
        Dim lng As Long
    
        'metto un riferimento al workbook
        'che contiene il codice
        Set wk = ThisWorkbook
        'metto un riferimento al foglio
        'con la tabella(qui Foglio1)
        With wk
            Set sh = .Worksheets("COMMESSE")
        End With
        'creo la Collection
        Set col = New Collection
        'rendo univoci i dati presenti in
        'colonna C del Foglio COMMESSE inserendoli
        'nella Collection
        On Error Resume Next
        With sh
            For lng = 2 To .Range("C" & _
                .Rows.Count).End(xlUp).Row
                col.Add .Cells(lng, 3).Value, CStr(.Cells(lng, 3).Value)
            Next
        End With
        'carico la ComboBox1
        For Each v In col
            With Me.ComboBox1
                .AddItem v
            End With
        Next
    
        'Set a Nothing delle variabili oggetto
        Set col = Nothing
    
     End Sub
     'evento scatenato al click su di una voce
     'della ComboBox1; serve per selezionare
     'le voci da inserire in ComboBox2
     Private Sub ComboBox1_Click()
        'dichiaro le variabili
        Dim lng As Long
        With Me.ComboBox2
            'pulisco la ComboBox2
            .Clear
            'carico i dati nella ComboBox2
            For lng = 2 To sh.Range("C" & _
                sh.Rows.Count).End(xlUp).Row
                If sh.Cells(lng, 3).Value = _
                    Me.ComboBox1.Text Then
                    .AddItem sh.Cells(lng, 4).Value
                End If
            Next
        End With
     End Sub
     'evento scatenato al click su di una voce
     'della ComboBox2; serve per selezionare
     'le voci da inserire in Listbox1
     Private Sub ComboBox2_Click()
        'dichiaro le variabili
        Dim lng As Long
        With Me.ListBox1
            'pulisco la listbox1
            .Clear
            'carico i dati nella Listbox1
            For lng = 2 To sh.Range("D" & _
                sh.Rows.Count).End(xlUp).Row
                If sh.Cells(lng, 4).Value = _
                    Me.ComboBox2.Text Then
                    .AddItem sh.Cells(lng, 5).Value
                End If
            Next
        End With
     End Sub
     'evento scatenato alla distruzione della UserForm
     Private Sub UserForm_Terminate()
        'Set a Nothing delle variabili oggetto
        Set sh = Nothing
        Set wk = Nothing
     End Sub

  5. #5
    L'avatar di Textomb
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    47
    Messaggi
    171
    Versione Office
    Excel 2016
    Likes ricevuti
    93
    Likes dati
    11
    ciao
    Non può funzionare sulla Combo2 perchè non hai gestito i valori univoci così come è stato fatto sulla Combo1
    Si può fare in tanti modi.
    Per esempio puoi risolvere il problema operando allo stesso modo fatto per popolare la Combo1. E cioè utilizzando una Collection. Metodo veloce ed efficace.
    Ricorda di azzerare la gestione dell'errore ad ogni ciclo ed il gioco è fatto.
    Se hai problemi fai sapere...
    Ultima modifica fatta da:Textomb; 28/12/15 alle 19:00 Motivo: ortografia

  6. #6
    L'avatar di nessi
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Milano
    Età
    53
    Messaggi
    159
    Versione Office
    2013/2016
    Likes ricevuti
    3
    Likes dati
    35
    Grazie mille per la risposta Textomb.
    ci avevo già provato senza successo, in vero senza impostare la gestione dell'errore.
    mi ero arenato perché non riuscivo a gestire la variabile imputata da combobox1 a cui la combobox2 è ovviamente subordinata.
    mi risultavano tutti i dati univoci contenuti nel totale della tabella.
    possibilissimo che mi sia perso nel più classico bicchier d'acqua.

    ci lavoro di nuovo.
    grazie ancora.

  7. #7
    L'avatar di Textomb
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    47
    Messaggi
    171
    Versione Office
    Excel 2016
    Likes ricevuti
    93
    Likes dati
    11
    Ti aiuto.
    inserisci nell'evento riferito al click della combobox1 la seguente:

    Codice: 
    Private Sub ComboBox1_Click()
        Dim Lng As Long
        Dim Cll As New Collection
        With Me.ComboBox2
        'pulisco i dati contenuti nella ComboBox2
            .Clear
            For Lng = 2 To sh.Range("C" & sh.Rows.Count).End(xlUp).Row
                If sh.Cells(Lng, 3).Value = Me.ComboBox1.Text Then
                ' Attivo il gestore degli Errori
                    On Error Resume Next
                        Cll.Add sh.Cells(Lng, 4).Value, Key:=CStr(sh.Cells(Lng, 4).Value)
                        ' In assenza di Errore siamo in presenza di un dato univoco.
                        ' Quindi carico il valore nella Combobox2.
                        If Err.Number = 0 Then .AddItem sh.Cells(Lng, 4).Value
                ' Quindi azzero il gestore dell'Errore On Error goto 0.
                    On Error GoTo 0
                End If
            Next
        End With
    End Sub
    Dovrebbe funzionare.
    Provala e fai sapere...

  8. I seguenti utenti hanno dato un "Like"


  9. #8
    L'avatar di nessi
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Milano
    Età
    53
    Messaggi
    159
    Versione Office
    2013/2016
    Likes ricevuti
    3
    Likes dati
    35
    Caro Textomb,
    ti ringrazio enormemente perché mi stavo aggrovigliano esattamente come la prima volta.
    1- primo errore fatale (ai miei tempi delle braghe corte si diceva "burbata", e questa è davvero squallida) ora che leggo il codice mi pare evidente che le collection non possono essere nominate allo stesso modo.
    2- "On Error GoTo 0" se non ce lo metto la gestione errore è ovvio che non sappia cosa fare. qui è meglio che mi ripassi le basi.

    ad uso e consumo degli amici del forum ri-allego il file definitivo che corrisponde appieno alle mie esigenze.
    grazie mille Textomb, alla prossima (presto, temo :167:)
    ora cercherò di capire come si imposta il "Risolto"
    File Allegati File Allegati

  10. #9
    L'avatar di Gerardo Zuccalà
    Clicca e Apri
    Data Registrazione
    May 2015
    Località
    Milano, Italy
    Età
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1126
    @nessi
    mi fa piacere che hai risolto, rispondo io per il "Mitico" TextTomb
    per segnare questa discussione come [RISOLTO]
    Vai nella barra dei menu, situata all’inizio di questa discussione, troverai il menu “Strumenti Discussione” quindi scegliere “Segna questo Thread come risolto”
    grazie e torna quando vuoi!

  11. #10
    L'avatar di nessi
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Milano
    Età
    53
    Messaggi
    159
    Versione Office
    2013/2016
    Likes ricevuti
    3
    Likes dati
    35
    Citazione Originariamente Scritto da Gerardo Zuccalà Visualizza Messaggio
    @nessi
    mi fa piacere che hai risolto, rispondo io per il "Mitico" TextTomb
    per segnare questa discussione come [RISOLTO]
    Vai nella barra dei menu, situata all’inizio di questa discussione, troverai il menu “Strumenti Discussione” quindi scegliere “Segna questo Thread come risolto”
    grazie e torna quando vuoi!
    grazie a tutti voi! ci si rilegge presto ... fidatevi :18:

Discussioni Simili

  1. Copiare dati univoci su altro foglio
    Di totorom1 nel forum Domande su Excel in generale
    Risposte: 11
    Ultimo Messaggio: 20/02/17, 16:20
  2. [Risolto] Come ottenere un inserimento a cascata in caselle di testo scegliendo da una combobox
    Di ProgrammD69 nel forum Domande su Microsoft Access
    Risposte: 2
    Ultimo Messaggio: 13/07/16, 14:14
  3. Somma se in presenza di dati univoci
    Di G.Bove nel forum Domande su Excel in generale
    Risposte: 19
    Ultimo Messaggio: 25/02/16, 15:13
  4. [Risolto] dati univoci tramite funzione
    Di annnndrea nel forum Domande su Excel in generale
    Risposte: 16
    Ultimo Messaggio: 15/10/15, 22:19
  5. Convalida dati da elenco per dati univoci dinamica
    Di tsunami1978 nel forum Domande su Excel in generale
    Risposte: 8
    Ultimo Messaggio: 27/08/15, 00:52

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •