কীওয়ার্ড সেটটি আসলে ভিবিএতে কি করে?


150

আশা করি একটি সহজ প্রশ্ন, তবে আমি এর একটি প্রযুক্তিগত উত্তর চাই!

এর মধ্যে পার্থক্য কী:

i = 4

এবং

Set i = 4

ভিবিএতে? আমি জানি যে উত্তরোত্তর একটি ত্রুটি ফেলবে, তবে কেন তা আমি পুরোপুরি বুঝতে পারি না।


উত্তর:


95

setএকটি অবজেক্টের রেফারেন্স বরাদ্দ করতে ব্যবহৃত হয়। সি সমতুল্য হবে

 int i;
int* ref_i;

i = 4; // Assigning a value (in VBA: i = 4)
ref_i = &i; //assigning a reference (in VBA: set ref_i = i)

5
কোনও ভিবি অবজেক্ট রেফারেন্স সি পয়েন্টারের মতো একরকম নয়। এবং ভিবিতে "& i" এর সমতুল্য নেই।
টমলাক

10
না একেবারে একই, না। কিন্তু ধারণাটি বুঝতে আমার পক্ষে যথেষ্ট পরিমাণে বন্ধ করুন।
ট্রেব

@ তোমালাক: আপনি VarPtr ()
Atmocreations

এটি একটি ভাল উপমা নয়। এই উদাহরণে (নিন VBA on the left | C on the right): Dim A, B As Range | Range A, B;। আপনার সাদৃশ্যটির সাথে যাওয়া A = B | A = B;সঠিক হবে (এবং এটি সিতে হবে), তবে Set A = B | A = &B;আসলে ভিবিএতে সঠিক (এবং এটি সিতে ব্যর্থ হবে)। ভিবিএতে, A = Bএবং Set A = Bদুটি সি এর সমতুল্য A = B;! পার্থক্য অন্য কোথাও ঘটে।
নিকো হে

77

আপনার ক্ষেত্রে এটি ত্রুটি তৈরি করবে। :-)

Setএকটি অবজেক্ট রেফারেন্স বরাদ্দ করে। অন্যান্য সমস্ত অ্যাসাইনমেন্টের জন্য (অন্তর্ভুক্ত, alচ্ছিক এবং স্বল্প-ব্যবহৃত) Letবিবৃতিটি সঠিক:

Set object = New SomeObject
Set object = FunctionReturningAnObjectRef(SomeArgument)

Let i = 0
Let i = FunctionReturningAValue(SomeArgument)

' or, more commonly '

i = 0
i = FunctionReturningAValue(SomeArgument)

44

এমএসডিএন থেকে :

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


ভাল পাওয়া গেছে, তবে এমএসডিএন-তে আপনি যে নিবন্ধটি পেয়েছেন তার লিঙ্কটি আরও ভাল হবে :)
নীল বার্নওয়েল

1
@ নীল - আপনি যদি আমার পোস্টে এমএসডিএন ক্লিক করেন তবে লিঙ্কটি সেখানে রয়েছে।
গ্যালিশিয়ান

2
এমএসডিএন অনুলিপি করার সময়, কমপক্ষে সঠিক নিবন্ধটি। এইটি ভিবিএকে নয়, ভিবি.এন.টি.
টমলক

1
ওপি ভিবিএ সম্পর্কে জিজ্ঞাসা করছে, এবং সেটের তথ্য .NET- তে ব্যবহারের জন্য আর প্রয়োজনীয় নয় যদিও এটি Object variable or With block variable not set
ভিবিএর

7
এমএসডিএন থেকে উত্তোলনের জন্য আপনাকে অনেক ধন্যবাদ। অন্যান্য সমস্ত উত্তর, এমনকি গৃহীত উত্তরগুলি বিন্দুটি অনুপস্থিত। 'সেট' হ'ল ডিফল্ট প্রোপার্টি সম্পর্কে। শুধু পড়া stackoverflow.com/a/9924325/717732
quetzalcoatl

10

মান নির্ধারণের বিপরীতে সেটটি অবজেক্ট রেফারেন্স সেট করার জন্য ব্যবহৃত হয়।


1

আমার মাথার উপরে, সেটটি ভেরিয়েবলগুলিতে COM অবজেক্টগুলি নির্ধারিত করতে ব্যবহৃত হয়। একটি সেট করে আমার সন্দেহ হয় যে এই আড়ালের নীচে এটি তার আজীবন পরিচালনা করার জন্য কোনও অ্যাড্রেফ () কল করছে।


1
এটি কেবল COM অবজেক্টের জন্য নয়, সমস্ত বস্তুর জন্য ব্যবহৃত হয়। আপনি এসইটি ব্যবহারের মূল কারণটি গালুশিয়ান ব্যাখ্যা করেছেন।
ইক্কে

0

সুতরাং যখন আপনি একটি মান সেট করতে চান, আপনার "সেট" লাগবে না; অন্যথায়, আপনি যদি কোনও অবজেক্টের উল্লেখ করছেন, যেমন ওয়ার্কশিট / রেঞ্জ ইত্যাদি, আপনার "সেট" ব্যবহার করা দরকার।


-1

সেট একটি কীওয়ার্ড এবং এটি ভিবিএতে কোনও অবজেক্টের রেফারেন্স নির্ধারণ করতে ব্যবহৃত হয়।

উদাহরণস্বরূপ, * নীচের উদাহরণে ভিবিএতে সেট কীভাবে ব্যবহার করতে হয় তা দেখায়।

ওয়ার্কশিট হিসাবে ডিম ডাব্লুএস

ডাব্লুএস = অ্যাক্টিভ ওয়ার্কবুক. ওয়ার্কশিটস ("পত্রক 1") সেট করুন

WS.Name = "অমিত"

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.