دستور Dim: اعلان متغیرها و اختصاص فضای حافظه

دستور Dim در VBA برای اعلان متغیرها و اختصاص فضای حافظه به یک شناسه کاربرد دارد.

Syntax:


Dim [ WithEvents ] varname [ ( [ subscripts ] ) ][ As [ New ] type ][ , [ WithEvents ] varname [ ( [ subscripts ] ) ] [ As [ New ] type ]] . . .

دستور Dim از قسمت های زیر تشکیل شده است:

قسمت توضیحات
WithEvents اختیاری. کلمه کلیدی که مشخص می نماید که نام متغیر (varname) یک متغیر شیء (object variable) است و برای پاسخگویی به رویدادی که توسط یک شیء اکتیوایکس (ActiveX object) راه اندازی می شود استفاده می شود. WithEvents فقط در ماژول کلاس معتبر می باشد. می توانید به هر تعداد که می خواهید متغیر با WithEvents اعلان نمایید، ولی امکان اعلان آرایه (arrays) با WithEvents وجود ندارد. نمی توانید کلمه کلیدی New را با WithEvents بکار ببرید.
به زبان ساده WithEvents در ماژول کلاس برای اعلان متغیری که می تواند رویداد بپذیرد بکار می رود.
varname الزامی. نام متغیر؛ می بایست طبق استاندارد نامگذاری متغیر تعیین شود.
subscripts اختیاری. ابعاد یک متغیر آرایه را تعیین می نماید؛ حداکثر تا 60 بعد می تواند اعلان گردد. آرگومان subscripts از ساختار زیر استفاده می نماید:
[ lower To ] upper [ , [ lower To ] upper ] . . ..

وقتی کران پایین (lower) بصورت واضح تعیین نشود، کران پایین یک آرایه به وسیله دستور Option Base کنترل می شود. در صورتی که از دستور Option Base استفاده نشود کران پایین صفر خواهد بود.
New اختیاری. کلمه کلیدی که برای ایجاد مجازی یک شیء بکار می رود. اگر از New زمانی که متغیر شیء را اعلان می نمایید استفاده نمایید، یک نمونه جدید از شیء مرجع ایجاد می کند، بنابراین مجبور نیستید از دستور Set برای اختصاص شیء مرجع استفاده نمایید.
type اختیاری. نوع داده متغیر؛ ممکن است Byte، Boolean، Integer، Long، Currency، Single، Double، Decimal (در حال حاضر پشتیبانی نمی شود)، Date، String (برای String با طول متغیر)، String length (برای String با طول ثابت)، Object، Variant، یک نوع داده تعریف شده توسط کاربر و یا یک object type باشد. بند As type را برای هر متغیر که اعلان می نمایید جداگانه استفاده نمایید.

ملاحظات:

متغیرهایی که با استفاده از دستور Dim در سطح ماژول اعلان شده باشند، برای همه روال های همان ماژول در دسترس می باشند. در مورد متغیرهایی که در سطح روال اعلان می شوند، این موضوع صدق نمی کند و این متغیرها فقط در سطح همان روال در دسترس می باشند.

برای اعلان نوع داده متغیر از دستور Dim در سطح ماژول و یا روال استفاده نمایید. برای مثال دستور زیر یک متغیر از نوع داده Integer را اعلان می نماید.


Dim NumberOfEmployees As Integer

همچنین برای اعلان یک متغیر نوع شیء از دستور Dim استفاده نمایید. در مثال زیر متغیر اعلان شده یک نمونه جدید از worksheet (کاربرگ اکسل) می باشد.


Dim X As New Worksheet

اگر کلمه کلیدی New وقتی که یک متغیر شیء اعلان می گردد استفاده نگردد، متغیری که به شیء اشاره دارد، قبل از اینکه بتواند مورد استفاده قرار بگیرد باید توسط دستور Set به یک شیء موجود (شی ای که در Object Browser موجود باشد) انتساب گردد. تا زمانی که متغیر شیء اعلان شده به یک شیء خاص انتساب نگردد، مقدار خاص Nothing را خواهد داشت، که حاکی از آن است که به هیچ نمونه ای از یک شیء خاص اشاره ندارد.

شما همچنین می توانید برای اعلان یک آرایه دینامیک از دستور Dim با پرانتزهای خالی استفاده نمایید. بعد از اعلان آرایه دینامیک از دستور ReDim در سطح یک روال برای تعیین ابعاد و عناصر آرایه خود استفاده نمایید. اگر تلاش نمایید که ابعاد یک آرایه را که اندازه آن (ابعاد آن) بصراحت توسط یک دستور Private، Public یا Dim مشخص شده است را دوباره اعلان نمایید، خطا رخ خواهد داد.

اگر در اعلان متغیر نوع داده یا نوع شیء را مشخص ننمایید، و دستور Deftype در ماژول استفاده نشده باشد، متغیر بصورت پیشفرض Variant می باشد.

وقتی متغیرها مقدار دهی اولیه می شوند (پس از اعلان متغیرها، VBA بصورت پیش فرض متغیرها را مقداردهی اولیه می نماید. توجه داشته باشد امکان مقداردهی توسط کاربر خارج از روال در زبان برنامه نویسی VBA وجود ندارد) متغیر عددی به صفر، متغیر string با طول متغیر به یک رشته خالی (“”)، متغیر string با طول ثابت با صفر پر میشود (بعنوان مثال اگر طول رشته ۳ باشد 000 مقداردهی اولیه می باشد). متغیرهای Variant به تهی (Empty) مقداردهی اولیه می شوند. هر عنصر از یک نوع متغیر کاربر با این فرض که هر یک از عناصر یک متغیر جداگانه هستند مقدار دهی اولیه خواهد شد.

نکته
وقتی از دستور Dim درون روال استفاده می نمایید، به طور کلی باید دستور Dim را در ابتدای روال قرار دهید.

آیا می‌دانید:

با یادگیری VBA در اکسل، می‌توانید فرآیندهای تکراری را به‌طور خودکار انجام دهید و زمان بیشتری برای تحلیل داده‌ها صرف کنید. این زبان قدرتمند به شما امکان می‌دهد تا ماکروهای سفارشی ایجاد کنید و وظایف پیچیده را به‌سادگی مدیریت کنید.

مثال

این مثال کاربرد دستور Dim را در اعلان متغیرها و اعلان آرایه ها نمایش می دهد. کران پایین پیش فرض برای اندیس آرایه ها 0 (صفر) می باشد و در سطح ماژول می تواند با استفاده از دستور Option Base لغو گردد.


Dim AnyValue, MyValue 
Dim Number As Integer 
Dim AnotherVar, Choice As Boolean , BirthDate As Date 
Dim DayArray(50) 
Dim Matrix(3, 4) As Integer 
Dim MyMatrix(1 To 5, 4 To 9, 3 To 5) As Integer 
Dim BirthDay(1 To 10) As Date 
Dim MyArray()

خط ۱: متغیرهای AnyValue و MyValue بعنوان داده Variant اعلان شده اند با داده اولیه پیش فرض Empty

خط ۲: اعلان صریح یک متغیر از نوع داده Integer با استفاده از دستور Dim می باشد.

خط ۳: اعلان چند متغیر در یک خط می باشد، AnotherVar از نوع داده Variant می باشد چرا که نوع آن حذف شده است. همانطور که می بینید برای اعلان چند متغیر در یک خط باید از “,” (کاما) بین هر کدام از متغیرها استفاده شود.

خط ۴: DayArray یک آرایه از نوع Variant است که ۵۱ عنصر در آن فهرست شده است از ۰ تا 50. فرض بر این است که در این ماژول Option Base روی 0 (صفر) (مقدار پیشفرض) تنظیم شده است.

خط ۵: Matrix یک آرایه دو بعدی از نوع داده integer می باشد.

خط ۶: MyMatrix یک آرایه سه بعدی از نوع داده doubles با کران های مشخص شده می باشد.

خط ۷: BirthDay یک آرایه از نوع داده date می باشد که از یک تا ۱۰ فهرست شده است.

خط ۸: MyArray یک آرایه دینامیک از نوع Variant می باشد.

منبع

Dim statement

دیدگاهتان را بنویسید