پنجره کدنویسی وی بی ای یا 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 وجود دارد. شما میتوانید از محیط اصلی اکسل نیز کدهای خود را اجرا کنید ولی فعلا به نحوه اجرای کدهای وی بی ای از محیط ویژوال بیسیک میپردازیم. ابتدا در جایی از کدهای وارد شده خود کلیک کنید و سپس یکی از گزینه های زیر را انجام دهید:
- دستور Run -> Run Sub/Userform را از منو بالای پنجره visual basic editor انتخاب کنید.
- کلیدهای ترکیبی ALT+F5 را فشار دهید( به یاد داشته باشید که ایتدا می بایست ALT را نگه دارید و سپس F5 را فشار دهید)
- از دکمه play در بالای صفحه استفاده کنید.
کدهای وارد شده به شکل زیر اجرا میشوند:
به همین سادگی شما یک کد VBA را وارد کردید و سپس اجرا نمودید.
برای مشاهده سایر فیلم ها و مطالب آموزش VBA و ماکرونویسی در اکسل و همچنین قسمت های قبل و بعد این مطلب، میتوانید به صفحه زیر مراجعه کنید.
دوره آموزشی رایگان ماکرونویسی و برنامه نویسی وی بی ای (VBA) در اکسل
سلام من می خ ام پنجره ی کد نویسی اکسلم مرتب بشه یعنی معرفی شیت ها و ماژول ها سمت چپ بالا ، پنجره پروپرتی سمت چپ پایین و هر انتخابی که می کنم پنجره کدش سمت راست از ا امه دو پنجره ی دیگر باز بشه نمی دونم چه کلیدی را بزنم تا به تنظیم ابتدایی برگرده
سلام
منظورتون رو متوجه نشدم با انتخاب از تب 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")… مطالعه بیشتر »
مارک کردن ایمیل به عنوان خوانده شده:
سلام
بسیار عالی ممنون از راهنمایی تون، برم ببینم چکار میتونم بکنم
خواهش میکنم. موفق باشید.
سلام از کجا باید برنامه را دانلود کنم
لازم نیست برنامه ای دانلود کنید. این آموزش ها رو ببینید:
آموزش رایگان برنامه نویسی vba در اکسل