Pagina 1 din 1

Combo box dinamic in form

Scris: Mar Iul 24, 2018 12:54 pm
de RAMBO
Buna ziua.
Fie fisierul productie v 001.
In sheet Nomenclatoare sunt 2 tabele ce reprezinta nomenclatoare. Tabelul operatii are coloana Categorie. Fizsiderul are un mic form (stadiu incipient) ce doua comboboxuri (goale deocamdata). Ideea este ca userul sa selecteze categoria din comboul Categorie operatii, si in functie de categoria selectata, sa se populeze lista din comboul urmator, Denumire operatie. Stiu sa fac asta intr-o foaie excel, dar nu si in form, daca acest lucru o fii posibil after all.
NOTA: daca pentru rezolvare este necesara ceva schimbare/adaugare structura date, nu e problema.

Re: Combo box dinamic in form

Scris: Mar Iul 24, 2018 1:42 pm
de TudyBTH
Buna,

La initializarea formei se incarca combo1 cu denumirile unice din tabel. Se foloseste un dictionar pentru a exclude duplicatele
La evenimentul combo1 change se incarca combo2
Codul este in modulul formei

Cod: SelectaĊ£i tot

Private Sub ComboBox1_Change()
    LoadCombo2
End Sub

Private Sub UserForm_Initialize()
    Dim tbl As ListObject
    Dim dict As Object
    Dim i As Long
    Dim categ As String
    
    Set dict = CreateObject("Scripting.Dictionary")
    Set tbl = ThisWorkbook.Sheets("Nomenclatoare").ListObjects("Operatii")
    For i = 1 To tbl.ListRows.Count
        categ = tbl.ListColumns("Categorie").DataBodyRange(i).Value
        If Len(categ) > 0 And Not dict.exists(categ) Then
            dict.Add categ, 0
            Me.ComboBox1.AddItem tbl.ListColumns("Categorie").DataBodyRange(i).Value
        End If
    Next i
End Sub

Private Sub LoadCombo2()
    Dim tbl As ListObject
    Dim i As Long
    Dim den As String
    
    Me.ComboBox2.Clear
    
    If Me.ComboBox1.ListIndex = -1 Then Exit Sub
    Set tbl = ThisWorkbook.Sheets("Nomenclatoare").ListObjects("Operatii")
    For i = 1 To tbl.ListRows.Count
        den = tbl.ListColumns("Denumire operatie").DataBodyRange(i).Value
        If Len(den) > 0 And tbl.ListColumns("Categorie").DataBodyRange(i).Value = Me.ComboBox1 Then Me.ComboBox2.AddItem den
    Next i
End Sub

Re: Combo box dinamic in form

Scris: Mar Iul 24, 2018 9:13 pm
de RAMBO
Merge perfect.
Multumesc.