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…