Minggu, 03 Januari 2016

Cari Data "ComboBox Bertingkat"


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" 


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()
Private Sub 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()
Private Sub 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..!!
    Download  File Cari Data "ComboBox Bertingkat"

    Baca Juga : Untuk Sembunyikan Application Title


    Tidak ada komentar:

    Posting Komentar