Isi combobox secara Cascading - Cascading merupakan menu sekunder atau menu lanjutan yang muncul pada saat memilih bagian menu utama, jika di implementasikan pada combobox berati ada dua combobox yang terlibat, combobox pertama sebagai menu utama sedangkan combobox kedua sebagai menu sekunder dimana nilai yang akan ditampilkan oleh meu sekunder ini bergantug pada meu utama

Misalnya ada 3 tingkat yaitu tingkat 1 tingkat 2 dan tingkat 3, masing masing tingkat mempunyai kelas yaitu A.B,C,D da E, sedangkan hanya tingkat 3 saja yang hanya mempunyai kelas sampai D
Menu utama adalah 1,2,3 meu skuncer adalah A,B,C,D,E . Ketika menu utama menunjukan angka 1 atau 2 maka menu sekunder akan menunjukan kelas A,B,C,D,E, dan ketika menu utama menunnjuka angka 3 maka menu sekunder akan menampilkan kelas A,B,C,D

ISI COMBOBOX CASCADING

Untuk membuat Isi combobox secara Cascading kita mulai denga membuat tabel data. kataka tabel data ada disheet1 pada kolom A2 kebawah berisi meu utama dan sub menu atau meu sekunder berada di kolom B2 kebawah


Setelah selesai membuat tabel, masuk kejendela VBE, insert userform dengan dua kontrol Combobox, Combobox1 digunakan untuk menampilkan menu utama pada kolom A, dan Combobox2 sebagai sub menu untuk menampilkan data pada kolom B yag sesuai dengan pilihan Combobox1

Masukan dulu kode macro dibawah ini untuk menampilkan menu utama pada Combobox1 sesuai data pada kolom A

Private Sub UserForm_Activate()
Set ExcelPro = Sheets("Sheet1")
On Error Resume Next
Dim Sel As Range
Dim NoDupes As New Collection
Set Status = ExcelPro.Range("A2", ExcelPro.Range("A2").End(xlDown))
Combobox1.Clear
For Each Sel In Status
NoDupes.Add Sel.Value, CStr(Sel.Value)
Next Sel
For Each Item In NoDupes
Combobox1.AddItem Item
Next Item
End Sub

Selesai membuat menu utama, sekarang kita menampilkan sub menu atau meu sekunder , kode macronya sebagai berikut

Private Sub ComboBox1_Change()
Dim DNama As Range
Dim i, a As Long
Set Tbl = Sheets("Sheet1").Cells(1).CurrentRegion
Set DNama = Tbl.Offset(1, 0).Resize(Tbl.Rows.Count - 1, 2)
a = 0
On Error Resume Next
With ComboBox2
.Clear
If ComboBox1.ListIndex > -1 Then
For i = 1 To Tbl.Rows.Count - 1
If DNama(i, 1).Value = ComboBox1.Value Then
.AddItem DNama(i, 2)
a = a + 1
End If
Next i
End If
End With
End Sub

Catatan

Mencari ilai yang sama anatara nilai pada kolom A dengan nilai pada combobox1 DNama(i, 1).Value = ComboBox1.Value

Adapun .AddItem DNama(i, 2) merupakan hasil dari kkolom B yang sesuai dengan menu utama

Gambar dibawa ini menunjukan bahwa combobox2 haya menampilkan nama siswa yang kota kelahiranya ada di kota Bekasi


Download - Isi combobox secara Cascading

Demikianlah Isi combobox secara Cascading, sebenarnya masih ada cara lain untuk melakukan hal ini dengan kode yang sederhana, akan tetapi karena saya menemukan kode ini terlebih dahulu jadi kode ini juga yang saya pakai dahulu
Saya menemukan cara Isi combobox secara Cascading pada aplikasi pembayaran SPP, anda juga bisa mendownloadnya pada link ini Aplikasi pembayaran SPP Gratis
No comments