Variabel sarta konstanta dina VBA

Dina VBA, sapertos dina basa pamrograman anu sanés, variabel sareng konstanta dianggo pikeun nyimpen nilai naon waé. Sakumaha ngaranna ngakibatkeun, variabel bisa robah, bari konstanta nyimpen nilai tetep.

Contona, konstanta Pi nyimpen nilai 3,14159265… Jumlah "Pi" moal robah salila palaksanaan program, tapi masih leuwih merenah pikeun nyimpen hiji nilai salaku konstanta.

Dina waktos anu sami, urang tiasa nganggo variabel sVAT_Rate pikeun nyimpen ongkos PPN kana barang dibeuli. Nilai variabel sVAT_Rate bisa rupa-rupa gumantung kana produk dibeuli.

Jenis Data

Sadaya variabel sareng konstanta mangrupikeun jinis data anu khusus. Tabél di handap daptar jinis data anu dianggo dina VBA kalayan pedaran sareng rentang nilai anu mungkin:

Jinis data ukurangambaranKisaran nilai
bait1 baitwilangan bulat positif; mindeng dipaké pikeun data binérti 0 mun 255
boolean2 baitBisa jadi bener atawa salahLeres atanapi Salah
integer2 baitBilangan gembleng (henteu aya bagian pecahan)ti -32 ka +768
Long4 baitInteger badag (euweuh bagian pecahan)от -2 147 483 648 до +2 147 483 647
hiji4 baitNomer floating point precision tunggalti -3.4e38 nepi ka +3.4e38
ganda8 baitJumlah titik floating precision gandati -1.8e308 nepi ka +1.8e308
duit nu dipake di sahiji nagara8 baitNomer titik ngambang, kalayan jumlah tempat desimal tetepот -922 337 203 685 477.5808 до +922 337 203 685 477.5807
tanggal8 baitTanggal sareng waktos - Data jinis Tanggal diwakilan ku nomer titik ngambang. Bagian integer tina angka ieu expresses tanggal, sarta bagian fractional expresses waktu.ti 1 Januari 100 nepi ka 31 Désémber 9999
barang4 baitRujukan objékSakur rujukan objék
taligeus ngarobahSusunan karakter. Jinis String tiasa panjangna tetep atanapi variabel. Leuwih ilahar dipaké kalawan panjang variabelPanjangna tetep - dugi ka 65 karakter. Panjang variabel - nepi ka 500 milyar karakter
Variantgeus ngarobahBisa ngandung tanggal, float, atawa string karakter. Jenis ieu dianggo dina kasus dimana teu dipikanyaho sateuacanna jinis data anu bakal diasupkeun.Jumlah - Ganda, string - String

Jelas, nganggo tabel di luhur sareng milih jinis data anu leres, anjeun tiasa nganggo mémori langkung ekonomis (contona, milih jinis data. integer tibatan Long or hiji tibatan ganda). Nanging, nalika nganggo jinis data anu langkung kompak, anjeun kedah ati-ati yén kode anjeun henteu nyobian nyocogkeun nilai anu teu saimbang kana aranjeunna.

Ngadéklarasikeun Variabel sareng Konstanta

Catetan Panarjamah: Nyarioskeun ngeunaan variabel dina VBA, kedah disebatkeun hiji titik anu langkung penting. Upami urang nyatakeun variabel tapi henteu masihan nilai naon waé, maka éta diinisialisasi ku nilai standar:

• string téks nu initialized kalawan string kosong;

• angka - nilai 0;

• tipe variabel boolean - Palsu;

• kaping - 30 Désémber 1899.

Sateuacan variabel atanapi konstanta tiasa dianggo, éta kedah dinyatakeun. Jang ngalampahkeun ieu, tambahkeun garis saderhana kode ieu kana makro:

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

Dina garis luhur kode Ngaran Variabel nyaeta nami variabel anu bakal dipaké dina kode, jeung Tipe_Data mangrupa salah sahiji tipe data tina tabel dibikeun saeutik saméméhna dina artikel ieu. Salaku conto:

Taram sVAT_Rate Salaku Single Taram i Salaku Integer

Konstanta dinyatakeun sami, tapi nalika nyatakeun konstanta, nilaina kedah langsung dituduhkeun. Contona, saperti kieu:

Const iMaxCount = 5000 Const iMaxScore = 100

Henteu kedah nyatakeun variabel dina Excel. Sacara standar, sadaya variabel anu diasupkeun tapi henteu dinyatakeun dina Excel bakal ngagaduhan jinisna Variant tur bakal tiasa nampi duanana nilai numerik jeung téks.

Janten, programer tiasa nganggo variabel énggal iraha waé (sanaos henteu acan dinyatakeun), sareng Excel bakal ngarawat éta salaku variabel jinis. Variant. Nanging, aya sababaraha alesan naha ieu henteu kedah dilakukeun:

  1. Pamakéan memori sareng laju komputasi. Upami anjeun henteu nyatakeun variabel kalayan indikasi jinis data, maka sacara standar bakal disetel ka jinisna Variant. Jinis data ieu ngagunakeun langkung seueur mémori tibatan jinis data anu sanés. Sababaraha bait tambahan per variabel bisa jadi teu kawas teuing, tapi dina praktekna, program bisa mibanda rébuan variabel (utamana lamun gawé bareng arrays). Ku alatan éta, memori tambahan dipaké ku variabel kawas Variant, dibandingkeun jeung variabel tipe integer or hiji, bisa nambahan nepi ka jumlah signifikan. Salaku tambahan, operasi kalayan variabel jinis Variant dieksekusi jauh leuwih laun ti kalayan variabel tipe séjén, masing-masing, sarébu variabel tipe tambahan Variant nyata bisa ngalambatkeun itungan.
  2. Pencegahan typos dina ngaran variabel. Lamun sakabeh variabel dinyatakeun, pernyataan VBA bisa dipaké - Pilihan Eksplisit (urang bakal ngobrol ngeunaan eta engké) guna ngaidentipikasi sakabeh variabel undeclared. Ieu ngaleungitkeun penampilan kasalahan dina program salaku hasil tina nami variabel anu salah ditulis. Contona, ngagunakeun variabel ngaranna sVAT_Rate, Anjeun tiasa nyieun typo a jeung, assigning nilai ka variabel ieu, nulis: "VATRate = 0,175". Ieu diperkirakeun yén ti ayeuna, variabel sVAT_Rate kedah ngandung nilai 0,175 - tapi tangtosna henteu. Upami mode deklarasi wajib sadaya variabel anu dianggo diaktipkeun, kompiler VBA bakal langsung nunjukkeun kasalahan, sabab moal mendakan variabel. PPNrate diantara nu ngumumkeun.
  3. Nyorot nilai anu henteu cocog sareng jinis variabel anu dinyatakeun. Upami anjeun nyatakeun variabel tina jinis anu tangtu sareng nyobian napelkeun data tina jinis anu béda, anjeun bakal nampi kasalahan, anu, upami henteu dilereskeun, tiasa nyababkeun program nabrak. Dina glance kahiji, ieu bisa sigana kawas alesan alus teu ngadéklarasikeun variabel, tapi dina kanyataanana, ti saméméh tétéla yén salah sahiji variabel narima data salah nu sakuduna narima - jadi leuwih hadé! Upami teu kitu, upami program terus dijalankeun, hasilna tiasa lepat sareng teu kaduga, sareng bakal langkung sesah milarian anu nyababkeun kasalahan. Éta ogé kamungkinan yén makro bakal "berhasil" dieksekusi. Hasilna, kasalahan bakal ditingali sareng padamelan bakal diteruskeun ku data anu salah!

Dina hal ieu, éta desirable pikeun ngadeteksi tipe data lepat sarta ngabenerkeun kasalahan sapertos dina kode pas mungkin. Ku sabab kitu, disarankeun yén anjeun nyatakeun sadaya variabel nalika nyerat makro VBA.

Pilihan Eksplisit

petugas Pilihan Eksplisit ngabalukarkeun sagala variabel anu bakal dipaké dina kode VBA dinyatakeun, sarta bandéra sakabéh variabel undeclared salaku kasalahan salila kompilasi (sateuacan palaksanaan kode dimimitian). Nerapkeun operator ieu henteu sesah - tuliskeun garis ieu di luhur pisan file VBA:

Option Explicit

Lamun hayang sok nyelapkeun Pilihan Eksplisit ka luhur unggal modul VBA anyar dijieun, ieu bisa dipigawé sacara otomatis. Jang ngalampahkeun ieu, anjeun kudu ngaktipkeun pilihan Merlukeun Déklarasi Variabel dina setélan editor VBA.

Hal ieu dilakukeun sapertos kieu:

  • Tina menu Visual Basic Editor, klik pakakas > pilihan
  • Dina dialog nu nembongan, buka tab jelema nu nyunting
  • Parios kotak Merlukeun Déklarasi Variabel terus pencét OK

Nalika diaktipkeun, string Pilihan Eksplisit bakal otomatis diselapkeun dina awal unggal modul anyar dijieun.

Lingkup Variabel jeung Konstanta

Unggal variabel anu dinyatakeun atanapi konstanta gaduh ruang lingkup anu terbatas, nyaéta, bagian kawates tina program dimana variabel ieu aya. Ruang lingkup gumantung kana dimana deklarasi variabel atanapi konstanta dilakukeun. Candak, contona, variabel sVAT_Rate, nu dipaké dina fungsi Total_Biaya. Tabel di handap ngabahas dua pilihan pikeun scoping variabel sVAT_Ratedinyatakeun dina dua posisi béda dina modul:

Pilihan Eksplisit Taram sVAT_Rate Salaku Fungsi Tunggal Total_Cost() Salaku Ganda ... Fungsi Tungtung
Lamun variabel sVAT_Rate dinyatakeun dina awal modul, teras wengkuan variabel ieu bakal sakabéh modul (ie variabel sVAT_Rate bakal dipikawanoh ku sakabéh prosédur dina ieu modul).

Ku alatan éta, lamun dina fungsi Total_Biaya variabel sVAT_Rate bakal ditugaskeun sababaraha nilai, teras fungsi salajengna dieksekusi dina modul anu sami bakal nganggo variabel sVAT_Rate kalawan hartina sarua.

Nanging, upami sababaraha fungsi anu aya dina modul anu sanés disebut, maka variabel éta sVAT_Rate moal kanyahoan.

Pilihan Fungsi Eksplisit Total_Cost() Salaku Double Dim sVAT_Rate Salaku Tunggal ... Fungsi Tungtung
Lamun variabel sVAT_Rate dinyatakeun dina awal fungsi Total_Biaya, teras wengkuanna bakal diwatesan ngan pikeun fungsi ieu (nyaéta dina fungsi Total_Biaya, anjeun tiasa nganggo variabel sVAT_Rate, tapi henteu di luar).

Nalika nyobian nganggo sVAT_Rate dina prosedur sejen, kompiler VBA bakal ngalaporkeun kasalahan sabab variabel ieu teu dinyatakeun di luar fungsi Total_Biaya (disadiakeun yén operator dianggo Pilihan Eksplisit).

Dina conto anu dipidangkeun di luhur, variabel dinyatakeun dina tingkat modul sareng kecap konci Dopok. Sanajan kitu, meureun perlu yén variabel dinyatakeun bisa dipaké dina modul séjén. Dina kasus kawas, pikeun nyatakeun variabel tinimbang keyword a Dopok kecap konci kedah dianggo masarakat.

Ku jalan kitu, dina raraga ngadéklarasikeun variabel dina tingkat modul, tinimbang kecap konci Dopok keyword bisa dipaké wasta, nu nunjukkeun yén variabel ieu dimaksudkeun pikeun pamakéan ngan dina modul ayeuna.

Anjeun ogé tiasa nganggo kecap konci pikeun nyatakeun konstanta. masarakat и wasta, tapi henteu tinimbang kecap konci Konst, bareng jeung eta.

Conto di handap ieu nunjukkeun panggunaan kecap konci masarakat и wasta dilarapkeun kana variabel jeung konstanta.

Pilihan sVAT_Rate Publik Eksplisit Salaku Const Publik Tunggal iMax_Count = 5000 ...    
Dina conto ieu, kecap konci masarakat dipaké pikeun nyatakeun variabel sVAT_Rate jeung konstanta iMax_Count. Ruang lingkup elemen anu dinyatakeun ku cara ieu bakal janten sadayana proyék ayeuna.

Ieu ngandung harti yén sVAT_Rate и iMax_Count bakal sadia dina sagala modul proyék.

Pilihan Eksplisit Private sVAT_Rate Salaku Single Private Const iMax_Count = 5000 ...    
Dina conto ieu, pikeun nyatakeun variabel sVAT_Rate jeung konstanta iMax_Count keyword dipaké wasta. Ruang lingkup elemen ieu modul ayeuna.

Ieu ngandung harti yén sVAT_Rate и iMax_Count bakal sadia dina sakabéh prosedur tina modul ayeuna, tapi moal sadia pikeun prosedur dina modul séjén.

Leave a Reply