Variabel lan konstanta ing VBA

Ing VBA, kaya ing basa pamrograman liyane, variabel lan konstanta digunakake kanggo nyimpen nilai apa wae. Minangka jeneng kasebut, variabel bisa diganti, dene konstanta nyimpen nilai tetep.

Contone, konstanta Pi nyimpen nilai 3,14159265… Nomer "Pi" ora bakal diganti sajrone eksekusi program, nanging isih luwih trep kanggo nyimpen nilai kasebut minangka konstanta.

Ing wektu sing padha, kita bisa nggunakake variabel sVAT_Rate kanggo nyimpen tarif PPN ing barang sing dituku. Nilai variabel sVAT_Rate bisa beda-beda gumantung saka produk sing dituku.

Jinis Data

Kabeh variabel lan konstanta saka jinis data tartamtu. Tabel ing ngisor iki nampilake jinis data sing digunakake ing VBA kanthi deskripsi lan sawetara nilai sing bisa ditindakake:

Jinis data SizeDescriptionRange nilai
Dhewe1 baitWilangan bulat positif; asring digunakake kanggo data binarsaka 0 kanggo 255
Boolean2 baitBisa uga bener utawa salahBener utawa Salah
Integer2 baitNomer wutuh (ora ana bagean pecahan)saka -32 nganti +768
Long4 baitWilangan bulat gedhe (ora ana bagean pecahan)от -2 147 483 648 до +2 147 483 647
single4 baitNomer floating point presisi tunggalsaka -3.4e38 kanggo +3.4e38
Double8 baitNomer floating point presisi gandasaka -1.8e308 kanggo +1.8e308
Currency8 baitNomer titik ngambang, kanthi nomer desimal tetepот -922 337 203 685 477.5808 до +922 337 203 685 477.5807
tanggal8 baitTanggal lan wektu - Data jinis Tanggal diwakili dening nomer floating point. Bagean integer nomer iki nuduhake tanggal, lan bagean pecahan nuduhake wektu.saka 1 Januari 100 nganti 31 Desember 9999
obyek4 baitReferensi obyekSembarang referensi obyek
Stringwis gantiSet karakter. Jinis String bisa dawa tetep utawa variabel. Luwih umum digunakake kanthi dawa variabelDawane tetep - nganti kira-kira 65 karakter. Dawane variabel - nganti kira-kira 500 milyar karakter
varianwis gantiBisa ngemot tanggal, float, utawa string karakter. Jinis iki digunakake ing kasus sing ora dingerteni sadurunge apa jinis data sing bakal dilebokake.Nomer - Dobel, string - String

Temenan, nggunakake tabel ing ndhuwur lan milih jinis data sing tepat, sampeyan bisa nggunakake memori kanthi luwih ekonomis (contone, milih jinis data Integer tinimbang Long or single tinimbang Double). Nanging, nalika nggunakake jinis data sing luwih kompak, sampeyan kudu ati-ati supaya kode sampeyan ora nyoba cocog karo nilai sing ora proporsional.

Deklarasi Variabel lan Konstanta

Cathetan Penerjemah: Ngomong babagan variabel ing VBA, sampeyan kudu nyebutake siji titik sing luwih penting. Yen kita ngumumake variabel nanging ora nemtokake nilai kasebut, mula diinisialisasi kanthi nilai standar:

• strings teks initialized karo strings kosong;

• angka - nilai 0;

• jinis variabel Boolean - Palsu;

• tanggal - 30 Desember 1899.

Sadurunge variabel utawa konstanta bisa digunakake, kudu diumumake. Kanggo nindakake iki, tambahake baris kode prasaja ing ngisor iki menyang makro:

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

Ing baris ndhuwur kode Jeneng variabel iku jeneng variabel sing bakal digunakake ing kode, lan Tipe_Data iku salah siji saka jinis data saka tabel diwenehi sethitik sadurungé ing artikel iki. Tuladhane:

Dim sVAT_Rate Minangka Single Dim i Minangka Integer

Konstanta diumumake kanthi cara sing padha, nanging nalika nyatakake konstanta, nilai kasebut kudu langsung dituduhake. Contone, kaya iki:

Const iMaxCount = 5000 Const iMaxScore = 100

Ora perlu ngumumake variabel ing Excel. Kanthi gawan, kabeh variabel sing dilebokake nanging ora diumumake ing Excel bakal duwe jinis kasebut varian lan bakal bisa nampa nilai numerik lan teks.

Dadi, programer bisa nggunakake variabel anyar kapan wae (sanajan durung diumumake), lan Excel bakal nganggep minangka variabel jinis. varian. Nanging, ana sawetara alasan kenapa iki ora kudu ditindakake:

  1. Panggunaan memori lan kacepetan komputasi. Yen sampeyan ora ngumumake variabel kanthi indikasi jinis data, mula kanthi standar bakal disetel menyang jinis kasebut varian. Jinis data iki nggunakake memori luwih akeh tinimbang jinis data liyane. Sawetara bita ekstra saben variabel bisa uga ora kaya swara, nanging ing praktik, program bisa duwe ewonan variabel (utamane nalika nggarap array). Mulane, memori ekstra digunakake dening variabel kaya varian, dibandhingake karo variabel saka jinis Integer or single, bisa nambah nganti jumlah sing signifikan. Kajaba iku, operasi karo variabel saka jinis varian dieksekusi luwih alon tinimbang karo variabel jinis liyane, masing-masing, ekstra ewu variabel jinis varian bisa Ngartekno alon mudhun petungan.
  2. Nyegah typo ing jeneng variabel. Yen kabeh variabel diumumake, mula statement VBA bisa digunakake - Pilihan Eksplisit (kita bakal pirembagan bab iku mengko) kanggo ngenali kabeh variabel undeclared. Iki ngilangake munculé kesalahan ing program minangka asil saka jeneng variabel ditulis salah. Contone, nggunakake variabel jenenge sVAT_Rate, sampeyan bisa nggawe salah ketik lan, nemtokake nilai kanggo variabel iki, nulis: "VATRate = 0,175". Dikarepake yen wiwit saiki, variabel kasebut sVAT_Rate kudu ngemot nilai 0,175 - nanging mesthi ora. Yen mode deklarasi wajib kabeh variabel sing digunakake diaktifake, kompiler VBA bakal langsung nuduhake kesalahan, amarga ora bakal nemokake variabel kasebut. VATRrate antarane sing diumumake.
  3. Nyorot nilai sing ora cocog karo jinis variabel sing diumumake. Yen sampeyan ngumumake variabel saka jinis tartamtu lan nyoba nemtokake data saka jinis sing beda, sampeyan bakal entuk kesalahan, sing, yen ora dikoreksi, bisa nyebabake program kasebut kacilakan. Sepisanan, iki bisa uga katon minangka alesan sing apik kanggo ora ngumumake variabel, nanging nyatane, tinimbang sadurunge ternyata salah sawijining variabel nampa data sing salah sing kudu ditampa - dadi luwih apik! Yen ora, yen program terus mlaku, asil bisa uga salah lan ora dikarepke, lan bakal dadi luwih angel kanggo nemokake sabab saka kasalahan. Bisa uga makro bakal "kasil" dieksekusi. Akibaté, kesalahan bakal ora katon lan karya bakal terus karo data sing salah!

Ing babagan iki, luwih becik ndeteksi jinis data sing salah lan mbenerake kesalahan kasebut ing kode kasebut sakcepete. Kanggo alasan kasebut, disaranake sampeyan ngumumake kabeh variabel nalika nulis makro VBA.

Pilihan Eksplisit

Operator Pilihan Eksplisit nyebabake kabeh variabel sing bakal digunakake ing kode VBA diumumake, lan flag kabeh variabel undeclared minangka kasalahan sajrone kompilasi (sadurunge eksekusi kode diwiwiti). Nglamar operator iki ora angel - mung tulis baris iki ing sisih ndhuwur file VBA:

Option Explicit

Yen sampeyan pengin tansah masang Pilihan Eksplisit menyang ndhuwur saben modul VBA anyar digawe, iki bisa rampung kanthi otomatis. Kanggo nindakake iki, sampeyan kudu ngaktifake pilihan kasebut Mbutuhake Pranyatan Variabel ing setelan editor VBA.

Iki ditindakake kaya mangkene:

  • Saka menu Visual Basic Editor, klik pribadi > Pilihan
  • Ing dialog sing katon, bukak tab editor
  • Centhang kothak Mbutuhake Pranyatan Variabel lan penet OK

Nalika diaktifake, senar Pilihan Eksplisit bakal dilebokake kanthi otomatis ing wiwitan saben modul anyar sing digawe.

Cakupan Variabel lan Konstanta

Saben variabel utawa konstanta sing diumumake nduweni ruang lingkup winates dhewe, yaiku bagean winates saka program sing ana variabel iki. Ruang lingkup gumantung ing ngendi deklarasi variabel utawa konstanta digawe. Njupuk, contone, variabel sVAT_Rate, kang digunakake ing fungsi Total_Biaya. Tabel ing ngisor iki ngrembug rong opsi kanggo scoping variabel sVAT_Ratediumumake ing rong posisi beda ing modul:

Opsi Eksplisit Dim sVAT_Rate Minangka Fungsi Tunggal Total_Cost() Minangka Ganda ... End Function
Yen variabel sVAT_Rate diumumake ing wiwitan modul, mula ruang lingkup variabel iki bakal dadi kabeh modul (yaiku variabel sVAT_Rate bakal diakoni dening kabeh prosedur ing modul iki).

Mulane, yen ing fungsi Total_Biaya global sVAT_Rate bakal diwenehi sawetara nilai, banjur fungsi sabanjure sing ditindakake ing modul sing padha bakal nggunakake variabel kasebut sVAT_Rate kanthi teges ingkang sami.

Nanging, yen sawetara fungsi sing ana ing modul liyane diarani, mula variabel kasebut sVAT_Rate ora bakal dingerteni.

Pilihan Fungsi Eksplisit Total_Cost() As Double Dim sVAT_Rate As Single... End Function
Yen variabel sVAT_Rate diumumake ing wiwitan fungsi Total_Biaya, banjur orane katrangan bakal diwatesi mung kanggo fungsi iki (yaiku ing fungsi Total_Biaya, sampeyan bisa nggunakake variabel sVAT_Rate, nanging ora ing njaba).

Nalika nyoba kanggo nggunakake sVAT_Rate ing prosedur liyane, VBA compiler bakal laporan kesalahan amarga variabel iki ora diumumake ing njaba fungsi Total_Biaya (yen operator digunakake Pilihan Eksplisit).

Ing conto sing ditampilake ing ndhuwur, variabel kasebut diumumake ing tingkat modul kanthi tembung kunci Dim. Nanging, bisa uga kudu variabel sing diumumake bisa digunakake ing modul liyane. Ing kasus kaya mengkono, kanggo ngumumake variabel tinimbang tembung kunci Dim tembung kunci kudu digunakake Public.

Miturut cara, kanggo ngumumake variabel ing tingkat modul, tinimbang tembung kunci Dim tembung kunci bisa digunakake Private, sing nuduhake yen variabel iki mung dienggo ing modul saiki.

Sampeyan uga bisa nggunakake tembung kunci kanggo ngumumake konstanta. Public и Private, nanging ora tinimbang tembung kunci Const, bebarengan karo iku.

Conto ing ngisor iki nuduhake panggunaan tembung kunci Public и Private ditrapake kanggo variabel lan konstanta.

Opsi sVAT_Rate Publik Eksplisit Minangka Const Umum Tunggal iMax_Count = 5000 ...    
Ing conto iki, tembung kunci Public digunakake kanggo ngumumake variabel sVAT_Rate lan konstanta iMax_Count. Ruang lingkup unsur sing diumumake kanthi cara iki bakal dadi kabeh proyek saiki.

Iki tegese sVAT_Rate и iMax_Count bakal kasedhiya ing sembarang modul project.

Opsi Eksplisit Private sVAT_Rate Minangka Single Private Const iMax_Count = 5000 ...    
Ing conto iki, kanggo ngumumake variabel sVAT_Rate lan konstanta iMax_Count tembung kunci sing digunakake Private. Ruang lingkup unsur kasebut minangka modul saiki.

Iki tegese sVAT_Rate и iMax_Count bakal kasedhiya ing kabeh tata cara modul saiki, nanging ora bakal kasedhiya kanggo tata cara ing modul liyane.

Ninggalake a Reply