Ketika membuat aplikasi VBA sederhana, kita biasanya menggunakan beberapa variabel untuk menyimpan data.
Sebagai contoh:
Dim Nama As String
Dim Alamat As String
Dim Telepon As String
Dim Gaji As Double
Cara tersebut masih cukup mudah jika data yang dikelola hanya satu orang.
Namun, bagaimana jika program harus menyimpan puluhan bahkan ratusan data dengan struktur yang sama?
Menulis banyak variabel terpisah akan membuat kode menjadi lebih sulit dibaca dan dipelihara.
Untuk mengatasi hal tersebut, VBA menyediakan User Defined Type (UDT).
Apa Itu User Defined Type (UDT)?
User Defined Type (UDT) adalah tipe data yang dibuat sendiri oleh programmer untuk menggabungkan beberapa variabel yang saling berkaitan menjadi satu kesatuan.
Sebagai contoh, data seorang karyawan dapat terdiri dari:
-
Nama
-
Jabatan
-
Gaji
-
Tanggal Masuk
Daripada membuat empat variabel terpisah, semuanya dapat dikelompokkan menjadi satu tipe data.
Sintaks Dasar
Sintaks umum UDT adalah:
Type NamaTipe
Anggota1 As TipeData
Anggota2 As TipeData
End Type
Contoh:
Type Karyawan
Nama As String
Jabatan As String
Gaji As Double
End Type
Membuat Variabel dari UDT
Setelah tipe data dibuat, Anda dapat membuat variabel seperti berikut.
Dim Pegawai As Karyawan
Variabel tersebut sekarang memiliki beberapa anggota.
Pegawai.Nama
Pegawai.Jabatan
Pegawai.Gaji
Contoh Dasar
Type Mahasiswa
Nama As String
NIM As String
Nilai As Double
End Type
Sub Contoh()
Dim Mhs As Mahasiswa
Mhs.Nama = "Andi"
Mhs.NIM = "2301001"
Mhs.Nilai = 92
MsgBox Mhs.Nama
End Sub
Output:
Andi
Mengakses Setiap Anggota
Setiap anggota diakses menggunakan tanda titik (.).
Mhs.Nama
Mhs.NIM
Mhs.Nilai
Cara ini sama seperti mengakses properti pada objek VBA.
Menggunakan Array dari UDT
UDT dapat digabungkan dengan array.
Type Produk
Kode As String
Nama As String
Harga As Double
End Type
Kemudian:
Dim Barang(1 To 100) As Produk
Sekarang setiap elemen array memiliki struktur data lengkap.
Contoh:
Barang(1).Kode
Barang(1).Nama
Barang(1).Harga
Pendekatan ini jauh lebih rapi dibanding membuat tiga array terpisah.
Studi Kasus
Misalkan Anda ingin menyimpan data pelanggan.
Type Pelanggan
ID As String
Nama As String
Kota As String
Saldo As Currency
End Type
Menggunakannya:
Sub DataPelanggan()
Dim Cust As Pelanggan
Cust.ID = "PLG001"
Cust.Nama = "Budi"
Cust.Kota = "Surabaya"
Cust.Saldo = 2500000
MsgBox Cust.Nama & vbCrLf & Cust.Kota
End Sub
Semua informasi pelanggan tersimpan dalam satu variabel.
Di Mana UDT Harus Ditulis?
UDT sebaiknya ditulis di bagian atas Module standar, sebelum prosedur pertama.
Contoh:
Option Explicit
Type Produk
Kode As String
Nama As String
End Type
Setelah itu barulah prosedur ditulis.
Sub Contoh()
End Sub
UDT vs Variabel Biasa
| Variabel Biasa | User Defined Type |
|---|---|
| Menyimpan satu nilai | Menyimpan beberapa nilai |
| Cocok untuk data sederhana | Cocok untuk data yang memiliki banyak atribut |
| Sulit dikelola jika jumlah variabel banyak | Lebih rapi dan terstruktur |
UDT vs Class Module
Banyak pemula menganggap UDT sama dengan Class.
Padahal keduanya berbeda.
| UDT | Class |
|---|---|
| Hanya menyimpan data | Menyimpan data dan perilaku (method) |
| Lebih sederhana | Lebih fleksibel |
| Tidak memiliki method | Dapat memiliki property, method, dan event |
Untuk sebagian besar aplikasi sederhana, UDT sudah cukup.
Jika membutuhkan objek yang lebih kompleks, gunakan Class Module.
Keterbatasan UDT
Walaupun sangat berguna, UDT memiliki beberapa keterbatasan.
-
Tidak dapat memiliki method.
-
Tidak dapat memiliki event.
-
Tidak mendukung pewarisan (inheritance).
-
Lebih cocok digunakan sebagai wadah data daripada objek.
Kesalahan yang Sering Terjadi
Mendeklarasikan UDT di Dalam Procedure
Kurang tepat.
Sub Contoh()
Type Data
End Type
End Sub
UDT harus dideklarasikan di tingkat module.
Menganggap UDT Sama dengan Class
UDT hanya berfungsi sebagai kumpulan data.
Jika membutuhkan perilaku tambahan seperti method dan property, gunakan Class Module.
Membuat Banyak Variabel Terpisah
Kurang efisien.
Dim Nama As String
Dim Kota As String
Dim Gaji As Double
Lebih rapi.
Dim Pegawai As Karyawan
Tips Praktis
💡 Gunakan UDT jika beberapa variabel selalu digunakan bersama.
💡 Berikan nama tipe data yang jelas, misalnya Pelanggan, Produk, atau Karyawan.
💡 Kombinasikan UDT dengan array untuk mengelola banyak data yang memiliki struktur sama.
💡 Simpan deklarasi UDT di bagian atas module agar mudah ditemukan.
💡 Jika aplikasi mulai membutuhkan method dan property, pertimbangkan menggunakan Class Module.
Ringkasan
| Konsep | Fungsi |
|---|---|
Type |
Membuat tipe data sendiri |
| Anggota | Variabel yang berada di dalam UDT |
| Variabel UDT | Variabel yang menggunakan tipe data buatan |
| Array UDT | Menyimpan banyak data dengan struktur yang sama |
Kesimpulan
User Defined Type (UDT) memungkinkan Anda menggabungkan beberapa variabel yang saling berkaitan ke dalam satu tipe data sehingga kode menjadi lebih rapi, mudah dibaca, dan lebih mudah dipelihara. UDT sangat cocok digunakan untuk menyimpan data dengan struktur yang sama, seperti data pelanggan, produk, atau karyawan. Meskipun lebih sederhana dibandingkan Class Module, UDT sudah mampu memenuhi banyak kebutuhan dalam pengembangan aplikasi VBA Excel.
Yuk, Latihan!
Latihan 1
Buat UDT bernama Buku yang memiliki anggota Judul, Penulis, dan Harga, kemudian tampilkan isi datanya menggunakan MsgBox.
Latihan 2
Buat array yang terdiri dari 50 data bertipe Produk, kemudian isi data produk pertama dan tampilkan seluruh informasinya.
Latihan 3
Buat UDT bernama Pegawai yang memiliki anggota Nama, Departemen, Gaji, dan TanggalMasuk, lalu gunakan UDT tersebut untuk menyimpan data dua pegawai yang berbeda.
