متغیرها و ثابت ها در VBA

در VBA، مانند هر زبان برنامه نویسی دیگری، از متغیرها و ثابت ها برای ذخیره هر مقدار استفاده می شود. همانطور که از نام آن پیداست، متغیرها می توانند تغییر کنند، در حالی که ثابت ها مقادیر ثابت را ذخیره می کنند.

به عنوان مثال، یک ثابت Pi مقدار 3,14159265 را ذخیره می کند ... عدد "Pi" در طول اجرای برنامه تغییر نمی کند، اما همچنان راحت تر است که چنین مقداری را به عنوان یک ثابت ذخیره کنید.

در عین حال می توانیم از متغیر استفاده کنیم sVAT_Rate برای ذخیره نرخ مالیات بر ارزش افزوده کالاهای خریداری شده. مقدار متغیر sVAT_Rate ممکن است بسته به محصول خریداری شده متفاوت باشد.

انواع داده ها

همه متغیرها و ثابت ها از یک نوع داده خاص هستند. جدول زیر انواع داده های مورد استفاده در VBA را با شرح و محدوده مقادیر ممکن فهرست می کند:

نوع داده اندازهتوضیحات:دامنه ارزشها
هشت بیتبایت 1اعداد صحیح مثبت؛ اغلب برای داده های باینری استفاده می شوداز 0 به 255
بولیبایت 2می تواند درست یا نادرست باشددرست یا غلط
عدد صحیحبایت 2اعداد کامل (بدون جزء کسری)از -32 تا +768
طولانیبایت 4اعداد صحیح بزرگ (بدون قسمت کسری)от -2 147 483 648 до +2 147 483 647
تنهابایت 4عدد ممیز شناور دقیقاز -3.4e38 تا +3.4e38
دوباربایت 8عدد ممیز شناور با دقت دو برابراز -1.8e308 تا +1.8e308
واحد پولبایت 8عدد ممیز شناور، با تعداد ثابت اعشارот -922 337 203 685 477.5808 до +922 337 203 685 477.5807
تاریخبایت 8تاریخ و زمان - داده های نوع Date با یک عدد ممیز شناور نشان داده می شود. قسمت صحیح این عدد بیانگر تاریخ و قسمت کسری بیانگر زمان است.از 1 ژانویه 100 تا 31 دسامبر 9999
شیءبایت 4مرجع شیهر مرجع شی
رشتهدر حال تغییر استمجموعه کاراکتر. نوع String می تواند از طول ثابت یا متغیر باشد. بیشتر با طول متغیر استفاده می شودطول ثابت - تا حدود 65 کاراکتر. طول متغیر - تا حدود 500 میلیارد کاراکتر
نوع دیگردر حال تغییر استممکن است حاوی تاریخ، شناور یا رشته کاراکتر باشد. این نوع در مواردی استفاده می شود که از قبل مشخص نیست چه نوع داده ای وارد می شود.عدد – دوتایی، رشته – رشته

بدیهی است که با استفاده از جدول بالا و انتخاب نوع داده مناسب می توان از حافظه به صرفه تری استفاده کرد (مثلاً نوع داده را انتخاب کنید. عدد صحیح در عوض طولانی or تنها در عوض دوبار). با این حال، هنگام استفاده از انواع داده های فشرده تر، باید مراقب باشید که کد شما سعی نمی کند مقادیر نامتناسب بزرگی را در آنها قرار دهد.

اعلان متغیرها و ثابت ها

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

• رشته های متنی با رشته های خالی مقدار دهی اولیه می شوند.

• اعداد - مقدار 0;

• متغیرها را تایپ کنید بولی - نادرست؛

• تاریخ – 30 دسامبر 1899.

قبل از اینکه بتوان از یک متغیر یا ثابت استفاده کرد، باید آن را اعلان کرد. برای انجام این کار، کد ساده زیر را به ماکرو اضافه کنید:

Dim Имя_Переменной As Тип_Данных

در خط کد بالا نام_متغیر نام متغیری است که در کد استفاده خواهد شد و نوع داده یکی از انواع داده های جدولی است که کمی پیشتر در این مقاله ارائه شده است. مثلا:

کم نور sVAT_Rate As Single Dim i As Integer

ثابت ها به طور مشابه اعلان می شوند، اما هنگام اعلام ثابت ها، مقدار آنها باید بلافاصله نشان داده شود. به عنوان مثال، مانند این:

Const iMaxCount = 5000 Const iMaxScore = 100

نیازی به تعریف متغیرها در اکسل نیست. به طور پیش فرض، همه متغیرهای وارد شده اما اعلام نشده در اکسل دارای این نوع هستند نوع دیگر و قادر به پذیرش هر دو مقدار عددی و متنی خواهد بود.

بنابراین، برنامه نویس می تواند در هر زمان از متغیر جدید استفاده کند (حتی اگر اعلام نشده باشد) و اکسل آن را به عنوان یک متغیر از نوع خود در نظر می گیرد. نوع دیگر. با این حال، دلایل متعددی وجود دارد که چرا این کار نباید انجام شود:

  1. استفاده از حافظه و سرعت محاسبات اگر متغیری را با نشانی از نوع داده اعلام نکنید، به طور پیش‌فرض روی نوع تنظیم می‌شود. نوع دیگر. این نوع داده نسبت به سایر انواع داده از حافظه بیشتری استفاده می کند. چند بایت اضافی در هر متغیر ممکن است زیاد به نظر نرسد، اما در عمل، برنامه ها می توانند هزاران متغیر داشته باشند (مخصوصاً هنگام کار با آرایه ها). بنابراین، حافظه اضافی مورد استفاده متغیرهایی مانند نوع دیگر، در مقایسه با متغیرهای نوع عدد صحیح or تنها، می تواند به مقدار قابل توجهی اضافه شود. علاوه بر این، عملیات با متغیرهای نوع نوع دیگر بسیار آهسته تر از متغیرهای انواع دیگر اجرا می شوند، به ترتیب، هزار متغیر اضافی از نوع نوع دیگر می تواند محاسبات را به طور قابل توجهی کند کند.
  2. جلوگیری از غلط املایی در نام متغیرها اگر همه متغیرها اعلام شده باشند، می توان از دستور VBA − استفاده کرد گزینه صریح (در ادامه در مورد آن صحبت خواهیم کرد) تا همه متغیرهای اعلام نشده را شناسایی کنیم. این امر باعث از بین رفتن خطا در برنامه در نتیجه نام متغیر نادرست نوشته شده است. به عنوان مثال، با استفاده از متغیری به نام sVAT_Rate، می توانید یک اشتباه تایپی داشته باشید و با اختصاص یک مقدار به این متغیر، بنویسید: "VATRate = 0,175". انتظار می رود که از این پس متغیر sVAT_Rate باید حاوی مقدار 0,175 باشد - اما البته اینطور نیست. اگر حالت اعلان اجباری همه متغیرهای استفاده شده فعال باشد، کامپایلر VBA بلافاصله خطا را نشان می دهد، زیرا متغیر را پیدا نمی کند. VATRA از جمله اعلام شده ها
  3. برجسته کردن مقادیری که با نوع اعلام شده یک متغیر مطابقت ندارند. اگر متغیری از نوع خاصی را اعلام کنید و سعی کنید داده هایی از نوع دیگری را به آن اختصاص دهید، با خطایی مواجه می شوید که در صورت عدم تصحیح، می تواند باعث از کار افتادن برنامه شود. در نگاه اول، این ممکن است دلیل خوبی برای اعلام نکردن متغیرها به نظر برسد، اما در واقع، نسبت به قبل معلوم می شود که یکی از متغیرها داده های اشتباهی را که قرار بود دریافت کند، دریافت کرده است - خیلی بهتر! در غیر این صورت، در صورت ادامه اجرای برنامه، نتایج ممکن است نادرست و غیرمنتظره باشد و یافتن علت خطاها بسیار دشوارتر خواهد بود. همچنین ممکن است که ماکرو "با موفقیت" اجرا شود. در نتیجه خطا بدون توجه باقی می ماند و کار با داده های نادرست ادامه می یابد!

در این راستا، تشخیص نوع داده نادرست و اصلاح چنین خطاهایی در کد در اسرع وقت، مطلوب است. به این دلایل، توصیه می شود هنگام نوشتن یک ماکرو VBA، همه متغیرها را اعلام کنید.

گزینه صریح

اپراتور گزینه صریح باعث می شود همه متغیرهایی که در کد VBA استفاده می شوند اعلام شوند و همه متغیرهای اعلام نشده را در هنگام کامپایل (قبل از شروع اجرای کد) به عنوان خطا علامت گذاری می کند. استفاده از این عملگر دشوار نیست - فقط این خط را در بالای فایل VBA بنویسید:

Option Explicit

اگر می خواهید همیشه درج کنید گزینه صریح در بالای هر ماژول VBA جدید ایجاد شده، این می تواند به طور خودکار انجام شود. برای این کار باید گزینه را فعال کنید نیاز به اعلام متغیر در تنظیمات ویرایشگر VBA

این کار به این صورت انجام می شود:

  • از منوی ویرایشگر ویژوال بیسیک، کلیک کنید ابزار > گزینه
  • در گفتگوی ظاهر شده، برگه را باز کنید ویرایشگر
  • کادر را بررسی کنید نیاز به اعلام متغیر و مطبوعات OK

وقتی فعال شد، رشته گزینه صریح به طور خودکار در ابتدای هر ماژول جدید ایجاد می شود.

محدوده متغیرها و ثابت ها

هر متغیر یا ثابت اعلام شده دامنه محدود خود را دارد، یعنی بخش محدودی از برنامه که این متغیر در آن وجود دارد. دامنه بستگی به جایی دارد که اعلان متغیر یا ثابت انجام شده است. برای مثال، متغیر را در نظر بگیرید sVAT_Rate، که در تابع استفاده می شود هزینه کل. جدول زیر دو گزینه را برای محدوده متغیر مورد بحث قرار می دهد sVAT_Rateدر دو موقعیت مختلف در ماژول اعلام شده است:

گزینه Explicit Dim sVAT_Rate As Single Function Total_Cost() به عنوان Double ... End Function
اگر متغیر sVAT_Rate در همان ابتدای ماژول اعلام شده است، سپس دامنه این متغیر کل ماژول خواهد بود (یعنی متغیر sVAT_Rate توسط تمام رویه های این ماژول شناسایی خواهد شد).

بنابراین، اگر در تابع هزینه کل متغیر sVAT_Rate مقداری به آن اختصاص داده می شود، سپس تابع بعدی که در همان ماژول اجرا می شود از متغیر استفاده می کند sVAT_Rate با همین معنی

با این حال، اگر تابعی که در ماژول دیگری قرار دارد فراخوانی شود، برای آن متغیر است sVAT_Rate شناخته نخواهد شد.

تابع صریح گزینه Total_Cost() به عنوان Double Dim sVAT_Rate As Single ... تابع پایان
اگر متغیر sVAT_Rate در ابتدای تابع اعلام شده است هزینه کل، سپس دامنه آن فقط به این تابع (یعنی در داخل تابع) محدود می شود هزینه کل، می توانید از متغیر استفاده کنید sVAT_Rate، اما نه در خارج).

هنگام تلاش برای استفاده sVAT_Rate در روش دیگری، کامپایلر VBA یک خطا را گزارش می‌کند زیرا این متغیر خارج از تابع اعلام نشده است هزینه کل (به شرطی که از اپراتور استفاده شود گزینه صریح).

در مثال بالا، متغیر در سطح ماژول با کلمه کلیدی اعلام شده است کمرنگ. با این حال، ممکن است لازم باشد که متغیرهای اعلام شده را بتوان در ماژول های دیگر استفاده کرد. در چنین مواردی، به جای کلمه کلیدی، متغیر را اعلام کنید کمرنگ کلمه کلیدی باید استفاده شود عمومی.

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

همچنین می توانید از کلمات کلیدی برای اعلام ثابت ها استفاده کنید. عمومی и خصوصی، اما نه به جای کلمه کلیدی ساخت، همراه با آن

مثال های زیر استفاده از کلمات کلیدی را نشان می دهد عمومی и خصوصی برای متغیرها و ثابت ها اعمال می شود.

گزینه Explicit Public sVAT_Rate As Single Public Const iMax_Count = 5000 ...    
در این مثال، کلمه کلیدی عمومی برای اعلام یک متغیر استفاده می شود sVAT_Rate و ثابت ها iMax_Count. محدوده عناصر اعلام شده به این ترتیب کل پروژه فعلی خواهد بود.

این بدان معناست که sVAT_Rate и iMax_Count در هر ماژول پروژه در دسترس خواهد بود.

گزینه Explicit Private sVAT_Rate As Single Private Const iMax_Count = 5000 ...    
در این مثال، برای اعلام یک متغیر sVAT_Rate و ثابت ها iMax_Count کلمه کلیدی استفاده شده خصوصی. محدوده این عناصر ماژول فعلی است.

این بدان معناست که sVAT_Rate и iMax_Count در همه رویه‌های ماژول فعلی در دسترس خواهد بود، اما برای رویه‌های ماژول‌های دیگر در دسترس نخواهد بود.

پاسخ دهید