Mencegah duplicate data & menampilkan data listbox

  1. 5 minggu lalu

    Halo, saya sedang mencoba membuat applikasi payroll dengan vba
    Saya mau bertanya bagaimana cara mencegah duplicate data di vba, saat memasukan Id pegawai
    dan memunculkan data yang sudah di input pada listbox di menu utama?
    saya coba ikuti petunjuk yang ada di youtube gak bisa2

    Terima kasih

  2. Caton

    Nov 2 Terverifikasi Indonesia + 17.741 Poin

    @alb_ab ...

    ... bagaimana cara mencegah duplicate data di vba, saat memasukan Id pegawai ...

    Ada beberapa cara yang bisa dilakukan,

    — menggunakan pengulangan,
    — menggunakan Dictionary object,
    — menggunakan fungsi Find atau fungsi Match...

    Intinya, lakukan pencarian/pengujian pada nilai yang diinput di TextBox terhadap data pada range di kolom A. Contoh dengan pengulangan, pada prosedur Private Sub CommandButton1_Click() sisipkan baris berikut:

    Private Sub CommandButton1_Click()
    'On Error Resume Next
    Dim baris As Long
    Dim DPeGawai As Object
    Set DPeGawai = Sheet1.Range("A5000").End(xlUp)
    
    If Me.KODE.Value = "" _
    Or Me.NAMA.Value = "" _
    Or Me.NAMABAGIAN.Value = "" _
    Or Me.GAJIPOKOK.Value = "" _
    Or Me.HARI.Value = "" _
    Or Me.BULAN.Value = "" _
     Then
    Call MsgBox("Harap isi data pegawai dengan lengkap", vbInformation, "Data Pegawai")
    Else
    
    '+-- Sisipkan baris pengulangan berikut untuk memeriksa kode pegawai!
    For baris = 1 To DPeGawai.Row
        If Sheet1.Cells(baris, "A").Value2 = KODE.Value Then
            MsgBox "Kode Pegawai sudah ada!", vbExclamation Or vbOKOnly
            Exit Sub
        End If
    Next
        
    DPeGawai.Offset(1, 0).Value = Me.KODE.Value
    ...
    End Sub

    ... memunculkan data yang sudah di input pada listbox di menu utama ...

    Pada form MENU, tambahkan prosedur berikut:

    Private Sub ShowData()
        Dim xlCell As Range
        
        Set xlCell = Sheet1.Range("A5000").End(xlUp)
        
        If xlCell.Row > 1 Then
            TABELDATA.ColumnCount = Sheet1.Range("A2:AD" & xlCell.Row).Columns.Count
            TABELDATA.RowSource = Sheet1.Range("A2:AD" & xlCell.Row).Address
        End If
    End Sub

    Lalu pada prosedur Private Sub UserForm_Initialize() dan prosedur Private Sub ADD_Click() tambahkan baris perintah:

    Call ShowData

    seperti berikut:

    Private Sub UserForm_Initialize()
        Me.TANGGAL.Caption = Now
        Call ShowData
    End Sub

    dan berikut ini:

    Private Sub ADD_Click()
        DATAPEGAWAI.Show
        Call ShowData
    End Sub

    Demikian.

 

atau Mendaftar untuk ikut berdiskusi!