Memanggil data filter

  1. 5 tahun lalu
    Di sunting 5 tahun lalu oleh bejo

    slmat malam Admin, saya sedang belajar membuat menu menggunakan Vb,minta tolong bagaimana scrip memanggil data siswa berdasarkan kelas yang sudah dipilih, mohon bimibingannya. terima kasih

  2. Caton

    13 Agu 2019 Terverifikasi Indonesia + 20.101 Poin

    @bejo ...

    Membuat menu, atau membuat daftar data siswa berdasarkan kelas terpilih? Saya kasih contoh membuat daftar data siswa saja pada file terlampir. Semoga sesuai.

    Demikian.

  3. terima kasih master, saya ini mau menempatkan hasil select menu data pada sheet1, tapi gk jadi2 master, help me please........, thanks before!!!!

  4. Caton

    14 Agu 2019 Terverifikasi Indonesia + 20.101 Poin
    Di sunting 5 tahun lalu oleh Caton

    @bejo ...

    Coba gunakan script berikut:

    Private Sub cmdSave_Click()
        Dim lIdx As Long
        
        lIdx = lstSiswa.ListIndex
        With Sheet1
            .Range("A10") = lstSiswa.List(lIdx, 0)
            .Range("B10") = lstSiswa.List(lIdx, 1)
            .Range("C10") = lstSiswa.List(lIdx, 2)
        End With
    End Sub

    ... atau bisa juga seperti berikut ini:

    Private Sub cmdSave_Click()
        Dim lIdx As Long
        
        lIdx = lstSiswa.ListIndex
        Sheet1.Range("A10:C10") = Split(lstSiswa.List(lIdx, 0) & "|" & _
                lstSiswa.List(lIdx, 1) & "|" & lstSiswa.List(lIdx, 2), "|")
        End With
    End Sub

    Demikian.

  5. terima kasih banyak master, semoga tuhan membalas kebaikan anda.

  6. selamat malam master, saya mnta tolong lagi master, saya belajar menghapus baris, tapi kq gk jadi2 ya, tolong ya master

  7. Caton

    28 Agu 2019 Terverifikasi Indonesia + 20.101 Poin

    @bejo ...

    Pengujian kondisi pada baris script berikut:

    ...
    If Cells(k, 1).Value = TB1.Value Then
        ...
    End If
    ...

    akan terus gagal (FALSE) oleh karena tipe nilai yang dihasilkan script Cells(k, 1).Value akan berupa numerik, sedangkan tipe nilai yang dihasilkan oleh kontrol TextBox berupa alphanumerik. Sederhananya,

    10 <> "10"

    Coba ganti scriptnya menjadi:

    ...
    If CStr(Cells(k, 1).Value) = TB1.Value Then
       Cells(k, 1).EntireRow.Delete
    End If
    ...

    Demikian.

  8. terima kasih banyak ilmunya master, sudah sangat membantu

  9. lagi master, kalau data yg dicari tidak ada, misalnya memasukkan angka 50, menampilkan msg not found, scripnya bagaimana master,

  10. Caton

    29 Agu 2019 Terverifikasi Indonesia + 20.101 Poin

    @bejo ...

    Coba ubah saja script untuk Event Procedure CommandButton1 menjadi seperti berikut:

    Private Sub CommandButton1_Click()
        Dim vResult As Variant
        Dim xlRange As Range
        
        '+-- Sesuaikan baris berikut dengan nama sheet
        '+-- dan range aktual yang akan diproses.
        Set xlRange = Sheet1.Range("A1:A300")
        
        '+-- Periksa tipe nilai yang akan dicari.
        If IsNumeric(TB1) Then
            '+-- Jika tipe nilai numerik, ubah menjadi angka.
            vResult = Application.Match(CLng(Trim$(TB1)), xlRange, 0)
        Else
            '+-- Jika tipe nilai alphanumerik, gunakan apa adanya.
            vResult = Application.Match(Trim$(TB1), xlRange, 0)
        End If
        
        '+-- Jika hasilnya angka, maka
        '+-- baris data ditemukan.
        If IsNumeric(vResult) Then
            Sheet1.Rows(vResult).EntireRow.Delete
            TB1 = vbNullString
        Else
            '+-- Jika bukan angka (biasanya berupa
            '+-- Error 2042), berarti data tidak ada.
            MsgBox "Tidak ada data tersebut!"
        End If
    
    End Sub

    Dengan script di atas, tidak perlu melakukan proses pengulangan, dan data yang dicari bisa berupa angka (numerik) atau huruf (alphabet) serta gabungan angka dan huruf (alphanumerik).

    Demikian.

  11. terima kasih master, tp apa bedanya data tipye numeric dengan alpanumeric master???

  12. Caton

    29 Agu 2019 Terverifikasi Indonesia + 20.101 Poin
    Di sunting 5 tahun lalu oleh Caton

    @bejo ... terima kasih ...

    Sama-sama mas...

    @bejo ... apa bedanya data tipye numeric dengan alpanumeric ...

    Tipe data numerik dapat diproses secara matematika, sedangkan alphanumerik tidak ... :D Selengkapnya dapat ditanyakan kepada mbah Google. Sebaiknya pelajari lebih jauh tipe data dalam VBA...

    Saya jelaskan sedikit mengenai script VBA di atas:

    ...
    '+-- Periksa tipe nilai yang akan dicari.
    If IsNumeric(TB1) Then
        '+-- Jika tipe nilai numerik, ubah menjadi angka.
        vResult = Application.Match(CLng(Trim$(TB1)), xlRange, 0)
    Else
        '+-- Jika tipe nilai alphanumerik, gunakan apa adanya.
        vResult = Application.Match(Trim$(TB1), xlRange, 0)
    End If
    ...

    Pada dasarnya, kontrol TextBox akan mengembalikan nilai berupa teks (String). Tak perduli karakter apapun yang kita input, tetap nilainya akan dianggap sebagai teks. Saat kita memasukkan nilai 50, maka nilainya akan terbaca sebagai "50" (tanda kutip ganda melambangkan nilai tersebut sebagai string). Meski dilayar terlihat sebagai sebuah bilangan (angka/numerik), tetap saja tipe aktualnya adalah teks (atau string atau alphanumerik yakni gabungan angka, huruf dan atau karakter lainnya).

    Jika pada range:

    Sheet1.Range("A1:A300")

    berisi angka (atau bertipe numerik), maka menggunakan fungsi MATCH dengan nilai yang dicari adalah nilai yang diinput pada kontrol TexBox (TB1) secara langsung, maka tidak akan menghasilkan apapun selain Error. Meskipun yang diinput pada kontrol TextBox adalah angka, misalkan angka 5. Hal ini terjadi karena tipe nilai dari kontrol TextBox adalah teks atau string atau alphanumerik. Gambarannya scriptnya akan terlihat sebagai berikut:

    Application.Match("5", xlRange, 0)

    Padahal seharusnya:

    Application.Match(5, xlRange, 0)

    Fungsi MATCH pada script tersebut sebenarnya tidak perduli apakah tipe nilai yang akan dicari adalah numerik atau alphanumerik (dalam Excel, tipe data seperti ini dikenal sebagai Variant). Namun saat melakukan proses pencarian, fungsi MATCH akan membandingkan apakah tipe nilai yang dicari sama dengan tipe nilai pada range atau Array yang ditelusuri. Sehingga, meskipun kenyataannya ada angka 5 pada range tersebut, fungsi MATCH akan menganggap:

    "5" <> 5

    Untuk mengatasi hal ini, perlu diuji dahulu apakah nilai yang diinput bisa dianggap sebagai nilai numerik atau tidak, dengan menggunakanlah fungsi ISNUMERIC. Contoh:

    ISNUMERIC ("250") = TRUE
    ISNUMERIC ("ANA") = FALSE
    ISNUMERIC ("F16") = FALSE

    Jadi, meskipun nilai pada kontrol TextBox bukan numerik, namun kita dapat menguji apakah tipe nilai yang diinput merupakan numerik atau bukan. Apabila nilai pada kontrol TextBox dapat dinggap sebagai numerik, maka lakukan konversi dari string menjadi numerik,

    ... CLng(Trim$(TB1)) ...

    Sebaliknya, biarkan saja nilai tetap sebagai string. Selanjutnya, hasil pengujian disimpan pada variabel vResult yang bertipe Variant (tipe nilai ditentukan saat variabel sudah berisi nilai). Penggunaan tipe Variant dikarenakan fungsi:

    Application.Match

    akan mengembalikan 2 tipe data, yakni numerik jika baris data yang cocok ditemukan, dan string berisi nomor kesalahan (Error) jika baris data tidak ada yang cocok. Ini berbeda dengan fungsi serupa yang merupakan properti dari objek WorksheetFunction:

    WorksheetFunction.Match

    yang akan menghasilkan angka jika cocok dan error #N/A jika gagal...

    Demikian.

  13. terima kasih banyk master, sudah menjelaskan panjang lebar, walau memang blm mengerti sepenuhnya tp sudah ada gambaran perbedaannya, sekali lagi terima kasih.

  14. Caton

    30 Agu 2019 Terverifikasi Indonesia + 20.101 Poin

    @bejo ...

    Sama-sama mas @bejo ... Mohon maaf jika penjelasannya malah bikin mumet ... :D

 

atau Mendaftar untuk ikut berdiskusi!