Pada tutorial kali ini, bagaimana gambaran CRUD (Create, Read, Update dan Delete) didalam VBA menggunakan Userform dengan Database dalam Excel berbentuk Range.
Worksheet berbentuk range adalah yang paling umum dan merupakan tutorial yang banyak digunakan dalam dunia VBA, jika dibandingkan dengan data worksheet berbentuk Table.
Sebelum memulai aplikasi ada beberapa tahapan yang harus dibuat sebelum langsung terjun ke coding.
Beberapa langkah telah saya sederhanakan agar lebih mudah dipahami.
seperti contohnya saya tidak memasukan proses pembuatan DFD (Data Flow Diagram) atau melakukan proses Normalisasi Database.
Disini saya buat point point utama saja tetapi masih tetap dalam jalur proses pembuatan yang benar.
Membuat database adalah langkah awal dalam membuat sebuah aplikasi.
Buatlah sebuah table sederhana yang nantinya digunakan untuk menyimpan data.
pada materi kali ini, saya hanya membuaty 5 isian saja seperti yang terlihat dibawah ini
Setelah database berhasil dibuat, kini saatnya untuk melajutkan ke pembuatan Userform.
Buatlah userform sesuai dengan isian yang dibutuhkan dalam Database.
Misalnya seperti menambahkan isian untuk Id Barang, Nama Barang , Jenis Barang dan juga Harga, dan juga ditambahkan beberapa Button yang dibutuhkan.
Untuk Nomor tidak perlu dimasukan kedalam Userform dimana Nomor ini akan kita isi oleh sistem secara otomatis.
Untuk lebih detailnya bisa di lihat pada gambar diatas, silahkan buat masing masing control dengan Name
harus dibuat sama, agar proses coding tidak perlu disesuikan lagi.
Untuk membuat coding, tahap pertama yang dibuat adalah sebuah fungsi yang nantinya akan banyak digunakan oleh Userform.
Berdasarkan pengalaman, fungsi menghitung baris akan banyak dibutuhkan oleh berbagai fungsi CRUD ini.
Oleh Kerana itu fungsi menghitung baris ini dibuat menjadi fugsi tersendiri dan dibuat didalam standard module agar bisa diakses secara Global.
Simpan script ini di Standard module
Const MyApp As String = "Data Input" Function GetBaris() As Long GetBaris = Sheet1.Range("A" & Sheet1.Rows.Count).End(xlUp).Row End Function
Setelah itu proses coding dilanjut dengan membuat fungsi untuk membuat ID Barang otomatis, Mengurustkan Nomor otomatis dan juga beberapa fungsi lain yang nantikan akan dibutuhkan.
Fungsi ini bisa disimpan didalam Module Userform (Object Module)
Fungsi untuk membuat ID otomatis
Private Function BuatID() As String Dim Baris As Long Dim IDLama As String Baris = GetBaris If Not Baris = 1 Then IDLama = Sheet1.Range("B" & Baris) Baris = CLng(Right(IDLama, 5)) + 1 End If BuatID = "ID" & Format(Baris, "00000") End Function
Subrutine untuk membuat Nomor Urut Otomatis
Private Sub Urut() Dim i As Long For i = 2 To GetBaris Sheet1.Range("A" & i).Value = i - 1 Next i End Sub
Selanjutnya, buat juga Subrutine untuk membersihkan User Form. Subrutine ini juga harus dibuat terpisah karena pada beberapa fungsi CRUD subrutine ini akan selalu digunakan
Private Sub BersihForm() TBIDBarang.Text = vbNullString TBNamaBarang.Text = vbNullString CBJenisBarang.Text = vbNullString TBHargaBarang.Text = vbNullString End Sub
Selanjutnya tambahkan juga script pada Events Initialize, dimana Subrutine ini akan dijalankan ketika Userform dijalankan.
ada beberapa script yang harus ditambahkan ketika Userform dijalankan, diantaraya yaitu
Sehingga Script pada Events Initialize bisa diisi seperti berikut ini
Private Sub UserForm_Initialize() CBJenisBarang.RowSource = Sheet1.Range("L1:L2").Address Call BersihForm TBIDBarang.Text = BuatID End Sub
Jika digabungkan, maka script pada Userform Module akan menjadi seperti dibawah ini.
Private Function BuatID() As String Dim Baris As Long Dim IDLama As String Baris = GetBaris If Not Baris = 1 Then IDLama = Sheet1.Range("B" & Baris) Baris = CLng(Right(IDLama, 5)) + 1 End If BuatID = "ID" & Format(Baris, "00000") End Function Private Sub Urut() Dim i As Long For i = 2 To GetBaris Sheet1.Range("A" & i).Value = i - 1 Next i End Sub Private Sub BersihForm() TBIDBarang.Text = vbNullString TBNamaBarang.Text = vbNullString CBJenisBarang.Text = vbNullString TBHargaBarang.Text = vbNullString End Sub Private Sub UserForm_Initialize() CBJenisBarang.RowSource = Sheet1.Range("L1:L2").Address Call BersihForm TBIDBarang.Text = BuatID End Sub Private Sub BTBatal_Click() Call BersihForm TBIDBarang.Text = BuatID End Sub ' Module Hapus (Delete) '---------------------------------------------------------------- Private Sub BTHapus_Click() Dim DBarea As Range Dim HC As Range If TBIDBarang.Text = "" Then MsgBox "Silahkan isi ID Barang!", vbInformation, MyApp Exit Sub End If Set DBarea = Sheet1.Range("B2:B" & GetBaris) Set HC = DBarea.Find(TBIDBarang.Value, , xlValues, xlWhole) If HC Is Nothing Then MsgBox "Data ID Barang tidak ditemukan!", vbInformation, MyApp Else HC.EntireRow.Delete MsgBox "Data berhasil Disimpan!" End If TBIDBarang.Text = BuatID Call Urut End Sub Private Sub BTKeluar_Click() Unload Me End Sub ' Module Load data (Read) '---------------------------------------------------------------- Private Sub BTLoad_Click() Dim DBarea As Range Dim HC As Range If TBIDBarang.Text = "" Then MsgBox "Silahkan Isi ID Barang", vbCritical, MyApp Exit Sub End If Set DBarea = Sheet1.Range("B2:B" & GetBaris) Set HC = DBarea.Find(TBIDBarang, , xlValues, xlWhole) If HC Is Nothing Then MsgBox "ID barang Tidak ditemukan", vbInformation, MyApp BersihForm TBIDBarang.Text = BuatID Else TBIDBarang.Text = HC.Value TBNamaBarang.Text = HC.Offset(0, 1).Value CBJenisBarang.Text = HC.Offset(0, 2).Value TBHargaBarang.Text = HC.Offset(0, 3).Value End If End Sub ' Module Simpan (Create) '---------------------------------------------------------------- Private Sub BTSimpan_Click() Dim Baris As Long Dim IsiData As Variant Dim DBarea As Range, HC As Range Set DBarea = Sheet1.Range("B2:B" & GetBaris) Set HC = DBarea.Find(TBIDBarang, , xlValues, xlWhole) If HC Is Nothing Then Baris = GetBaris + 1 Else Baris = HC.Row End If IsiData = Array(Baris - 1, TBIDBarang.Value, TBNamaBarang.Value _ , CBJenisBarang.Value, TBHargaBarang.Value) Sheet1.Range("A" & Baris).Resize(1, 5).Value = IsiData MsgBox "Data berhasil diSimpan!", vbInformation, MyApp Call BersihForm TBIDBarang.Text = BuatID End Sub
Setelah coding semua berhasil dibuat, silahkan dicoba
Download File
Sangat bermanfaat sekali untuk saya🙏
alhamdulillah sangat terbantu memahami CRUD
Mas saya saat simpan kenapa untuk hasil keluar contoh Nomor Pokok Mahasiswa ko Jadi False ya saat simpan
Sangat membantu dalam belajar CRUD…