زبان VBA (Visual Basic for Applications) مجموعهای گسترده از توابع داخلی یا Built-in Functions را در اختیار کاربر قرار میدهد. این توابع برای انجام محاسبات عددی، تبدیل دادهها، پردازش متن، کنترل خطا و بسیاری عملیات دیگر استفاده میشوند.
در این آموزش از ایران VBA فهرست کامل توابع داخلی VBA را همراه با توضیح، مثال و نتیجه بررسی میکنیم تا بتوانید از آنها در پروژههای خود بهصورت مؤثر استفاده کنید.
📑 فهرست مطالب
- تعریف
- ۱- توابع تبدیل (Conversion functions)
- ۲- توابع ریاضی (Math functions)
- ۳- توابع تبدیل نوع داده (Type conversion functions)
- ۴. توابع رشتهای (String Functions)
- ۵. توابع تاریخ و زمان (Date & Time Functions)
- ۶. توابع فایل و سیستم (File & System Functions)
- ۷. توابع کنترل خطا (Error Handling Functions)
- ۸- سایر توابع داخلی
- سؤالات متداول درباره توابع VBA
- توابع داخلی VBA چه هستند؟
- تفاوت بین Sub و Function در VBA چیست؟
- چگونه میتوان از توابع داخلی در VBA استفاده کرد؟
- تفاوت تابع Int با Fix در VBA چیست؟
- چطور میتوان نوع داده را در VBA تغییر داد؟
- چطور میتوان در VBA با رشتهها کار کرد؟
- چطور میتوان تاریخ و زمان فعلی را در VBA دریافت کرد؟
- چطور اختلاف بین دو تاریخ را در VBA حساب کنیم؟
- چطور میتوان در VBA با فایلها کار کرد؟
- شیء Err در VBA چه کاربردی دارد؟
- آیا میتوان از توابع Excel در VBA استفاده کرد؟
- منابع برای مطالعه بیشتر:
تعریف
توابع توکار یا ذاتی یا داخلی توابعی هستند که در زبان برنامه نویسی VBA پیاده سازی و بهینه سازی آنها توسط کامپایلر صورت گرفته است و در دسترس برنامه نویس قرار گرفته اند.
توابع توکار به منظور افزایش سرعت، سادگی و کارایی درون کامپایلر VBA تعبیه شده اند تا عملیات پرکابردی را که خلال برنامه نویسی ممکن است مورد استفاده اکثر برنامه نویسان قرار بگیرد را بر عهده بگیرند. بعنوان مثال تابع توکار Sin به منظور محاسبه سینوس در کامپایلر قرار داده است.
توابع توکار مانند روال Function عملیاتی را انجام می دهند و در پایان مقدار بازگشتی را نتیجه می دهند، با این تفاوت که معماری توابع توکار توسط کامپایلر می شود و همچنین توابع توکار در VBA بعنوان روال دسته بندی نمی شوند، به این معنا که توابع توکار تا زمانی که درون یک روال قرار نگیرند هیچ عملیاتی را انجام نخواهند داد.
VBA طیف وسیعی از توابع داخلی را پشتیبانی می نماید که در زیر با آنها آشنا خواهیم شد.
۱- توابع تبدیل (Conversion functions)
توابع تبدیل در 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 |
۲- توابع ریاضی (Math functions)
توابع ریاضی VBA برای محاسباتی مانند سینوس، لگاریتم، قدر مطلق و تولید اعداد تصادفی استفاده میشوند. در ادامه برخی از پرکاربردترین آنها آورده شده است.
| تابع | دستور زبان | هدف | مثال | نتیجه |
|---|---|---|---|---|
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 |
IntFix |
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 |
۳- توابع تبدیل نوع داده (Type conversion functions)
در VBA گاهی لازم است نوع داده یک متغیر (مثلاً رشته یا عدد) تغییر کند. توابع این بخش برای انجام این کار طراحی شدهاند.
| تابع | دستور زبان | هدف | نوع داده نتیجه تابع |
|---|---|---|---|
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 |
۴. توابع رشتهای (String Functions)
توابع رشتهای در VBA برای کار با متنها (String) به کار میروند. از جمله عملیات متداول میتوان به بریدن، جستجو، جایگزینی، و محاسبه طول رشته اشاره کرد.
| نام تابع | توضیح | مثال | خروجی |
|---|---|---|---|
Len() |
طول یک رشته را برمیگرداند. | Len("Iran VBA") |
8 |
Left() |
تعداد مشخصی از کاراکترهای سمت چپ رشته را بازمیگرداند. | Left("Excel VBA", 5) |
Excel |
Right() |
تعداد مشخصی از کاراکترهای سمت راست رشته را بازمیگرداند. | Right("Excel VBA", 3) |
VBA |
Mid() |
قسمتی از رشته را از محل دلخواه استخراج میکند. | Mid("IranVBA", 3, 4) |
anVB |
InStr() |
محل اولین وقوع یک زیررشته را در رشته اصلی برمیگرداند. | InStr("Visual Basic", "Basic") |
8 |
Replace() |
قسمتی از متن را با متن جدید جایگزین میکند. | Replace("Hello World", "World", "VBA") |
Hello VBA |
مثال ترکیبی:
' حذف فاصلههای اضافی از متن و نمایش طول نهایی
Dim txt As String
txt = " Iran VBA "
MsgBox Len(Trim(txt)) ' خروجی: 8
۵. توابع تاریخ و زمان (Date & Time Functions)
توابع تاریخ و زمان در VBA برای دریافت یا محاسبه تاریخ و ساعت، تفاضل بین دو تاریخ، و قالببندی مقادیر زمانی استفاده میشوند.
| نام تابع | توضیح | مثال | خروجی |
|---|---|---|---|
Now() |
تاریخ و ساعت جاری سیستم را برمیگرداند. | Now() |
11/2/2025 8:10:06 PM |
Date() |
فقط تاریخ جاری را بازمیگرداند. | Date() |
11/2/2025 |
Time() |
فقط ساعت جاری را بازمیگرداند. | Time() |
8:10:52 PM |
DateAdd() |
مقدار مشخصی زمان به تاریخ اضافه میکند. | DateAdd("d", 7, Date()) |
7 روز بعد از امروز11/9/2025 |
DateDiff() |
تفاضل بین دو تاریخ را برحسب روز، ماه یا سال محاسبه میکند. | DateDiff("d", #1/1/2024#, Date()) |
تعداد روز از ابتدای سال671 |
Format() |
قالببندی سفارشی برای تاریخ یا زمان. | Format(Now(), "yyyy/mm/dd hh:nn") |
2025/11/02 20:11 |
مثال:
' محاسبه سن بر اساس تاریخ تولد
Dim age As Integer
age = DateDiff("yyyy", #5/22/1990#, Date)
MsgBox "سن شما: " & age
۶. توابع فایل و سیستم (File & System Functions)
توابع فایل و سیستم در VBA برای بررسی وجود فایلها یا پوشهها، دسترسی به اطلاعات سیستم و مسیرهای کاری به کار میروند.
| نام تابع | توضیح | مثال | خروجی |
|---|---|---|---|
Dir() |
نام فایل یا پوشه مطابق الگو را برمیگرداند. | Dir("C:\*.xls*") |
اولین فایل Excel در درایو C |
FileLen() |
حجم فایل را به بایت برمیگرداند. | FileLen("C:\Report.xlsm") |
مثلاً 204800 |
GetAttr() |
ویژگیهای فایل را (مثلاً فقطخواندنی یا مخفی) بازمیگرداند. | GetAttr("C:\Report.xlsm") |
1 = ReadOnly |
CurDir() |
مسیر جاری کاری را بازمیگرداند. | CurDir() |
C:\Users\Admin\Documents |
Environ() |
دسترسی به متغیرهای محیطی سیستم مانند نام کاربر. | Environ("USERNAME") |
Admin |
مثال:
' بررسی وجود فایل
If Dir("C:\Data\Report.xlsx") <> "" Then
MsgBox "فایل موجود است."
Else
MsgBox "فایل یافت نشد."
End If
۷. توابع کنترل خطا (Error Handling Functions)
شیء Err در VBA برای دسترسی به اطلاعات خطای آخر اتفاقافتاده استفاده میشود. این شیء بهصورت خودکار هنگام بروز خطا مقداردهی میشود و شامل ویژگیهایی مانند شماره خطا (Err.Number)، توضیح خطا (Err.Description) و منبع آن (Err.Source) است. با استفاده از Err.Clear میتوان اطلاعات خطای جاری را پاک کرد و آماده دریافت خطای بعدی شد.
Sub Example_ErrorHandling()
On Error Resume Next ' ادامه اجرای برنامه حتی در صورت بروز خطا
Dim x As Integer
x = 10 / 0 ' ایجاد خطا (تقسیم بر صفر)
If Err.Number <> 0 Then
MsgBox "کد خطا: " & Err.Number & vbCrLf & _
"توضیح: " & Err.Description & vbCrLf & _
"منبع: " & Err.Source, vbExclamation, "مدیریت خطا در VBA"
Err.Clear ' پاک کردن خطا برای استفاده مجدد
End If
End Sub
VBA چند تابع داخلی برای تشخیص و مدیریت خطاها در زمان اجرا دارد. این توابع معمولاً همراه با دستور On Error استفاده میشوند.
| نام تابع | توضیح | مثال | خروجی |
|---|---|---|---|
Err.Number |
شماره خطای آخرین خطا را برمیگرداند. | Err.Number |
مثلاً 11 (تقسیم بر صفر) |
Err.Description |
توضیح متنی خطا را بازمیگرداند. | Err.Description |
Division by zero |
Err.Clear() |
خطای جاری را پاک میکند. | Err.Clear() |
--- |
IsError() |
بررسی میکند که آیا مقدار دادهشده نوع خطاست یا خیر. | IsError(CVErr(2004)) |
True |
CVErr() |
یک مقدار خطا برای استفاده در سلولهای اکسل ایجاد میکند. | CVErr(2004) |
Error 2004 |
مثال:
On Error Resume Next
Dim x As Integer
x = 10 / 0
If Err.Number <> 0 Then
MsgBox "خطا: " & Err.Description
Err.Clear
End If
۸- سایر توابع داخلی
این بخش شامل توابع متفرقه اما کاربردی است که در هیچیک از دستههای قبلی قرار نمیگیرند، مانند Format، Now و IsNull.
تابع 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 از نوع داده 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) |
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 می باشد.
📚 جمعبندی
در این مقاله با مهمترین توابع داخلی VBA آشنا شدیم. این توابع ابزارهای پایهای برای ساخت ماکروهای کارآمد و حرفهای در اکسل و سایر برنامههای Office هستند.
در آموزشهای بعدی به سراغ توابع رشتهای، تاریخ و زمان، فایل و سیستم و همچنین توابع کنترل خطا در VBA خواهیم رفت.
سؤالات متداول درباره توابع VBA
توابع داخلی VBA چه هستند؟
توابع داخلی یا Built-in Functions در VBA مجموعهای از توابع آماده هستند که توسط مایکروسافت در محیط VBA تعبیه شدهاند و برای انجام کارهای متداول مانند محاسبات، پردازش متن، مدیریت تاریخ، و کنترل خطا استفاده میشوند.
تفاوت بین Sub و Function در VBA چیست؟
در VBA، روال Sub مجموعهای از دستورات است که اجرا میشود ولی مقداری بازنمیگرداند، در حالی که Function علاوه بر اجرای دستورات، یک مقدار خروجی نیز برمیگرداند. معمولاً از Function برای محاسبه یا پردازش داده استفاده میشود.
چگونه میتوان از توابع داخلی در VBA استفاده کرد؟
برای استفاده از توابع داخلی کافی است نام تابع را در یک روال VBA فراخوانی کنید. برای مثال، تابع Abs(-5) مقدار قدر مطلق عدد ۵ را برمیگرداند و تابع Len("Excel") طول رشته را محاسبه میکند.
تفاوت تابع Int با Fix در VBA چیست؟
هر دو تابع برای حذف بخش اعشاری عدد استفاده میشوند، اما Int همیشه عدد را به سمت پایین گرد میکند (مثلاً Int(-8.9) برابر -9 است) در حالی که Fix فقط بخش اعشاری را حذف میکند (یعنی Fix(-8.9) برابر -8 میشود).
چطور میتوان نوع داده را در VBA تغییر داد؟
با استفاده از توابع تبدیل نوع داده مانند CInt، CDbl، CStr و CLng میتوانید مقدار متغیر را به نوع دلخواه تبدیل کنید. برای مثال، CStr(123) عدد را به رشته تبدیل میکند.
چطور میتوان در VBA با رشتهها کار کرد؟
توابعی مانند Len، Left، Right، Mid، InStr و Replace برای پردازش رشتهها به کار میروند. با آنها میتوانید بخشی از رشته را استخراج یا جایگزین کنید.
چطور میتوان تاریخ و زمان فعلی را در VBA دریافت کرد؟
تابع Date() تاریخ سیستم و تابع Now() تاریخ و ساعت فعلی را برمیگردانند. برای نمایش فقط ساعت میتوان از Time() استفاده کرد.
چطور اختلاف بین دو تاریخ را در VBA حساب کنیم؟
با استفاده از تابع DateDiff() میتوانید اختلاف بین دو تاریخ را برحسب روز، ماه یا سال محاسبه کنید. مثال:
DateDiff("d", #1/1/2024#, Date) اختلاف روزها تا امروز را برمیگرداند.
چطور میتوان در VBA با فایلها کار کرد؟
توابعی مانند Dir()، Kill()، FileLen() و GetAttr() برای مدیریت فایلها استفاده میشوند. مثلاً Dir("C:\Report.xlsx") بررسی میکند آیا فایل وجود دارد یا خیر.
شیء Err در VBA چه کاربردی دارد؟
شیء Err برای شناسایی و مدیریت خطاها در زمان اجرا استفاده میشود. با ویژگیهایی مانند Err.Number، Err.Description و Err.Source میتوان جزئیات خطا را مشاهده و با Err.Clear آن را پاک کرد.
آیا میتوان از توابع Excel در VBA استفاده کرد؟
بله. با استفاده از شیء Application.WorksheetFunction میتوانید بسیاری از توابع Excel مانند Sum یا VLookup را در VBA فراخوانی کنید. مثال:
MsgBox Application.WorksheetFunction.Sum(1,2,3)
منابع برای مطالعه بیشتر:
لیست توابع داخلی در سایت مایکروسافت
بیشتر بخوانید
Me در VBA | کاربرد کلمه کلیدی Me در VBA و برنامه نویسی شیءگرا
روال Property Get در VBA | کاربرد روال Property Get در شیءگرایی
روال Property Set در VBA | کاربرد روال Property Set در شیءگرایی
روال Property Let در VBA | شیءگرایی و کپسوله سازی داده ها در VBA
خواص کلاس در VBA | ایجاد خواص کلاس با استفاده از اعلان متغیر در VBA
کلاس و شیء در VBA | مراحل ایجاد کلاس و شیء در VBA
برنامه نویسی شیءگرا (OOP) | مقدمه ای بر روش برنامه نویسی شیءگرا