Input dan Cari data dr sheet lain

  1. 7 tahun lalu

    Mohon bantuan code gan...
    Saya sedang belajar dan sudh coba dengan Jurus Pindahan pd Kitab VBA excel level 1 dr suhu Ngarasan & Ronald Ardo sy praktekan masih muncul Syntax Error.
    Untuk membuat Inputan pd sheet Input masuk ke sheet lain (sheet Dbase) dan sebaliknya melakukan pencarian dr Dbase pada sheet Input.
    mksh sebelumnya atas bantuannya.

  2. tghfox

    4 Okt 2017 Terverifikasi Bekasi Barat + 579 Poin

    Mgkn ini bisa mambantu :D

    http://tghfox.blogspot.co.id/2012/09/macroexcel-input-edit-hapus-dan.html?m=1

  3. makasih om @tghfox. siaap meluncur tkp...

  4. nggak nemu yg sesuai om @tghfox
    sy butuh contoh penyelesaian dgn code atau logika excel utk file sy diatas... :D

  5. Caton

    4 Okt 2017 Terverifikasi Indonesia + 20.101 Poin

    Jika bingung mempelajari aplikasinya mas @Tghfox, silahkan dicoba, dipelajari dan dimodifikasi file terlampir bro @mbozonese ... :)

  6. mantaaap om @Caton...
    klop dan sesuai. mksh banget om udh membantu...

  7. Caton

    5 Okt 2017 Terverifikasi Indonesia + 20.101 Poin

    Sama-sama bro @mbozonese ... ;)

  8. 5 tahun lalu

    Mas caton maaf tanya donk
    Klo hasil pencarian hasilnya jangan menurun tapi hasiln ke kanan apa yg d rubah ya

  9. Caton

    8 Agu 2019 Terverifikasi Indonesia + 20.101 Poin

    @Meiby ...

    Pada file yang saya lampirkan di atas, ada prosedur Sub CariData(). Pada prosedur tersebut, ada baris perintah:

    ...
    '+-- Tampilkan dengan men-transpose arah kolom.
    Sheet1.Range("B12:B15") = Application.Transpose(xlRangeDBase)
    ...

    Nah baris itu yang diedit menjadi:

    ...
    '+-- Tampilkan dengan men-transpose arah kolom.
    Sheet1.Range("B12:E12") = xlRangeDBase.Value
    ...

    Perhatikan, rangenya tidak lagi 1 kolom (B12:B15), namun sudah menjadi 1 baris (B12:E12). Sesuaikan range target dengan range target aktualnya.

    Demikian.

  10. Thanks om
    Om caton satu lagi ya kan file di atas file destinationnya sheet2
    Apabila pada Excel d atas ada beberapa sheet seperti sheet2, sheet3, sheet4, dan seterusnya
    Tetapi d tiap sheet ada beberapa file yg sama sehingga data pada sheet terakhir yg kita ambil.
    Contoh : Sheet3 ada NIP 123456 sheet6 ada jg NIP 123456 sehingga yang kita ambil pada sheet6
    Gitu om.
    Thanks sebelumnya.

  11. Caton

    9 Agu 2019 Terverifikasi Indonesia + 20.101 Poin

    @Meiby ...

    Secara sederhana, lakukan saja proses pengulangan untuk setiap objek Worksheet pada Workbook, dan periksa range data pada setiap Worksheet apakah ada data yang dicari. Misalkan:

    Public Sub CariData()
        Dim xlWS As Worksheet
        Dim sWhat As String, sName As String
        Dim lRow As Long, lIdx As Long
        Dim xlRange As Range
        
        Set xlRange = Sheet1.Range("C3")
        If Len(xlRange.Value) Then
            With Sheet1
                .Range("H3").ClearContents
                .Range("H5:H9").ClearContents
            End With
            
            lIdx = 0
            On Error Resume Next
            For Each xlWS In ThisWorkbook.Worksheets
                sName = xlWS.Name
                If sName <> Sheet1.Name Then
                    lRow = CLng(WorksheetFunction.Match(xlRange, xlWS.Range("A2:A26"), 0))
                    If Err = 0 Then
                        lIdx = lIdx + 1
                        Sheet1.Cells(lIdx + 4, "H") = "Sheet " & sName & " — baris ke-" & lRow
                    Else
                        Err.Clear
                    End If
                End If
            Next
            Err.Clear: On Error GoTo 0
            
            If lIdx Then
                Sheet1.Cells(3, "H") = "Sheet " & sName & " — baris ke-" & lRow
            End If
        End If
    End Sub

    Pada prosedur di atas, baris perintah:

    ...
    If lIdx Then
        Sheet1.Cells(3, "H") = "Sheet " & sName & " — baris ke-" & lRow
    End If
    ...

    akan menjadi penentu apakah ada data yang ditemukan. Jika variabel lIdx > 0 maka data ditemukan. Untuk menentukan pada sheet apa, gunakan variabel sName, dan untuk menentukan baris data, gunakan variabel lRow. Misalkan:

    ...
    Set xlWS = Worksheets(sName)
    Set xlRangeDBase = xlWS.Range(xlWS.Cells(lRow, "A"), xlWS.Cells(lRow, "D"))
    Sheet1.Range("B10:E10") = xlRangeDBase.Value
    ...

    Selain dengan melakukan pengulangan terhadap setiap objek Worksheet, bisa juga dilakukan pengulangan dengan memanfaatkan Defined Range (Named Range), atau melalui Array dan sebagainya. Namun, saya rasa pengulangan terhadap setiap objek Worksheet akan lebih mudah dipahami dan ditelusuri. Contoh terlampir.

    Demikan, selamat mencoba...

  12. Ok terima kasih on caton

  13. Mas masih error' untuk menggunakan data di bawah ini

    Set xlWS = Worksheets(sName)
    Set xlRangeDBase = xlWS.Range(xlWS.Cells(lRow, "A"), xlWS.Cells(lRow, "D"))
    Sheet1.Range("B10:E10") = xlRangeDBase.Value

    Berikut terlampir errornya

  14. Caton

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

    @Meiby ...

    Jelas saja akan error. Pada gambar, terlihat perintah untuk mendefinisikan objek xlWS melalui nama sheet pada variabel sName sebelum variabel sName diisi dengan nilai tertentu (variabel sName masih kosong). Alhasil, objek xlWS didefinisikan ke sheet yang tidak ada! Coba periksa baris berikut:

    Public Sub CariData()
        Dim xlWS As Worksheet
        Dim sWhat As String, sName As String
        Dim lRow As Long, lIdx As Long
        Dim xlRange As Range
        
        Set xlWS = Worksheets(sName)        '+-- <= variabel sName = vbNullstring (kosong)
        'Set xlRange = Sheet1.Range("C3")
        If Len(xlRange.Value) Then
    ...

    Sebagaimana yang telah saya sampaikan di atas, pada bagian:

    ...
    If lIdx Then
        Sheet1.Cells(3, "H") = "Sheet " & sName & " — baris ke-" & lRow
    End If
    ...

    ditentukan apakah data ditemukan atau tidak. Jadi seharusnya, definisi objek xlWS harus berada di dalam blok kondisional tersebut, misalkan:

    ...
    If lIdx Then
        Set xlWS = Worksheets(sName)
        Set xlRangeDBase = xlWS.Range(xlWS.Cells(lRow, "A"), xlWS.Cells(lRow, "D"))
        Sheet1.Range("B10:E10") = xlRangeDBase.Value
    End If
    ...

    Pada blok kondisional tersebut, jika variabel lIdx bernilai > 0, maka artinya ada data yang ditemukan. Dengan demikian proses aktual untuk mengisi data dilakukan di dalam blok tersebut. Untuk baris script lainnya (dari awal sampai sebelum blok kondisional tersebut) pada dasarnya hanya untuk melakukan proses pencarian data saja. Oleh karena ada kemungkinan data ditemukan dalam beberapa sheet, maka cara termudah adalah dengan membuat sebuah variabel yang berfungsi sebagai penanda (bahwa data ditemukan). Jika data tidak ditemukan, maka variabel lIdx akan bernilai 0. Cara lain untuk membuat variabel penanda, bisa dengan menggunakan variabel bertipe Boolean. Saya menggunakan variabel lIdx hanya sebagai contoh, agar dapat saya gunakan untuk menampilkan daftar data yang ditemukan...

    Jadi, gunakan blok kondisional:

    ...
    If lIdx Then
        '+--- Susun di blok ini proses untuk menampilkan datanya.
    End If
    ...

    untuk menampilkan hasil pencarian. Klo perlu, tambahkan pesan jika data tidak ditemukan, misalkan dengan menambahkan perintah seperti berikut:

    ...
    If lIdx Then
        '+--- Susun di blok ini proses untuk menampilkan datanya.
    Else
        MsgBox "Data tidak ditemukan!"
    End If
    ...

    Demikian, selamat mencoba.

  15. ka melanjutkan diskusi ini, saya ada kesulitan mengcopy hasil dari dbase ke sheet lain namun dengan tambahan kata hasil dari vlookup gmn ya? berikut contoh terlampir.
    terimakasih atas bantuannya

  16. Ini mba Reni
    D klik gabung aja d sheet 3
    Saya ujicoba

  17. Mas caton mohon bantuannya
    Knp data ada yang d cari tidak sesuai

  18. Caton

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

    @Meiby ...

    Coba revisi scriptnya menjadi:

    Option Explicit
    
    Public Sub CariData()
        Dim xlWS As Worksheet, xlRangeDBase As Range
        Dim lRow As Long, lIdx As Long
        Dim xlRange As Range    
        Dim sName As String
        
        Set xlRange = Sheet1.Range("C3")
        If Len(xlRange.Value) Then
            lIdx = 0
            On Error Resume Next
            Sheet1.Range("K3:O3").ClearContents
            For Each xlWS In ThisWorkbook.Worksheets
                sName = xlWS.Name
                If sName <> Sheet1.Name Then
                    lRow = CLng(WorksheetFunction.Match(xlRange, xlWS.Range("A2:A26"), 0))
                    If Err = 0 Then
                        lIdx = xlWS.Index
                    Else
                        Err.Clear
                    End If
                End If
            Next
            Err.Clear: On Error GoTo 0
            
            If lIdx Then
                Set xlWS = Worksheets(lIdx)
                Set xlRangeDBase = xlWS.Range(xlWS.Cells(lRow + 1, "A"), xlWS.Cells(lRow + 1, "G"))
                Sheet1.Range("K3:O3") = xlRangeDBase.Value
            End If
        End If
    End Sub

    Demikian.

  19. Mas caton pada sheet1.range("k3:o3") = xlrangedbase.value

    Di bawa nya saya tambahin
    Sheet1.cells(3,"h") = "baris ke " & lrow

    Kenapa klo saya tambahin sname di tidak membaca sheet klo lrow di bs baca

  20. Mas ada batasan untuk jumlah sheet yg akan d cari

  21. Newer ›
 

atau Mendaftar untuk ikut berdiskusi!