ایجاد ماکرو در اکسل
زمانیکه بخواهید کارهای ساده را چندین بار تکرار کنید، میتونید این حرکات رو با استفاده از ایجاد ماکرو در اکسل ذخیره کنید که حاوی کدهای VBA هست که قابل تکرار شدن هستند. با ضبط ماکرو میتونید هر چند بار که لازم بدونید این کار رو به راحتی اجرای اون ماکرو انجام بدید. با این کار سرعت و دقت شما بسیار بیشتر از حالت انجام کارها به صورت دستی هست.
برای ضبط ماکرو کافیه که گزینه Record Macro رو که در تب View و در بخش Macros قرار داره رو انتخاب کنید.
شکل ۱- ایجاد ماکرو در اکسل
با انتخاب این گزینه، پنجره ای باز میشه که مشخصات ماکرویی که قصد ذخیره سازی اون را دارید میپرسه. تو این پنجره به ترتیب از بالا به پایین اول:
- نام ماکرو، همیشه سعی کنید نام های معنادار استفاده کنید تا در آینده با کمترین زمان متوجه عملکرد ماکرو بشید. اگر شما نامی برای ماکرو تعیین نکنید، اکسل به صورت خودکار یک اسم برای اون در نظر میگیره مثل Macro1، Macro2 و …
- کلید میانبری که برای اجرای اون بعد از ذخیره سازی استفاده میشه (میتونید هیچ کلیدی برای اجرای ماکرو تعیین نکنید). همینطور باید مواظب باشید که این کلید میانبر با کلیدهای میانبر از پیش تعریف شده تداخلی نداشته باشن، مثلا ترکیب Ctrl+C. این کار باعث میشه که با زدن این کلید میانبر به جای اجرای عمل از پیش تعریف شده، ماکرو شما اجرا بشه و مشکلات بدی رو به وجود بیاره
- فایلی که ماکرو درون اون باید ذخیره بشه
- در آخر توضیحی در مورد ماکرو. این پنجره تو شکل ۲ قرار داده شده.
شکل ۲- ایجاد ماکرو در اکسل – مشخصات ماکرو را تعیین کنید
زمانیکه این مشخصات رو پر کردید روی دکمه OK کلیک کنید تا وارد مرحله ضبط ماکرو بشید. در این مرحله اکثر عملیات شما مثل ورود داده، انتخاب سلول، فرمت دهی به سلول، اسکرول کردن و … به صورت کدهای VBA تعریف و ذخیره میشن.
در حین ضبط ماکرو یک دکمه با شکل مربع در نوار وضعیت (Status Bar) ظاهر میشه که با استفاده از اون میتونید ضبط ماکرو رو تموم کنید.
شکل ۳- توقف ضبط ماکرو
بعد از فشردن این دکمه، کدهای تعریف شده در یک ماژول در ویرایشگر VBA ذخیره میشن که میتونید اونجا کدها رو مشاهده کنید. این پنجره با فشردن دکمه Alt+F11 باز میشه و در قسمت پنجره پروژه ها میتونید این ماژول رو ببینید.
شکل ۴- کدهای وی بی ایجاد شده در VBE (ویرایشگر VBA)
نحوه ذخیره سازی آدرس ها
در اکسل هر سلول دارای یک آدرس منحصر به فرد هست. زمانیکه قصد ارجاع دادن به یک سلول رو دارید میتونید از این آدرس استفاده کنید. آدرس دهی به سلول به دو صورت قابل انجام شدن هست: حالت مطلق و حالت نسبی.
در حالت مطلق اجرای ماکرو از هر سلولی که شروع شده از همان سلول هم شروع میشه. یعنی فرض کنید شروع ماکرو از سلول C10 بوده و حالا میخواید ماکرو رو شروع کنید، مهم نیست که کدام سلول انتخاب شده. اجرای ماکرو از سلول C10 میشه.
در حالت نسبی، اجرای ماکرو از سلول فعال هست و تغییرات نسبت به سلول فعال انجام میشه. مثلا فرض کنید شما از سلول C10 شروع به ضبط ماکرو کردید و در سلول F10 (یعنی سلولی که سه تا ستون سمت راست C10 قرار داره) متنی رو مینویسید و ماکرو رو ذخیره میکنید. حالا ماکرو رو اجرا میکنید ( در این حالت مثلا سلول A1 فعال هست)، چون قبلا این ماکرو رو به صورت نسبی ضبط کردید، متن شما در سه ستون سمت راست سلول A1 که D1 هست نوشته میشه.
برای اینکه تعیین کنید نحوه آدرس دهی سلول ها در هنگام ضبط ماکرو به چه صورت باشه میتونید از همون قسمت View و در بخش Macros گزینه Use Relative References رو فعال یا غیرفعال کنید. توجه کنید اگر این گزینه در حالت انتخاب باشه آدرس دهی به صورت نسبی ذخیره میشه و اگر غیرفعال بشه، آدرس دهی به صورت مطلق ذخیره میشه.
شکل ۵- تعیین نحوه آدرس دهی در ضبط ماکرو
روش های اجرای ماکرو ذخیره شده
روش اول: اگر هنگام ذخیره ماکرو کلید میانبر برای اون تعریف کرده باشید به راحتی با فشردن اون میتونید ماکرو رو اجرا کنید.
روش دوم: با استفاده از دکمه Alt+F8 پنجره ماکروهای ذخیره شده رو میتونید ببینید (یا دکمه View Macros که در شکل ۵ هست هم میتونید این پنجره رو باز کنید)، تو این پنجره ماکروها و روتین های از پیش تعریف شده وجود داره که با انتخاب هر کدوم و زدن دکمه Run میتونید ماکرو یا روتین رو اجرا کنید.
شکل ۶- مشاهده و ویرایش ماکروها و روتین های موجود
روش سوم: راه دیگه ای که برای اجرای ماکرو میشه استفاده کرد تخصیص ماکرو به یک Shape هست که روش بسیار کاربردی هست. برای انجام این کار اول باید یک شیپ ایجاد کنید و با کلیک راست کردن و انتخاب گزینه Assign Macro ماکرو رو انتخاب کنید تا هر بار با کلیک کردن روی اون شیپ، ماکرو اجرا بشه. مزیت این کار اینه که شما میتونید انواع کارهای گرافیکی روی این شیپ انجام بدید و ظاهر حرفه ای برای اجرای ماکرو درست کنید.
شکل ۷- تخصیص ماکرو به شیپ
بعد از تخصیص ماکرو، روی یک سلول کلیک کنید تا شیپ از حالت طراحی خارج بشه و بتونید روش کلیک کنید.
تو این آموزش در مورد ایجاد ماکرو در اکسل صحبت کردیم، شما هم ماکروهای خوبی رو که تا حالا ضبط کردید رو اینجا کامنت کنید تا همه استفاده کنیم. یک نکته دیگه در مورد ماکرو هست و اون هم مسائل و تنظیمات امنیتی ماکرو هست که در مقاله تنظیمات امنیتی ماکرو در اکسل در موردش صحبت کردیم.
سلام
فایلی دارم که تعداد زیادی محصول رو لیست کرده.
بنا دارم تصویر هر محصول رو بصورت کامنت در فایل قرار بدم.
بصورت دستی اینکار خیلی طول میکشه و ممکنه اشتباه هم اتفاق بیفته.
خواستم ماکرو ضبط کنم برای این کار که موفق نشدم و ایراد کارم هم نتونستم تشخیص بدم.
کاری که ماکرو میخواستم انجام بده این بود که اسم رو از سلول کپی کنه و عکس سیو شده با همون اسم رو در کامنت ضمیمه کنه.
ممنون میشم کمک کنید.
درود بر شما
این کار فقط با ضبط ماکرو انجام نمیشه
ضبط ماکرو کمک میکنه که ببینید کدی که برای تغییر عکس کامنت استفاده میشه چیه.
بعد باید حلقه تعریف کنید و متغیر برای تغییر عکس ها و عکس ها هم اسم معنی دار یا شماره قابل ارجاع داشته باشن و بعد اون کد داخل حلقه قرار بگیره.
ی مقدار دانش کدنویسی نیاز دارید. میتونید حلقه ها و متغیر ها رو از داخل مقالات ببینید
سلام
ممنون از اطلاعات خوبتون
من هر کاری میکنم ، Record Macro ای که ثبت میکنم ، ذخیره نمیشه وبا هر بار بستن اکسل باید از اول انجام بدم .میشه لطفا کمکم کنین که چی کار کنم ؟
درود بر شما
حتما باید بصورت Macro Enable (.Xlsm) ذخیره بشه
در غیر اینصورت حذف میشه
سلام
یه ماکرو که بشه باهاش عکس داخل اکسل رو قفل کرد وجود داره؟
سلام
برای این کار یک ماکرو ضبط کنید و در حین ضبط، شیت را Protect کرده (توجه کنید که اگر تیک گزینه Edit Object نباید خورده باشه)
سلام
میخواستم بدونم میشه توو ماکرو از ip. سیستم و زمانی که خوده ویندوز داره استفاده کنیم؟
سلام
میتونید از تابع زیر استفاده کنید:
با سلام و عرض ادب
تعدادی عدد در ۱۰۰ سطر و ۳۰ ستون داریم که می خواهیم بطور اتوماتیک و بر اساس ستون اول سورت شوند. برای اینکار از ماکرو استفاده کردم و در حین ضبط ماکرو، عملیات سورت به خوبی (با جابجایی صحیح سطرها) انجام شد. اما پس از اتمام ضبط با اجرا کردن ماکرو یک پیغام خطا ظاهر میشه و عملیات رو هم متوقف میکنه.
امکان داره راهنمایی بفرمایید کجای کار اشکال داره؟
درود بر شما
پیغام خطا رو ارسال کنید تا بشه بررسی کرد
با سلام مجدد
پیام خطا به شرح زیر است:
Run-time error ‘۹’:
Subscript out of range
با تشکر فراوان
خیلی عالی فقط هنکامیکه ضبط ماکرو تموم شد ، حالابا کلید میانبر که تعریف کردیم کار بطور اتومات شروع میشه ،چطور ادامه عملیات که در حال اجرا هست رو متوقف کنیم تشکر
معمولا زمان اجرای ماکروهای ضبط شده به قدری سریع هست که به سختی فرصت میکنید که در حین اجرای اون متوقفش کنید (اما اگر از طریق کدهای VBA، حلقه های طولانی تعریف کنید زمان اجرای اونا بیشتر میشه و فرصت متوقف کردنشون رو دارید).
برای متوقف کردن کدهای در حال اجرا از کلید میانبر Ctrl + Break روی کیبورد استفاده کنید.
سلام وقت بخیر خوبین. من به یه مشکل برخوردم میخواستم اگه میشه کمکم کنین. فرض کنین در اکسل دو ستون داریم به نام A و B که ستون A به نام مقدار امروز و ستون B مقدار تا به امروز ما باشه. من هر روز مقداری داده عددی مختلف در ستون A وارد میکنم و میخوام با مقدار تا به امروز ستون B که از مقدایر روز گذشته می باشد جمع شود و در همان خانه تا به امروز ذخیره شود . برای مثال در ستون B فرض کنیم ۵ بوده و امروز در ستون A مقدار ۱۰ رو وارد کردم من میخوام فرمول یا تابعی براش تعریف بشه که این مقدار ۵ با ۱۰ جمع زده بشه و در همان سلول ستون B مقدار کلی ۱۵ رو مشاهده کنم که دیگر بصورت دستی جمع نزنم و وارد کنم ممنون
درود بر شما
نمیتونید داخل سلول هم فرمول بنویسید و هم داده وارد کنید
میشه تا حد ی از خطای circular reference استفاده کرد… ولی خب باید برررسی کنید ببینید عواقب چی خوهد بود روی سایر محاسبات
آقا سامان کارت خیلی درسته
ممنون بابت مطالب مفید و کلیدیتون
با اینگه نتونستم عضو بشم ولی از سایتتون خیلی خوشم اومد با این همه آمزشهای شمره و مرتب
سلام
من یک کد ماکرو دارم که برای یک سری شکل دایره ای هست و هر وقت رو اون دایره کلیک کنید سیاه شده و دوباره کلیک کنید سفید می شود
یک فرمی برای انتخاب پارامترها فقط مشکل اینجاست که شکل دایره ای رو تو فرم کپی کردم و اساین که میکنم روی هر شکلی که کلیک می کنی فقط شکل اول سیاه و سفید میشه