ה-statment:
Set פועל רק לגבי אובייקטים.
כדי לבצע פעולת השמה יש להשתמש ב-Let:
Let iMyInteger = 58מאז ימי הBASIC FOR ATARI בערך, לא משתמשים בזה, ועושים השמה ישירות:
iMyInt = 58
Set מוגדר לגבי אובייקטים(ב-VB מגודבר בעצם בהפניות לאובייקטי ActiveX)
Dim oMyObject as CMyClass
Set oMyObject = New cMyClass
...
Set oMyObject = Nothing
בקוד למעלה:
*אני מצהיר על משתנה מסוג של מחלקה מסויימת(המשתנה הינו הםניה לאובייקט)
*אני יוצר אובייקט חדש מאותו סוג, ומשים הפניה לאותו אובייקט במשתנה שלי.
*עושה מה שאני עושה...
*שם במשתנה שלי(הפניה לאובייקט, לא האובייקט עצמו) Nothing - כלומר הפניה ריקה.
הדבר משמש למנגון ה-Reference Counting של COM, ע"מ לדעת מתי לפרק את האובייקט.
אתה ***לא יכול*** לשים למשתנה רגיל Nothing, רק ל***הפניה***(פויינטר :-)).
יש מבין?
יופי.
כאשר אתה עושה:
Dim vMyVariant
זה שקול ל:
Dim vMyVariant As Variant
Variant הוא סוג משתנה מאוד בזבזני, שיכול לקבל כל ערך(הפניה לאובייקט, או כל סוג פרימיטיבי).
אל תעשה ככה, לעולם!