تغیرها به عنوان فضای ذخیرهسازی در ماکرونویسی اکسل محسوب میشوند. از آنجایی که در یک فضای ذخیرهسازی ممکن است دادههای گوناگون و متغیری ذخیره شود، این فضاهای ذخیرهسازی با عنوان متغیرها شهرت پیدا کردند. متغیرها در ماکرونویسی اکسل با عبارت Dim آغاز میشوند و سپس نام و نوع آن تعیین میگردد. به عنوان مثال Dim A as integer قطعه کدی برای تعریف و ایجاد متغیر A محسوب میشود. با سید علی ابراهیمی همراه باشید.
مفهوم متغیر(variable) در ماکرونویسی
متغیرها قطعه هایی از کد هستند که ما را ذخیره اطلاعات و اشیاء یاری میکنند. اساسی ترین مشخصه های متغیرها عبارت هستند از :
- نام متغیر(Name): برای هر متغیر یک نام منحصر به فرد تعیین میشود که در زمان های مورد نیاز متغیر مورد نظر با استفاده از این کد فراخوانی میشود.
- نوع متغیر(type): برای هر نوع اطلاعات نیاز به تعریف نوعی خاص از متغیر است. به عبارت دیگر متغیرها در ماکرونویسی انواع مختلفی دارند که هر کدام از آنها میتوانند نوع خاصی از اطلاعات را ذخیره سازی کنند.
زمانی که به کدهای ضبط شده توسط ضبط کننده ماکرو دقت میکنیم هیچ متغیری را مشاهده نمیکنیم. متغیرها عموما زمانی تعریف میشوند که بخواهیم خودمان کدنویسی کنیم.
چرا شما به متغیرها نیاز
دارید؟قبلاً ذکر کردم که در برخی موقعیتها، بکار گیری یک متغیر یک گزینۀ منطقی خواهد بود. فرض کنید که عددی را در سلول A1 دارید که به دلیل چند منظور تحلیلی در سراسر ماکرویتان از آن استفاده می کنید. شما می توانید هربار مستقیماً به آدرس سلول A1 اشاره کنید، اما این کار شما، اکسل را مجبور می کند تا هر بار دنبال همان آدرس سلول بگردد و مجدداً همان مقدار را به حافظه بسپرد.
تعریف متغیر در برنامه نویسی VBA
در قسمت قبل اشاره ای کوتاه به این موضوع کردیم و تنظیمات VBE را به نحوی قرار دادیم که همیشه متغیرها تعریف شوند. به این معنی که ما حتما می بایست قبل از اینکه بتوانیم از متغیرهای خود استفاده کنیم، آنها را تعریف کنیم. اما تعریف متغیر به چه شکل انجام میشود؟ مثل تمام کارهای دیگر در ماکرونویسی، برای تعریف متغیر نیز یک الگوی مشخص و ثابت وجود دارد:
Dim [نام متغیر] As [نوع متغیر]
برای مثال اگر بخواهیم متغیری برای شمارش تعداد ردیف های ورک شیت تعریف کنیم، به شکل زیر این کار را انجام میدهیم:
Dim rowsInWorksheet As Long
Long نوعی از متغیر است که در زیر به صورت کامل انواع متغیرها در ماکرونویسی را توضیح خواهیم داد. در اینجا نام متغیر Rowsinworksheet قرار داده شده است.
انواع متغیرها در ماکرونویسی
متغیرهای عددی
Byte(اندازه حافظه: 1 بایت): یک عدد صحیح بین 0 تا 255
Integer(اندازه حافظه:2 بایت): یک عدد صحیح بین -32768 تا 32767
Long(اندازه حافظه: 4 بایت): یک عدد صحیح بین -2,147,483,648 تا 2,147,483,648
Single(اندازه حافظه: 8 بایت):
- یک عدد منفی بین -3.402823E+38 تا -1.401298E-45
- یک عدد مثبت بین 1.401298E-45 تا 3.402823E+38
Double(اندازه حافظه:8 بایت):
- یک عدد منفی بین -1.79769313486232e+308 تا -4.94065645841247E-324
- یک عدد مثبت بین 4.94065645841247E-324 تا 1.79769313486232e+308
Currency(اندازه حافظه: 8 بایت): عددی بین 1.79769313486232e+308 تا 922,337,203,685,477.5807
Decimal(اندازه حافظه:8 بایت):
- بدون اعشار +/- 79,228,162,514,264,337,593,543,950,335
- با اعشار +/- 7.9228162514264337593543950335.
Boolian : این متغیر صرفا میتواند مقادیر 0 و 1 یا true/false را بگیرد.
Date(اندازه حافظه:8 بایت): 1 ژانویه 0001 تا 31 دسامبر 9999 که به صورت عدد ذخیره میشود.
کاربرد متغیر Boolean در ماکرونویسی اکسل
امروز برای شما معرفی یک متغیر به نام Boolean را آماده نمودیم. همانطور که مستحضر هستید متغیرهایی همچون Integer , Long , String جزو پرکاربردترین متغیرهایی است که یک ماکرو نویس در اکسل از آنها استفاده می کند ولی در کنار این متغیرهای پرکاربرد متغیری دیگر به نام Boolean داریم که تنها دو ورودی True و False را پوشش می دهد.
انواع متغیرهای غیر عددی
متغیرهای غیرعددی عموما شامل مقادیر متنی میشوند و نمیتوان از آنها در محاسبات استفاده کرد.
String( اندازه حافظه بستگی به طول رشته متنی دارد)
- این متغیر برای رشته های متنی با طول ثابت میتواند بین 1 تا 65400 کاراکتر داشته باشد و
- برای رشته های متنی با طول متغیر میتواند بین 0 تا 2 میلیارد کاراکتر را بپذیرد.
برای تعریف یک رشته با طول ثابت از “String * n” استفاده میشود که منظور از n طول رشته می باشد.
Object( اندازه حافظه: 4 بایت): این متغیر شامل آدرس یا محل اشیاء میشود.
دیگر انواع متغیرها
Variant: این متغیر می تواند تمام انواع داده ها را به جز رشته های با طول ثابت را بپذیرد. میتوان حدس زد که متغیر variant کاربردهای فوق العاده ای در ماکرونویسی دارد و در آینده بسیار بیشتر از این متغیر خواهید شنید.
قواعد نام گذاری متغیرها در برنامه نویسی وی بی ای
- نام متغیر می بایست کمتر از 255 کاراکتر داشته باشد.
- نام متغیر صرفا میتواند شامل حروف، اعداد و آندرلاین باشد( نمیتوان از فاصله، نقطه یا کاراکترهای دیگر استفاده کرد)
- نام متغیر می بایست همیشه با حروف شروع شود.
- نمیتوان از کلمات و حروف رزرو شده در زبان برنامه نویسی VBA استفاده کرد. توضیح اینکه بعضی از کلمات در زبان وی بی ای برای انجام کارهای خاص رزرو شده اند یا جز< اصطلاخات اختصاصی وی بی ای هستند و شما نمیتوانید از این کلمات در تعریف متغیر استفاده کنید.
مقدار دادن به یک متغیر
ما تاکنون متغیر را تعریف کردیم ولی این متغیر هنوزه خالی است و مقدار ندارد. برای مقدار دادن به متغیر می بایست ابتدا بدانیم متغیر از چه نوعی است
برای تمام متغیرها به جز object میتوانید به صورت زیر مقدار دهی کنید:
Dim myNumber As Integer
myNumber = 500
برای object که مکان متغیر را مشخص میکند می بایست به صورت زیر مقداردهی کنید:
Dim myWorkbook As Object
Set myWorkbook = ThisWorkbook
جنس داده ها (Data Types)
هر متغیر و ثابتی برای ذخیره یک جنس از داده تعریف میشه. پس مهمه که تو تعریف متغیر ها و ثابت ها بدونید که چه جنسی باید انتخاب بشه. در جدول زیر انواع داده به همراه توضیحی برای کدوم و بازه ای که میتونن تو خودشون ذخیره کنن معرفی شده.
جنس داده | فضای اختصاصی | توضیح | بازه قابل تخصیص |
Byte | ۱ بایت | مناسب برای استفاده اعداد مثبت | ۰ تا ۲۵۵ |
Boolean | ۲ بایت | مقدار True یا False | True یا False |
Integer | ۲ بایت | عدد غیر اعشاری | -۳۲,۷۶۸ تا +۳۲,۷۶۷ |
Long | ۴ بایت | عدد غیر اعشاری بزرگ | -۲,۱۴۷,۴۸۳,۶۴۸ تا +۲,۱۴۷,۴۸۳,۶۴۷ |
Single | ۴ بایت | اعداد شناور با دقت یک اعشار | -۳.۴e38 تا +۳.۴e38 |
Double | ۸ بایت | عدد شناور با بازه بیشتر | -۱.۸e308 تا +۱.۸e308 |
Currency | ۸ بایت | عدد شناور با دقت ثابت | -۹۲۲,۳۳۷,۲۰۳,۶۸۵,۴۷۷.۵۸۰۸ تا +۹۲۲,۳۳۷,۲۰۳,۶۸۵,۴۷۷.۵۸۰۷ |
Date | ۸ بایت | روز و ساعت- این مقدار در واقع یک عدد اعشاری هست که بخش صحیح نماینده تاریخ و بخش اعشاری معرف ساعت هست. | ۱st January 100 تا ۳۱st December 9999 |
Object | ۴ بایت | ارجاع به یک شئ | هر شئی |
String | متغیر | مجموعه ای از کارکترها رو در خود نگه داری میکنه | حالت ثابت – تا ۶۵،۰۰۰ کارکتر حالت متغیر – تقریبا تا دو میلیارد کارکتر |
Variant | متغیر | می تواند تاریخ، اعداد شناور یا مجموعه از کارکترها رو در خودش نگه داره. در واقع زمانی باید استفاده بشه که دقیقا مشخص نیست که چه چیزی قراره به آن تخصصی داده بشه. | اعداد مانند جنس Double و متن مانند متغیر String |
تعریف متغیرها و ثابت ها
قبل از استفاده از متغیرها و یا ثابت ها بهتره که اون رو برای برنامه تعریف کنید. این کار با اضافه کردن کد زیر به برنامه قابل انجام شدنه:
۱ | Dim Variable_Name As Data_Type |
در کد بالا به جای Variable_Name نام متغیری که شما قصد دارید تعریف کنید قرار بدید و به جای Data_Type باید یکی از جنس های متغیر در جدول بالا استفاده بشه. به عنوان مثال:
۱ ۲ | Dim sVAT_Rate As Single Dim i As Integer |
تعریف ثابت ها هم شبیه تعریف متغیر ها هست به جز زمانیکه قصد تخصیص مقدار در همان ابتدای تعریف ثابت هست. از مثال زیر برای تعریف متغیرها در وی بی (VBA) استفاده کنید:
۱ ۲ | Const iMaxCount = ۵۰۰۰ Const iMaxScore = ۱۰۰ |