Memahami Pembolehubah dan Pemalar dalam Makro Excel

Dalam artikel ini, anda akan mempelajari pemalar dan pembolehubah yang terdapat dalam makro, tempat ia boleh digunakan dan apakah perbezaan utama antara jenis data yang berbeza. Ia juga akan didedahkan mengapa pemalar diperlukan, jika anda hanya boleh menulis pembolehubah dan tidak pernah mengubahnya.

Seperti bahasa pengaturcaraan lain, data boleh disimpan dalam pembolehubah atau pemalar (kedua-duanya juga sering dirujuk sebagai bekas data). Ini adalah perbezaan utama antara konsep ini. Yang pertama mungkin berubah bergantung pada apa yang berlaku dalam program. Sebaliknya, pemalar ditetapkan sekali dan tidak mengubah nilainya.

Pemalar boleh berguna jika anda perlu menggunakan nilai besar yang sama beberapa kali. Daripada menyalin nombor, anda hanya boleh menulis nama pemalar. Sebagai contoh, anda boleh menggunakan pemalar "Pi" untuk menyimpan Pi, yang merupakan nilai malar. Ia sangat besar, dan setiap kali agak sukar untuk menulis atau mencari dan menyalinnya. Oleh itu, cukup untuk menulis dua aksara, dan persekitaran secara automatik menggunakan nombor yang dikehendaki.

Pengguna Excel perlu mengisytiharkan pembolehubah jika dia perlu menukar nilai yang disimpan di dalamnya dari semasa ke semasa. Sebagai contoh, anda boleh menetapkan pembolehubah yang dipanggil sVAT_Rate, yang akan menyimpan kadar VAT semasa untuk produk. Jika ia berubah, anda boleh membetulkannya dengan cepat. Ini amat berguna untuk mereka yang menjalankan perniagaan di Amerika Syarikat, di mana sesetengah barangan mungkin tidak dikenakan VAT sama sekali (dan cukai ini juga berbeza dari negeri ke negeri).

Jenis Data

Setiap bekas data boleh menjadi salah satu daripada beberapa jenis. Berikut ialah jadual yang menerangkan jenis standard maklumat yang diproses. Terdapat banyak daripada mereka, dan pada mulanya mungkin kelihatan bahawa mereka mengulangi satu sama lain. Tetapi ini adalah perasaan ilusi. Teruskan membaca untuk mengetahui sebab menyatakan jenis data yang betul adalah sangat penting.

Ia tidak disyorkan untuk menggunakan jenis data yang menggunakan lebih banyak ruang dalam memori untuk nombor kecil. Sebagai contoh, untuk nombor 1, ia adalah mencukupi untuk menggunakan jenis Byte. Ini akan memberi kesan positif ke atas prestasi modul boleh laku, terutamanya pada komputer yang lemah. Tetapi adalah penting untuk tidak pergi terlalu jauh di sini. Jika anda menggunakan jenis data yang terlalu padat, nilai yang terlalu besar mungkin tidak sesuai dengannya.

Mengisytiharkan Pemalar dan Pembolehubah

Menggunakan bekas data tanpa mengisytiharkannya terlebih dahulu adalah sangat tidak digalakkan. Kemudian beberapa masalah boleh timbul, untuk mengelakkannya adalah perlu untuk menulis beberapa baris kecil kod dengan penghitungan pembolehubah atau pemalar.

Untuk mengisytiharkan pembolehubah, pernyataan Dim digunakan. Sebagai contoh, seperti ini:

Malapkan Nama_Pembolehubah Sebagai Integer

Variable_Name ialah nama pembolehubah. Seterusnya, pengendali As ditulis, menunjukkan jenis data. Daripada rentetan "Variable_Name" dan "Integer", anda boleh memasukkan nama dan jenis data anda sendiri.

Pemalar juga boleh diisytiharkan, tetapi anda mesti terlebih dahulu menentukan nilainya. Salah satu pilihan ialah:

Const iMaxCount = 5000

Dalam keadilan, dalam beberapa kes anda boleh melakukannya tanpa mengisytiharkan pembolehubah, tetapi dalam kes ini mereka akan diberikan jenis Varian secara automatik. Walau bagaimanapun, ini tidak disyorkan atas sebab-sebab berikut:

  1. Varian diproses dengan lebih perlahan, dan jika terdapat banyak pembolehubah sedemikian, pemprosesan maklumat boleh diperlahankan dengan ketara pada komputer yang lemah. Nampaknya detik-detik itu akan menentukan? Tetapi jika anda perlu menulis sejumlah besar baris kod, dan kemudian juga menjalankannya pada komputer yang lemah (yang masih dijual, memandangkan suite pejabat moden memerlukan banyak RAM), anda boleh menghentikan kerja sepenuhnya. Terdapat kes apabila penulisan makro yang salah telah menyebabkan buku pintar yang mempunyai jumlah RAM yang kecil dan tidak direka bentuk untuk melaksanakan tugas yang rumit. 
  2. Silap cetak nama dibenarkan, yang boleh dicegah dengan menggunakan pernyataan Option Explicit, yang membolehkan anda mencari pembolehubah yang tidak diisytiharkan, jika satu dijumpai. Ini adalah cara mudah untuk mengesan ralat, kerana kesilapan menaip sedikit menyebabkan jurubahasa tidak dapat mengenal pasti pembolehubah. Dan jika anda menghidupkan mod pengisytiharan berubah-ubah, jurubahasa tidak akan membenarkan anda menjalankan makro jika bekas data ditemui yang tidak diisytiharkan pada awal modul.
  3. Elakkan ralat yang disebabkan oleh nilai pembolehubah yang tidak sepadan dengan jenis data. Biasanya, memberikan nilai teks kepada pembolehubah integer akan menimbulkan ralat. Ya, dalam satu pihak, jenis generik diberikan tanpa pengisytiharan, tetapi jika ia diisytiharkan terlebih dahulu, maka ralat rawak boleh dielakkan.

Oleh itu, di sebalik segala-galanya, adalah sangat disyorkan untuk mengisytiharkan semua pembolehubah dalam makro Excel.

Terdapat satu lagi perkara yang perlu diingat semasa mengisytiharkan pembolehubah. Adalah mungkin untuk tidak memberikan sebarang nilai kepada pembolehubah apabila mengisytiharkannya, tetapi dalam kes ini ia memperoleh nilai lalai. Sebagai contoh:

  1. Talian dibuat kosong.
  2. Nombor mengambil nilai 0.
  3. Pembolehubah jenis Boolean pada mulanya dianggap palsu.
  4. Tarikh lalai ialah 30 Disember 1899.

Sebagai contoh, anda tidak perlu memberikan nilai 0 kepada pembolehubah integer jika tiada nilai dinyatakan sebelum ini. Dia sudah mengandungi nombor ini.

Penyata Eksplisit Pilihan

Pernyataan ini membolehkan anda mengisytiharkan semua pembolehubah yang digunakan dalam kod VBA dan menentukan kehadiran mana-mana bekas yang tidak diisytiharkan sebelum kod dijalankan. Untuk menggunakan ciri ini, cuma tulis satu baris kod Eksplisit Pilihan di bahagian paling atas kod makro.

Jika anda perlu memasukkan pernyataan ini dalam kod anda setiap kali, anda boleh melakukannya menggunakan tetapan khas dalam editor VBA. Untuk mendayakan pilihan ini, anda mesti:

  1. Pergi ke persekitaran pembangunan di sepanjang laluan - Alat > Pilihan.
  2. Dalam tetingkap yang terbuka selepas ini, buka tab Editor.
  3. Dan akhirnya, tandai kotak di sebelah item Memerlukan Perisytiharan Pembolehubah.

Setelah selesai langkah-langkah ini, klik pada butang "OK". 

Itu sahaja, kini apabila menulis setiap makro baharu, baris ini akan disisipkan di bahagian atas kod secara automatik.

Skop Pemalar dan Pembolehubah

Setiap pembolehubah atau pemalar hanya mempunyai skop yang terhad. Ia bergantung di mana anda mengisytiharkannya.

Katakan kita mempunyai fungsi Jumlah kos(), dan ia menggunakan pembolehubah sVAT_Rate. Bergantung pada kedudukan dalam modul, ia akan mempunyai skop yang berbeza:

Pilihan Eksplisit

Malapkan sVAT_Rate Sebagai Tunggal

Fungsi Jumlah_Kos() Berganda

.

.

.

Fungsi akhir

Jika pembolehubah diisytiharkan di bahagian atas modul itu sendiri, ia merambat ke seluruh modul itu. Iaitu, ia boleh dibaca oleh setiap prosedur.

Lebih-lebih lagi, jika salah satu prosedur mengubah nilai pembolehubah, maka yang seterusnya juga akan membaca nilai yang diperbetulkan ini. Tetapi dalam modul lain pembolehubah ini masih tidak akan dibaca.

Pilihan Eksplisit

Fungsi Jumlah_Kos() Berganda

Malapkan sVAT_Rate Sebagai Tunggal

   .

   .

   .

Fungsi akhir

Dalam kes ini, pembolehubah diisytiharkan di dalam prosedur, dan jurubahasa akan membuang ralat jika ia digunakan dalam prosedur lain.

Jika anda mahu pembolehubah dibaca oleh modul lain, anda mesti menggunakan kata kunci Awam dan bukannya kata kunci Dim. Begitu juga, anda boleh mengehadkan skop pembolehubah kepada hanya modul semasa dengan menggunakan pernyataan Awam, yang ditulis dan bukannya perkataan Dim.

Anda boleh menetapkan skop pemalar dengan cara yang sama, tetapi kata kunci di sini ditulis bersama dengan operator Const.

Berikut ialah jadual dengan contoh yang baik tentang cara ia berfungsi dengan pemalar dan pembolehubah.

Pilihan Eksplisit

sVAT_Rate Awam Sebagai Bujang

Public Const iMax_Count = 5000

Dalam contoh ini, anda boleh melihat cara kata kunci Awam digunakan untuk mengisytiharkan pembolehubah dan perkara yang anda perlu tulis dalam editor Visual Basic untuk mengisytiharkan pemalar awam. Skop bekas nilai ini digunakan untuk semua modul.
Pilihan Eksplisit

sVAT_Nilai Peribadi Sebagai Bujang

Persendirian Const iMax_Count = 5000

Di sini, pembolehubah dan pemalar diisytiharkan menggunakan kata kunci Persendirian. Ini bermakna mereka hanya boleh dilihat dalam modul semasa, dan prosedur dalam modul lain tidak boleh menggunakannya.

Mengapa pemalar dan pembolehubah diperlukan

Penggunaan pemalar dan pembolehubah membolehkan anda meningkatkan tahap kefahaman kod. Dan jika pemula secara umum tidak mempunyai soalan tentang mengapa pembolehubah diperlukan, maka terdapat banyak kekaburan mengenai keperluan untuk pemalar. Dan soalan ini nampaknya, pada pandangan pertama, agak logik. Lagipun, anda boleh mengisytiharkan pembolehubah sekali dan tidak mengubahnya lagi.

Jawapannya ternyata berada di suatu tempat dalam satah yang sama berkaitan dengan penggunaan jenis data yang menduduki ruang yang besar dalam ingatan. Jika kita berhadapan dengan sejumlah besar pembolehubah, kita boleh menukar bekas sedia ada secara tidak sengaja. Jika pengguna menetapkan bahawa nilai tertentu tidak akan berubah, maka persekitaran akan mengawalnya secara automatik.

Ini amat penting apabila makro ditulis oleh beberapa pengaturcara. Seseorang mungkin tahu bahawa beberapa pembolehubah tidak sepatutnya berubah. Dan yang lain tidak. Jika anda menentukan operator Const, pembangun lain akan mengetahui bahawa nilai ini tidak berubah.

Atau, jika terdapat pemalar dengan satu nama, dan pembolehubah mempunyai nama yang berbeza, tetapi serupa. Pembangun hanya boleh mengelirukan mereka. Contohnya, satu pembolehubah yang tidak perlu diubah dipanggil Variable11, dan satu lagi yang boleh diedit dipanggil Variable1. Seseorang secara automatik boleh, apabila menulis kod, secara tidak sengaja melangkau unit tambahan dan tidak menyedarinya. Akibatnya, bekas untuk nilai akan diubah, yang tidak boleh disentuh.

Atau pembangun sendiri mungkin terlupa pembolehubah yang boleh disentuh dan yang tidak. Ini sering berlaku apabila kod ditulis selama beberapa minggu, dan saiznya menjadi besar. Pada masa ini, sangat mudah untuk melupakan maksud pembolehubah ini atau itu.

Ya, anda boleh lakukan dengan ulasan dalam situasi ini, tetapi bukankah lebih mudah untuk menentukan perkataan Const?

kesimpulan

Pembolehubah ialah komponen penting dalam pengaturcaraan makro, yang membolehkan anda melakukan operasi yang kompleks, daripada pengiraan kepada memaklumkan pengguna tentang peristiwa tertentu atau menentukan nilai tertentu dalam sel hamparan.

Pemalar harus digunakan jika pembangun mengetahui dengan pasti bahawa kandungan bekas ini tidak akan berubah pada masa hadapan. Adalah disyorkan untuk tidak menggunakan pembolehubah sebaliknya, kerana kemungkinan melakukan kesilapan secara tidak sengaja.

Sila tinggalkan balasan anda