در آموزشهای قبلی با متغیرها و روشهای اعلان آنها در VBA آشنا شدیم. در این بخش قصد داریم مفهوم ثابت (Constant) را بررسی کنیم و ببینیم چرا و چگونه باید از آنها در کدنویسی VBA استفاده کنیم.
📑 فهرست مطالب
ثابت در VBA چیست؟
گاهی در کد VBA از مقادیری استفاده میکنیم که همواره ثابت هستند و در بخشهای مختلف تکرار میشوند. برای مثال نرخ مالیات، درصد سود، یا آدرس یک فایل مشخص. در چنین مواردی بهتر است به جای نوشتن عدد یا متن بهصورت مستقیم، از ثابتها استفاده کنیم.
استفاده از ثابتها باعث میشود کد خواناتر، قابلنگهداریتر و خطاپذیری آن کمتر شود. در واقع، ثابتها نامی معنادار برای مقادیری هستند که در طول اجرای برنامه تغییر نمیکنند.
به عنوان مثال، اگر نرخ مالیات را در چند جای برنامه مستقیماً بنویسید و بعداً این نرخ تغییر کند، باید کل پروژه را برای اصلاح مقدار جدید بازبینی کنید. اما اگر از یک ثابت استفاده کنید، تنها کافی است مقدار ثابت را در یک نقطه تغییر دهید.
برخلاف متغیرها، مقدار ثابتها در حین اجرای کد قابل تغییر نیست.
طبق تعریف واژهنامه VBA، ثابت در ویبیای عنصری نامگذاریشده است که مقدار آن در طول اجرای برنامه تغییر نمیکند.
انواع ثابتها در VBA
- ثابتهای ذاتی (Intrinsic Constants): ثابتهایی که خود VBA یا کتابخانههای آنها (مثل Excel، Access یا Word) در اختیار شما قرار میدهند. این ثابتها را میتوانید از طریق مرورگر شیء مشاهده کنید.
- ثابتهای نمادین (Symbolic Constants): ثابتهایی که خودتان با دستور
Constتعریف میکنید. این نوع ثابتها موضوع اصلی این آموزش هستند. - ثابتهای مشروط کامپایلر (Conditional Compiler Constants): ثابتهایی که با دستور
#Constتعریف میشوند و برای کنترل اجرای بخشهایی از کد در زمان کامپایل استفاده دارند.
نحوه اعلان ثابت در VBA
برای تعریف یک ثابت از دستور Const استفاده میکنیم. شکل کلی آن بهصورت زیر است:
Const ConstantName As DataType = Value
برای نمونه، فرض کنید میخواهیم نرخ مالیات را بهصورت ثابت در برنامه مشخص کنیم:
Public Const VAT_RATE As Double = 0.09
در این مثال، ثابت عمومی VAT_RATE نرخ ۹ درصد را مشخص میکند و میتوان از آن در هر نقطه از پروژه VBA استفاده کرد.
سطح دسترسی ثابتها
ثابتها را میتوانید در سطح روال یا در ابتدای ماژول تعریف کنید. اگر ثابت را در ابتدای ماژول تعریف کنید، بهطور پیشفرض دسترسی آن Private خواهد بود.
| نوع ثابت | سطح دسترسی | قابل استفاده در |
|---|---|---|
Private Const | فقط در همان ماژول | روالها و توابع همان ماژول |
Public Const | عمومی | تمام ماژولها و فرمها |
تفاوت ثابت و متغیر
- مقدار ثابت تنها یکبار در زمان تعریف تعیین میشود و قابل تغییر نیست.
- متغیر با دستور
Dimتعریف میشود و مقدار آن در طول اجرای برنامه قابل تغییر است. - استفاده از ثابتها باعث جلوگیری از خطا و افزایش خوانایی کد میشود.
چندین ثابت در یک خط
میتوانید چند ثابت را در یک دستور Const تعریف کنید، اما نوع داده هر ثابت باید بهصورت جداگانه مشخص شود:
Const conAge As Integer = 34, conWage As Currency = 35000
اگر مقدار ثابت از نوع رشتهای باشد، باید درون کوتیشن (" ") قرار گیرد. مثلاً:
Const COMPANY_NAME As String = "IranVBA Academy"
سؤالات متداول درباره ثابتها در VBA
ثابت در VBA چه کاربردی دارد؟
از ثابتها در VBA برای تعریف مقادیری استفاده میشود که در طول اجرای برنامه تغییر نمیکنند، مثل نرخ مالیات یا درصد سود. این کار باعث افزایش خوانایی و کاهش خطا در کد میشود.
تفاوت بین ثابت (Const) و متغیر (Dim) در VBA چیست؟
متغیرها در زمان اجرا قابل تغییر هستند، اما مقدار ثابتها پس از تعریف دیگر تغییر نمیکند. دستور Dim برای اعلان متغیرها و دستور Const برای تعریف ثابتها به کار میرود.
چگونه میتوان یک ثابت عمومی در VBA تعریف کرد؟
برای تعریف ثابت عمومی باید از کلیدواژه Public قبل از دستور Const استفاده کنید. به عنوان مثال: Public Const VAT_RATE As Double = 0.09. این ثابت در تمام ماژولها و فرمهای پروژه در دسترس خواهد بود.
آیا میتوان مقدار ثابت را در زمان اجرای برنامه تغییر داد؟
خیر، مقدار ثابت پس از تعریف قابل تغییر نیست. اگر نیاز دارید مقدار در زمان اجرا تغییر کند، باید از متغیر به جای ثابت استفاده کنید.
آیا میتوان چند ثابت را در یک خط تعریف کرد؟
بله، میتوانید چند ثابت را با یک دستور Const در یک خط تعریف کنید، اما نوع داده هر ثابت باید جداگانه مشخص شود. مثلاً: Const conAge As Integer = 34, conWage As Currency = 35000.
ثابتهای مشروط کامپایلر (#Const) چه تفاوتی دارند؟
ثابتهای مشروط کامپایلر با دستور #Const تعریف میشوند و برای فعال یا غیرفعال کردن بخشهایی از کد در زمان کامپایل استفاده میشوند، نه در زمان اجرا.
منابع (Microsoft Docs):
اعلان ثابتها
استفاده از ثابتها در VBA
بیشتر بخوانید
Me در VBA | کاربرد کلمه کلیدی Me در VBA و برنامه نویسی شیءگرا
روال Property Get در VBA | کاربرد روال Property Get در شیءگرایی
روال Property Set در VBA | کاربرد روال Property Set در شیءگرایی
روال Property Let در VBA | شیءگرایی و کپسوله سازی داده ها در VBA
خواص کلاس در VBA | ایجاد خواص کلاس با استفاده از اعلان متغیر در VBA
کلاس و شیء در VBA | مراحل ایجاد کلاس و شیء در VBA
برنامه نویسی شیءگرا (OOP) | مقدمه ای بر روش برنامه نویسی شیءگرا