Risultati da 1 a 9 di 9

Discussione: Caricare ListBox sulla base del valore ComboBox



  1. #1
    L'avatar di dpg70
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Trebaseleghe (PD)
    Età
    47
    Messaggi
    60
    Versione Office
    Excel 2013
    Likes ricevuti
    0
    Likes dati
    13

    Caricare ListBox sulla base del valore ComboBox

    Buona domenica a tutti,
    apro questa discussione, perchè seguendo il forum e trovando uno spunto utile ad una mie esigenza la base di un file "combo e carica lista2000.xls" di A.Maurizio, modificandolo nascono degli errori e non raggiungo il mio obiettivo.

    Allego il file e vi descrivo velocemente le mie intenzioni:

    Da un database di record giornalieri che ha origine dalla riga10, sulla base del valore della ComboBox1 contenuta in un UserForm e caricata da un elenco univoco delle Commesse di colonna G, volevo caricare la ListBox1 con le descrizioni delle lavorazioni contenute nella colonna K. Ovvero, caricare la ListBox1 sempre in modo univoco con i dati creati dall'intersezione della riga in esame e la colonna K (Lavorazione).

    Risultato:
    ComboBox1=”Bianchi Maddalena” la ListBox1 deve contenere la stringa “Demolizione”

    Data Cod. Commessa Lavorazione
    09-01-16 bima.ba Bianchi Maddalena Demolizione
    10-01-16 vegi.ma Verdi Giuseppe Marciapiede

    PS. nel file ho cercato di registrare gli elenchi estratti in un nuovo foglio (Foglio2) perchè non sapevo come inserirli in un contenitore nascosto utilizzando vba, sempre per poi caricarli in modo univoco nella mia ListBox1.

    Grazie e ancora buona giornata, Dario (DPG70)
    File Allegati File Allegati

  2. #2

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2808
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979

    Re: Caricare ListBox sulla base del valore ComboBox

    Ho modificato la routine che carica la list box:
    Codice: 
    Private Sub ComboBox1_Click()
    Dim Lavori As Collection
    Dim CL As Object 'dichiaro la variabile CL
    Dim uRiga As Long
    
    
    Set Lavori = New Collection
    Me.ListBox1.Clear
    
    
    uRiga = Worksheets("Cantiere").Cells(Rows.Count, "G").End(xlUp).Row
    'per ogni cella nel range G1:G ultima riga foglio Cantiere
    For Each CL In Worksheets("Cantiere").Range("G10:G" & uRiga)
    'se la cella è uguale al valore selezionato nella combobox
    If CL = ComboBox1.Value Then
        On Error Resume Next
        With CL.Offset(0, 4)
            'se la cella non è vuota
            If .Value <> "" Then
                Lavori.Add .Value, CStr(.Value)
                If Err.Number = 0 Then
                    'aggiungi il valore della cella
                    Me.ListBox1.AddItem CStr(.Value)
                Else
                    Err.Clear
                End If
            End If
        End With
    End If
    Next
    End Sub

  3. #3
    L'avatar di dpg70
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Trebaseleghe (PD)
    Età
    47
    Messaggi
    60
    Versione Office
    Excel 2013
    Likes ricevuti
    0
    Likes dati
    13

    Re: Caricare ListBox sulla base del valore ComboBox

    Citazione Originariamente Scritto da Rubik72 Visualizza Messaggio
    Ho modificato la routine che carica la list box:
    Codice: 
    Private Sub ComboBox1_Click()
    Dim Lavori As Collection
    Dim CL As Object 'dichiaro la variabile CL
    Dim uRiga As Long
    
    
    Set Lavori = New Collection
    Me.ListBox1.Clear
    
    
    uRiga = Worksheets("Cantiere").Cells(Rows.Count, "G").End(xlUp).Row
    'per ogni cella nel range G1:G ultima riga foglio Cantiere
    For Each CL In Worksheets("Cantiere").Range("G10:G" & uRiga)
    'se la cella è uguale al valore selezionato nella combobox
    If CL = ComboBox1.Value Then
        On Error Resume Next
        With CL.Offset(0, 4)
            'se la cella non è vuota
            If .Value <> "" Then
                Lavori.Add .Value, CStr(.Value)
                If Err.Number = 0 Then
                    'aggiungi il valore della cella
                    Me.ListBox1.AddItem CStr(.Value)
                Else
                    Err.Clear
                End If
            End If
        End With
    End If
    Next
    End Sub
    Grazie Rubik72, ma anche con questa procedura nel mio file non riesco a caricare la ListBox1.
    Anche quando (If CL=ComboBox1.....), ovvero "Bianchi Maddalena"="Bianchi Maddalena" la procedura salta su End If senza analizzare la procedura dopo il Then With.

  4. #4

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2808
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979

    Re: Caricare ListBox sulla base del valore ComboBox

    Citazione Originariamente Scritto da dpg70 Visualizza Messaggio
    Grazie Rubik72, ma anche con questa procedura nel mio file non riesco a caricare la ListBox1.
    Anche quando (If CL=ComboBox1.....), ovvero "Bianchi Maddalena"="Bianchi Maddalena" la procedura salta su End If senza analizzare la procedura dopo il Then With.
    Ti allego il file che a me funziona
    File Allegati File Allegati

  5. I seguenti utenti hanno dato un "Like"


  6. #5
    L'avatar di dpg70
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Trebaseleghe (PD)
    Età
    47
    Messaggi
    60
    Versione Office
    Excel 2013
    Likes ricevuti
    0
    Likes dati
    13

    Re: Caricare ListBox sulla base del valore ComboBox

    Grazie mille, Rubik72 tutto funziona ora!
    Subito ho avuto un problema nell'asportazione del codice al file che uso, ma mi pare di aver risolto.:246:

  7. #6

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2808
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979

    Re: Caricare ListBox sulla base del valore ComboBox

    Se hai risolto il problema, segna questa discussione come "RISOLTO".
    Vai sul menù "Strumenti Discussione" (all'inizio del thread) e scegli la voce "Segna questo thread come risolto...".

  8. #7
    L'avatar di dpg70
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Trebaseleghe (PD)
    Età
    47
    Messaggi
    60
    Versione Office
    Excel 2013
    Likes ricevuti
    0
    Likes dati
    13

    Re: Caricare ListBox sulla base del valore ComboBox

    La Combobox caricata con record vuoti, da errori!

    Si, ho alcuni records non ancora impostati cioè vuoti. Suppongo allora che l'elenco non può contenere degli spazi vuoti, la cella vuota non va considerata un elemento.
    Si può risolvere il problema? cercherò anche nella rete.
    Un saluto, DPG70

  9. #8

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2808
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979

    Re: Caricare ListBox sulla base del valore ComboBox

    Ho modificato la routine che esclude i record vuoti.

    Codice: 
    Option Explicit
    
    Private Sub UserForm_Activate()
      Call Carica_ComboBox1_Univoca
    End Sub
    
    Private Sub Carica_ComboBox1_Univoca()
    Dim Elenco As Collection
    Dim uRiga As Long, i As Long
      
    Set Elenco = New Collection
      
    uRiga = Worksheets("Cantiere").Cells(Rows.Count, "G").End(xlUp).Row
    On Error Resume Next
    For i = 10 To uRiga
        With Worksheets("Cantiere").Cells(i, "G")
            If .Value = "" Then GoTo Successivo
            Elenco.Add .Value, .Text
            If Err.Number = 0 Then
                Me.ComboBox1.AddItem .Value
            Else
                Err.Clear
            End If
    Successivo:
        End With
    Next i
    
    Set Elenco = Nothing
    End Sub
    
    Private Sub ComboBox1_Click()
    Dim Lavori As Collection
    Dim CL As Object 'dichiaro la variabile CL
    Dim uRiga As Long
    
    Set Lavori = New Collection
    Me.ListBox1.Clear
    
    uRiga = Worksheets("Cantiere").Cells(Rows.Count, "G").End(xlUp).Row
    'per ogni cella nel range G1:G ultima riga foglio Cantiere
    For Each CL In Worksheets("Cantiere").Range("G10:G" & uRiga)
    'se la cella è uguale al valore selezionato nella combobox
    If CL = ComboBox1.Value Then
        On Error Resume Next
        With CL.Offset(0, 4)
            'se la cella non è vuota
            If .Value <> "" Then
                Lavori.Add .Value, CStr(.Value)
                If Err.Number = 0 Then
                    'aggiungi il valore della cella
                    Me.ListBox1.AddItem CStr(.Value)
                Else
                    Err.Clear
                End If
            End If
        End With
    End If
    Next
    End Sub
    
    Private Sub DatiUnivoci()
    Dim y As Long, val1 As Variant, val2 As Variant, Riga As Integer
    
    val1 = 1 'or =InputBox("Indicare la colonna da Valutare")
    If val1 = "" Then Exit Sub
    val2 = 2 'or =InputBox("Indicare colonna dove si vogliono i dati unici")
    If val2 = "" Then Exit Sub
    Application.ScreenUpdating = False
    
    Riga = Cells(Rows.Count, val1).End(xlUp).Row
    Range(Cells(2, val1), Cells(Riga, val1)).Copy
    Cells(2, val2).Select
    ActiveSheet.Paste
    Range(Cells(2, val2), Cells(Riga, val2)).Select
    Selection.Sort Key1:=Cells(2, val2), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
    For y = 2 To Riga
      If Cells(y, val2) = "" Then Exit For
      If Cells(y, val2) = Cells(y + 1, val2) Then
        Cells(y + 1, val2).Select
        Selection.Delete Shift:=xlUp
        y = y - 1
      End If
    Next y
    Application.ScreenUpdating = True
    Worksheets("Foglio2").Select
     Cells(1, val1) = "Dati di colonna Presenti"
      Cells(1, val2) = "Elenco delle Lavorazioni Eseguite"
    End Sub

  10. #9
    L'avatar di dpg70
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Trebaseleghe (PD)
    Età
    47
    Messaggi
    60
    Versione Office
    Excel 2013
    Likes ricevuti
    0
    Likes dati
    13

    Re: Caricare ListBox sulla base del valore ComboBox

    Citazione Originariamente Scritto da Rubik72 Visualizza Messaggio
    Ho modificato la routine che esclude i record vuoti.

    Codice: 
    Option Explicit
    
    Private Sub UserForm_Activate()
      Call Carica_ComboBox1_Univoca
    End Sub
    
    Private Sub Carica_ComboBox1_Univoca()
    Dim Elenco As Collection
    Dim uRiga As Long, i As Long
      
    Set Elenco = New Collection
      
    uRiga = Worksheets("Cantiere").Cells(Rows.Count, "G").End(xlUp).Row
    On Error Resume Next
    For i = 10 To uRiga
        With Worksheets("Cantiere").Cells(i, "G")
            If .Value = "" Then GoTo Successivo
            Elenco.Add .Value, .Text
            If Err.Number = 0 Then
                Me.ComboBox1.AddItem .Value
            Else
                Err.Clear
            End If
    Successivo:
        End With
    Next i
    
    Set Elenco = Nothing
    End Sub
    
    Private Sub ComboBox1_Click()
    Dim Lavori As Collection
    Dim CL As Object 'dichiaro la variabile CL
    Dim uRiga As Long
    
    Set Lavori = New Collection
    Me.ListBox1.Clear
    
    uRiga = Worksheets("Cantiere").Cells(Rows.Count, "G").End(xlUp).Row
    'per ogni cella nel range G1:G ultima riga foglio Cantiere
    For Each CL In Worksheets("Cantiere").Range("G10:G" & uRiga)
    'se la cella è uguale al valore selezionato nella combobox
    If CL = ComboBox1.Value Then
        On Error Resume Next
        With CL.Offset(0, 4)
            'se la cella non è vuota
            If .Value <> "" Then
                Lavori.Add .Value, CStr(.Value)
                If Err.Number = 0 Then
                    'aggiungi il valore della cella
                    Me.ListBox1.AddItem CStr(.Value)
                Else
                    Err.Clear
                End If
            End If
        End With
    End If
    Next
    End Sub
    
    Private Sub DatiUnivoci()
    Dim y As Long, val1 As Variant, val2 As Variant, Riga As Integer
    
    val1 = 1 'or =InputBox("Indicare la colonna da Valutare")
    If val1 = "" Then Exit Sub
    val2 = 2 'or =InputBox("Indicare colonna dove si vogliono i dati unici")
    If val2 = "" Then Exit Sub
    Application.ScreenUpdating = False
    
    Riga = Cells(Rows.Count, val1).End(xlUp).Row
    Range(Cells(2, val1), Cells(Riga, val1)).Copy
    Cells(2, val2).Select
    ActiveSheet.Paste
    Range(Cells(2, val2), Cells(Riga, val2)).Select
    Selection.Sort Key1:=Cells(2, val2), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
    For y = 2 To Riga
      If Cells(y, val2) = "" Then Exit For
      If Cells(y, val2) = Cells(y + 1, val2) Then
        Cells(y + 1, val2).Select
        Selection.Delete Shift:=xlUp
        y = y - 1
      End If
    Next y
    Application.ScreenUpdating = True
    Worksheets("Foglio2").Select
     Cells(1, val1) = "Dati di colonna Presenti"
      Cells(1, val2) = "Elenco delle Lavorazioni Eseguite"
    End Sub
    Cosa posso dire? solamente GRAZIE!
    Buon lavoro

Discussioni Simili

  1. [Risolto] Popolare la ListBox da Combobox
    Di Pacifico437 nel forum Domande su Excel VBA e MACRO
    Risposte: 9
    Ultimo Messaggio: 08/03/17, 08:49
  2. [Risolto] Listbox-Combobox
    Di marc63 nel forum Domande su Excel VBA e MACRO
    Risposte: 6
    Ultimo Messaggio: 26/10/16, 23:44
  3. Risposte: 6
    Ultimo Messaggio: 29/09/16, 23:54
  4. Popolare ListBox dal ComboBox
    Di Pacifico437 nel forum Domande su Excel VBA e MACRO
    Risposte: 4
    Ultimo Messaggio: 11/09/16, 20:07
  5. Risposte: 4
    Ultimo Messaggio: 10/08/16, 00:58

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
  •