এক্সেল ম্যাক্রোতে ভেরিয়েবল এবং ধ্রুবক বোঝা

এই নিবন্ধে, আপনি শিখবেন ম্যাক্রোতে ধ্রুবক এবং ভেরিয়েবলগুলি কী, সেগুলি কোথায় ব্যবহার করা যেতে পারে এবং বিভিন্ন ডেটা প্রকারের মধ্যে প্রধান পার্থক্য কী। কেন ধ্রুবকগুলির প্রয়োজন তাও প্রকাশ করা হবে, যদি আপনি কেবল একটি পরিবর্তনশীল লিখতে পারেন এবং এটি কখনই পরিবর্তন করবেন না।

অন্যান্য প্রোগ্রামিং ভাষার মতো, ডেটা ভেরিয়েবল বা ধ্রুবকগুলিতে সংরক্ষণ করা যেতে পারে (যা উভয়কেই প্রায়শই ডেটা কন্টেইনার হিসাবে উল্লেখ করা হয়)। এটি এই ধারণাগুলির মধ্যে প্রধান পার্থক্য। প্রোগ্রামে যা ঘটবে তার উপর নির্ভর করে পূর্ববর্তী পরিবর্তন হতে পারে। পরিবর্তে, ধ্রুবকগুলি একবার সেট করা হয় এবং তাদের মান পরিবর্তন করে না।

আপনি যদি একই বড় মান একাধিকবার ব্যবহার করতে চান তবে ধ্রুবকগুলি কার্যকর হতে পারে। সংখ্যাটি অনুলিপি করার পরিবর্তে, আপনি কেবল ধ্রুবকের নাম লিখতে পারেন। উদাহরণস্বরূপ, আপনি Pi সংরক্ষণ করতে ধ্রুবক "Pi" ব্যবহার করতে পারেন, যা একটি ধ্রুবক মান। এটি খুব বড়, এবং প্রতিটি সময় এটি লিখতে বা অনুসন্ধান এবং অনুলিপি করা বেশ কঠিন। এবং তাই, এটি দুটি অক্ষর লিখতে যথেষ্ট, এবং পরিবেশ স্বয়ংক্রিয়ভাবে পছন্দসই সংখ্যা ব্যবহার করে।

এক্সেল ব্যবহারকারীকে ভেরিয়েবল ঘোষণা করতে হবে যদি তাকে সময়ে সময়ে সেগুলির মধ্যে সংরক্ষিত মান পরিবর্তন করতে হয়। উদাহরণস্বরূপ, আপনি sVAT_Rate নামক একটি পরিবর্তনশীল সেট করতে পারেন, যা পণ্যটির জন্য বর্তমান ভ্যাট হার সংরক্ষণ করবে। যদি এটি পরিবর্তন হয়, আপনি দ্রুত এটি সংশোধন করতে পারেন। যারা মার্কিন যুক্তরাষ্ট্রে ব্যবসা করেন তাদের জন্য এটি বিশেষভাবে উপযোগী, যেখানে কিছু পণ্য একেবারেই ভ্যাট-এর অধীন নাও হতে পারে (এবং এই ট্যাক্সটিও রাজ্য থেকে রাজ্যে আলাদা হয়)।

তথ্যের ধরণ

প্রতিটি ডেটা কন্টেইনার বিভিন্ন ধরনের হতে পারে। এখানে একটি সারণী রয়েছে যা প্রমিত ধরণের প্রক্রিয়াকৃত তথ্য বর্ণনা করে। তাদের মধ্যে অনেকগুলি রয়েছে এবং প্রাথমিকভাবে একজন শিক্ষানবিশের কাছে মনে হতে পারে যে তারা একে অপরকে পুনরাবৃত্তি করে। কিন্তু এটি একটি অলীক অনুভূতি। সঠিক ডেটা টাইপ কেন নির্দিষ্ট করা এত গুরুত্বপূর্ণ তা জানতে পড়ুন।

ছোট সংখ্যার জন্য মেমরিতে বেশি জায়গা নেয় এমন ডেটা টাইপ ব্যবহার করার পরামর্শ দেওয়া হয় না। উদাহরণস্বরূপ, 1 নম্বরের জন্য, বাইট টাইপ ব্যবহার করা যথেষ্ট। এটি এক্সিকিউটেবল মডিউলের কর্মক্ষমতার উপর ইতিবাচক প্রভাব ফেলবে, বিশেষ করে দুর্বল কম্পিউটারগুলিতে। তবে এখানে খুব বেশি দূরে না যাওয়া গুরুত্বপূর্ণ। আপনি যদি এমন একটি ডেটা টাইপ ব্যবহার করেন যা খুব কমপ্যাক্ট, একটি বড় আকারের মান এতে ফিট নাও হতে পারে।

ধ্রুবক এবং ভেরিয়েবল ঘোষণা করা

প্রথমে ঘোষণা না করে একটি ডেটা কন্টেইনার ব্যবহার করা দৃঢ়ভাবে নিরুৎসাহিত করা হয়। তারপরে বেশ কয়েকটি সমস্যা দেখা দিতে পারে, যা এড়াতে ভেরিয়েবল বা ধ্রুবকগুলির গণনা সহ কয়েকটি ছোট লাইন কোড লিখতে হবে।

একটি পরিবর্তনশীল ঘোষণা করতে, Dim স্টেটমেন্ট ব্যবহার করা হয়। উদাহরণস্বরূপ, এই মত:

Dim Variable_Name পূর্ণসংখ্যা হিসাবে

Variable_Name হল ভেরিয়েবলের নাম। এরপরে, As অপারেটর লেখা হয়, ডাটা টাইপ নির্দেশ করে। "ভেরিয়েবল_নাম" এবং "পূর্ণসংখ্যা" স্ট্রিংগুলির পরিবর্তে, আপনি আপনার নিজের নাম এবং ডেটা টাইপ সন্নিবেশ করতে পারেন।

ধ্রুবকগুলিও ঘোষণা করা যেতে পারে, তবে আপনাকে প্রথমে তাদের মান নির্দিষ্ট করতে হবে। বিকল্পগুলির মধ্যে একটি হল:

Const iMaxCount = 5000

ন্যায্যতা, কিছু ক্ষেত্রে আপনি একটি পরিবর্তনশীল ঘোষণা ছাড়া করতে পারেন, কিন্তু এই ক্ষেত্রে তারা স্বয়ংক্রিয়ভাবে টাইপ বৈকল্পিক বরাদ্দ করা হবে. যাইহোক, নিম্নলিখিত কারণে এটি সুপারিশ করা হয় না:

  1. ভেরিয়েন্ট অনেক বেশি ধীরগতিতে প্রক্রিয়া করা হয়, এবং যদি এই ধরনের অনেকগুলি ভেরিয়েবল থাকে, তাহলে দুর্বল কম্পিউটারগুলিতে তথ্য প্রক্রিয়াকরণ উল্লেখযোগ্যভাবে ধীর হয়ে যেতে পারে। মনে হয় ওই সেকেন্ডেই সিদ্ধান্ত নেবে? কিন্তু যদি আপনাকে প্রচুর সংখ্যক লাইন কোড লিখতে হয় এবং তারপরে এটি দুর্বল কম্পিউটারগুলিতেও চালাতে হয় (যা এখনও বিক্রি হয়, আধুনিক অফিস স্যুটগুলির জন্য প্রচুর র‌্যামের প্রয়োজন হয়), আপনি কাজটি সম্পূর্ণভাবে বন্ধ করতে পারেন। এমন কিছু ঘটনা আছে যখন ম্যাক্রোর অকল্পনীয় লেখার ফলে স্মার্টবুকগুলি জমাট বাঁধে যেগুলিতে অল্প পরিমাণে RAM আছে এবং জটিল কাজগুলি করার জন্য ডিজাইন করা হয়নি৷ 
  2. নামের ভুল প্রিন্ট অনুমোদিত, যা Option Explicit স্টেটমেন্ট ব্যবহার করে প্রতিরোধ করা যেতে পারে, যা আপনাকে একটি অঘোষিত পরিবর্তনশীল খুঁজে পেতে দেয়, যদি একটি পাওয়া যায়। এটি ত্রুটি সনাক্ত করার একটি সহজ উপায়, যেহেতু সামান্য টাইপোর কারণে দোভাষী পরিবর্তনশীলটি সনাক্ত করতে অক্ষম হয়। এবং যদি আপনি পরিবর্তনশীল ঘোষণা মোড চালু করেন, তাহলে দোভাষী আপনাকে ম্যাক্রো চালানোর অনুমতি দেবে না যদি এমন ডেটা কন্টেনার পাওয়া যায় যা মডিউলের একেবারে শুরুতে ঘোষণা করা হয়নি।
  3. ভেরিয়েবল মানগুলি ডেটা টাইপের সাথে মেলে না বলে ত্রুটিগুলি এড়িয়ে চলুন। সাধারণত, একটি পূর্ণসংখ্যা ভেরিয়েবলে একটি পাঠ্য মান নির্ধারণ করা একটি ত্রুটি নিক্ষেপ করবে। হ্যাঁ, একদিকে, একটি জেনেরিক টাইপ একটি ঘোষণা ছাড়াই বরাদ্দ করা হয়, তবে যদি সেগুলি আগে থেকে ঘোষণা করা হয়, তবে এলোমেলো ত্রুটিগুলি এড়ানো যেতে পারে।

অতএব, সবকিছু সত্ত্বেও, এক্সেল ম্যাক্রোতে সমস্ত ভেরিয়েবল ঘোষণা করার জন্য অত্যন্ত সুপারিশ করা হয়।

ভেরিয়েবল ঘোষণা করার সময় আরও একটি জিনিস মাথায় রাখতে হবে। একটি ভেরিয়েবল ডিক্লেয়ার করার সময় কোন ভ্যালু বরাদ্দ না করা সম্ভব, কিন্তু এই ক্ষেত্রে এটি একটি ডিফল্ট মান অর্জন করে। উদাহরণ স্বরূপ:

  1. লাইন খালি করা হয়.
  2. সংখ্যা 0 মান গ্রহণ করে।
  3. বুলিয়ান টাইপের ভেরিয়েবলগুলি প্রাথমিকভাবে মিথ্যা বলে বিবেচিত হয়।
  4. ডিফল্ট তারিখ 30 ডিসেম্বর, 1899।

উদাহরণস্বরূপ, যদি পূর্বে কোনো মান নির্দিষ্ট করা না থাকে তাহলে আপনাকে একটি পূর্ণসংখ্যা ভেরিয়েবলে 0 মান নির্ধারণ করতে হবে না। তিনি ইতিমধ্যে এই নম্বর রয়েছে.

বিকল্প স্পষ্ট বিবৃতি

এই বিবৃতিটি আপনাকে VBA কোডে ব্যবহৃত সমস্ত ভেরিয়েবল ঘোষণা করতে এবং কোড চালানোর আগে কোনো অঘোষিত পাত্রের উপস্থিতি নির্ধারণ করতে দেয়। এই বৈশিষ্ট্যটি ব্যবহার করতে, ম্যাক্রো কোডের একেবারে শীর্ষে শুধুমাত্র বিকল্প স্পষ্ট কোডের একটি লাইন লিখুন।

আপনি যদি প্রতিবার আপনার কোডে এই বিবৃতিটি অন্তর্ভুক্ত করতে চান তবে আপনি VBA সম্পাদকের একটি বিশেষ সেটিং ব্যবহার করে তা করতে পারেন। এই বিকল্পটি সক্ষম করতে, আপনাকে অবশ্যই:

  1. পথ ধরে উন্নয়ন পরিবেশে যান – টুলস > বিকল্প।
  2. এর পরে যে উইন্ডোটি খোলে, সেখানে এডিটর ট্যাবটি খুলুন।
  3. এবং পরিশেষে, প্রয়োজনীয় পরিবর্তনশীল ঘোষণা আইটেমের পাশের বাক্সটি চেক করুন।

এই পদক্ষেপগুলি সম্পূর্ণ করার পরে, "ঠিক আছে" বোতামে ক্লিক করুন। 

এটিই, এখন প্রতিটি নতুন ম্যাক্রো লেখার সময়, এই লাইনটি স্বয়ংক্রিয়ভাবে কোডের শীর্ষে ঢোকানো হবে।

ধ্রুবক এবং ভেরিয়েবলের সুযোগ

প্রতিটি পরিবর্তনশীল বা ধ্রুবকের শুধুমাত্র একটি সীমিত সুযোগ রয়েছে। এটা নির্ভর করে আপনি কোথায় ঘোষণা করবেন।

ধরুন আমাদের একটি ফাংশন আছে মোট খরচ(), এবং এটি পরিবর্তনশীল ব্যবহার করে sVAT_রেট. মডিউলের অবস্থানের উপর নির্ভর করে, এটির একটি ভিন্ন সুযোগ থাকবে:

বিকল্প স্পষ্ট

কম sVAT_রেট একক হিসাবে

ফাংশন Total_Cost() দ্বিগুণ হিসাবে

.

.

.

শেষ ফাংশন

যদি একটি ভেরিয়েবল নিজেই একটি মডিউলের শীর্ষে ঘোষণা করা হয় তবে এটি সেই মডিউল জুড়ে প্রচার করে। অর্থাৎ, এটি প্রতিটি পদ্ধতি দ্বারা পড়া যেতে পারে।

তদুপরি, যদি পদ্ধতিগুলির মধ্যে একটি ভেরিয়েবলের মান পরিবর্তন করে, তবে পরবর্তীটি এই সংশোধন করা মানটিও পড়বে। কিন্তু অন্যান্য মডিউলগুলিতে এই পরিবর্তনশীলটি এখনও পড়া হবে না।

বিকল্প স্পষ্ট

ফাংশন Total_Cost() দ্বিগুণ হিসাবে

কম sVAT_রেট একক হিসাবে

   .

   .

   .

শেষ ফাংশন

এই ক্ষেত্রে, ভেরিয়েবলটি পদ্ধতির ভিতরে ঘোষণা করা হয়, এবং দোভাষী একটি ত্রুটি নিক্ষেপ করবে যদি এটি অন্য পদ্ধতিতে ব্যবহার করা হয়।

আপনি যদি চান যে ভেরিয়েবলটি অন্য মডিউল দ্বারা পড়তে, তাহলে আপনাকে অবশ্যই Dim কীওয়ার্ডের পরিবর্তে পাবলিক কীওয়ার্ড ব্যবহার করতে হবে। একইভাবে, আপনি পাবলিক স্টেটমেন্ট ব্যবহার করে একটি ভেরিয়েবলের সুযোগকে শুধুমাত্র বর্তমান মডিউলের মধ্যে সীমাবদ্ধ করতে পারেন, যা Dim শব্দের পরিবর্তে লেখা হয়।

আপনি একইভাবে ধ্রুবকের সুযোগ সেট করতে পারেন, তবে এখানে কীওয়ার্ডটি কনস্ট অপারেটরের সাথে একসাথে লেখা হয়েছে।

ধ্রুবক এবং ভেরিয়েবলের সাথে এটি কীভাবে কাজ করে তার একটি ভাল উদাহরণ সহ এখানে একটি টেবিল রয়েছে।

বিকল্প স্পষ্ট

পাবলিক sVAT_রেট একক হিসাবে

পাবলিক কনস্ট iMax_Count = 5000

এই উদাহরণে, আপনি দেখতে পারেন কিভাবে পাবলিক কীওয়ার্ড একটি পরিবর্তনশীল ঘোষণা করতে ব্যবহৃত হয় এবং একটি পাবলিক ধ্রুবক ঘোষণা করার জন্য আপনাকে Visual Basic সম্পাদকে কী লিখতে হবে। এই মান পাত্রের সুযোগ সব মডিউল প্রযোজ্য.
বিকল্প স্পষ্ট

একক হিসাবে ব্যক্তিগত sVAT_Rate

প্রাইভেট কনস্ট iMax_Count = 5000

এখানে, প্রাইভেট কীওয়ার্ড ব্যবহার করে ভেরিয়েবল এবং ধ্রুবক ঘোষণা করা হয়। এর মানে হল যে এগুলি শুধুমাত্র বর্তমান মডিউলের মধ্যে দেখা যায় এবং অন্যান্য মডিউলের পদ্ধতিগুলি সেগুলি ব্যবহার করতে পারে না।

কেন ধ্রুবক এবং চলক প্রয়োজন

ধ্রুবক এবং ভেরিয়েবলের ব্যবহার আপনাকে কোডের বোধগম্যতার ডিগ্রি বাড়াতে দেয়। এবং যদি সাধারণভাবে নতুনদের কাছে কেন ভেরিয়েবলের প্রয়োজন হয় তা নিয়ে প্রশ্ন না থাকে, তাহলে ধ্রুবকের প্রয়োজনীয়তা সম্পর্কে অনেক অস্পষ্টতা রয়েছে। এবং এই প্রশ্নটি প্রথম নজরে বেশ যৌক্তিক বলে মনে হচ্ছে। সব পরে, আপনি একটি পরিবর্তনশীল একবার ঘোষণা করতে পারেন এবং এটি আবার পরিবর্তন করতে পারবেন না।

মেমরিতে একটি বড় স্থান দখল করে এমন ডেটা টাইপের ব্যবহারের ক্ষেত্রে উত্তরটি একই সমতলে কোথাও পরিণত হয়েছে। আমরা যদি বিপুল সংখ্যক ভেরিয়েবল নিয়ে কাজ করি তবে আমরা দুর্ঘটনাক্রমে একটি বিদ্যমান ধারক পরিবর্তন করতে পারি। যদি ব্যবহারকারী নির্ধারণ করে যে একটি নির্দিষ্ট মান কখনই পরিবর্তন হবে না, তাহলে পরিবেশ স্বয়ংক্রিয়ভাবে এটি নিয়ন্ত্রণ করবে।

এটি বিশেষভাবে গুরুত্বপূর্ণ যখন ম্যাক্রোটি বেশ কয়েকটি প্রোগ্রামার দ্বারা লেখা হয়। কেউ হয়তো জানেন যে কিছু পরিবর্তনশীল পরিবর্তন করা উচিত নয়। আর অন্যটি নয়। আপনি যদি Const অপারেটর নির্দিষ্ট করেন, অন্য ডেভেলপার জানতে পারবেন যে এই মান পরিবর্তন হয় না।

অথবা, যদি একটি নামের সাথে একটি ধ্রুবক থাকে এবং ভেরিয়েবলের একটি ভিন্ন, কিন্তু একই নাম থাকে। বিকাশকারী সহজভাবে তাদের বিভ্রান্ত করতে পারেন। উদাহরণস্বরূপ, একটি ভেরিয়েবল যা পরিবর্তন করার প্রয়োজন নেই তাকে ভেরিয়েবল 11 বলা হয় এবং আরেকটি যেটিকে এডিট করা যায় তাকে ভেরিয়েবল 1 বলা হয়। একজন ব্যক্তি স্বয়ংক্রিয়ভাবে, কোড লেখার সময়, দুর্ঘটনাক্রমে একটি অতিরিক্ত ইউনিট এড়িয়ে যেতে পারে এবং এটি লক্ষ্য করতে পারে না। ফলস্বরূপ, মানগুলির জন্য ধারকটি পরিবর্তন করা হবে, যা স্পর্শ করা উচিত নয়।

অথবা বিকাশকারী নিজেই ভুলে যেতে পারে কোন ভেরিয়েবলগুলিকে সে স্পর্শ করতে পারে এবং কোনটি পারে না৷ এটি প্রায়শই ঘটে যখন কোডটি কয়েক সপ্তাহ ধরে লেখা হয় এবং এর আকার বড় হয়ে যায়। এই সময়ের মধ্যে, এই বা সেই পরিবর্তনশীলটির অর্থ কী তা ভুলে যাওয়া খুব সহজ।

হ্যাঁ, আপনি এই পরিস্থিতিতে মন্তব্য দিয়ে করতে পারেন, কিন্তু Const শব্দটি নির্দিষ্ট করা কি সহজ নয়?

উপসংহার

ভেরিয়েবল হল ম্যাক্রো প্রোগ্রামিং এর একটি অপরিহার্য উপাদান, যা আপনাকে গণনা থেকে শুরু করে নির্দিষ্ট ইভেন্ট সম্পর্কে ব্যবহারকারীকে অবহিত করা বা স্প্রেডশীটের কক্ষে নির্দিষ্ট মান নির্দিষ্ট করা পর্যন্ত জটিল ক্রিয়াকলাপ সম্পাদন করতে দেয়।

ধ্রুবক ব্যবহার করা উচিত যদি বিকাশকারী নিশ্চিতভাবে জানেন যে এই কন্টেইনারগুলির বিষয়বস্তু ভবিষ্যতে পরিবর্তন হবে না। এটির পরিবর্তে ভেরিয়েবল ব্যবহার না করার পরামর্শ দেওয়া হচ্ছে, কারণ এটি ভুলবশত ভুল করা সম্ভব।

নির্দেশিকা সমন্ধে মতামত দিন