উত্তর:
নন-অবজেক্ট রিটার্নের ধরণের জন্য, আপনাকে নিজের ফাংশনের নামের জন্য এই মানটি নির্ধারণ করতে হবে:
Public Function test() As Integer
test = 1
End Function
ব্যবহারের উদাহরণ:
Dim i As Integer
i = test()
যদি ফাংশনটি কোনও অবজেক্টের ধরণটি দেয়, তবে আপনাকে অবশ্যই এই Set
কীওয়ার্ডটি ব্যবহার করতে হবে :
Public Function testRange() As Range
Set testRange = Range("A1")
End Function
ব্যবহারের উদাহরণ:
Dim r As Range
Set r = testRange()
নোট করুন যে ফাংশন নামে একটি রিটার্ন মান নির্ধারণ করা আপনার ফাংশনটির সম্পাদন শেষ করে না। আপনি যদি ফাংশনটি থেকে প্রস্থান করতে চান, তবে আপনাকে স্পষ্টভাবে বলতে হবে Exit Function
। উদাহরণ স্বরূপ:
Function test(ByVal justReturnOne As Boolean) As Integer
If justReturnOne Then
test = 1
Exit Function
End If
'more code...
test = 2
End Function
ডকুমেন্টেশন: http://msdn.microsoft.com/en-us/library/office/gg264233%28v=office.14%29.aspx
Range
উদাহরণস্বরূপ), Set
কোনও নিয়মিত পদ্ধতিতে কোনও অবজেক্ট ভেরিয়েবল সেট করার সময় আপনার ঠিক তেমনটি ব্যবহার করা দরকার । সুতরাং, উদাহরণস্বরূপ, যদি "পরীক্ষা" এমন কোনও ফাংশন ছিল যা একটি পরিসীমা ফেরত দেয় রিটার্নের বিবৃতিটি এর মতো দেখায় set test = Range("A1")
।
set
করলে সমস্যা দেখা দিতে পারে। আমি এটি ছাড়াই এটি করতে সমস্যা ছিল, তবে আমি যদি ব্যবহার set
করি তবে আমি তা করব না :)।
set test = Range("A1")
সমান test = Range("A1").Value
, যেখানে "পরীক্ষা "টি একটি পরিসরের পরিবর্তে ভেরিয়েন্ট হিসাবে সংজ্ঞায়িত করা হয়।
ভিবিএ ফাংশন ফাংশনটির নামটি নিজেকে ভেরিয়েবলের হিসাবে বিবেচনা করে। সুতরাং "" return
"স্টেটমেন্ট ব্যবহার না করে আপনি কেবল বলেছেন:
test = 1
তবে খেয়াল করুন যে এটি ফাংশনটির বাইরে চলে না। এই বিবৃতিটির পরে যে কোনও কোডও কার্যকর করা হবে। সুতরাং, আপনার অনেক অ্যাসাইনমেন্ট স্টেটমেন্ট থাকতে পারে যা বিভিন্ন মানকে নির্ধারিত করে test
এবং ফাংশনের শেষে পৌঁছানোর পরে মানটি যাই হোক না কেন মান ফিরে আসবে।
কেবলমাত্র ফাংশন নামে রিটার্ন মান নির্ধারণ করা জাভা (বা অন্যান্য) স্টেটমেন্টের ঠিক ঠিক একই নয় return
, কারণ জাভাতে, return
ফাংশনটি এইভাবে প্রস্থান করে:
public int test(int x) {
if (x == 1) {
return 1; // exits immediately
}
// still here? return 0 as default.
return 0;
}
ভিবিতে, আপনি যদি আপনার ফাংশন শেষে রিটার্ন মান সেট না করে থাকেন তবে সঠিক সমতুল্য দুটি লাইন নেয় । সুতরাং, ভিবিতে সঠিক করোলারিটি দেখতে এমন হবে:
Public Function test(ByVal x As Integer) As Integer
If x = 1 Then
test = 1 ' does not exit immediately. You must manually terminate...
Exit Function ' to exit
End If
' Still here? return 0 as default.
test = 0
' no need for an Exit Function because we're about to exit anyway.
End Function
যেহেতু এটি কেস, আপনি এটি পদ্ধতিতে অন্যান্য ভেরিয়েবলের মতো রিটার্ন ভেরিয়েবল ব্যবহার করতে পারেন তা জেনেও খুব ভাল। এটার মত:
Public Function test(ByVal x As Integer) As Integer
test = x ' <-- set the return value
If test <> 1 Then ' Test the currently set return value
test = 0 ' Reset the return value to a *new* value
End If
End Function
অথবা, চরম উদাহরণ কীভাবে প্রত্যাবর্তন পরিবর্তনশীল কাজ (কিন্তু অগত্যা একটি ভাল উদাহরণ কিভাবে আপনি উচিত আসলে কোড) যে সময়টাতে এক যে আপনি রাতে আপ রাখুন হবে:
Public Function test(ByVal x As Integer) As Integer
test = x ' <-- set the return value
If test > 0 Then
' RECURSIVE CALL...WITH THE RETURN VALUE AS AN ARGUMENT,
' AND THE RESULT RESETTING THE RETURN VALUE.
test = test(test - 1)
End If
End Function
Variant
এবং আপনার লক্ষ্যটি অ্যারে ফেরত দেয় তবে এর মতো কিছু ReDim test(1 to 100)
ত্রুটি ঘটবে। এছাড়াও, যদিও এটির মতো মৌলিক ধরণের চিকিত্সা করা সম্ভব তবে এটি Integers
কিছুটা ইউনিডিয়ম্যাটিক হিসাবে বিবেচিত হয়। এটি কোড পড়তে আরও শক্ত করে তোলে। ভিবিএ প্রোগ্রামাররা লাইনগুলির জন্য স্ক্যান করে যা কোনও ফাংশন কী করে তা বোঝার জন্য ফাংশনটির নাম নির্ধারণ করে। নিয়মিত পরিবর্তনশীল হিসাবে ফাংশনটির নাম ব্যবহার করা অযথা এটিকে অস্পষ্ট করে।
Exit Function
সম্পর্কিত তা ব্যাখ্যা করার জন্য ধন্যবাদreturn
ReDim test(1 to 100)
কোনও ত্রুটি ট্রিগার ছাড়াই পারবেন না কেবল কারণ 'পরীক্ষা' অ্যারে হিসাবে ঘোষণা করা হয়নি! এবং অন্য কোনও কারণে নয়! আপনি কোনও ক্রিয়াকে অ্যারে হিসাবে ঘোষণা করতে পারবেন না। এটিকে একটি হিসাবে ঘোষণা করুন Variant
, তারপরে এই ফাংশনের অভ্যন্তরে কেবল আপনার আউটপুট অ্যারে (এটি ডায়নামিক বা স্ট্যাটিক হতে পারে) তৈরি করুন test
এবং তারপরে ("=") এই অ্যারেটিকে test
একটি ফেরতের মান হিসাবে বরাদ্দ করুন । ReDim
এনিংস করার মতো আরও কৌশলগত করার জন্য আপনাকে ফিরিয়ে দেওয়া মানটি একটি ভেরিয়েবলের জন্য বরাদ্দ করতে হবে, উদাহরণস্বরূপ Dim x as Variant
এবং কল করুন x = test
, তারপরে আপনি যা x
করেছেন তা হ'ল test
!