Risultati da 1 a 10 di 10

Discussione: Combobox dipendenti come da "INDIRETTO"



  1. #1
    L'avatar di giteti58
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    Abruzzo
    Età
    58
    Messaggi
    59
    Versione Office
    Excel 2016
    Mi Piace ricevuti
    2
    Mi Piace dati
    32

    Combobox dipendenti come da "INDIRETTO"

    Salve a tutti,
    sono alle prese con un nuovo quesito.
    Ho necessità, in un file che allego, di ottenere un collegamento tra due distinte COMBOBOX.
    Più in particolare sto cercando di ricreare le funzione che solitamente si ottiene con l'elenco a discesa (utilizzando "=INDIRETTO") però usando le COMBOBOX, sia per motivi di maggiore visibilità (visto che l'elenco a discesa presenta necessariamente caratteri piccolissimi) e sia per il suggerimento nella ricerca.
    Tuttavia non riesco assolutamente a trovare il modo per collegare la seconda Combobox che dovrebbe, per la ricerca, utilizzare la "ListFillRange" ottenuta dalla selezione della prima.
    Sono certo che la cosa sia possibile utilizzando qualche macro che suggerisce la corretta ListFillRange alla seconda Combobox, ma non riesco a fare da solo!
    Grazie in anticipo per l'aiuto.
    File Allegati File Allegati
    Ultima modifica fatta da:alfrimpa; 12/10/16 alle 22:59

  2. #2
    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    63
    Messaggi
    1995
    Versione Office
    2007 - 2013
    Mi Piace ricevuti
    249
    Mi Piace dati
    38

    Re: Combobox dipendenti come da "INDIRETTO"

    Ciao Giteti

    Prova con questa macro da inserire in Combobox1_Change ma sicuramente si può far di meglio.

    Codice: 
    Private Sub ComboBox1_Change()
    Dim i1 As Integer
    Dim i2 As Integer
    Dim i3 As Integer
    Dim i4 As Integer
    Dim i5 As Integer
    Dim i6 As Integer
    Dim i7 As Integer
    Dim i8 As Integer
    Dim i9 As Integer
    Dim i10 As Integer
    Dim i11 As Integer
    Dim lr As Long
    Select Case ComboBox1.Value
        Case Is = "Renault"
        lr = Cells(Rows.Count, 5).End(xlUp).Row
        ComboBox2.Clear
        For i1 = 3 To lr
            ComboBox2.AddItem Range("E" & i1)
        Next i1
        Case Is = "Alfa Romeo"
        lr = Cells(Rows.Count, 6).End(xlUp).Row
        ComboBox2.Clear
        For i2 = 3 To lr
            ComboBox2.AddItem Range("f" & i2)
        Next i2
        Case Is = "Audi"
        lr = Cells(Rows.Count, 7).End(xlUp).Row
        ComboBox2.Clear
        For i3 = 3 To lr
            ComboBox2.AddItem Range("g" & i3)
        Next i3
        Case Is = "Bentley"
        lr = Cells(Rows.Count, 8).End(xlUp).Row
        ComboBox2.Clear
        For i4 = 3 To lr
            ComboBox2.AddItem Range("h" & i4)
        Next i4
        Case Is = "Bmw"
        lr = Cells(Rows.Count, 9).End(xlUp).Row
        ComboBox2.Clear
        For i5 = 3 To lr
            ComboBox2.AddItem Range("i" & i5)
        Next i5
        Case Is = "Cadillac"
        lr = Cells(Rows.Count, 10).End(xlUp).Row
        ComboBox2.Clear
        For i6 = 3 To lr
            ComboBox2.AddItem Range("j" & i6)
        Next i6
        Case Is = "Chevrolet"
        lr = Cells(Rows.Count, 11).End(xlUp).Row
        ComboBox2.Clear
        For i7 = 3 To lr
            ComboBox2.AddItem Range("k" & i7)
        Next i7
        Case Is = "Dacia"
        lr = Cells(Rows.Count, 12).End(xlUp).Row
        ComboBox2.Clear
        For i8 = 3 To lr
            ComboBox2.AddItem Range("l" & i8)
        Next i8
        Case Is = "Fiat"
        lr = Cells(Rows.Count, 13).End(xlUp).Row
        ComboBox2.Clear
        For i9 = 3 To lr
            ComboBox2.AddItem Range("m" & i9)
        Next i9
        Case Is = "Lancia"
        lr = Cells(Rows.Count, 14).End(xlUp).Row
        ComboBox2.Clear
        For i10 = 3 To lr
            ComboBox2.AddItem Range("n" & i10)
        Next i10
        Case Is = "Seat"
        lr = Cells(Rows.Count, 15).End(xlUp).Row
        ComboBox2.Clear
        For i11 = 3 To lr
            ComboBox2.AddItem Range("o" & i11)
        Next i11
    End Select
    End Sub
    Alfredo

    "Non esistono cose facili o difficili; esistono cose che si sanno e cose che non si sanno"
    Cit. Berna11: "Se ti piace la risposta di qualcuno, oltre a ringraziarlo, puoi cliccare su "Mi Piace" in basso a sinistra del loro messaggio."

  3. I seguenti utenti hanno dato un "Mi Piace"


  4. #3
    L'avatar di GiuseppeMN
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Mantova
    Messaggi
    533
    Versione Office
    2000 - 2013
    Mi Piace ricevuti
    156
    Mi Piace dati
    85

    Re: Combobox dipendenti come da "INDIRETTO"

    Citazione Originariamente Scritto da alfrimpa Visualizza Messaggio
    ... Prova con questa macro da inserire in Combobox1_Change ma sicuramente si può far di meglio.
    Buona sera, Alfredo;
    lascio ad Altri il "di meglio".
    =================================================================================================================
    Buona sera, Giteti;
    forse mi sono preso troppe libertà ma tant'è.

    Codice: 
    Option Explicit
    
    Private Sub ComboBox1_GotFocus()
        ComboBox1.Value = ""
        ComboBox2.Value = ""
    End Sub
    
    Private Sub ComboBox1_Change()
    Application.ScreenUpdating = False
    Dim NRec As Long, Cln As Long
    Dim x As Byte
        
        ComboBox2.Value = ""
            NRec = Range("D" & Rows.Count).End(xlUp).Row
                If NRec < 3 Then NRec = 3
            Range(Cells(3, 4), Cells(NRec, 4)).ClearContents
        Cln = Cells(2, Columns.Count).End(xlToLeft).Column
            For x = 5 To Cln
                If Cells(2, x).Value = Cells(1, 2).Value Then Exit For
            Next x
                NRec = Cells(Rows.Count, x).End(xlUp).Row
                Range(Cells(3, x), Cells(NRec, x)).Copy Cells(3, 4)
        ComboBox2.ListFillRange = "Marca"
    Application.ScreenUpdating = True
    End Sub
    Ho cercato di rendere il più flessibile possibile la Procedura; voglio dire, potresti aggiungere anche altre "Marche".
    Dovrebbe, il condizionale è sempre d'obbligo, funzionare comunque.

    Ho lasciato i Nomi zona inalterati; con ComboBox ne servono solo due:
    -MARCHE
    -Marca



    A disposizione.

    Buona serata a Tutti.

    Giuseppe
    File Allegati File Allegati
    Windows XP Excel 2000 - Windows 10 Excel 2013

  5. I seguenti utenti hanno dato un "Mi Piace"


  6. #4
    L'avatar di giteti58
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    Abruzzo
    Età
    58
    Messaggi
    59
    Versione Office
    Excel 2016
    Mi Piace ricevuti
    2
    Mi Piace dati
    32

    Re: Combobox dipendenti come da "INDIRETTO"

    Cari alfrimpa e GiuseppeMN ve lo devo proprio dire: SIETE DEI MOSTRI!!!
    Non ho neanche fatto in tempo a scrivere che ...... ecco la soluzione (anzi addirittura due!!).
    Problema assolutamente risolto e, nel contempo, ho preso atto della mia ignoranza in materia!!!!
    Grazie a tutti e due e problema, chiaramente, risolto alla grande.

  7. #5
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    72
    Messaggi
    1362
    Versione Office
    Excel2007
    Mi Piace ricevuti
    338
    Mi Piace dati
    93

    Re: Combobox dipendenti come da "INDIRETTO"

    Ciao Giteti
    un saluto agli amici e propongo un'altra soluzione (non dinamica come quella di Giuseppe, ma si potrebbe adattare)
    Codice: 
    Private Sub ComboBox1_Change()
        modello = Sheets("Listino").ComboBox1.Text
        nc = Application.WorksheetFunction.Match(modello, Range("E2:O2"), 0) + 4
        urc = Cells(Rows.Count, nc).End(xlUp).Row
        If nc < 1 Or nc > 256 Then Exit Sub
        lettera = Split(Cells(1, nc).Address(1, 0), "$")
        lett = lettera(0)
        Sheets("Listino").ComboBox2.ListFillRange = lett & 3 & ":" & lett & urc
    End Sub
    Ciao,
    Mario

  8. I seguenti utenti hanno dato un "Mi Piace"


  9. #6

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    44
    Messaggi
    1621
    Versione Office
    Excel 2013
    Mi Piace ricevuti
    497
    Mi Piace dati
    407

    Re: Combobox dipendenti come da "INDIRETTO"

    Un saluto a tutti. Propongo:
    Codice: 
    Private Sub ComboBox1_Change()
        ComboBox2.ListFillRange = Range(ComboBox1).Address
    End Sub

  10. I seguenti 4 utenti hanno dato un MI Piace a Rubik72 per questo post:


  11. #7
    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    63
    Messaggi
    1995
    Versione Office
    2007 - 2013
    Mi Piace ricevuti
    249
    Mi Piace dati
    38

    Re: Combobox dipendenti come da "INDIRETTO"

    Enzo, per favore, mi spieghi quel

    Codice: 
    Range(ComboBox1).Address
    Grazie
    Alfredo

    "Non esistono cose facili o difficili; esistono cose che si sanno e cose che non si sanno"
    Cit. Berna11: "Se ti piace la risposta di qualcuno, oltre a ringraziarlo, puoi cliccare su "Mi Piace" in basso a sinistra del loro messaggio."

  12. #8

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    36
    Messaggi
    2595
    Versione Office
    2016
    Mi Piace ricevuti
    706
    Mi Piace dati
    623

    Re: Combobox dipendenti come da "INDIRETTO"

    Ciao a tutti,

    @Alfredo
    il valore della ComboBox1 è di per se un range... vedi i nomi definiti nel file.


    [EDIT]
    si potrebbe anche scrivere:

    Codice: 
    Private Sub ComboBox1_Change()
        ComboBox2.ListFillRange = ComboBox1
    End Sub

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  13. #9
    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    63
    Messaggi
    1995
    Versione Office
    2007 - 2013
    Mi Piace ricevuti
    249
    Mi Piace dati
    38

    Re: Combobox dipendenti come da "INDIRETTO"

    Grazie Tore

    Bellissima questa non la sapevo proprio.

    Ma dove le andate a pescare tutte queste "chicche"?
    Alfredo

    "Non esistono cose facili o difficili; esistono cose che si sanno e cose che non si sanno"
    Cit. Berna11: "Se ti piace la risposta di qualcuno, oltre a ringraziarlo, puoi cliccare su "Mi Piace" in basso a sinistra del loro messaggio."

  14. #10

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    36
    Messaggi
    2595
    Versione Office
    2016
    Mi Piace ricevuti
    706
    Mi Piace dati
    623

    Re: Combobox dipendenti come da "INDIRETTO"

    Citazione Originariamente Scritto da alfrimpa Visualizza Messaggio
    Grazie Tore

    Bellissima questa non la sapevo proprio.

    Ma dove le andate a pescare tutte queste "chicche"?
    Io da @scossa

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

Discussioni Simili

  1. [Risolto] Formule "Rimpiazza" e "Sostituisci" per i numeri
    Di giteti58 nel forum Domande su Excel in generale
    Risposte: 4
    Ultimo Messaggio: 16/10/16, 16:45
  2. Problemi sulla "Variazione" ed "Elimina"
    Di dautattmaui nel forum Domande su Excel VBA e MACRO
    Risposte: 11
    Ultimo Messaggio: 05/08/16, 15:31
  3. >Come estrappolare la somma "automatica" di un DB con funzione "FILTRO"<
    Di tk71 nel forum Domande su Excel in generale
    Risposte: 1
    Ultimo Messaggio: 11/06/16, 10:44
  4. [Risolto] Codice non funzionante dopo il passaggio da "Windows" a "Mac"...
    Di joondeep nel forum Foglio di calcolo su altre Piattaforme
    Risposte: 13
    Ultimo Messaggio: 12/03/16, 20:09
  5. Collegamento "foglio elenco" e "fogli singoli"
    Di Maurizio76 nel forum Domande su Excel in generale
    Risposte: 7
    Ultimo Messaggio: 23/11/15, 09:14

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
  •