Kelola Banyak Data Sekaligus dengan User Defined Type (UDT) di VBA Excel

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 BiasaUser 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.

UDTClass
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

KonsepFungsi
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.

Hubungi Kami

Kantor Berkreasi
Alamat :
Pens Sky Venture - Sukolilo Surabaya
Karangrejo Tmur 17 Surabaya

Email : kantor.berkreasi@gmail.com
WA : wa.me/6287761589881  
(Support  Mbak Ana)

Tim Pengembang

Dr. Rojabi Azharghany, M.Si, S.Sos
Dr. H. Agus Sulthoni Imami, S.Psi. M.Pd.I.
Ali Ishaq, M.Pd.
Didik Rahwiniyanto, S.Si., M.Pd.
Mujiburrohman, M.Pd.
Mohammad Zikky, S.ST, M.T
Amien sawedi, S.Pd.
Didik P Wicaksono, M.Pd.