সুচিপত্র
যেমন আপনি ইতিমধ্যেই জানেন কিভাবে UDF তৈরি করতে হয় (এবং, আমি আশা করি, আপনি সেগুলিকে আপনার এক্সেলে প্রয়োগ করার চেষ্টাও করেছেন), আসুন একটু গভীরে খনন করে দেখি আপনার ব্যবহারকারীর সংজ্ঞায়িত ফাংশনটি কাজ না করলে কী করা যেতে পারে।
কাস্টম ফাংশন তৈরি করার সময় কিছু সমস্যা সমাধানের জন্য, আপনাকে সম্ভবত একটি ডিবাগ চালাতে হবে। তারপর আপনি নিশ্চিত হতে পারেন যে ফাংশনটি সঠিকভাবে কাজ করছে৷
আমরা নিম্নলিখিত ডিবাগিং কৌশলগুলি অন্বেষণ করব:
যখন আপনি একটি কাস্টম ফাংশন তৈরি করেন, তখন সবসময় একটি সম্ভাবনা থাকে যে আপনি একটি ভুল করবেন। কাস্টম ফাংশন সাধারণত বেশ জটিল হয়. এবং তারা সবসময় সঠিকভাবে কাজ শুরু করে না। সূত্রটি একটি ভুল ফলাফল বা #VALUE! ত্রুটি. স্ট্যান্ডার্ড এক্সেল ফাংশনগুলির বিপরীতে, আপনি অন্য কোনও বার্তা দেখতে পাবেন না৷
এটির প্রতিটি স্টেটমেন্ট কীভাবে কাজ করে তা পরীক্ষা করার জন্য একটি কাস্টম ফাংশন ধাপে ধাপে যাওয়ার উপায় আছে কি? নিশ্চিত! এর জন্য ডিবাগিং ব্যবহার করা হয়।
আমি আপনাকে আপনার কাস্টম ফাংশন ডিবাগ করার বিভিন্ন উপায় অফার করব যাতে আপনি আপনার জন্য কাজ করে এমন একটি বেছে নিতে পারেন।
উদাহরণস্বরূপ, আমরা কাস্টম ফাংশন ব্যবহার করি GetMaxBetween আমাদের পূর্ববর্তী নিবন্ধগুলির একটি থেকে যা নির্দিষ্ট পরিসরে সর্বাধিক সংখ্যা গণনা করে:
ফাংশন GetMaxBetween(rngCells As Range, MinNum, MaxNum) Dim NumRange As Range Dim vMax Dim arrNums() Dim i integer ReDim arrNums(rngCells.Count) হিসাবে প্রতিটি সংখ্যার জন্য rngCells vMax =NumRange সিলেক্ট কেস vMax কেস MinNum + 0.01 থেকে MaxNum - 0.01 arrNums(i) = vMax i = i + 1 কেস অন্যভাবে GetMaxBetween = 0 End নির্বাচন করুন পরবর্তী NumRange GetMaxBetween = WorksheetFunction.Max(arrNums> ফাংশনগুলি হল <0. কক্ষের পরিসর যেখানে সংখ্যা লেখা আছে, সেইসাথে মানগুলির উপরের এবং নীচের সীমা।গুরুত্বপূর্ণ স্থানে MsgBox ফাংশন রাখুন
গণনার কার্য সম্পাদনের নিরীক্ষণ করার জন্য, আপনি প্রদর্শন করতে পারেন সঠিক স্থানে পর্দায় সবচেয়ে গুরুত্বপূর্ণ ভেরিয়েবলের মান। এটি পপ-আপ ডায়ালগ বক্স ব্যবহার করে করা যেতে পারে।
MsgBox হল একটি ডায়ালগ বক্স যা আপনি ব্যবহারকারীকে কোনো ধরনের বার্তা দেখানোর জন্য ব্যবহার করতে পারেন।
MsgBox এর সিনট্যাক্স অন্যান্য VBA ফাংশনের মতো:
MsgBox(prompt [, buttons] [, title] [, helpfile, context])prompt একটি প্রয়োজনীয় আর্গুমেন্ট। এটিতে আপনি ডায়ালগ বক্সে যে বার্তাটি দেখতে পাচ্ছেন তা রয়েছে। এটি পৃথক ভেরিয়েবলের মান প্রদর্শন করতেও ব্যবহার করা যেতে পারে।
অন্য সমস্ত আর্গুমেন্ট ঐচ্ছিক।
[ বোতাম ] - কোন বোতাম এবং আইকনগুলি তা নির্ধারণ করে MsgBox এ প্রদর্শিত হয়। উদাহরণস্বরূপ, যদি আমরা vbOkOnly বিকল্পটি ব্যবহার করি, তবে শুধুমাত্র OK বোতামটি প্রদর্শিত হবে। এমনকি যদি আপনি এই যুক্তিটি মিস করেন, এই বোতামটি ডিফল্টরূপে ব্যবহার করা হয়।
[ শিরোনাম ] - এখানে আপনি বার্তা বাক্সের শিরোনাম নির্দিষ্ট করতে পারেন।
চলুন এখান থেকে পরিবর্তন করা যাক অনুশীলন এবং ডিবাগিং শুরু করার জন্য শব্দ। প্রদর্শন করতেবার্তা, কেস এলস অপারেটরের আগে GetMaxBetween ব্যবহারকারী-সংজ্ঞায়িত ফাংশনের কোডে নিম্নলিখিত লাইনটি যোগ করুন:
MsgBox vMax,, "Count -" & iএখানে আমরা ফলাফলে যা পাব:
ফাংশন GetMaxBetween(rngCells As Range, MinNum, MaxNum) Dim NumRange As Range Dim vMax Dim arrNums() Dim i As Integer ReDim arrNums(rngCells.Count) rngCells vMax = NumRange-এ প্রতিটি সংখ্যার জন্য কেস vMax কেস MinNum + 0.01 থেকে MaxNum - 0.01 arrNums(i) = vMax i = i + 1 MsgBox vMax, "গণনা -" & i Case Else GetMaxBetween = 0 End Select Next NumRange GetMaxBetween = WorksheetFunction.Max(arrNums) এন্ড ফাংশনডায়ালগ বক্সে vMax ভেরিয়েবল ব্যবহার করে, আমরা দেখব কোন সংখ্যাগুলি নির্বাচনের মানদণ্ড পূরণ করে, তাই যে আমরা তাদের মধ্যে সবচেয়ে বড় নির্বাচন করতে পারি। অভিব্যক্তির সাথে "গণনা -" & আমি শিরোনাম বারে, আমরা সর্বাধিক মান নির্ধারণ করতে ইতিমধ্যে কতগুলি সংখ্যা নির্বাচন করেছি তা নির্দেশ করে। প্রতিটি নতুন মানের সাথে কাউন্টারটি বাড়ানো হবে।
আমাদের UDF সেট হয়ে গেলে, আমরা তারিখের সীমাতে নিচের সূত্রটি প্রয়োগ করি:
= GetMaxBetween (A1:A6,10,50)
এন্টার বোতামের পরে চাপলে, আপনি নীচের স্ক্রিনশটের মতো একটি বার্তা দেখতে পাবেন:
এটি A1: A6 পরিসরের প্রথম সংখ্যা যা মানদণ্ড পূরণ করে: 10-এর বেশি কিন্তু কম 50 এর চেয়ে।
আপনি ঠিক আছে ক্লিক করার পরে, 14 নম্বর সহ একটি দ্বিতীয় বার্তা উপস্থিত হবে। বাকি নম্বরগুলি নির্বাচনের সাথে মেলে নানির্ণায়ক. অতএব, ফাংশনটি প্রস্থান করে এবং দুটি মানের মধ্যে সবচেয়ে বড়টি ফেরত দেয়, 17.
MsgBox ফাংশনটি মানগুলি কীভাবে নিয়ন্ত্রণ করতে আপনার কাস্টম ফাংশনের সবচেয়ে গুরুত্বপূর্ণ স্থানে ব্যবহার করা যেতে পারে পৃথক পরিবর্তনশীল পরিবর্তন. আপনার যখন একটি বড় ফাংশন এবং প্রচুর গণনা থাকে তখন বার্তা বাক্সগুলি খুব কার্যকর হতে পারে। এই ক্ষেত্রে, কোডের কোন অংশে ত্রুটি ঘটেছে তা নির্ধারণ করা আপনার পক্ষে সহজ হবে।
স্টপিং পয়েন্টগুলি নির্ধারণ করুন এবং ধাপে ধাপে সম্পাদন করুন
আপনি কোডে ব্রেকপয়েন্ট যোগ করতে পারেন আপনার ফাংশন যেখানে কোড এক্সিকিউশন বন্ধ হবে। সুতরাং আপনি ধাপে ধাপে গণনা প্রক্রিয়া অনুসরণ করতে পারেন। এটি করার মাধ্যমে, আপনি ভেরিয়েবলের মানগুলি কীভাবে পরিবর্তিত হয় তা দেখতে পারেন।
একটি ব্রেকপয়েন্ট যোগ করতে, বিবৃতি সহ লাইনে কার্সার রাখুন যেখানে আপনি বিরতি দিতে চান। তারপরে ডান-ক্লিক করুন এবং ডিবাগ -> ব্রেকপয়েন্ট টগল করুন অথবা শুধু F9 টিপুন। এছাড়াও আপনি ফাংশন কোডের বাম দিকে উল্লম্ব ধূসর এলাকায় পছন্দসই স্থানে ক্লিক করতে পারেন।
একটি লাল বৃত্ত প্রদর্শিত হবে, আপনি নীচের স্ক্রিনশটে দেখতে পাচ্ছেন। কোডের লাইন যেখানে গণনা বন্ধ করা হবে লাল রঙে হাইলাইট করা হয়েছে।
এখন, যখন ফাংশনটি চলছে তখন VBA সম্পাদক উইন্ডোটি খোলা হবে। আপনি যেখানে থামলেন সেখানে কার্সারটি থাকবে।
যদি আপনি ফাংশন কোডের যেকোনো ভেরিয়েবলের উপর আপনার মাউস কার্সার ঘোরান, আপনি তাদের বর্তমান দেখতে পাবেনমান:
গণনা চালিয়ে যেতে F5 টিপুন।
নোট। ব্রেকপয়েন্টের পরে, আপনি ধাপে ধাপে গণনার অগ্রগতি ট্র্যাক করা শুরু করতে পারেন। আপনি যদি F8 বোতাম টিপুন, VBA কোডের শুধুমাত্র একটি পরবর্তী লাইন কার্যকর করা হবে। একটি তীর সহ হলুদ লাইনটি শেষ কার্যকর করা কোড অবস্থানে চলে যাবে।
যেহেতু ফাংশনের এক্সিকিউশন আবার পজ করা হয়েছে, আপনি মাউস কার্সার ব্যবহার করে ফাংশনের সমস্ত ভেরিয়েবলের বর্তমান মান দেখতে পারবেন।
F8 এর পরবর্তী প্রেস আমাদের এক ধাপ এগিয়ে নিয়ে যাবে . সুতরাং আপনি গণনা শেষ পর্যন্ত F8 টিপতে পারেন। অথবা পরবর্তী ব্রেকপয়েন্ট পর্যন্ত গণনা চালিয়ে যেতে F5 টিপুন।
যদি একটি ত্রুটি ঘটে, কার্সারটি কোডের সেই পয়েন্টে বন্ধ হয়ে যাবে যেখানে ত্রুটি ঘটেছে। এবং আপনি একটি পপ-আপ ত্রুটি বার্তাও দেখতে পাবেন। এটি সমস্যার কারণ নির্ণয় করা সহজ করে তোলে৷
আপনি ফাইলটি বন্ধ না করা পর্যন্ত আপনার নির্দিষ্ট করা ব্রেকপয়েন্টগুলি প্রয়োগ করা হবে৷ আপনি যখন এটি আবার খুলবেন, তখন আপনাকে সেগুলি আবার সেট করতে হবে। সবচেয়ে সুবিধাজনক পদ্ধতি নয়, আপনি কি মনে করেন না?
তবে, এই সমস্যাটি সমাধান করা যেতে পারে। প্রয়োজনীয় পয়েন্টগুলিতে ফাংশন কোডে একটি স্টপ বিবৃতি সন্নিবেশ করান, এবং আপনি ব্রেকপয়েন্ট ব্যবহার করার সময় যেভাবে প্রোগ্রাম এক্সিকিউশন বন্ধ করতে পারেন।
যখন VBA একটি Stop স্টেটমেন্টের সম্মুখীন হয়, তখন এটি প্রোগ্রাম এক্সিকিউশন বন্ধ করবে এবং আপনার অ্যাকশনের জন্য অপেক্ষা করবে। তারপর ভেরিয়েবলের মান পরীক্ষা করুনচালিয়ে যেতে F5 টিপুন।
অথবা উপরে বর্ণিত ফাংশনটি ধাপে ধাপে সম্পন্ন করতে F8 টিপুন।
স্টপ বিবৃতিটি প্রোগ্রামের অংশ এবং তাই মোছা হয়নি, যেমনটি ব্রেকপয়েন্টের ক্ষেত্রে। আপনি ডিবাগিং সম্পন্ন হলে, এটি নিজেই সরান। অথবা একটি একক উদ্ধৃতি (') দিয়ে এটিকে একটি মন্তব্যে পরিণত করুন।
Debug.Print অপারেটর ব্যবহার করে ডিবাগ করা
আপনি Debug.Print -এ রাখতে পারেন সঠিক জায়গায় ফাংশন কোড। এটি চক্রাকারে পরিবর্তনশীল ভেরিয়েবলের মানগুলি পরীক্ষা করার জন্য দরকারী৷
আপনি নীচের স্ক্রিনশটে ডিবাগের একটি উদাহরণ দেখতে পারেন৷ প্রিন্টের কর্মক্ষমতা৷
বিবৃতি ডিবাগ।প্রিন্ট i, vMax মান এবং তাদের অর্ডিনাল সংখ্যাগুলি প্রিন্ট করে।
তাৎক্ষণিক উইন্ডোতে আপনি নির্বাচিত পরিসর থেকে দুটি সংখ্যা (17 এবং 14) দেখতে পাবেন, যা সীমা নির্ধারণ করুন এবং যার মধ্যে সর্বাধিক নির্বাচন করা হবে। সংখ্যা 1 এবং 2 এর অর্থ হল ফাংশনটি 2টি চক্র সম্পন্ন করেছে যেখানে সংখ্যাগুলি নির্বাচন করা হয়েছিল৷ আমরা সবচেয়ে গুরুত্বপূর্ণ ভেরিয়েবলের মান দেখতে পাই, যেমনটি আমরা আগে MsgBox দিয়েছিলাম। কিন্তু এটি ফাংশনটি বন্ধ করেনি৷
একটি পদ্ধতি থেকে একটি ফাংশন কল করুন
আপনি ওয়ার্কশীটের একটি সেল থেকে নয়, একটি পদ্ধতি থেকে একটি ব্যবহারকারীর সংজ্ঞায়িত ফাংশন কল করতে পারেন৷ এই ক্ষেত্রে, সমস্ত ত্রুটিগুলি ভিজ্যুয়াল বেসিক এডিটর উইন্ডোতে দেখানো হবে৷
এখানে আপনি কীভাবে ব্যবহারকারী-সংজ্ঞায়িত ফাংশনটিকে একটি থেকে GetMaxBerween কল করতে পারেনপদ্ধতি:
সাব টেস্ট() Dim x x = GetMaxBetween(Range ( "A1:A6" ), 10, 50) MsgBox(x) End Subকোডের যেকোনো জায়গায় কার্সারের অবস্থান করুন এবং F5 টিপুন। ফাংশনে কোনো ত্রুটি না থাকলে, আপনি গণনার ফলাফল সহ একটি পপ-আপ উইন্ডো দেখতে পাবেন৷
কোন ত্রুটির ক্ষেত্রে, আপনি VBA সম্পাদকে একটি সংশ্লিষ্ট বার্তা দেখতে পাবেন৷ গণনা বন্ধ করা হবে এবং কোডের লাইনটি যেটিতে ত্রুটি ঘটেছে তা হলুদ রঙে হাইলাইট করা হবে। আপনি সহজেই সনাক্ত করতে পারেন কোথায় এবং কেন ত্রুটি ঘটেছে।
এটুকুই। এখন আপনি নিজের অ্যাড-ইন তৈরি করেছেন, এটি এক্সেলে যোগ করেছেন এবং আপনি এতে UDF ব্যবহার করতে পারেন। আপনি যদি আরও UDF ব্যবহার করতে চান, তাহলে VBA সম্পাদকের অ্যাড-ইন মডিউলে কোডটি লিখুন এবং এটি সংরক্ষণ করুন।
আজকের জন্য এটাই। আমরা কাস্টম ফাংশন ডিবাগ করার বিভিন্ন উপায় কভার করেছি এবং আপনার ওয়ার্কবুকে সেগুলি কীভাবে ব্যবহার করতে হয় তা শিখেছি। আমরা সত্যিই আশা করি আপনি এই নির্দেশিকাগুলি সহায়ক বলে মনে করেন। যদি আপনার কোন প্রশ্ন থাকে, এই নিবন্ধে মন্তব্য লিখুন.