4.3/5 - (19 امتیاز)

پنجره کدنویسی وی بی ای یا Visual basic editor همان محلی است که در آن کدهای وی بی ای وارد میشوند یا کدهای مربوط به یک ماکرو ضبط شده قرار می گیرند. پنجره کدنویسی وی بی ای در درون تب developer اکسل قرار دارد که در قسمت قبل در مورد نحوه فعالسازی آن صحبت کردیم.

روش دیگر برای باز کردن پنجره ویژوال بیسیک استفاده از کلیدهای ترکیبی ALT+F11 است (ابتدا کلید ALT را نه دارید، F11 را فشار دهید و سپس ALt را رها کنید). با فشار دادن این کلیدهای ترکیبی وارد دنیای ویژوال بیسیک خواهید شد.

معرفی پنجره کدنویسی وی بی ای یا Visual basic editor

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

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

نکته: در صورتی که قصد ایجاد یک module ، class madule و Form را دارید (در مورد هرکدام از این مفاهیم در آینده به صورت کامل توضیح خواهیم داد)، می توانید با راست کلیک کردن بر روی هرکدام از شیت ها، یا this workbook گزینه مورد نظر خود را انتخاب کنید. همچنین در بالای پنجره می توانید بر روی گزینه insert module کلیک کنید.

ساخت ماژول

اجرای کدهای وی بی ای (VBA)

 ابتدا یک module به پروژه خود اضافه کنید و روی آن دوبار کلیک کنید تا بتوانید در آن کد بنویسید. برای آشنایی با نحوه اجرای کدهای وی بی ای، کدهای ساده زیر را کپی و paste کنید. این تنها موردی است که میتوانید #قانون_1 وی بی ای را نادیده بگیرید.

 معرفی پنجره کدنویسی وی بی ای

sub myFirstMacro()
     MsgBox("hellow new world!")
End sub

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

  1. دستور Run -> Run Sub/Userform را از منو بالای پنجره visual basic editor انتخاب کنید.
  2. کلیدهای ترکیبی ALT+F5 را فشار دهید( به یاد داشته باشید که ایتدا می بایست ALT را نگه دارید و سپس F5 را فشار دهید)
  3. از دکمه play در بالای صفحه استفاده کنید.

کدهای وارد شده به شکل زیر اجرا میشوند:

به همین سادگی شما یک کد VBA را وارد کردید و سپس اجرا نمودید.

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

دوره آموزشی رایگان ماکرونویسی و برنامه نویسی وی بی ای (VBA) در اکسل

مشترک شدن
Notify of
guest

36 نظرات
نظردهی درون متنی
مشاهده همه نظرات
حمید

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

امیر دایی

سلام
منظورتون رو متوجه نشدم با انتخاب از تب view می تونید پنجره ها رو کم و زیاد کنید. پنجره کدها رو هم بالاشون یک علامت – و مربع هست که می تونید کدهای وی بی ای رو شناور کنید.

امین

سلام
هرکاری میکنم نمیتونم برنامه vba رو نصب کنم .از کجا برم راحت نصب بشه ؟

امیر دایی

وی بی ای نیاز به نصب نداره. اکسل رو باز کنید و با نگه داشتن کلید alt کلید f11 رو بزنید تا به وی بی ای دسترسی داشته باشید.

محسن

سلام.چرا گزینه record macro و visual basic در تب developer غیرفعال است؟

امیر دایی

از تب file وارد قسمت setting بشید. در بخش
Developer|Macro Security
. باید یکی از گزینه های زیر انتخاب شده باشه:
‘Disable all macros with notification”
‘Disable all macros except digitally signed macros”.

امینی

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

امیر دایی

ساده ترین راه این هست که با استفاده از vba موقعی که فایل باز هست، قابلیت copy و paste رو غیر فعال کنید.
https://www.extendoffice.com/documents/excel/4289-excel-disable-cut-copy-paste.htm

امینی

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

امیر دایی

چرا کپی پیست کنید! از گزینه remove duplicate استفاده کنید تا تکراری ها رو حذف کنه.

علی

با سلام من میخوام وقتی در اکسل شماره مشتری رو وارد میکنم از طریق وب سرویس خط پیامکی پیام خوش آمد گویی دفتر براشون ارسال بشه آیا امکان راه اندازی و یا برنامه نویسی این کار وجود داره

امیر دایی

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

وطن خواه

عذر خواهم باید بیشتر توضیح میدادم : منظورم چیزی شبیه گریدویو سی شارپ هس،که میشه ویرایش یا حذف کرد (آیا در vbaهم وجود داره؟ ممنون

امیر دایی

یه همچین چیزهایی هست، ولی من تا حالا استفاده نکردم. سرچ کنید احتمالا چیزهای بهتری هم پیدا می کنید.
https://www.excelvbaisfun.com/GridHelp/

وطن خواه

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

امیر دایی

سلام
سوالتون گنگ هست. ولی به صورت کلی لیست باکس ابزاری برای ویرایش نیست.

محسن

مشکل این فرمان چیه که اجرا نمیشه؟
()Private Sub CommandButton1_Click
i=0
print i
i=i+1
print i
end sub

امیر دایی

توی برنامه نویسی شما باید سینتکس اون کد رو رعایت کنید. هر زبان برنامه نویسی کلمات و نحوه نوشتن خودش رو داره و شما اجاره ندارید مثلا از ساختار زبان برنامه نویسی پایتون یا PHP یا … توی زبان برنامه نویسی VBA استفاده کنید و نتیجه یکسانی رو بگیرید.

توی زبان برنامه نویسی VBA دستور print نداریم. برای اینکه یک چیزی رو توی پنجره imidiate چاپ کنید از دستور debug.print(i) باید استفاده کنید.

داوود

سلام و عرض وقت بخیر
میخواستم بدونم تو اکسل میشه یه کد نوشت که با ایمیل ارتباط برقرار کنه؟
مثلا فرض کنید 100 تا ایمیل در ماه دریافت میشه که هر کدام یک فایل پیوست دارند که باید دانلود بشه و در سلول خاصی در اکسل جلوی اسم کاربر مورد نظر ثبت بشه و لینک فایل پیوست هم گذاشته بشه!
اینطور کاری میشه کرد یا خیر؟

امیر دایی

سلام از کدهای زیر ایده بگیرید. بررسی ایمیل هایی که خوانده نشده اند: Const olFolderInbox As Integer = 6 Sub ExtractFirstUnreadEmailDetails() Dim oOlAp As Object, oOlns As Object, oOlInb As Object Dim oOlItm As Object '~~> Outlook Variables for email Dim eSender As String, dtRecvd As String, dtSent As String Dim sSubj As String, sMsg As String '~~> Get Outlook instance Set oOlAp = GetObject(, "Outlook.application") Set oOlns = oOlAp.GetNamespace("MAPI") Set oOlInb = oOlns.GetDefaultFolder(olFolderInbox) '~~> Check if there are any actual unread emails If oOlInb.Items.Restrict("[UnRead] = True").Count = 0 Then MsgBox "NO Unread Email In Inbox" Exit Sub End If… مطالعه بیشتر »

امیر دایی

دانلود فایل ضمیمه: Sub DownloadAttachmentFirstUnreadEmail() Dim oOlAp As Object, oOlns As Object, oOlInb As Object Dim oOlItm As Object, oOlAtch As Object '~~> New File Name for the attachment Dim NewFileName As String NewFileName = AttachmentPath & Format(Date, "DD-MM-YYYY") & "-" '~~> Get Outlook instance Set oOlAp = GetObject(, "Outlook.application") Set oOlns = oOlAp.GetNamespace("MAPI") Set oOlInb = oOlns.GetDefaultFolder(olFolderInbox) '~~> Check if there are any actual unread emails If oOlInb.Items.Restrict("[UnRead] = True").Count = 0 Then MsgBox "NO Unread Email In Inbox" Exit Sub End If '~~> Extract the attachment from the 1st unread email For Each oOlItm In oOlInb.Items.Restrict("[UnRead] = True")… مطالعه بیشتر »

امیر دایی

مارک کردن ایمیل به عنوان خوانده شده:

Const olFolderInbox As Integer = 6

Sub MarkAsUnread()
    Dim oOlAp As Object, oOlns As Object, oOlInb As Object
    Dim oOlItm As Object, oOlAtch As Object

    '~~> Get Outlook instance
    Set oOlAp = GetObject(, "Outlook.application")
    Set oOlns = oOlAp.GetNamespace("MAPI")
    Set oOlInb = oOlns.GetDefaultFolder(olFolderInbox)

    '~~> Check if there are any actual unread emails
    If oOlInb.Items.Restrict("[UnRead] = True").Count = 0 Then
        MsgBox "NO Unread Email In Inbox"
        Exit Sub
    End If

    '~~> Mark 1st unread email as read
    For Each oOlItm In oOlInb.Items.Restrict("[UnRead] = True")
        oOlItm.UnRead = False
        DoEvents
        oOlItm.Save
        Exit For
    Next
 End Sub
داوود

سلام
بسیار عالی ممنون از راهنمایی تون، برم ببینم چکار میتونم بکنم

امیر دایی

خواهش میکنم. موفق باشید.

علی

سلام از کجا باید برنامه را دانلود کنم

امیر دایی

لازم نیست برنامه ای دانلود کنید. این آموزش ها رو ببینید:
آموزش رایگان برنامه نویسی vba در اکسل