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

عملگرهای ریاضی

عملگرهای اصلی ریاضی VBA در جدول زیر فهرست شده اند.

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

عملگرهای رشته ای

عملگر رشته اصلی در Excel VBA عملگر الحاق است & (ادغام):

اپراتورهای مقایسه

عملگرهای مقایسه برای مقایسه دو عدد یا رشته و بازگشت استفاده می شوند بولینوع بولی(درست یا غلط). اپراتورهای اصلی مقایسه Excel VBA در این جدول آورده شده است:

عملگرهای منطقی

عملگرهای منطقی، مانند عملگرهای مقایسه، مقدار بولی از نوع را برمی‌گردانند بولی(درست یا غلط). اصلی عملگرهای منطقی Excel VBA در جدول زیر آمده است:

جدول بالا تمام عملگرهای منطقی موجود در VBA را فهرست نمی کند. لیست کاملعملگرهای منطقی را می توان در سایت مرکز توسعه دهندگان ویژوال بیسیک یافت.

توابع داخلی

توابع داخلی زیادی در VBA وجود دارد که می توان از آنها هنگام نوشتن کد استفاده کرد. در زیر تعدادی از پرکاربردترین آنها ذکر شده است:

عملکرد عمل
عضلات شکم قدر مطلق عدد داده شده را برمی گرداند.
  • شکم (-20)مقدار 20 را برمی گرداند.
  • عضلات شکم (20)مقدار 20 را برمی گرداند.
کر کاراکتر ANSI مربوط به مقدار عددی پارامتر را برمی‌گرداند.
  • Chr(10)شکست خط را برمی گرداند.
  • Chr(97)یک شخصیت را برمی گرداند آ.
تاریخ تاریخ فعلی سیستم را برمی‌گرداند.
تاریخ افزودن یک بازه زمانی مشخص را به تاریخ معین اضافه می کند. نحو توابع:

تاریخ افزودن( فاصله , عدد , تاریخ )

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

بحث و جدل فاصلهمی تواند یکی از مقادیر زیر را بگیرد:

  • DateAdd("d"، 32، "01/01/2015") 32 روز به تاریخ 01/01/2015 اضافه می کند و بنابراین تاریخ 02/02/2015 را برمی گرداند.
  • DateAdd("ww"، 36، "01/01/2015") 36 هفته به تاریخ 01/01/2015 اضافه می کند و تاریخ 09/09/2015 را برمی گرداند.
DateDiff تعداد فواصل زمانی مشخص شده بین دو تاریخ معین را محاسبه می کند.
  • DateDiff("d"، "01/01/2015"، "02/02/2015")تعداد روزهای بین 01/01/2015 تا 02/02/2015 را محاسبه می کند، 32 را برمی گرداند.
  • DateDiff ("ww"، "01/01/2015"، "03/03/2016")تعداد هفته ها را بین 01/01/2015 تا 03/03/2016 محاسبه می کند، 61 را برمی گرداند.
روز یک عدد صحیح مربوط به روز ماه در تاریخ معین را برمی گرداند.

مثال: روز («29/01/2015»)عدد 29 را برمی گرداند.

ساعت یک عدد صحیح مربوط به تعداد ساعت در زمان معین را برمی‌گرداند.

مثال: ساعت ("22:45:00")عدد 22 را برمی گرداند.

InStr یک عدد صحیح و دو رشته به عنوان آرگومان می گیرد. موقعیت وقوع رشته دوم را در رشته اول برمی‌گرداند و جستجو را در موقعیتی که توسط یک عدد صحیح داده شده آغاز می‌کند.
  • InStr(1، "اینجا کلمه جستجو شده است"، "کلمه")عدد 13 را برمی گرداند.
  • InStr(14، "در اینجا کلمه جستجو، و در اینجا یک کلمه جستجوی دیگر"، "کلمه")عدد 38 را برمی گرداند.

توجه داشته باشید:ممکن است آرگومان عدد مشخص نباشد، در این صورت جستجو از اولین کاراکتر رشته مشخص شده در آرگومان دوم تابع شروع می شود.

بین المللی قسمت صحیح عدد داده شده را برمی گرداند.

مثال: Int(5.79)نتیجه 5 را برمی گرداند.

Isdate برمی گرداند درست است، واقعیاگر مقدار داده شده یک تاریخ باشد، یا نادرست- اگر تاریخ نباشد.
  • IsDate («01/01/2015»)برمی گرداند درست است، واقعی;
  • IsDate(100)برمی گرداند نادرست.
IsError برمی گرداند درست است، واقعیاگر مقدار داده شده یک خطا باشد، یا نادرست- اگر خطا نباشد.
مفقود شده است نام آرگومان رویه اختیاری به عنوان آرگومان به تابع ارسال می شود. مفقود شده استبرمی گرداند درست است، واقعیاگر هیچ مقداری برای آرگومان رویه مورد نظر ارسال نشده باشد.
عددی است برمی گرداند درست است، واقعیاگر مقدار داده شده را بتوان به عنوان یک عدد در نظر گرفت، در غیر این صورت برمی گردد نادرست.
ترک کرد تعداد مشخص شده کاراکتر را از ابتدای رشته داده شده برمی گرداند. سینتکس تابع به این صورت است:

ترک کرد( خط , طول )

جایی که خط- این هست رشته اصلی، آ طولتعداد کاراکترهایی است که باید برگردانده شوند که از ابتدای رشته شمارش می شود.

  • چپ ("abvgDeZicleMn"، 4)رشته "abcg" را برمی گرداند.
  • چپ ("abvgDeZicleMn"، 1)رشته "a" را برمی گرداند.
لن تعداد کاراکترهای یک رشته را برمی گرداند.

مثال: لن ("abcdej")عدد 7 را برمی گرداند.

ماه یک عدد صحیح مربوط به ماه تاریخ داده شده را برمی گرداند.

مثال: ماه ("29/01/2015")مقدار 1 را برمی گرداند.

اواسط تعداد مشخص شده کاراکتر را از وسط رشته داده شده برمی گرداند. نحو توابع:

اواسط( خط , شروع کنید , طول )

جایی که خطرشته اصلی است شروع کنید- موقعیت ابتدای رشته ای که باید استخراج شود، طولتعداد کاراکترهایی است که باید استخراج شود.

  • Mid("abvgDeZicleMn"، 4، 5)رشته "where" را برمی گرداند.
  • Mid("abvgDeZicleMn"، 10، 2)رشته "cl" را برمی گرداند.
دقیقه یک عدد صحیح مربوط به تعداد دقیقه در زمان معین را برمی‌گرداند. مثال: دقیقه ("22:45:15")مقدار 45 را برمی گرداند.
اکنون تاریخ و زمان فعلی سیستم را برمی‌گرداند.
درست تعداد مشخص شده کاراکتر را از انتهای رشته داده شده برمی گرداند. نحو توابع:

درست( خط , طول )

جایی که خطرشته اصلی است و طولتعداد کاراکترهایی است که از انتهای رشته داده شده شمارش می شود.

  • راست ("abvgDeZicleMn"، 4)رشته "clmn" را برمی گرداند.
  • راست ("abvgDeZicleMn"، 1)رشته "n" را برمی گرداند.
دومین یک عدد صحیح مربوط به تعداد ثانیه در زمان معین را برمی‌گرداند.

مثال: دوم ("22:45:15")مقدار 15 را برمی گرداند.

مربع جذر مقدار عددی ارسال شده در آرگومان را برمی گرداند.
  • مربع (4)برمی گرداند 2;
  • مربع (16)مقدار 4 را برمی گرداند.
زمان زمان فعلی سیستم را برمی‌گرداند.
باز شده بالانویس بعد آرایه مشخص شده را برمی گرداند.

توجه داشته باشید:برای آرایه های چند بعدیبه عنوان یک آرگومان اختیاری، می توانید مشخص کنید که کدام شاخص بعد را برگرداند. اگر مشخص نشده باشد، پیش فرض 1 است.

اپراتور تخصیص (=)

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

عملگر تخصیص دو شکل نحوی دارد:

varname = بیان

نام متغیر- هر متغیر VBA

اصطلاح- هر عبارت VBA

هنگام اجرای دستور انتساب، VBA ابتدا عبارت سمت راست دستور انتساب را ارزیابی می کند و سپس نتیجه عبارت را در متغیری که نام آن در سمت چپ علامت برابر است ذخیره می کند.

X = 5 + 7; Y = X + 5 ; Z = X - Y; A=B; I = I + 1

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

به عنوان مثال، اگر در دستور انتساب A = A +5، متغیر A قبل از عملیات انتساب حاوی مقدار 7 بود، پس از عملیات حاوی مقدار 12 (7+5) خواهد بود.

باید به خاطر داشت:

· شما می توانید هر متغیر عددی (یا عبارت) را به هر متغیر دیگری از نوع عددی (یا متغیر از نوع Variant) اختصاص دهید.

· اگر یک عبارت عددی را به یک متغیر تایپ شده با دقت کمتر اختصاص دهید (مثلاً Double - Long)، VBA مقدار عبارت را گرد می کند تا با دقت متغیری که مقدار جدید را می گیرد مطابقت داشته باشد.

اگر یک متغیر از نوع Stringاختصاص داده متغیر نوعنسخه ای که شامل یک عدد است، VBA به طور خودکار آن عدد را به رشته تبدیل می کند.

عملگر اضافه (+)

عملگر جمع یک جمع ساده را انجام می دهد. هر دو عملوند باید عبارت های عددی یا رشته هایی باشند که VBA بتواند آنها را به عدد تبدیل کند. عملگر جمع همچنین می تواند برای انجام عملیات حسابی روی داده های Date استفاده شود.

نوع داده نتیجه یک عبارت جمع معمولاً با دقیق ترین نوع آن عبارت است. اما، استثنائاتی وجود دارد:

· نتیجه اضافه کردن نوع Single و Long Double خواهد بود.

· نتیجه افزودن نوع تاریخ به هر نوع داده دیگری همیشه یک تاریخ خواهد بود.

· اگر نتیجه از محدوده نوع Integer بیشتر شود، VBA آن را به Long تبدیل می کند.

· اگر نتیجه از انواع Long، Single، Date بیشتر باشد، VBA آن را به Double تبدیل می کند.

· اگر هر عملوندی در عبارت جمع Null باشد، نتیجه عبارت جمع نیز Null است.

ترتیب افزایش دقت را برای انواع داده های عددی به یاد بیاورید: بایت، عدد صحیح، طولانی، تک، دو برابر، ارز.

باید گفت که باید به وضوح درک کرد که VBA چگونه انواع داده ها را در نتیجه عملیات حسابی تبدیل می کند. این در آینده به جلوگیری از بسیاری از خطاهای "غیر ضروری" هنگام نوشتن کد کمک می کند.

عملگر تفریق (-)

عملگر تفریق دو کار انجام می دهد: برای تفریق یک عدد از عدد دیگر استفاده می شود. نشان دهنده یک علامت منهای یکپارچه است (این علامت منفی است که در مقابل یک عدد قرار می گیرد تا نشان دهد که یک عدد منفی است). قرار دادن منهای یکپارچه در مقابل یک متغیر یا عبارت برابر است با ضرب آن عدد در -1.

هر دو عملوند در عبارت تفریق باید متغیرهای عددی (عبارات) یا عبارت های رشته ای باشند که VBA بتواند آنها را به عدد تبدیل کند. برای کار با تاریخ ها می توانید از عملگر تفریق استفاده کنید.

VBA از همان قوانینی برای تعیین نوع داده حاصل از عبارت تفریق استفاده می کند که برای عباراتی که از عملگر جمع استفاده می کنند استفاده می کند. اما، یک اضافه وجود دارد:

· اگر هر دو عملوند در یک عبارت از نوع Date باشند، نتیجه عبارت از نوع Double خواهد بود.

عملگر ضرب (*)

عملگر ضرب دو عدد را ضرب می کند - نتیجه عبارت ضرب حاصلضرب دو عملوند است. هر دو عملوند در عبارت ضرب باید عبارت های عددی یا رشته هایی باشند که VBA بتواند آنها را به عدد تبدیل کند.

VBA از همان قوانینی برای تعیین نوع داده حاصل از یک عبارت ضرب پیروی می کند که برای عباراتی که از عملگر جمع استفاده می کنند. در عبارات ضرب، تمام متغیرهای Variant که حاوی مقادیر Date هستند به مقادیر عددی تبدیل می شوند.

اپراتور بخش (/)

عملگر تقسیم ممیز شناور، تقسیم حسابی معمول عملوندهای خود را انجام می دهد.

در عبارات تقسیم، عملوند اول بر عملوند دوم تقسیم می شود - نتیجه تقسیم ضریب است.

هر دو عملوند در عبارت تقسیم ممیز شناور باید عبارت های عددی یا رشته هایی باشند که VBA بتواند آنها را به عدد تبدیل کند.

اگر حداقل یک عملوند در عبارت تقسیم از نوع Null باشد، نتیجه تقسیم نیز Null خواهد بود.

نوع داده عملیات تقسیم ممیز شناور Double است به جز:

هر دو عملوند در عبارت تقسیم از نوع Integer یا Single هستند - نتیجه Single.

اگر نتیجه عبارت از محدوده مقادیر برای نوع Single سرریز نشود.

تقسیم عدد صحیح (\)

تقسیم اعداد صحیح با تقسیم ممیز شناور تفاوت دارد زیرا نتیجه آن همیشه یک عدد صحیح بدون بخش کسری است.

هر دو عملوند در یک عبارت تقسیم عدد صحیح باید عبارت های عددی یا رشته هایی باشند که VBA بتواند آنها را به عدد تبدیل کند.

قبل از انجام عملیات تقسیم عدد صحیح، VBA هر عملوند را به تعدادی از نوع Integer یا Long (همان نوع حاصل از تقسیم عدد صحیح) گرد می کند.

VBA باقیمانده کسری حاصل از یک عبارت تقسیم عدد صحیح را دور می اندازد (اما گرد نمی کند!). به عنوان مثال، عبارات 22\5 و 24\5 نتیجه یکسانی دارند = 4.

اگر حداقل یک عملوند در یک عبارت تقسیم عدد صحیح از نوع Null باشد، نتیجه تقسیم نیز Null است.

بخش مدولو (Mod)

تقسیم مدولو، همانطور که بود، مکمل تقسیم عدد صحیح است. در تقسیم مدول، عبارت فقط باقیمانده عملیات تقسیم را به عنوان یک عدد صحیح برمی گرداند.

22 مود 5 = 2

24 مد 5 = 4

25 مد 5 = 0

خواص باقی مانده از تقسیم مدول با تقسیم عدد صحیح یکسان است.

توان (^)

عملگر توان یک عدد را به توان افزایش می دهد.

5 ^ 3 =125

هر دو عملگر در عبارت توان باید عبارت های عددی یا رشته هایی باشند که VBA بتواند آنها را به اعداد تبدیل کند.

عملوند سمت چپ عملگر توان تنها زمانی می تواند یک عدد منفی باشد که عملوند سمت راست یک عدد صحیح باشد.

نتیجه عبارت از نوع Double است.

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

بیایید موارد فوق را خلاصه کنیم:

اپراتورهای منطقی VBA

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

نتیجه یک عملیات منطقی مقداری از نوع Boolean (یا Null اگر حداقل یکی از عملوندها Null باشد) است.

عملگر منطقی AND

نحو:

Operand_1 و Operand_2

عملگر AND انجام می دهد پیوند منطقی.

نتیجه این عملیات فقط زمانی True است که هر دو عملوند True باشند، در غیر این صورت False.

جدول درستی

عملگر AND را می توان روی چند عملوند استفاده کرد:

(5<7) AND (4>3) و (5=6) نتیجه False خواهد بود

صرف نظر از تعداد عملوندها، نتیجه منطقی است و عملیاتتنها در صورتی True خواهد بود که همه عملوندهای عبارت به True ارزیابی شوند. در هر صورت، نتیجه False خواهد بود. توجه داشته باشید که عملوندها در داخل پرانتز قرار می گیرند. VBA ابتدا مقدار هر عملوند را در داخل براکت ها و سپس کل عبارت را ارزیابی می کند.

عملگر منطقی OR

نحو:

Operand_1 یا Operand_2

عملگر OR انجام می دهد تفکیک منطقی.

اگر حداقل یکی از عملوندها True باشد، نتیجه این عمل True است، در غیر این صورت False.

جدول درستی

عملگر OR را می توان روی چند عملوند استفاده کرد:

(5<7) OR (4>3) OR (5=6) نتیجه True خواهد بود

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

عملگرهای AND و OR را می توان با هم ترکیب کرد:

((5<7) AND (4>3)) یا (5=6) نتیجه True خواهد بود

عملگر Boolean NOT

نحو:

Operand نیست

اپراتور نیستاجرا می کند نفی منطقی.

عملگر NOT فقط از یک عملوند استفاده می کند.

جدول درستی

عملگرهای AND OR NOT را می توان ترکیب کرد:

((5<7) AND (4>3)) یا نه (5=6) نتیجه درست خواهد بود

عملگر منطقی XOR

نحو:

Operand_1 XOR Operand_2

عملگر XOR انجام می دهد استثنا منطقی.

اگر عملوندها داشته باشند، نتیجه این عمل True است معانی مختلف، در غیر این صورت - نادرست.

جدول درستی

((5<7) AND (4>3)) یا نه (5=6) نتیجه XOR (5=5) نادرست است

عملگر منطقی EQV

نحو:

Operand_1 EQV Operand_2

عملگر EQV اپراتور است هم ارزی منطقی.

نتیجه این عمل اگر مقدار عملوندها یکسان باشد True و در غیر این صورت False است.

جدول درستی

((5<7) AND (4>3)) OR NOT (5=6) EQV (5=5) به True منجر می شود.

اپراتورهای مقایسه

معمولاً از عملیات مقایسه در عبارات حلقه ای برای تصمیم گیری در مورد روند بعدی عملیات استفاده می شود.

نتیجه هر عملیات مقایسه یک مقدار بولی است: True، False.

اگر هر دو عملوند در یک عبارت مقایسه از یک نوع داده باشند، VBA یک مقایسه ساده را روی آن نوع انجام می دهد.

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

اگر یک یا هر دو عملوند در عبارت مقایسه، متغیرهایی از نوع Variant باشند، VBA سعی می کند نوع Variant را به نوعی سازگار تبدیل کند.

اپراتورهای VBA: حساب، بولی، مقایسه، تکالیف

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

تنها 7 عملگر حسابی در VBA وجود دارد. چهار عملگر استاندارد: جمع (+)، تفریق (-)، ضرب (*)، تقسیم (/) و سه عملگر دیگر:

  • برای مثال توان (^). 2^3 = 8 ;
  • تقسیم عدد صحیح (\). عدد اول را بر عدد دوم تقسیم می‌کند، دور انداختن (نه گرد) قسمت کسری. مثلا، 5\2 = 2 ;
  • بخش مدولو (Mod). عدد اول را بر عدد دوم تقسیم می کند و فقط باقیمانده تقسیم را برمی گرداند. مثلا، 5 مود 2 = 1.

عملگر انتساب در VBA علامت برابر است. می توان اینگونه نوشت:

بگذارید nVar = 10 باشد

یا حتی ساده تر:

nvar = 10

در حالت دوم، علامت تساوی را با عملگر مساوی اشتباه نگیرید.

اصطلاح

nvar = 10

به این معنی است که "متغیر nVar را روی 10 قرار دهید" و اگر خط به این شکل باشد:

اگر (nVar = 10)

یعنی "اگر مقدار متغیر nVar برابر با 10 باشد".

اگر نیاز دارید که یک شی را به یک متغیر اختصاص دهید، این کار به روش های دیگری انجام می شود.

تنها 8 عملگر مقایسه در VBA وجود دارد:

  • برای مثال برابری (=) اگر (nVar = 10);
  • بزرگتر و کمتر از (> و<), например, اگر (nVar > 10);
  • بزرگتر یا مساوی و کوچکتر یا مساوی (>= و<=), например, اگر (nVar >= 10);
  • نا برابر (<>)، مثلا، اگر (nVar<>10) ;
  • مقایسه اشیاء (Is). تعیین می کند که آیا متغیرهای شی به یک شی اشاره دارند یا به موارد مختلف، برای مثال، اگر (obj1 obj2 است);
  • شباهت (Like). یک شی رشته را با یک الگو مقایسه می کند و تعیین می کند که آیا الگو مطابقت دارد یا خیر.

عملگرهای مقایسه همیشه درست یا نادرست را برمی‌گردانند - درست اگر ادعا درست باشد و نادرست اگر نادرست باشد.

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

  • هنگام مقایسه مقادیر رشته، حروف بزرگ و کوچک حساس است.
  • فاصله در مقادیر رشته نیز در نظر گرفته می شود.
  • هنگام مقایسه رشته های متنیبیشتر/کمتر به صورت پیش فرض به سادگی مقایسه می شوند کدهای باینریشخصیت ها - چه کم و بیش. اگر نیاز به استفاده از ترتیبی که در حروف الفبا وجود دارد، می توانید از دستور استفاده کنید

گزینه مقایسه متن

کمی بیشتر در مورد عملگر Like. نحو کلی آن به نظر می رسد

Expression1 مانند Expression2

در این مورد Expression1 هر عبارت متنی VBA است و Expression2 قالبی است که به عملگر Like ارسال می شود. شما می توانید از حروف عام خاص در این الگو استفاده کنید (جدول 3.1 را ببینید)

Tab. 3.1حروف عام برای عملگر LIKE

اغلب، هنگام آزمایش چندین شرط، از عملگرهای منطقی استفاده می شود:

  • AND - منطقی AND، هر دو شرط باید درست باشند.
  • OR - منطقی یا، حداقل یکی از شرایط باید درست باشد.
  • NOT - نفی منطقی، اگر شرط نادرست باشد، TRUE را برمی گرداند.
  • XOR یک استثنا منطقی است. در یک عبارت E1 XOR، E2 اگر فقط E1 = TRUE یا فقط E2 = TRUE در غیر این صورت FALSE، TRUE را برمی گرداند.
  • EQV - معادل دو عبارت، اگر مقدار یکسانی داشته باشند، TRUE را برمی گرداند.
  • IMP - مفهوم، FALSE را اگر E1 = TRUE و E2 = FALSE، در غیر این صورت TRUE برمی گرداند.

شما باید در مورد AND، OR، NOT به خاطر داشته باشید، سایر عملگرهای منطقی به ندرت استفاده می شوند.

تقریباً هر برنامه VBA از عملگرهای الحاقی استفاده می کند. دو مورد از آنها در VBA وجود دارد - + یا &. توصیه می شود همیشه استفاده کنید و زیرا:

  • هنگام استفاده از &، تبدیل خودکار مقادیر عددی به رشته ها انجام می شود - خطر اشتباه وجود ندارد.
  • هنگام استفاده از عملگر +، با افزودن یک مقدار رشته به مقداری از نوع Null، Null به دست می آید.

MsgBox "پیام به کاربر" و vUserName

ترتیب اعمال عملگرها را می توان با استفاده از پرانتز کنترل کرد.

بیایید نگاهی دقیق تر به نحوه انجام عملیات حسابی VBA مانند جمع، تفریق، ضرب، تقسیم و توان و همچنین عملیات ویژه ای مانند تقسیم عدد صحیح و مدول بیندازیم. جدول زیر علائم عملیاتی مورد استفاده در هنگام نوشتن عبارات حسابی VBA را نشان می دهد.

عبارت یک مقدار یا گروهی از مقادیر است که یک مقدار واحد را بیان می کند. نتیجه یک عبارت یک مقدار واحد از یک نوع داده خاص است. علائم (تعیین) عملیات برای کار بر روی مقادیر خاصی در عبارات استفاده می شود. برای تخصیص نتیجه یک عبارت به یک متغیر، از عملگر انتساب (=) استفاده می‌شود، که هر مقداری را که با عبارت سمت راست عملگر تخصیص نشان داده می‌شود، در محل حافظه‌ای که متغیر سمت چپ آن عملگر به آن ارجاع می‌دهد، ذخیره می‌کند.

در تمام عملیات زیر، هر دو عملوند باید عبارت های عددی یا رشته هایی باشند که VBA بتواند آنها را به عدد تبدیل کند.

اضافه

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

Sub Slozhenie() "نمونه ای از عبارت حسابی با علامت "+" Dim A1, A2, A3 به عنوان عدد صحیح "اعلام متغیرهای A1=1 "تخصیص مقدار 1 به متغیر A1 A2=2 "تخصیص مقدار 2 به متغیر A2 A3=A1+A2 "تخصیص نتیجه افزودن متغیر A3 MsgBox A3 "خروجی A3 در کادر گفتگوی فرعی پایان

نوع داده حاصل از یک عبارت جمع معمولاً با دقیق ترین نوع آن عبارت است، با چند استثنا. تمام استثنائات این قانون به وضوح در مثال ها نشان داده شده است.

منها کردن

علامت (-) برای انجام عملیات تفریق و همچنین برای نشان دادن اعداد منفی (زمانی که در مقابل یک متغیر یا عبارت قرار می گیرد و به معنای ضرب در -1 است) استفاده می شود. علامت منفی که در مقابل یک عدد قرار می گیرد تا نشان دهد آن عدد منفی است، علامت منهای یکپارچه می گویند.

برای تعیین نوع داده نتیجه یک عبارت تفریق، VBA از قوانین مشابهی پیروی می کند که برای عباراتی که از علامت عملگر جمع استفاده می کنند، اما دو قانون اضافی وجود دارد.

قانون 1. اگر یکی از عملوندهای عبارت تفریق از نوع Date باشد، نتیجه عبارت نیز از نوع Date خواهد بود.

قانون 2. اگر هر دو عملوند در یک عبارت تفریق از نوع Date باشند، نتیجه عبارت از نوع Double خواهد بود.

Sub Vychitanie() "نمونه ای از عبارت حسابی امضا شده "-" Dim D1, D2 As Date "اعلان متغیر D1=Now "تخصیص مقدار تاریخ فعلیمتغیر D1 D2=Now-5 "تخصیص مقدار تاریخ به متغیر D2 MsgBox TypeName(D2), vbOKOnly, "Now-5" MsgBox TypeName(D1-D2), vbOKOnly, "D1-D2" End Sub

ضرب

علامت (*) برای انجام عملیات ضرب استفاده می شود، نتیجه این عمل حاصل ضرب عملوندها است. برای تعیین نوع داده حاصل از یک عبارت ضرب، VBA از همان قوانینی استفاده می کند که برای عباراتی که از جمع استفاده می کنند. در عبارات ضرب، تمام متغیرهای Variant حاوی مقادیر Date به مقادیر عددی تبدیل می شوند.

"نمونه ای از عبارات حسابی با علامت "*" 4*10 "ضرب 4 در 10 MyVar*2 "ضرب MyVar در 2 MyVar*OtherVar "ضرب MyVar توسط OtherVar

بخش

برای انجام عملیات تقسیم از علامت (/) استفاده می شود، این علامت را علامت تقسیم اعداد حقیقی می نامند. در عبارات تقسیم یک عملوند بر دیگری تقسیم می شود و حاصل تقسیم یک ضریب است.

"نمونه ای از عبارات حسابی امضا شده"/"10/4" تقسیم 10 بر 4 MyVar/2 "تقسیم MyVar بر 2 MyVar/OtherVar" تقسیم MyVar بر OtherVar

اگر هر عملوندی در یک عبارت تقسیم به Null ارزیابی شود، نتیجه عبارت نیز Null است. نوع داده در عبارات تقسیم واقعی معمولا Double است، اما یک استثنا وجود دارد.

اگر هر دو عملوند در یک عبارت تقسیم از نوع Integer یا Single باشند، نتیجه عبارت تقسیم از نوع Single است. اگر نتیجه از محدوده Single سرریز شود، VBA آن را به Double تبدیل می کند.

تقسیم عدد صحیح

علامت (\) برای انجام عملیات تقسیم اعداد صحیح استفاده می شود که در آن نتیجه تقسیم همیشه یک عدد صحیح بدون جزء کسری است. VBA ضریب یک تقسیم عدد صحیح را گرد نمی کند، بلکه آن را به یک عدد صحیح کوتاه می کند و قسمت کسری را کنار می گذارد.

نوع داده حاصل از یک عبارت تقسیم عدد صحیح یا Integer یا Long است. VBA از کوچکترین نوع داده استفاده می کند که با نتیجه عبارت مطابقت دارد.

"نمونه ای از عبارات حسابی با علامت "\" 10\4 "10 را بر 4 تقسیم کنید. مقدار 2 MyVar\2 "تقسیم MyVar بر 2 MyVar\OtherVar " تقسیم MyVar بر OtherVar

بخش مدولو

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

"نمونه ای از عبارات حسابی امضا شده "Mod" 8 Mod 2 "مقدار 0 را برمی گرداند. 5.1 Mod 3 "مقدار 2 را برمی گرداند؛ 6 Mod MyVar "اگر MyVar حاوی 3 باشد، 0 را برمی گرداند.

توضیح قابل درک در این مورد عملیات ریاضیداده شده در یکی از انجمن های برنامه نویسان. من از آنجا نقل قول می کنم: "تصور کنید که یک قوطی پر 50 لیتری و یک قوطی 3 لیتری وجود دارد. و شما شروع به برداشتن آب از قوطی با یک قوطی می کنید (فقط می توانید یک قوطی پر بکشید). 48 لیتر برداشته شده، 2 لیتر مانده است. . . به عبارت دیگر 50 Mod 3 2 را برمی گرداند.

نوع داده حاصل از یک عبارت مدول، عدد صحیح یا طولانی است. VBA از کوچکترین نوع متناسب با نتیجه عبارت استفاده می کند.

توانمندی

علامت (^) برای انجام عملیات توان بر روی یک عدد یا عبارت استفاده می شود. توان نشان می دهد که یک عدد یا عبارت باید چند بار در خودش ضرب شود.

"عبارت حسابی مثال با علامت "^" 3 ^ 3" همان 3*3*3 است، مقدار 27 را برمی‌گرداند.


اپراتور تخصیص (=)

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

عملگر تخصیص دو شکل نحوی دارد:

1 اجازه دهید varname = بیان
2 varname = بیان


نام متغیر- هر متغیر VBA

اصطلاح- هر عبارت VBA


اولین نسخه از عملگر انتساب در زبان های برنامه نویسی اولیه Basic استفاده شد. گزینه دوم در نسخه مدرن VBA استفاده می شود.


هنگام اجرای دستور انتساب، VBA ابتدا عبارت سمت راست دستور انتساب را ارزیابی می کند و سپس نتیجه عبارت را در متغیری که نام آن در سمت چپ علامت برابر است ذخیره می کند.


X = 5 + 7; Y = X + 5 ; Z = X - Y; A=B; I = I + 1


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

به عنوان مثال، اگر در دستور انتساب A = A +5، متغیر A قبل از عملیات انتساب حاوی مقدار 7 بود، پس از عملیات حاوی مقدار 12 (7+5) خواهد بود.

باید به خاطر داشت:

  • شما می توانید هر متغیر عددی (یا عبارت) را به هر متغیر دیگری از نوع عددی (یا متغیر از نوع Variant) اختصاص دهید.
  • اگر یک عبارت عددی را به یک متغیر تایپ شده با دقت کمتر اختصاص دهید (به عنوان مثال، Double - Long)، VBA مقدار عبارت را گرد می کند تا با دقت متغیری که مقدار جدید را می گیرد مطابقت داشته باشد.
  • هنگامی که به متغیر String یک Variant حاوی یک عدد اختصاص داده می شود، VBA به طور خودکار عدد را به یک رشته تبدیل می کند.

عملگر اضافه (+)

عملگر جمع یک جمع ساده را انجام می دهد. هر دو عملوند باید عبارت های عددی یا رشته هایی باشند که VBA بتواند آنها را به عدد تبدیل کند. عملگر جمع همچنین می تواند برای انجام عملیات حسابی روی داده های Date استفاده شود.


نوع داده نتیجه یک عبارت جمع معمولاً با دقیق ترین نوع آن عبارت است. اما، استثنائاتی وجود دارد:

  • حاصل جمع نوع Single و Long Double است.
  • افزودن نوع تاریخ به هر نوع داده دیگری همیشه منجر به یک تاریخ می شود.
  • اگر نتیجه از محدوده نوع Integer بیشتر شود، VBA آن را به Long تبدیل می کند.
  • اگر نتیجه از انواع Long، Single، Date بیشتر باشد، VBA آن را به Double تبدیل می کند.
  • اگر هر عملوندی در عبارت جمع Null باشد، نتیجه عبارت جمع نیز Null است.

ترتیب افزایش دقت را برای انواع داده های عددی به یاد بیاورید: بایت، عدد صحیح، طولانی، تک، دو برابر، ارز.

باید گفت که باید به وضوح درک کرد که VBA چگونه انواع داده ها را در نتیجه عملیات حسابی تبدیل می کند. این در آینده به جلوگیری از بسیاری از خطاهای "غیر ضروری" هنگام نوشتن کد کمک می کند.

عملگر تفریق (-)

عملگر تفریق دو کار انجام می دهد: برای تفریق یک عدد از عدد دیگر استفاده می شود. نشان دهنده یک علامت منهای یکپارچه است (این علامت منفی است که در مقابل یک عدد قرار می گیرد تا نشان دهد که یک عدد منفی است). قرار دادن منهای یکپارچه در مقابل یک متغیر یا عبارت برابر است با ضرب آن عدد در -1.


هر دو عملوند در عبارت تفریق باید متغیرهای عددی (عبارات) یا عبارت های رشته ای باشند که VBA بتواند آنها را به عدد تبدیل کند. برای کار با تاریخ ها می توانید از عملگر تفریق استفاده کنید.

VBA از همان قوانینی برای تعیین نوع داده حاصل از عبارت تفریق استفاده می کند که برای عباراتی که از عملگر جمع استفاده می کنند استفاده می کند. اما، یک اضافه وجود دارد:
اگر هر دو عملوند در یک عبارت از نوع Date باشند، نتیجه عبارت از نوع Double خواهد بود.

عملگر ضرب (*)

عملگر ضرب دو عدد را ضرب می کند - نتیجه عبارت ضرب حاصلضرب دو عملوند است. هر دو عملوند در عبارت ضرب باید عبارت های عددی یا رشته هایی باشند که VBA بتواند آنها را به عدد تبدیل کند.

VBA از همان قوانینی برای تعیین نوع داده حاصل از یک عبارت ضرب پیروی می کند که برای عباراتی که از عملگر جمع استفاده می کنند. در عبارات ضرب، تمام متغیرهای Variant که حاوی مقادیر Date هستند به مقادیر عددی تبدیل می شوند.

اپراتور بخش (/)

عملگر تقسیم ممیز شناور، تقسیم حسابی معمول عملوندهای خود را انجام می دهد.

در عبارات تقسیم، عملوند اول بر عملوند دوم تقسیم می شود - نتیجه تقسیم ضریب است.

هر دو عملوند در عبارت تقسیم ممیز شناور باید عبارت های عددی یا رشته هایی باشند که VBA بتواند آنها را به عدد تبدیل کند.

اگر حداقل یک عملوند در عبارت تقسیم از نوع Null باشد، نتیجه تقسیم نیز Null خواهد بود.

نوع داده عملیات تقسیم ممیز شناور Double است به جز:

  • هر دو عملوند در عبارت تقسیم از نوع Integer یا Single هستند - نتیجه Single.
  • اگر نتیجه عبارت از محدوده مقادیر برای نوع Single سرریز نشود.

تقسیم عدد صحیح (\)

تقسیم اعداد صحیح با تقسیم ممیز شناور تفاوت دارد زیرا نتیجه آن همیشه یک عدد صحیح بدون بخش کسری است.

هر دو عملوند در یک عبارت تقسیم عدد صحیح باید عبارت های عددی یا رشته هایی باشند که VBA بتواند آنها را به عدد تبدیل کند.

قبل از انجام عملیات تقسیم عدد صحیح، VBA هر عملوند را به تعدادی از نوع Integer یا Long (همان نوع حاصل از تقسیم عدد صحیح) گرد می کند.

VBA باقیمانده کسری حاصل از یک عبارت تقسیم عدد صحیح را دور می اندازد (اما گرد نمی کند!). به عنوان مثال، عبارات 22\5 و 24\5 نتیجه یکسانی دارند = 4.

اگر حداقل یک عملوند در یک عبارت تقسیم عدد صحیح از نوع Null باشد، نتیجه تقسیم نیز Null است.

بخش مدولو (Mod)

تقسیم مدولو، همانطور که بود، مکمل تقسیم عدد صحیح است. در تقسیم مدول، عبارت فقط باقیمانده عملیات تقسیم را به عنوان یک عدد صحیح برمی گرداند.
22 مود 5 = 2
24 مد 5 = 4
25 مد 5 = 0

خواص باقی مانده از تقسیم مدول با تقسیم عدد صحیح یکسان است.

توان (^)

عملگر توان یک عدد را به توان افزایش می دهد.



هر دو عملگر در عبارت توان باید عبارت های عددی یا رشته هایی باشند که VBA بتواند آنها را به اعداد تبدیل کند.

عملوند سمت چپ عملگر توان تنها زمانی می تواند یک عدد منفی باشد که عملوند سمت راست یک عدد صحیح باشد.

نتیجه عبارت از نوع Double است.

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


بیایید موارد فوق را خلاصه کنیم.