ভিবিএ পরীক্ষা করে দেখুন যে বস্তুটি সেট করা আছে কি না


91

আমার কাছে একটি বৈশ্বিক পরিবর্তনশীল যা আমার কাস্টম শ্রেণীর উদাহরণ।

অবজেক্টটি সেট করা আছে কিনা বা এটি শুরু করার দরকার হলে আমি কীভাবে চেক করব?

উত্তর:


138
If obj Is Nothing Then
    ' need to initialize obj: '
    Set obj = ...
Else
    ' obj already set / initialized. '
End If

বা, আপনি যদি এটিকে অন্য উপায়ে পছন্দ করেন:

If Not obj Is Nothing Then
    ' obj already set / initialized. '
Else
    ' need to initialize obj: '
    Set obj = ...
End If

4
আমি জানতাম যখন আমি এটি গুগল করেছিলাম এবং কিছুই খুঁজে পেলাম তখন এটি সরল হতে হবে! আপনার সাহায্যের জন্য ধন্যবাদ!
Icode4food

4
নোট করুন যে চেকিং obj Is Nothingচেকিংয়ের মতো নয় IsNothing(obj)! এটি পরীক্ষা করার জন্য সঠিক সিনট্যাক্সের জন্য ধন্যবাদ ... কারণ কেন IsNothing()অন্যরকম আচরণ করে তা নিশ্চিত নয় ...
ম্যাট ব্রাউন

4
আমি Not (obj Is Nothing)বুঝতে চেয়ে সহজ মনে করি Not obj Is Nothing। আমার মস্তিষ্ক জানে না "আপত্তি নয়" কী!
মার্টিন এফ

আপনি এটিও লিখতে পারেন: যদি আপত্তি ইসনট না হয় যা আমি এটিকে বাকিগুলির থেকে অনেক বেশি পরিষ্কার মনে করি। এটিও সি # (ওজবি! = নাল) এর মতোই অনুভূত হচ্ছে
আলেকজান্দ্রে

4

এটি করার নিরাপদ উপায় - আপনি যদি বিকল্পটি সুস্পষ্টভাবে ব্যবহার না করে থাকেন তবে তা হ'ল ...

Not TypeName(myObj) = "Empty"

যদি বিষয়টি ঘোষিত না করা হয় তবে এটি কেস পরিচালনা করে। আপনি যদি কিছু আচরণ বন্ধ করে দেওয়ার জন্য কোনও ঘোষণাপত্রটি মন্তব্য করতে চান তবে এটি দরকারী ...

Dim myObj as Object
Not TypeName(myObj) = "Empty"  '/ true, the object exists - TypeName is Object

'Dim myObj as Object
Not TypeName(myObj) = "Empty"  '/ false, the object has not been declared

এটি কাজ করে কারণ ভিবিএ খালি ভেরিয়েন্ট প্রকার হিসাবে একটি অঘোষিত ভেরিয়েবল স্বয়ংক্রিয়ভাবে ইনস্ট্যান্ট করবে। এটি আচরণ পরিচালনার জন্য সহায়ক বুলিয়ানের প্রয়োজনীয়তা দূর করে।


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

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

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