سؤال

في بعض VBA المرتبطة بجدول بيانات Excel 2003 ، أحتاج إلى الاستفادة من بعض الكائنات التي تستغرق بعض الوقت حتى التنشئة - لذلك أريد فقط أن أفعل الشيء "Set" مرة واحدة ...

من الأسهل عرض الكود بدلاً من كتابة تفسير!

' Declare the expensive object as global to this sheet
Dim myObj As SomeBigExpensiveObject

Private Sub CommandButtonDoIt_Click()

   ' Make sure we've got a ref to the object
   If IsEmpty(myObj) Then  ' this doesn't work!
      Set myObj = New SomeBigExpensiveObject
   End If

   ' ... etc

End Sub

كيف يمكنني التحقق مما إذا كان myobj قد تم تعيينه بالفعل؟

لقد جربت isnull (myobj) و isempty (myobj) - كلاهما تخطي "المجموعة" ، بغض النظر عن حالة myobj. لا أستطيع أن أفعل

if myObj = Nil then

أو

if myObj = Empty then

أو

if myObj = Nothing then

أيه أفكار؟

سال

هل كانت مفيدة؟

المحلول

هذا يجب أن يعمل:

    If myObj IS Nothing Then

(لاحظ أن "IS") إذا لم ينجح ذلك ، فيجب أن يكون هناك تجويف غير متزامن يتم تنفيذه على وجه التحديد بواسطة تلك الفئة لأن مكالمات init com متزامنة بشكل افتراضي. لذلك ، تحتاج إلى التحقق من المستند لـ DOC ، أو التحدث إلى المطور حول ، الفئة الكبيرة لبعض الممتلكات أو طريقة التزامن لكي تنتظرها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top