Combo box dinamic in form
Combo box dinamic in form
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.
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.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.
Re: Combo box dinamic in form
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
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
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.
Am invatat sa inotam in apa, ca pestii
Am invatat sa zburam in aer, ca pasarile
A ramas doar sa invatam sa traim pe Pamant, ca Oamenii.
Am invatat sa zburam in aer, ca pasarile
A ramas doar sa invatam sa traim pe Pamant, ca Oamenii.
Re: Combo box dinamic in form
Merge perfect.
Multumesc.
Multumesc.