Sistem Absensi Dan Laporan Penggajian

Friday 17 April 2015

Menampilkan Data yang dicari Pada ListBox pada VBA Ms.Excell

Salam...,

Programing VBA yang saya buat kali ini adalah menampilkan data yang dicari dari database pada ListBox, hal ini tidak terlalu sulit tapi pada saat program dijalankan loading pencariannya akan agak sedikit lama, ini merupakan salah satu kelemahan dari pada Programing VBA ms.Excell.

Ok, Langsung saja...

Pertama Buka MS.Excell nya:
1. Siapkan Tabel Sheet Database nya ( Tabel tempat pencarian data ), yang saya buat kali ini Tabel Data Penerimaan Barang seperti berikut ;



2. Selanjutnya membuat Form pencarian, Klik Tab Developer pada Menu Bar Excell, lalu Klik Icon Visual Basic, Rancang lah Form nya seperti berikut :


3. Masukkan Coding nya seperti dibawah ini :

Private Sub CommandButton1_Click()
On Error Resume Next
Worksheets("Sheet1").Activate
Dim rngNames As Range
    Dim arrNames
    Dim arrResults
    Dim lngRow As Long
    If TextBox1.Value = "" Then
        MsgBox "No.Surat Jalan masih Kosong..."
Me.TextBox1.SetFocus
       
        Exit Sub
    End If
     
    With Worksheets("Sheet1")
        Set rngNames = .Range("B3", .Range("B" & Rows.Count).End(xlUp))
    End With
    With rngNames
        arrNames = Evaluate(.Address & "&CHAR(45)&ROW(" & .Address & ")")
    End With
    arrNames = Application.Transpose(arrNames)
    arrResults = Filter(arrNames, TextBox1.Value)
    ListBox1.Clear
    UserForm_Activate
    If UBound(arrResults) = -1 Then
        ListBox1.AddItem "Data Tidak Ada"
    Else
        For i = LBound(arrResults) To UBound(arrResults)
            lngRow = Mid(arrResults(i), InStrRev(arrResults(i), "-") + 1)
            With ListBox1
                .AddItem
                .List(.ListCount - 1, 0) = Worksheets("Sheet1").Range("A" & lngRow)
                .List(.ListCount - 1, 1) = Worksheets("Sheet1").Range("C" & lngRow)
                .List(.ListCount - 1, 2) = Worksheets("Sheet1").Range("D" & lngRow)
                .List(.ListCount - 1, 3) = Worksheets("Sheet1").Range("E" & lngRow)
                .List(.ListCount - 1, 4) = Worksheets("Sheet1").Range("F" & lngRow)
                .List(.ListCount - 1, 5) = Worksheets("Sheet1").Range("G" & lngRow)
            End With
        Next i
    End If
End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub UserForm_Activate()
ListBox1.Clear
ListBox1.ColumnCount = 6
With ListBox1
.AddItem
.List(.ListCount - 1, 0) = "Tanggal Transaksi"
.List(.ListCount - 1, 1) = "Name Supplier"
.List(.ListCount - 1, 2) = "Product Code"
.List(.ListCount - 1, 3) = "Description Prodcut"
.List(.ListCount - 1, 4) = "Standart Packing"
.List(.ListCount - 1, 5) = "Quantity"
.ColumnWidths = 100 & " , " & 120 & "," & 80 & " , " & 90 & ", " & 90 & "," & 80
End With
End Sub

4. Jalankan Programnya, caranya Klik tanda panah Hijau pada menu Bar


5. Masuk kata kunci data yang dicari, pada Tabel penerimaan yang saya buat adalah "No.Surat Jalan"

6. Klik Tombol cari, maka data yang berhubungan dengan "No.Surat Jalan" yang saya masukkan ditampilkan pada ListBox, seperti Gambar Berikut ini ;



Tutorial Video Klik Link Dibawah ini :


Sekian Tutorial VBA MS.Excell Pencarian data pada Tabel Sheet database Excell untuk ditampilkan pada ListBox, silahkan dikembangkan.

Pelajari juga Tutorial berikut ini :
Memasukkan Data dari TextBox kedalam ListBox Pada VBAMs.Excell
Menyimpan Data dari ListBox kedalam Tabel Sheet Databse VBAMs.Excell
Cara Membuat Kartu Stok ( Stock Card ) Otomatis dengan VBA MS.Excell


Salam...,


3 comments:
  1. Mas, saya sudah coba terapkan, tapi dalam pencarian data sifatnya "Case sensitive". Besar dan kecil huruf harus sama persis antara yg di Input dengan data yang ingin di cari.

    Bagaimana cara menghilangkannya ?

    ReplyDelete
  2. kalo fikternya 2 kondisi (2 textbox) apa yang harus dirubah/tambahain yah pak di script code nya? terimakasih.

    ReplyDelete
  3. Mas Bisa bantu kah, buatkan coding VBA pencarian Listbox
    kalau bisa saya share filenya

    ReplyDelete