Perhatikan gambar gif diatas..!!! Ngak tau judulnya apa..!! mungkin namanya ComboBox bertingkat..!!! Bisa jadi..!! Ketika ComboBox1 Terisi dengan pilihan Jenis Kelamin makan ComboBox2 akan memberikan pilihan Laki-Laki dan perempuan, Bila ComboBox1 terisi dengan pilihan Tahun maka ComboBox2 memberikan pilihan Tahun tertentu untuk dipilih dan seterusnya. Fungsinya yeah seperti yang ada pada gambar diatas.
Langkah-langkah Membuat ComboBox Bertingkat Pada Pencarian Data
- Buka excel, ubah "Sheet1" menjadi "DATA dan "Sheet2" menjadi "LAPORAN"
- Selanjutnya kita membuat Advance Filter Simak Posting Cari Data Dengan TextBox Tampil Di ListBox. Sesuaikan ajha sesuai kebutuhan Advance Filter "Copy To Another Location " dimana ListRange di ambil pada tabel di Sheet "Data", Creteria Range K1 dan K2 di Sheet "DATA" dan Copy To di Sheet "LAPORAN" di "B3:G3". Sekilas coba perhatikan gambar berikut sebagai petunjuk
Sheet "Data" |
- Di Sheet "DATA" Tabelnya buat Range Dinamis, Baca Range Dinamis
Sheet "LAPORAN" |
- Tabel di Sheet "LAPORAN" buat Range Dinamis lagi ya..!! Baca Range Dinamis
- Pilih Developer, buka visual basic buatlah rancangan UserForm seperti pada gambar berikut ini.
- Selanjutnya klik kanan ComboBox1 pilih View Code dan tempatkan kode berikut pada ComboBox1_Change()
Dim i As Integer
Dim Ws As Worksheet: Set Ws = Sheet1
Dim Cb As String
Dim tmp As String
Cb = ComboBox1.Value
ComboBox2.Clear
Select Case Cb
Case "JENIS KELAMIN"
With UserForm1.ComboBox2
For i = 3 To Cells(Rows.Count, 3).End(xlUp).Row
If InStr(1, tmp, Ws.Range("C" & i) & ";") = 0 Then
.AddItem Ws.Range("C" & i)
tmp = tmp & Ws.Range("C" & i) & ";"
End If
Next i
End With
Case "TANGGAL"
With UserForm1.ComboBox2
For i = 3 To Cells(Rows.Count, 4).End(xlUp).Row
If InStr(1, tmp, Ws.Range("D" & i) & ";") = 0 Then
.AddItem Ws.Range("D" & i)
tmp = tmp & Ws.Range("D" & i) & ";"
End If
Next i
End With
Case "BULAN"
With UserForm1.ComboBox2
For i = 3 To Cells(Rows.Count, 5).End(xlUp).Row
If InStr(1, tmp, Ws.Range("E" & i) & ";") = 0 Then
.AddItem Ws.Range("E" & i)
tmp = tmp & Ws.Range("E" & i) & ";"
End If
Next i
End With
Case "TAHUN"
With UserForm1.ComboBox2
For i = 3 To Cells(Rows.Count, 6).End(xlUp).Row
If InStr(1, tmp, Ws.Range("F" & i) & ";") = 0 Then
.AddItem Ws.Range("F" & i)
tmp = tmp & Ws.Range("F" & i) & ";"
End If
Next i
End With
End Select
End Sub
- Berikutnya klik kanan ComboBox2 pilih View Code dan letakkan kode berikut pada ComboBox2_Change()
Sheets("DATA").Range("K2").Value = UserForm1.ComboBox2.Text
End Sub
- Pasang Kode Berikut dimana ajha di General
Kode Untuk Menampilkan ListBox dari Sheet "DATA"
Sub ListData1()
With UserForm1.ListBox1
.ColumnCount = 6
.ColumnHeads = False
.ColumnWidths = "50"
.RowSource = "RDATA"
.BoundColumn = 0
End With
End Sub
Kode Kategori Untuk ComboBox1
Sub Kategori()
Dim i As Integer
Dim Ws As Worksheet: Set Ws = Sheet1
With UserForm1.ComboBox1
For i = 3 To 6
.AddItem Ws.Cells(2, i)
Next i
End With
End Sub
- Tempatkan Kode di UserForm_Initializ Berikut ini
Private Sub UserForm_Initialize()
Call ListData1
Call Kategori
Call RemoveCaption(UserForm1)
End Sub
- Klik kanan Label2 yaitu yang Caption "Cari" pilih View Code dan Tempatkan Kode berikut ini
Private Sub Label2_Click()
Dim Ws As Worksheet: Set Ws = Sheets("DATA")
Dim WsRekap As Worksheet: Set WsRekap = Sheets("LAPORAN")
Dim R As Range: Set R = Ws.Range("RDATA")
Dim RFilter As Range: Set RFilter = Ws.Range("K1:K2")
Dim RCari As Range: Set RCari = Ws.Range("K2")
Dim C As Variant
If Ws.FilterMode Then Ws.ShowAllData
If UserForm1.ComboBox2.Text = "" Then
MsgBox "Pilih Rekap Laporan Terlebih Dahulu..!!", 64, "Filter Data"
Exit Sub
End If
UserForm1.ComboBox2.Text = RCari
R.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=RFilter, CopyToRange:=WsRekap.Range("B3:G3"), Unique:=False
ListBox1.RowSource = "RLAPORAN"
End Sub
- Label3 yang Captionya "Tampil Semua" Klik kanan pilih View Code dan pasang kode dibawah ini
Private Sub Label3_Click()
Call ListData1
End Sub
- Selesai dech..!!! Bingungkan?? Yang nulis ajha bingung..!!! Biar ngak bingung download ajha file yang udah siap saya buat. dikotak-katik ajha sendiri. klo ada kendala tulis di komentar..!!
Baca Juga : Untuk Sembunyikan Application Title
Tidak ada komentar:
Posting Komentar