BelajarVBA 004 - Tipe data, Variabel, Konstanta


Coretan Mr. Kid


Selesai satu urusan, kerjakan urusan lainnya dengan sungguh-sungguh

Bahasan kali ini adalah tentang tipe data (datatype), variabel, dan konstanta. Pemrograman tidak akan bisa lepas dari penggunaan variabel ataupun konstanta. Sulit sekali menggunakan variabel ataupun konstanta secara efisien jika tidak mengenal datatype.

Bahasan kali ini tampaknya akan lebih mudah dipahami jika mencoba langsung dikomputer. File yang bisa dijadikan media uji coba bisa dibuat sendiri atau mengunduh file BelajarVBA003.xlsm yang ada disini.

Datatype

Apa yang dapat dapat dimengerti oleh manusia tentang nilai-nilai seperti '123,000,000.25' atau '99%' atau 'Sabtu, 22 Juni 2013' atau 'A' ? Yang paling sederhana, manusia akan mengatakan bahwa 123,000,000.25 adalah angka yang memiliki 2 digit dibelakang koma. Nilai 99% akan dikatakan sebagai angka persentase sesuatu. Sedangkan 'Sabtu, 22 Juni 2013' adalah suatu tanggal tertentu. Untuk nilai 'A', manusia bisa mengatakan bahwa itu adalah sebuah huruf yang bisa menjadi kata atau bahkan kalimat ketika bersama huruf-huruf lain.

Di alam bawah sadarnya, manusia sebenarnya sedang mengelompokkan nilai-nilai yang dilihatnya seperti nilai-nilai di atas tadi. Dari pengelompokan itu, manusia bisa mengetahui apa yang bisa dan apa yang tidak bisa dilakukan antar nilai tersebut. Misal, manusia segera tahu bahwa nilai 'Sabtu, 22 Juni 2013' tidak bisa dikalikan dengan nilai '99%'. Bahkan manusia bisa mengetahui juga bahwa tidak akan ada nilai '34 Juni 2013', karena Juni 2013 hanya sampai '30 Juni 2013' sedangkan 4 angka setelah 30 dari '34 Juni 2013' harus ditulis sebagai '4 Juli 2013'. Jika manusia kemudian diberi nilai '35.72%' pun akan segera tahu bahwa nilai tersebut seperti nilai '99%', yaitu sebagai angka persentase sesuatu.

Komputer tidak memiliki kemampuan seperti yang terjadi dialam bawah sadar manusia tersebut. Untuk itulah dibentuk datatype. Jadi, secara garis besar, datatype adalah sebuah karakteristik dari suatu nilai data yang memberikan informasi bagi komputer agar bisa mengetahui :
  • cara menggunakan nilai data tersebut
  • batasan-batasan penyusunan pengelompokan nilai data
  • cara menyimpannya dalam memori komputer
Daftar datatype di dalam VBA tersebar banyak di-internet, dan salah satunya bisa dilihat disini atau didalam file BelajarVBA003.xlsm. Pengelompokan datatype tersebut adalah seperti gambar berikut :


Gambar di atas bisa digunakan untuk membantu menentukan datatype suatu nilai data. Jika data berisi :
  • TRUE atau FALSE -> gunakan Boolean
  • Angka selalu pasti bilangan bulat -> gunakan :
  1. Byte bila antara 0 sampai 255
  2. Integer bila antara -32,768 sampai 32,767 atau maksimal 4 digit
  3. Long bila antara -2,147,483,648 sampai 2,147,483,647 atau maksimal 9 digit
  • Angka memiliki jumlah digit yang harus dijaga tepat apa adanya dan bisa berupa pecahan -> gunakan :
  1. Currency bila berupa nilai uang dengan ketepatan 4 digit dibelakang koma atau maksimal 14 digit
  2. Variant bila nilai tidak boleh berubah (apa adanya) yang bisa mencapai 28 digit agar bisa diisi nilai bertipe Decimal (tipe data diwarna merah)
  • Angka tidak harus dijaga ketepatan jumlah digitnya dan bisa berupa pecahan -> gunakan Single atau Double karena keduanya memiliki rentang yang sangat luas
  • Tanggal saja atau waktu saja atau tanggal disertai waktu -> gunakan Date
  • Teks atau setidaknya ada 1 karkater yang bukan angka -> kondisi :
  1. bila jumlah karakter tidak tetap maka gunakan String dengan deklarasi biasa
  2. bila jumlah karakter harus dijaga tetap N karakter maka gunakan String dengan deklarasi String * Jumlah_karakter
  • Object (benda) -> kondisi :
  1. bila tahu nama objectnya, gunakan nama objectnya (misal range, worksheet, pivottable, dsb)
  2. bila tidak tahu nama objectnya, gunakan kata Object
  • Elemen array untuk kegiatan perulangan (loop) -> gunakan Variant karena bisa berubah menjadi datatype sesuai datatype si elemen array
  • Tidak pasti datatype-nya (hal ini harus dihindari) -> gunakan Variant karena bisa berubah menjadi datatype sesuai dengan nilai datanya.
Hal-hal yang perlu diperhatikan :
  1. Jika nilai data yang akan disimpan melebihi batas datatype yang ditentukan atau malah berbeda datatype-nya, maka akan menghasilkan error
  2. Penulisan number dalam VBA selalu menggunakan format English atau menggunakan karakter titik ( . ) sebagai tanda desimal
  3. Penulisan date dalam VBA sebaiknya menggunakan format universal YYYY-MM-DD HH:mm:ss meskipun VBA kadang kala mengubah formatnya menjadi yang digunakannya
  4. VB/VBA akan berusaha mengkonversi datatype inputan menjadi sesuai dengan yang dideklarasikan
  5. Untuk dapat menggunakan datatype Decimal, maka variabel atau prosedur jenis function harus menggunakan datatype Variant yang diisi dengan menggunakan fungsi CDec.

Variabel

Variabel adalah nama lokasi penyimpanan data tertentu, yang memiliki datatype tertentu, di dalam memori komputer dengan kemampuan read (baca atau ambil nilainya) dan write (tulis atau ubah nilai yang tersimpan). Cara mendeklarasikan variabel adalah :
     scope nama_variabel AS datatype
contoh :
     Public sNamaCust As String
     Public lQtyJual As Long, lQtyStock As Long
     Private dtTglTransaksi As Date

Pemberian prefix yang mencerminkan datatype yang digunakan, seperti s atau str untuk datatype String, i atau int untuk datatype Integer, dan sebagainya adalah salah satu kaidah yang disepakati kebanyakan pemrogram. Secara umum, nama variabel diawali dengan huruf dan bersifat unique.

Mengisi nilai ke dalam variabel (mengubah nilai) dilakukan dengan meletakkan variabel secara mandiri disisi kiri tanda sama dengan dalam sebuah baris kode program. Kaidah ini juga berlaku untuk pengubahan sebuah nilai properti dari suatu object. Syntax pengisian nilai ke dalam variabel adalah :
  • Selain variabel ber-datatype object
     nama_variabel_penyimpan = ekspresi_nilai_yang_akan_disimpan
  • Khusus variabel ber-datatype object
     Set nama_variabel_object = ekspresi_object_yang_akan_disimpan
Ekspresi nilai yang akan disimpan bisa berupa sebuah nilai tetap, nilai dari suatu variabel atau properti, proses komputasi, nilai balik dari suatu fungsi. Pengisian variabel ber-datatype object harus didahului dengan keyword Set.

Contoh mengisi variabel dengan suatu nilai tetap : (fokus pada biru)
Public Sub VariabelDiisiNilaiTetap()
    Dim bStatus As Boolean
    Dim btGrup As Byte, iItem As Integer, lRow As Long
    Dim curJual As Currency, decDesimal As Variant
    Dim sngSingle As Single, dblDouble As Double
    Dim dtTgl As Date, dtJam As Date, dtTglJam As Date
    Dim sNama As String, sID As String, sInfo As String
    Dim sSelalu7Char As String * 7
    Dim rngData As Range


    'isi variabel dengan nilai tetap
    bStatus = True
    btGrup = 13
    iItem = 4700
    lRow = 89000

    curJual = 120000.2571535
   
    'fungsi CDec digunakan untuk membuat datatype Variant menjadi Decimal
    decDesimal = CDec("12345678901234567.12345678901")       

    'sekedar pesan
    MsgBox "Datatype CURRENCY" & vbCrLf & "curJual diisi 120000.2571535" & vbCrLf & _
       "secara real berisi nilai " & curJual &
vbCrLf & vbCrLf & "Datatype DECIMAL" & vbCrLf & _
       "decDesimal diisi nilai 12345678901234567.12345678901" &
vbCrLf & "secara real berisi nilai " & _
       decDesimal &
vbCrLf & "decDesimal dideklarasikan ber-datatype : Variant" & vbCrLf & _
       "decDesimal berubah menjadi ber-datatype : " &
TypeName(decDesimal)

    sngSingle = 5765.123456782
    dblDouble = 5765.123456782


    'sekedar pesan
    MsgBox "Datatype SINGLE" & vbCrLf &
"sngSingle diisi nilai 5765.123456782" & vbCrLf & _
      
"secara real berisi nilai " & sngSingle & vbCrLf & vbCrLf & "jika sngSingle ditambah 0.0006" & _
       vbCrLf & "akan menjadi " & sngSingle + 0.0006 & vbCrLf & vbCrLf & "Datatype DOUBLE" & vbCrLf & _
       "dblDouble diisi nilai 5765.123456782" & vbCrLf &
"secara real berisi nilai " & dblDouble & _
       vbCrLf & vbCrLf & "jika dblDouble ditambah 0.0006" & vbCrLf & "akan menjadi " & dblDouble + 0.0006
   
    dtTgl = #6/22/2013#                 'dari tulisan #2013-06-22#
    dtJam = #5:30:00 PM#                '
dari tulisan #17:30#
    dtTglJam = #6/22/2013 5:30:00 PM#   '
dari tulisan #2013-06-22 17:30#

    'input string selalu diapit petik dua
    sNama = "Kid"
    sID = "9877-234-7733-12-25412-1"
  'ada 24 karakter, 19 angka dan 5 dash
   
    'menulis "Jamrud" dalam data string
    'setiap karakter petik dua harus ditulis dua kali ( "" )

    sInfo = "Indonesia ""Jamrud"" Khatulistiwa"

    'sekedar pesan
    MsgBox "Datatype STRING" & vbCrLf &
"jenis : Variable Length" & vbCrLf & "sNama berisi teks berbunyi '" & sNama & _
        "'" & vbCrLf &
"sID berisi teks berbunyi '" & sID & "'" & vbCrLf & "sInfo berisi teks berbunyi '" & sInfo & "'"

    'fixed length 7 char hanya diisi 3 char,
    'maka 4 char sisanya diisi spasi dengan nomor ASCII 32

    sSelalu7Char = "123"

    'sekedar pesan
    MsgBox "Datatype STRING" & vbCrLf &
"jenis : Fixed Length" & vbCrLf & "deklarasi :" & vbCrLf & vbTab & _
       "Dim sSelalu7Char As String * 7" & vbCrLf &
"arti : selalu berisi 7 karakter" & vbCrLf & _
       "sSelalu7Char diisi teks berbunyi '123' (3 karakter)" &
vbCrLf & "secara real akan berisi teks berbunyi '" & _
       sSelalu7Char & "'" & vbCrLf & "dengan jumlah karakter adalah " & Len(sSelalu7Char) & " karakter"
           
    'mengisi ber-datatype object selalu butuh keyword Set
    Set rngData = Range("a1:c2,a5:a7,d1:f1,a1")
End Sub

Beberapa hal yang perlu diperhatikan dalam contoh-contoh di atas adalah :
  • Penulisan suatu nilai tetap berupa number tidak perlu menyertakan pemisah ribuan
  • Penulisan suatu nilai tetap untuk yang ber-datatype Date harus diapit karakter ( # )
  • Penulisan suatu nilai tetap untuk yang ber-datatype String harus diapit karakter petik dua ( " )
  • Penulisan setiap karakter petik dua di dalam nilai tetap teks harus ditulis sebanyak 2 (dua) kali ( "" )
Membaca nilai yang ada di dalam variabel (mengambil nilai) dilakukan dengan menyebutkan nama variabel tersebut. Kaidah ini juga berlaku pada pengambilan sebuah nilai properti dari suatu object.

Contoh mengisi variabel dengan suatu nilai dari variabel atau properti lain :
(fokus pada biru)
Public Sub VariabelDiisiDariVariabelLain()
    Dim lSumber As Long, lTarget As Long
    Dim sAwal As String, sAkhir As String
    Dim rngData As Range, rngOutput As Range

   
    'isi nilai tetap
    lSumber = 10
    sAwal = "Kid"
    Set rngData = Range("b2")

   
    'isi nilai dari variabel lSumber dan sAwal yang juga
    'sebagai contoh membaca nilai dari variabel lain,
    'yaitu dari lSumber, sAwak, dan rngData

    lTarget = lSumber              'lTarget akan bernilai 10
    sAkhir = sAwal                 'sAkhir akan bernilai Kid
    Set rngOutput = rngData        'rngOutput akan berisi Range("b2")
   
    '-------------------------------------
    'isi nilai dari suatu proses komputasi
    '-------------------------------------
    'lTarget akan berisi 15, yaitu lSumber + 5 = 10 + 5 = 15

    lTarget = lSumber + 5
   
    'sAkhir akan berisi Kid Belajar VBA, yaitu
    'sAwal disambung dengan teks berbunyi ' Belajar VBA'

    sAkhir = sAwal & " Belajar VBA"       
   
    '--------------------------------------------------------------
    'isi nilai dari dirinya yang lama yang dikenai proses komputasi
    'untuk menghasilkan nilai dirinya yang baru
    '--------------------------------------------------------------
    'lTarget bernilai 25, yaitu 

    'lTarget yang lama (bernilai 15 hasil lSumber + 5)
    'ditambah dengan nilai 

    'lSumber (bernilai 10 dari baris lSumber = 10)
    lTarget = lTarget + lSumber
   
    'sAkhir bernilai teks yang berbunyi 'KidKid Belajar VBA',
    'yaitu 'Kid' (dari sAwal = "Kid") 

    'diimbuhi teks dari sAkhir yang lama
    'yang bernilai teks berbunyi 'Kid Belajar VBA' 

    '(baris sAkhir = sAwal & " Belajar VBA")
    sAkhir = sAwal & sAkhir
End Sub


Variant

Hal-hal yang perlu diketahui tentang datatype Variant antara lain :
  • Datatype Variant adalah datatype default dalam VB/VBA.
  • Setiap deklarasi variabel atau prosedur Function yang tidak menegaskan datatype-nya akan menjadi ber-datatype Variant.
  • Datatype Variant membutuhkan ruang memori yang luas (minimal 16 byte).
  • Datatype Variant akan selalu mengikuti datatype yang sesuai dengan nilai yang disimpannya.
  • Proses yang didalamnya memanfaatkan datatype Variant relatif lebih lambat dibanding yang memanfaatkan datatype yang sesuai yang selain Variant.
VB/VBA menyediakan beberapa karakter literal yang diletakkan dibelakang suatu nilai tetap sebagai penunjuk beberapa datatype dari nilai tetap tersebut. Karakter-karakter tersebut adalah :
  • & untuk datatype Long
  • @ untuk datatype Currency
  • ! untuk datatype Single
  • # untuk datatype Double
Contoh penggunaan literal di atas : (fokus pada biru)
Public Sub LiteralVariabelVariant()
    Dim vLong As Variant, vCur As Variant
    Dim vSingle As Variant, vDouble As Variant

    

    'menggunakan literal datatype
    vLong = 5762&
    vCur = 5762@
    vSingle = 5762!
    vDouble = 5762#


    'sekedar pesan

    MsgBox "Datatype VARIANT" & vbCrLf & "vLong dari Variant menjadi " & TypeName(vLong) & vbCrLf & _
      "vCur dari Variant menjadi " & TypeName(vCur) & vbCrLf &
"vSingle dari Variant menjadi " & _
      TypeName(vSingle) & vbCrLf &
"vDouble dari Variant menjadi " & TypeName(vDouble)
 End Sub
Pada umumnya, penentuan datatype pada variabel ber-datatype variant adalah dengan menggunakan fungsi-fungsi konversi datatype seperti CBool, CByte, CInt, CLng, CCur, CDec, CSng, CDbl, CDate, CStr, CVar, CVErr, dan CType. Fungsi-fungsi ini bisa digunakan untuk nilai tetap maupun untuk nilai dari suatu ekspresi lainnya. Contohnya seperti penggunaan CDec untuk membentuk datatype Decimal.

Variabel dengan datatype variant akan memiliki isi Empty ketika pertama kali terbentuk. Jika kemudian datatype-nya telah berubah, maka nilai kosongnya adalah 0 untuk perubahan ke datatype jenis numerik dan berupa nilai NULLSTRING ( "" ) untik perubahan ke datatype jenis text. Variabel ber-datatype variant bisa menyimpan nilai NULL (tidak terdefinisi) ketika digunakan sebagai wadah untuk menampung data dari database yang bisa berupa NULL. Selain itu, variabel ber-datatype variant juga bisa menerima datatype khusus bernama error hasil fungsi CVErr. Konstanta CVErr untuk menghasilkan Excel error value adalah :
  • xlErrNull  -> #NULL!
  • xlErrDiv0  -> #DIV/0!
  • xlErrValue -> #VALUE!
  • xlErrRef   -> #REF!
  • xlErrName  -> #NAME?
  • xlErrNum   -> #NUM!
  • xlErrNA    -> #N/A
Contoh pemakaian (letakkan dalam sebuah prosedur) : (fokus pada biru)
     'error value xlErrValue (setara 2015)
     'akan menghasilkan nilai Error 2015 (description)
     'berupa #VALUE! bila ditampilkan di sebuah cell

     Dim vXLErr As Variant
     vXLErr = CVErr(xlErrValue)


Kesalahan dalam deklarasi variabel

Satu baris deklarasi variabel bisa digunakan untuk mendeklarasikan banyak variabel. Misal ingin mendeklarasikan 2 buah variabel, katakanlah iNilai1 dan iNilai2, yang ber-datatype Integer. Kesalahan deklarasi yang sering terjadi adalah :
     Dim iNilai1, iNilai2 As Integer
karena sebenarnya variabel Nilai1 akan memiliki datatype Variant dan variabel Nilai2 memiliki datatype Integer. Jadi hanya variabel Nilai2 yang sesuai keinginan. Jalankan prosedur berikut ini untuk membuktikannya : (fokus pada biru)
  Public Sub KesalahanDeklarasi()
    Dim iNilai1, iNilai2 As Integer
   
    iNilai1 = 123.45678
    iNilai2 = 123.45678

   
     MsgBox "Deklarasi variabel :" & vbCrLf & vbTab &
"Dim iNilai1, iNilai2 As Integer" & vbCrLf & vbCrLf & _
      "iNilai1 dan iNilai2 diisi nilai yang sama," &
" yaitu 123.45678" & vbCrLf & vbCrLf & "iNilai1 ber-datatype " & _

      TypeName(iNilai1) & " dengan nilai " & iNilai1 & vbCrLf & "iNilai2 ber-datatype " & TypeName(iNilai2) & _
      " dengan nilai " & iNilai2
  End Sub


Static

Keyword Static adalah sebuah statement yang dikhususkan untuk variabel dengan scope level Procedure. Tujuannya untuk memperpanjang usia pakai variabel. Seperti dibahas dalam kisah tentang keyword Dim, usia pakai variabel dengan scope level Procedure akan dibuang dari memori komputer ketika prosedur tersebut telah selesai diproses. Penggunaan keyword Static untuk menggantikan keyword Dim akan mencegah variabel tersebut dibuang dari memori ketika prosedur tempat tinggalnya selesai diproses. Hal ini bisa berguna untuk proses yang membutuhkan nilai dari proses terakhir, seperti membuat counter. Jalankan prosedur berikut ini lebih dari satu kali : (fokus pada biru)
Public Sub PakaiVariabelStatic()
    Dim lUmurPendek As Long
    Static lPanjangUmur As Long
   
    lUmurPendek = lUmurPendek + 5
    lPanjangUmur = lPanjangUmur + 5

   
      MsgBox "Nilai lUmurPendek sekarang " & lUmurPendek & vbCrLf &
"Nilai lPanjangUmur sekarang " & lPanjangUmur
 End Sub

Jika seluruh variabel dalam sebuah prosedur akan dibuat static seluruhnya, maka keyword Static diletakkan pada baris deklarasi prosedur. Seluruh variabel dideklarasikan dengan keyword Dim. Jalankan prosedur berikut ini berulang kali : (fokus pada biru)
Public Static Sub SemuaVariableStatic()
    Dim lUmur As Long, lNilai As Long
   
    lUmur = lUmur + 5
    lNilai = lNilai + 5


      MsgBox "Nilai lUmur sekarang adalah " & lUmur & vbCrLf &
"Nilai lNilai sekarang adalah " & lNilai
 End Sub

Cara me-reset variabel-variabel static adalah dengan menu Run pilih Reset dari VBE. Jika melalui kode program, maka dibutuhkan variabel dengan scope level Module yang bertugas sebagai status penghapusan. Kemudian sebuah prosedur bertugas untuk mengubah nilai variabel status penghapusan tersebut, yang disertai dengan menjalankan prosedur yang berisi variabel static yang akan di-reset. Variabel static harus dibuat bekerja dalam suatu kondisi tergantung nilai yang disimpan oleh variabel status penghapusan. Contohnya sebagai berikut :
  • Buat variabel ber-scope level module (tulis di bawah Option Explicit) :
     Private bHapusStatic As Boolean
  • Buat prosedur yang berisi proses yang membutuhkan variabel static :
     Public Sub ProsedurBerStaticVariabel()
         Static lVarStatic As Long         'deklarasi variabel static
   
         'cek status penghapus
         If bHapusStatic Then              'jika HapusStatic adalah TRUE
             lVarStatic = 0                   'reset variabel static
         Else                              'jika FALSE
             lVarStatic = lVarStatic + 5      'kerja seperti biasa
         End If                            'selesai cek status penghapus
   
              'tampilkan (anggap saja output)
              MsgBox "Nilai lVarStatic sekarang " & lVarStatic

     End Sub

  • Buat prosedur penghapus variabel static yang ada di dalam prosedur bernama ProsedurBerStaticVariabel :
     Public Sub PenghapusStatic()
         'set status hapus dengan TRUE untuk hapus static
         bHapusStatic = True
   
         'jalankan prosedur yang memiliki variabel static yang akan dihapus
         'untuk melakukan reset nilai variabel static

         ProsedurBerStaticVariabel
   
         'kembalikan status hapus ke FALSE (tidak perlu hapus static lagi)
         bHapusStatic = False
     End Sub

  • Jalankan prosedur ProsedurBerStaticVariabel berkali-kali, kemudian jalankan prosedur PenghapusStatic.
Kunci dari rangkaian variabel scope module dan kedua prosedur di atas adalah dibagian pengkondisian dengan IF di dalam prosedur ProsedurBerStaticVariabel. Bagian ini yang menjadi pengatur alur proses. Prosedur PenghapusStatic adalah saklar pemicu (trigger) untuk dilakukannya proses reset nilai dalam variabel static. Ketika keadaan normal, yaitu saat nilai dalam bHapusStatic adalah FALSE atau prosedur ProsedurBerStaticVariabel dijalankan bukan dari prosedur PenghapusStatic, maka proses akan mengalir ke daerah ELSE. Saat prosedur PenghapusStatic dijalankan, maka nilai bHapusStatic akan menjadi TRUE dan ProsedurBerStaticVariabel yang dijalankan melalui prosedur PenghapusStatic akan mengalir ke bagian IF dengan kondisi TRUE, yaitu ke baris kode program yang berbunyi lVarStatic = 0.

Konstanta

Konstanta dibentuk dengan keyword Const dengan scope level minimal adalah scope level Module. Konstanta bersifat read only ketika sedang digunakan. Nilai dalam konstanta ditetapkan saat deklarasi konstanta. Deklarasi konstanta diletakkan pada area General Declaration.

Syntax deklarasi-nya adalah :
     scope CONST nama_konstanta AS datatype = nilai_konstanta
Contoh deklarasi konstanta :
     Public Const sUser As String = "Kid"
     Private Const curPersen As Currency = 0.15
     Private Const lBlokData As Long = 3

Sifat read only membuat nilai dalam konstanta bernama sUser, curPersen, lBlokData tidak dapat diubah dalam proses layaknya sebuah variabel.

User Defined Type (UDT)

User Defined Type (UDT) adalah datatype yang dibentuk oleh pemrogram. Sebuah UDT bisa berisi banyak elemen variabel dengan datatype setiap elemen bisa berbeda-beda. Keyword yang digunakan adalah Type. Deklarasi UDT diletakkan di area General Declaration sebelum baris-baris deklarasi variabel yang menggunakan UDT tersebut sebagai datatype-nya.

Syntax deklarasi pembuatan UDT adalah :
     Public|Private TYPE nama_udt
         variabel1 AS datatype
                 .
                 .

         variabelN AS datatype
     End Type


Contoh deklarasi UDT (letakkan di area general declaration sebelum baris-baris deklarasi variabel) :
     Public Type uCustomer
         sNama As String
         sAlamat As String
         lPoint As Long
         dtJoin As Date
     End Type

Variabel yang akan menggunakan UDT harus dideklarasikan dengan datatype berupa nama UDT yang ada. Scope level dari variabel pengguna UDT sama seperti variabel lainnya. Contoh deklarasi variabel dengan datatype menggunakan UDT uCustomer :
     Public udtCustAktif As uCustomer
Contoh prosedur yang menggunakan variabel udtCustAktif yang ber-datatype UDT uCustomer : (fokus pada biru)
  Public Sub PakaiUDT()
    'isi nilai udtCustAktif
    udtCustAktif.sNama = "Kid"
    udtCustAktif.sAlamat = "Jakarta"
    udtCustAktif.dtJoin = #6/22/2013#
    udtCustAktif.lPoint = 100


       'gunakan nilai dalam udtCustAktif
       MsgBox "udtCustAktif" & vbCrLf &
String(23, "-") & vbCrLf & "Nama" & _
         vbTab & vbTab & ": " & udtCustAktif.sNama & _
         vbCrLf & "Tanggal Join" & vbTab & ": " & udtCustAktif.dtJoin & vbCrLf & "Alamat" & vbTab & vbTab & _
         ": " & udtCustAktif.sAlamat & vbCrLf & "Poin sampai saat ini" & vbTab & ": " & udtCustAktif.lPoint
  End Sub
Script di atas sengaja tidak menggunakan blok With ... End With agar lebih mudah dipelajari. Cara menghapus nilai yang ada didalam sebuah UDT adalah dengan menghapus setiap nilai dalam elemen penyusunnya. Hal ini kadang terasa tidak praktis. Jika diperhatikan secara seksama, penggunaan UDT secara sekilas akan tampak seperti menggunakan sebuah object. Maka UDT bisa jadi langkah awal untuk mengarah ke penggunaan Class yang berfungsi sebagai blueprint sebuah object.


Insya Allah pembahasan berikutnya adalah tentang prosedur.









10 komentar:

  1. Subhanallah....
    Perlu waktu khusus tuk mencernanya.
    :)

    BalasHapus
  2. alhamdulillah, semakin detil. pengetahuan sayah. thanks buat MrKid

    BalasHapus
  3. Terima kasih atas sedekah ilmunya semoga menjadi tabungan di akhirat kelak. Amin...

    BalasHapus
  4. ditunggu postingan selanjutnya...

    BalasHapus
  5. Mr Kid

    Terima kasih atas penjelasannya yg super duper lengkap, jadi lebih mengerti ttg variabel

    BalasHapus
  6. Mr Kid
    Lupa bilang ada di blog ini boleh ditambahin fitur print? kdg2 saya perlu baca offline kalau lagi ga di depan komputer

    BalasHapus
    Balasan
    1. Ok. Insya Allah nanti saya sampaikan ke bang Haer yang jadi momod nya blog ini ya...

      Hapus