توابع توکار VBA | لیست کامل توابع داخلی در ویژوال بیسیک

در آموزش قبلی سایت با روال و انواع در ویژوال بیسیک آشنا شدیم. روال Function یکی از انواع روال پشتیبانی شده توسط VBA می باشد که مقدار بازگشتی نیز می تواند داشته باشد. در این بخش از آموزش های رایگان وی بی ای با برخی از توابع توکار یا توابع داخلی (Built-in Function) پرکاربرد VBA آشنا می شویم.

مدت زمان تخمینی مطالعه: 0 دقیقه

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

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

تعریف

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

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

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

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

۱- توابع تبدیل

تابع دستور زبان هدف مثال نتیجه
Asc Asc(string) محاسبه کد اَسکی اولین نویسه آرگومان string Asc(“ABC”) 65
Chr Chr(charcode)
ChrB(charcode)
ChrW(charcode)
محاسبه نویسه مرتبط با کد نویسه محاسبه داده های بایت مرتبط با کد نویسه محاسبه نویسه یونیکد مرتبط با کد نویسه Chr(65) A
CVErr CVErr(errornumber) ایجاد کد خطای تعریف شده توسط کاربر CVErr(2001) Error 2001
Format Format(Expression, [ Format ], [ FirstDayOfWeek ], [ FirstWeekOfYear ]) قالب بندی عبارت Format(“17:4:23”, “hh:mm:ss”) 17:04:23
Hex Hex(number) تبدیل اعداد از مبنای ۱۰ به مبنای ۱۶ Hex(10) A
Oct Oct(number) تبدیل اعداد از مبنای 10 به مبنای 8 Oct(459) 713
Str Str(number) محاسبه رشته متناظر با عدد Str(459) ” 459″
Val Val(string) مقدار عددی اعداد موجود در یک رشته را محاسبه می کند Val(” 2 45 7″) 2457

۲- توابع ریاضی

تابع دستور زبان هدف مثال نتیجه
Abs Abs(number) محاسبه قدر مطلق عدد Abs(-50.3) 50.3
Atn Atn(number) محاسبه آرک تانژانت یک عدد (نتیجه تابع بر حسب رادیان نمایش داده می شود) Atn(1)*4 3/14159265358979
Cos Cos(number) محاسبه کسینوس زاویه (آرگومان number بر حسب رادیان باید تکمیل شود) Cos(0) 1
Exp Exp(number) تابع نمایی ex Exp(1) 2/71828182845905
Int
Fix
Int(number)
Fix(number)
محاسبه قسمت صحیح عدد (تابع Int  همواره number را به نزدیکترین عدد صحیح محاسبه می نماید ولی تابع Fix فقط قسمت اعشاری number را حذف می نماید) Int(99.8)
Fix(99.8)
Int(-99.2)
Fix(99.2)
99
99
100-
99-
Log Log(number) محاسبه لگاریتم طبیعی آرگومان number Log(2/71828182845905) 1
Rnd Rnd [ (Number) ] ایجاد عدد اتفاقی کمتر از 1 و صفر Int((6 * Rnd) + 1) ایجاد یک عدد اتفاقی بین یک و شش
Sgn Sgn(number) علامت آرگومان number را بر می گرداند Sgn(12) Sgn(-12) Sgn(0) 1 -1 0
Sin Sin(number) محاسبه سینوس زاویه (آرگومان number بر حسب رادیان باید تکمیل شود) Sin(0) 0
Sqr Sqr(number) محاسبه رادیکال عدد در مبنای ۲ Sqr(4) 2
Tan Tan(number) محاسبه تانژانت زاویه (آرگومان number بر حسب رادیان باید تکمیل شود) tan(0.785398) 0/999999673205157

۳- توابع تبدیل نوع داده

تابع دستور زبان هدف نوع داده نتیجه تابع
CBool CBool(expression) تبدیل نوع داده آرگومان تابع به نوع داده Boolean Boolean
CByte CByte(expression) تبدیل نوع داده آرگومان تابع به نوع داده Byte Byte
CCur CCur(expression) تبدیل نوع داده آرگومان تابع به نوع داده Currency Currency
CDate CDate(expression) تبدیل نوع داده آرگومان تابع به نوع داده Date Date
CDbl CDbl(expression) تبدیل نوع داده آرگومان تابع به نوع داده Double Double
CDec CDec(expression) تبدیل نوع داده آرگومان تابع به نوع داده Decimal Decimal
CInt CInt(expression) تبدیل نوع داده آرگومان تابع به نوع داده Integer Integer
CLng CLng(expression) تبدیل نوع داده آرگومان تابع به نوع داده Long Long
CLngLng CLngLng(expression) تبدیل نوع داده آرگومان تابع به نوع داده LongLong LongLong (فقط در پلتفرم های ۶۴ بیتی))
CLngPtr CLngPtr(expression) تبدیل نوع داده آرگومان تابع به نوع داده LongPtr LongPtr
CSng CSng(expression) تبدیل نوع داده آرگومان تابع به نوع داده Single Single
CStr CStr(expression) تبدیل نوع داده آرگومان تابع به نوع داده String String
CVar CVar(expression) تبدیل نوع داده آرگومان تابع به نوع داده Variant Variant

۴- سایر توابع داخلی

تابع MsgBox

تابع دستور زبان هدف مثال نتیجه
MsgBox MsgBox ((prompt, [ buttons, ] [ title, ] [ helpfile, context ])) نمایش پنجره پیغام به کاربر با استفاده از آرگومان ها (arglist) MsgBox “آیا اطلاعات فرم را تایید می نمایید؟”, vbOKCancel نمایش پنجره پیغام به کاربر که شامل دو کلید OK و Cancel می باشد
  • لیست آرگومان ها با استفاده از «,» (کاما) جدا می شوند.
  • غیر از آرگومان prompt که اجباری می باشد، سایر آرگومان ها اختیاری هستند.
  • آرگومان prompt می تواند یک رشته String (مانند مثال جدول بالا) و یا یک متغیر که حاوی اطلاعات یک رشته می باشد تعریف گردد.
  • آرگومان buttons ترکیب کلید هایی که می بایست در پنجره پیغام بکار رود را تنظیم می نماید.

تابع InputBox

تابع دستور زبان هدف مثال نتيجه
InputBox InputBox (prompt, [ title ], [ default ], [ xpos ], [ ypos ], [ helpfile, context ]) یک کادر دریافت اطلاعات را به کاربر نمایش می دهد، اطلاعات را از کاربر در یک جعبه متنی دریافت می نماید و پس از کلیک کاربر یک رشته حاوی محتویات جعبه متنی را برمی گرداند. inputbox “لطفا تاريخ تولد خود را وارد نماييد” تابع توکار InputBox

مقدار بازگشتی تابع داخلی InputBox از نوع داده String می باشد. بنابراین برای ذخیره اطلاعات دریافتی از کاربر باید یک متغیر از نوع String اعلان نمایید.

تابع Array

تابع دستور زبان هدف مثال نتیجه
Array Array(arglist) ایجاد آرایه با استفاده از لیست آرگومان ها (arglist) MyWeek = Array(“Mon”, “Tue”, “Wed”, “Thu”, “Fri”, “Sat”, “Sun”) MyWeek(2) = Tue
  • لیست آرگومان ها با استفاده از «,» (کاما) جدا می شوند.
  • کران پایین یک آرایه بصورت پیش فرض صفر می باشد. شما می توانید با استفاده از دستور Option Base 1 کران پایین را به یک تغییر دهید. دقت داشته باشید که دستور Option Base فقط در سطح ماژول قابل استفاده می باشد. در مثال بالا فرض شده است که Option Base روی یک تنظیم شده است.

تابع LBound

تابع دستور زبان هدف
LBound

LBound(arrayname, [ dimension ])

کران پایین در دسترس برای یک آرایه (arrayname) را با توجه به بعد انتخابی (dimension) برمی گرداند.
  • آرگومان dimension تعیین کننده این است که کران پایین برای کدام بعد باید بازگردانده شود. مقدار یک (1) برای بعد اول، دو (2) برای بعد دوم و به همین ترتیب. اگر حذف شود مقدار پیش فرض آن یک (1) می باشد.
  • تابع LBound به همراه تابع UBound برای محاسبه اندازه هر کدام از ابعاد یک آرایه بکار می رود. بطور مثال دستور
    UBound(A, 2) - LBound(A, 2) + 1
    اندازه بعد دوم آرایه A را محاسبه می نماید.
  • تنظیم Option Base می تواند روی مقدار بازگشتی تابع LBound تاثیر بگذارد.
  • استفاده از بند To به هنگام اعلان یک آرایه با استفاده از هر یک دستورات اعلان متغیر (Dim, Private, Public, ReDim, Static) باعث خواهد شد که هر عددی که در اعلان مشخص شده باشد بعنوان کران پایین تعیین گردد. مقدار تعیین شده در بند To بر تنظیم Option Base ارجح می باشد. ( این موضوع در مثال مشخص می باشد )

مثال


Dim Lower
Dim MyArray(1 To 10, 5 To 15, 10 To 20)     ' اعلان آرایه سه بعدی با کران های بالا و پایین تعیین شده
Dim AnyArray(10)  ' اعلان آرایه یک بعدی
Lower = Lbound(MyArray, 1)     ' مقدار بازگشتی: 1.
Lower = Lbound(MyArray, 2)     ' مقدار بازگشتی: 5.
Lower = Lbound(MyArray, 3)    ' مقدار بازگشتی: 10.
Lower = Lbound(AnyArray)    ' مقدار بازگشتی: 0 یا 1. به مقدار تنظیم Option Base بستگی دارد.

تابع UBound

تابع دستور زبان هدف
UBound

UBound(arrayname, [ dimension ])

کران بالای در دسترس برای یک آرایه (arrayname) را با توجه به بعد انتخابی (dimension) برمی گرداند.
  • آرگومان dimension تعیین کننده این است که کران پایین برای کدام بعد باید بازگردانده شود. مقدار یک (1) برای بعد اول، دو (2) برای بعد دوم و به همین ترتیب. اگر حذف شود مقدار پیش فرض آن یک (1) می باشد.
  • تابع UBound به همراه تابع LBound برای محاسبه اندازه هر کدام از ابعاد یک آرایه بکار می رود. بطور مثال دستور
    UBound(A, 2) - LBound(A, 2) + 1
    اندازه بعد دوم آرایه A را محاسبه می نماید.
  • تنظیم Option Base روی مقدار بازگشتی تابع UBound تاثیری ندارد. استفاده از بند To به هنگام اعلان یک آرایه با استفاده از هر یک دستورات اعلان متغیر (Dim, Private, Public, ReDim, Static) باعث خواهد شد که هر عددی که در اعلان مشخص شده باشد بعنوان کران بالا تعیین گردد. مقدار تعیین شده در بند To بر تنظیم Option Base ارجح می باشد. ( این موضوع در مثال مشخص می باشد )

مثال


Dim Upper
Dim MyArray(1 To 10, 5 To 15, 10 To 20)    ' اعلان متغیر حاوی آرایه
Dim AnyArray(10)
Upper = UBound(MyArray, 1)    ' مقدار بازگشتی: 10.
Upper = UBound(MyArray, 3)    ' مقدار بازگشتی: 20.
Upper = UBound(AnyArray)      ' مقدار بازگشتی: 10.

تابع Choose

تابع دستور زبان هدف مثال نتیجه
Choose Choose(index, choice-1, [ choice-2, , [ choice-n ]] ) با توجه به آرگومان index یکی از آرگومان های choice-1 تا choice-n را برمی گرداند.   Choose(1, “Speedy”, “United”, “Federal”) Speedy
  • آرگومان index از نوع داده عددی است و باید بین یک و تعداد آرگومان های choice باشد.
  • آرگومان های choice می توانند هر نوع عبارت Variant که حاوی یکی از انتخاب ها است، باشند.
  • در صورتی که آرگومان index بیشتر از انتخاب ها باشد تابع مقدار Null را برمی گرداند.

تابع CreateObject

تابع دستور زبان هدف مثال نتیجه
CreateObject CreateObject(class, [ servername ]) یک شیء اکتیوایکس را ایجاد و بر می گرداند. Set ExcelSheet = CreateObject(“Excel.Sheet”) یک شئ مطابق صفحه گسترده اکسل ایجاد می نماید.
  • آرگومان class نام برنامه کاربردی و کلاس شیء ای که باید ایجاد شود می باشد. دستور این آرگومان به شکل  appname.objecttype می باشد و شامل دو قسمت appname (نام برنامه کاربردی که شیء را ارائه می نماید) و objecttype (نوع یا نام کلاس شیء ای که باید ایجاد شود) می باشد.
  • آرگومان اختیاری servername نام سرور شبکه ای است که قرار است شیء روی آن ایجاد شود می باشد.(در صورتی که بخواهید شیء را روی یک کامپیوتر درون شبکه ایجاد نماید)
  • بعد از ایجاد شیء توسط تابع، شیء ایجاد شده تمامی متدها و خواص مرجع شیء ای که نمونه آن را ایجاد کرده است را خواهد داشت.

فرایند اتصال شئ ایجاد شده توسط تابع CreateObject در زمان اجرای برنامه صورت می پذیرد. این به این علت است که برای ایجاد شیء توسط این تابع ابتدا متغیر با استفاده از بند As Object اعلان می شود که بدین معناست که متغیر می تواند حاوی مرجع هر نوع شی ای باشد؛ و بنابراین دسترسی به شیء از طریق شیء فقط در زمان اجرای برنامه امکان پذیر می باشد. این نوع متغیر Late-Bound نامیده می شود. نوع مقابل این متغیر early-bound می باشد. مرجع یک متغیر early-bound در زمان اعلان مشخص می گردد و بعد از اعلان فقط می تواند حاوی مرجع شئ اعلان شده باشد، اما از لحاظ کارایی بهتر از متغیر Late-Bound عمل می نماید.

تابع VarType

تابع دستور زبان هدف مثال نتیجه
VarType VarType(varname) یک مقدار Integer را برمی گرداند که نشان دهنده زیرگروه یک متغیر و یا نوع خاصیت پیش فرض یک شیء می باشد. MyCheck = VarType(StrVar) مقدار ۸ را بر می گرداند.
  • تابع داخلی VarType برای تشخیص نوع داده یک متغیر کاربرد دارد. در صورتی که در آرگومان تابع بجای یک متغیر از یک شیء استفاده نمایید تابع نوع داده خاصیت (Property) پیش فرض آن شیء را بر خواهد گرداند.
  • در جدول زیر نوع داده متناظر با مقدار بازگشتی تابع VarType مشخص شده است.
ثابت مقدار توضيح
vbEmpty 0 تهی (فاقد مقدار اولیه)
vbNull 1 Null (فاقد داده معتبر)
vbInteger 2 Integer
vbLong 3 Long integer
vbSingle 4 عدد با ممیز شناور تک دقتی (Wikipedia)
vbDouble 5 عدد با ممیز شناور با دقت دوگانه (Wikipedia)
vbCurrency 6 Currency value
vbDate 7 Date value
vbString 8 String
vbObject 9 Object
vbError 10 Error value
vbBoolean 11 Boolean value
vbVariant 12 Variant
vbDataObject 13 شی دسترسی به داده (DAO)
vbDataObject 13 شی دسترسی به داده (DAO)
vbDecimal 14 Decimal value
vbByte 17 Byte value
vbLongLong 20 LongLong integer (فقط در بسترهای 64 بیتی معتبر می باشد)
vbUserDefinedType 36 نوع داده کاربر
vbArray 8192 آرایه

تابع IsNumeric

تابع دستور زبان هدف مثال نتیجه
IsNumeric IsNumeric(expression) یک مقدار بولی بر می گرداند که مشخص کننده این است که آیا عبارتی که در آرگومان تابع آورده شده است عدد می باشد یا خیر MyCheck = IsNumeric(“55”) مقدار True را بر می گرداند.

مقدار بازگشتی تابع داخلی IsNumeric در صورتی که آرگومان تابع عدد باشد True و در غیر اینصورت False می باشد.

بیشتر بخوانید:

Functions (Visual Basic for Applications)

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