Variabel dan konstanta dalam VBA

Dalam VBA, seperti dalam bahasa pemrograman lainnya, variabel dan konstanta digunakan untuk menyimpan nilai apa pun. Sesuai dengan namanya, variabel dapat berubah, sedangkan konstanta menyimpan nilai tetap.

Misalnya, konstanta Pi menyimpan nilai 3,14159265… Angka “Pi” tidak akan berubah selama eksekusi program, tetapi masih lebih mudah untuk menyimpan nilai seperti itu sebagai konstanta.

Pada saat yang sama, kita dapat menggunakan variabel sPPN_Rate untuk menyimpan tarif PPN atas barang yang dibeli. Nilai variabel sPPN_Rate dapat bervariasi tergantung pada produk yang dibeli.

Jenis Data

Semua variabel dan konstanta adalah tipe data tertentu. Tabel di bawah ini mencantumkan tipe data yang digunakan dalam VBA dengan deskripsi dan rentang nilai yang mungkin:

Tipe data UkuranDeskripsi ProdukJarak nilai
Byte1 bytebilangan bulat positif; sering digunakan untuk data binerdari 0 ke 255
Boolean2 byteBisa Benar atau SalahBenar atau salah
Bilangan bulat2 byteBilangan bulat (tidak ada bagian pecahan)dari -32 hingga +768
Panjang4 byteBilangan bulat besar (tidak ada bagian pecahan)от -2 147 483 648 до +2 147 483 647
tunggal4 byteNomor floating point presisi tunggaldari -3.4e38 hingga +3.4e38
Dua kali lipat8 byteNomor floating point presisi gandadari -1.8e308 hingga +1.8e308
Currency8 byteNomor titik mengambang, dengan jumlah tempat desimal yang tetapот -922 337 203 685 477.5808 до +922 337 203 685 477.5807
Tanggal8 byteTanggal dan waktu – Data tipe Tanggal diwakili oleh angka floating point. Bagian bilangan bulat dari angka ini menyatakan tanggal, dan bagian pecahan menyatakan waktu.dari 1 Januari 100 hingga 31 Desember 9999
obyek4 byteReferensi objekReferensi objek apa saja
Talisedang berubahSet karakter. Tipe String dapat berupa panjang tetap atau variabel. Lebih umum digunakan dengan panjang variabelPanjang tetap – hingga sekitar 65 karakter. Panjang variabel – hingga sekitar 500 miliar karakter
Variansedang berubahDapat berisi tanggal, float, atau string karakter. Tipe ini digunakan jika tidak diketahui terlebih dahulu tipe data apa yang akan dimasukkan.Nomor – Ganda, string – String

Jelas, dengan menggunakan tabel di atas dan memilih tipe data yang tepat, Anda dapat menggunakan memori dengan lebih hemat (misalnya, memilih tipe data Bilangan bulat sebagai gantinya Panjang or tunggal sebagai gantinya Dua kali lipat). Namun, saat menggunakan tipe data yang lebih ringkas, Anda harus berhati-hati agar kode Anda tidak mencoba memasukkan nilai besar yang tidak proporsional ke dalamnya.

Mendeklarasikan Variabel dan Konstanta

Catatan Penerjemah: Berbicara tentang variabel dalam VBA, perlu disebutkan satu hal lagi yang sangat penting. Jika kita mendeklarasikan sebuah variabel tetapi tidak memberikan nilai apapun padanya, maka variabel tersebut diinisialisasi dengan nilai default:

• string teks diinisialisasi dengan string kosong;

• angka — nilai 0;

• jenis variabel Boolean - PALSU;

• tanggal – 30 Desember 1899.

Sebelum variabel atau konstanta dapat digunakan, itu harus dideklarasikan. Untuk melakukannya, tambahkan baris kode sederhana berikut ke makro:

Dim Имя_Переменной As Тип_Данных

Pada baris kode di atas Nama_variabel adalah nama variabel yang akan digunakan dalam kode, dan Tipe data adalah salah satu tipe data dari tabel yang diberikan sedikit sebelumnya dalam artikel ini. Sebagai contoh:

Redupkan sVAT_Rate Sebagai Tunggal Redupkan i As Integer

Konstanta dideklarasikan dengan cara yang sama, tetapi ketika mendeklarasikan konstanta, nilainya harus segera ditunjukkan. Misalnya seperti ini:

Konst iMaxCount = 5000 Konst iMaxScore = 100

Tidak perlu mendeklarasikan variabel di Excel. Secara default, semua variabel yang dimasukkan tetapi tidak dideklarasikan di Excel akan memiliki tipe Varian dan akan dapat menerima nilai numerik dan teks.

Dengan demikian, programmer dapat menggunakan variabel baru setiap saat (bahkan jika belum dideklarasikan), dan Excel akan memperlakukannya sebagai variabel tipe Varian. Namun, ada beberapa alasan mengapa ini tidak boleh dilakukan:

  1. Penggunaan memori dan kecepatan komputasi. Jika Anda tidak mendeklarasikan variabel dengan indikasi tipe data, maka secara default akan diatur ke tipe Varian. Tipe data ini menggunakan lebih banyak memori daripada tipe data lainnya. Beberapa byte tambahan per variabel mungkin tidak terdengar banyak, tetapi dalam praktiknya, program dapat memiliki ribuan variabel (terutama saat bekerja dengan array). Oleh karena itu, memori ekstra yang digunakan oleh variabel seperti Varian, dibandingkan dengan variabel tipe Bilangan bulat or tunggal, dapat menambahkan hingga jumlah yang signifikan. Selain itu, operasi dengan variabel tipe Varian dieksekusi jauh lebih lambat daripada dengan variabel tipe lain, masing-masing, seribu variabel tipe ekstra Varian secara signifikan dapat memperlambat perhitungan.
  2. Pencegahan kesalahan ketik dalam nama variabel. Jika semua variabel dideklarasikan, maka pernyataan VBA dapat digunakan Opsi Eksplisit (kita akan membicarakannya nanti) untuk mengidentifikasi semua variabel yang tidak dideklarasikan. Ini menghilangkan munculnya kesalahan dalam program sebagai akibat dari nama variabel yang salah ditulis. Misalnya, menggunakan variabel bernama sPPN_Rate, Anda dapat membuat kesalahan ketik dan, dengan menetapkan nilai ke variabel ini, tulis: “VATRate = 0,175”. Diharapkan mulai sekarang, variabel sPPN_Rate harus berisi nilai 0,175 – tetapi tentu saja tidak. Jika mode deklarasi wajib semua variabel yang digunakan diaktifkan, maka kompiler VBA akan segera menunjukkan kesalahan, karena tidak akan menemukan variabel Tarif PPN di antara yang diumumkan.
  3. Menyoroti nilai yang tidak cocok dengan tipe variabel yang dideklarasikan. Jika Anda mendeklarasikan variabel dari tipe tertentu dan mencoba menetapkan data dari tipe yang berbeda ke dalamnya, Anda akan mendapatkan kesalahan, yang jika dibiarkan tidak diperbaiki, dapat menyebabkan program macet. Sepintas, ini mungkin tampak seperti alasan yang baik untuk tidak mendeklarasikan variabel, tetapi pada kenyataannya, daripada sebelumnya ternyata salah satu variabel menerima data yang salah yang seharusnya diterima – jauh lebih baik! Jika tidak, jika program terus berjalan, hasilnya mungkin salah dan tidak terduga, dan akan jauh lebih sulit untuk menemukan penyebab kesalahan. Ada juga kemungkinan bahwa makro akan "berhasil" dieksekusi. Akibatnya, kesalahan tidak akan diketahui dan pekerjaan akan dilanjutkan dengan data yang salah!

Dalam hal ini, diinginkan untuk mendeteksi tipe data yang salah dan memperbaiki kesalahan tersebut dalam kode sedini mungkin. Untuk alasan ini, Anda disarankan untuk mendeklarasikan semua variabel saat menulis makro VBA.

Opsi Eksplisit

Operator Opsi Eksplisit menyebabkan semua variabel yang akan digunakan dalam kode VBA dideklarasikan, dan menandai semua variabel yang tidak dideklarasikan sebagai kesalahan selama kompilasi (sebelum eksekusi kode dimulai). Menerapkan operator ini tidak sulit – cukup tulis baris ini di bagian paling atas file VBA:

Option Explicit

Jika Anda ingin selalu memasukkan Opsi Eksplisit ke atas setiap modul VBA baru yang dibuat, ini dapat dilakukan secara otomatis. Untuk melakukan ini, Anda perlu mengaktifkan opsi Membutuhkan Deklarasi Variabel dalam pengaturan editor VBA.

Ini dilakukan seperti ini:

  • Dari menu Editor Visual Basic, klik alat > Opsi
  • Pada dialog yang muncul, buka tab editor
  • Centang kotak Membutuhkan Deklarasi Variabel dan tekan OK

Saat diaktifkan, string Opsi Eksplisit akan secara otomatis dimasukkan di awal setiap modul baru yang dibuat.

Lingkup Variabel dan Konstanta

Setiap variabel atau konstanta yang dideklarasikan memiliki ruang lingkup terbatasnya sendiri, yaitu bagian terbatas dari program di mana variabel ini ada. Lingkupnya tergantung di mana deklarasi variabel atau konstanta dibuat. Ambil, misalnya, variabel sPPN_Rate, yang digunakan dalam fungsi Total biaya. Tabel berikut membahas dua opsi untuk pelingkupan variabel sPPN_Ratedideklarasikan dalam dua posisi berbeda dalam modul:

Opsi Explicit Dim sVAT_Rate Sebagai Fungsi Tunggal Total_Cost() Sebagai Ganda ... Fungsi Akhir
Jika variabel sPPN_Rate dideklarasikan di awal modul, maka cakupan variabel ini akan menjadi keseluruhan modul (yaitu variabel sPPN_Rate akan dikenali oleh semua prosedur dalam modul ini).

Oleh karena itu, jika dalam fungsi Total biaya variabel sPPN_Rate akan diberikan beberapa nilai, maka fungsi berikutnya yang dijalankan dalam modul yang sama akan menggunakan variabel sPPN_Rate dengan arti yang sama.

Namun, jika beberapa fungsi yang terletak di modul lain dipanggil, maka untuk itu variabelnya sPPN_Rate tidak akan diketahui.

Opsi Fungsi Eksplisit Total_Cost() Sebagai Double Dim sVAT_Rate Sebagai Single ... Fungsi Akhir
Jika variabel sPPN_Rate dideklarasikan di awal fungsi Total biaya, maka cakupannya akan dibatasi hanya untuk fungsi ini (yaitu di dalam fungsi Total biaya, Anda dapat menggunakan variabel sPPN_Rate, tapi tidak di luar).

Saat mencoba menggunakan sPPN_Rate dalam prosedur lain, kompiler VBA akan melaporkan kesalahan karena variabel ini tidak dideklarasikan di luar fungsi Total biaya (asalkan operator yang digunakan Opsi Eksplisit).

Pada contoh di atas, variabel dideklarasikan pada level modul dengan kata kunci Dim. Namun, mungkin perlu bahwa variabel yang dideklarasikan dapat digunakan dalam modul lain. Dalam kasus seperti itu, untuk mendeklarasikan variabel alih-alih kata kunci Dim kata kunci harus digunakan Publik.

Omong-omong, untuk mendeklarasikan variabel di level modul, alih-alih kata kunci Dim kata kunci dapat digunakan Swasta, yang menunjukkan bahwa variabel ini dimaksudkan untuk digunakan hanya dalam modul saat ini.

Anda juga dapat menggunakan kata kunci untuk mendeklarasikan konstanta. Publik и Swasta, tapi bukan kata kunci const, bersamaan dengan itu.

Contoh berikut menunjukkan penggunaan kata kunci Publik и Swasta diterapkan pada variabel dan konstanta.

Opsi Eksplisit Publik sVAT_Rate Sebagai Konstituen Publik Tunggal iMax_Count = 5000 ...    
Dalam contoh ini, kata kunci Publik digunakan untuk mendeklarasikan variabel sPPN_Rate dan konstanta iMax_Count. Cakupan elemen yang dideklarasikan dengan cara ini akan menjadi keseluruhan proyek saat ini.

Ini berarti bahwa sPPN_Rate и iMax_Count akan tersedia di modul proyek apa pun.

Opsi Eksplisit Privat sVAT_Rate Sebagai Const Privat Tunggal iMax_Count = 5000 ...    
Dalam contoh ini, untuk mendeklarasikan variabel sPPN_Rate dan konstanta iMax_Count kata kunci yang digunakan Swasta. Ruang lingkup elemen ini adalah modul saat ini.

Ini berarti bahwa sPPN_Rate и iMax_Count akan tersedia di semua prosedur modul saat ini, tetapi tidak akan tersedia untuk prosedur di modul lain.

Tinggalkan Balasan