ایجاد ماکرو در اکسل و استفاده از آن

ایجاد ماکرو در اکسل و استفاده از آن

شاید برای شما هم پیش اومده باشه که مجبور باشین یه سری کارهای تکراری رو هر روز در اکسل انجام بدین. کارهایی مثل کپی کردن یه بخش خاص از خروجی یک نرم افزار در یک شیت دیگه و غیره. گاهی این کارها وقت زیادی رو از ما میگیرند و خیلی هم کسل کننده میشن. اگر شما هم این شرایط رو تجربه کردید شاید بتونید با استفاده از ابزار ماکرو در اکسل از انجام این کارهای تکراری در اکسل راحت بشید. ماکروها قطعه کدهایی هستند که به زبان VBA که مخفف Visual Basic for Applications هست نوشته میشن. یکی از کاربردهای ایجاد ماکروها این هست که کارهایی که تکراری هستند بوسیله کدهایی توسط خود نرم افزار اکسل انجام بشن و نیازی به انجام اونها توسط کاربر نباشه. در ادامه این نوشته با نحوه ایجاد ماکرو در اکسل و اجرای اون آشنا میشیم.

در ابتدا باید بگم که من در این نوشته میخوام نحوه ایجاد ماکرو رو از طریق ضبط ماکرو در محیط اکسل توضیح بدم. در این حالت کدهای ماکرو توسط اکسل ایجاد میشن. ما میتونیم بدون انجام اینکار ماکروها رو مستقیم بوسیله کدنویسی VBA توسط خودمون هم ایجاد کنیم که باعث میشه بتونیم ماکروهایی با قدرت بیشتر بنویسیم و دستمون بازتر باشه ولی نیاز به دانش بیشتری داره. در آینده حتماً راجع به نحوه ایجاد ماکرو توسط کدنویسی خود کاربر هم مطلب خواهم نوشت. خب بریم سراغ ایجاد ماکرو توسط خود اکسل. فرض کنید نرم افزاری داریم که خروجی اون مطابق شکل زیر هست:

ایجاد ماکرو در اکسل و استفاده از آن

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

ایجاد ماکرو در اکسل و استفاده از آن

در اینصورت باید هر روز بعد از گرفتن خروجی از نرم افزار ابتدا داده های خودمون رو بر اساس نوع محصول “ماوس” فیلتر کنیم، فونت مناسب برای خروجی مورد نظرمون انتخاب کنیم، سطر اول رو Bold کنیم و … که اینها زمان زیادی رو از ما میگیره و تبدیل به یک کار کسل کننده میشه. حالا میخوایم تمام اینکارها رو با استفاده از ایجاد ماکرو در اکسل به صورت خودکار انجام بدیم. برای اینکار از تب VIEW روی  دکمه Macros  کلیک میکنیم و در منوی باز شده گزینه Record macro رو انتخاب میکنیم.

ایجاد ماکرو در اکسل و استفاده از آن

پنجره ای به شکل زیر باز میشه که در اون میتونیم تنظیمات اولیه مربوط به ماکرویی رو که قصد ایجاد اون رو داریم انجام بدیم. این تنظیمات شامل موارد زیر هست:

ایجاد ماکرو در اکسل و استفاده از آن

Macro name:

در این قسمت یک نام برای ماکرویی که قصد ایجاد اون رو داریم انتخاب میکنیم

Shortcut key: 

در این قسمت میتونیم یک کلید میانبر برای اجرای ماکرو تعریف کنیم. به عنوان مثال با نوشتن حرف U، ماکرو با کلید میانبر Ctrl+U اجرا میشه.

Store macro in:

در این بخش محل دخیره شدن ماکرو رو مشخص میکنیم. اگر گزینه This Workbbok رو انتخاب کنیم ماکرو در workbook فعلی ذخیره میشه. یادتون باشه که برای اینکه ماکرو در فایلتونن ذخیره بشه باید اون رو با پسوند xlsm ذخیره کنید. با انتخاب گزینه New Workbook یک Workbook جدید ایجاد میشه و ماکرو در اون ذخیره میشه.

با انتخاب گزینه Personal Macro Workbook، ماکرو در فایل مخصوصی به نام Personal.xlsb ذخیره میشه. این فایل هر زمان که شما اکسل رو باز میکنید به صورت مخفی توسط اکسل باز میشه. بنابر این اگر بخواید ماکرویی که ایجاد میکنید در تمام Workbook ها در دسترس باشه باید اون رو در Personal Macro Workbook ذخیره کنید.

Description:

در این بخش میتونید توضیحاتی راجع به ماکرو خودتون بنویسید.

بعد از اینکه تنظیمات مورد نظرتون رو انجام دادید اوکی رو کلیک کنید. با اینکار عملیات ضبط ماکرو شروع میشه و ازین به بعد شما هر کاری که انجام بدید توسط ماکرو اکسل ضبط میشه. حالا کارهای رو که میخواید ماکرو به صورت خودکار انجام بده رو به ترتیب انجام میدیم. به عنوان مثال در اینجا ما فونت گزارش رو تغییر میدیم، سطر اول رو Bold میکنیم، گروه محصول ماوس رو فیلتر میکنیم و …

بعد از اینکه تمام کارهای موردنظرمون رو انجام دادیم از تب View رو گزینه Macros کلیک میکنیم و بعد مثل شکل زیر گزینه Stop Recording رو کلیک میکنیم.

ایجاد ماکرو در اکسل و استفاده از آن

 

با انجام اینکار ما ماکرو مورد نظرمون رو ایجاد کردیم و کافیه ازین به بعد برای اجرای تمام این مراحل به صورت خودکار توسط اکسل، از بخش Macros گزینه View Macros رو انتخاب کنیم. با انتخاب این گزینه پنجره ای شامل ماکروهای ایجاد شده نمایش داده میشه. حالا باید ماکرو موردنظرمون رو انتخاب کنیم و گزینه Run رو کلیک کنیم.

ایجاد ماکرو در اکسل و استفاده از آن

 

ایجاد ماکرو در اکسل و استفاده از آن

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

 

131 Comments on “ایجاد ماکرو در اکسل و استفاده از آن”

  1. وحید اسمعیلی

    عالی بود ولی اگر خروجی اکسل من در خصوص سر ستون و سط تغییر کنه چه راهکاری داره در ماکرو نویسی

    1. یاسین اسماعیل پور

      متاسفانه این روزها به دلیل مشغله کاری فرصتی برای به روز کردن سایت پیدا نکردم. در اولین فرصت حتما این کار رو میکنم

  2. reza

    سلام – یه ماکرو به صورت Personal Macro Workbook ایجاد کردم ، برای حذف کردنش باید چیکار کنم ؟ آخه Delete رو که میزنم حذف نمیشه ! مرســــــــی…

    1. یاسین اسماعیل پور

      سلام. باید فایل personal.xlsb رو توی کامپیوترت پیدا کنی و بازش کنی تو اکسل. بعد میتونی ماکرو ایجاد شده رو حذف کنی.

      1. mostafa0ashoory

        همچین فایلی تو سرچ کامپیوتر پیدا نمیشه، پوشه مخصوصی برای ذخیره ماکرو هست؟

  3. m

    سلام
    ببخشید راهی هستش که مثلا من بخوام دو تا ستون با فاصله از هم رو جمع بزنم و نتیجش رو توی یه ستون دیگه بریزم با استفاده از ماکرو و این کار رو برای 123 تا تون تکرار کنم؟

    و اینکهک ایا شرطی رو میشه در ماکرو لحاظ کرد که چک بشه؟

    ممنونم

  4. علی

    سایتتون سورس خوبیه واسه یادگیری اکسل.سوالم اقا یاسین و دوستان گل دیگم اینه فرمت xlsb با xlsm در محل ذخیره ماکرو در همان ورک بوک یا ورک بوک شخصی ایجاد میشود در چیست؟

    1. یاسین اسماعیل پور

      به طور خیلی خلاصه و ساده اگر بخوام جواب بدم فرمت xlsb حجم کمتری داره در عوض فرمت xlsm چون کامپایل نمیشه با برنامه های ویرایشگر متن باز میشه اما xlsb خیر.

  5. میثم

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

    1. یاسین اسماعیل پور

      سلام میثم جان. برای اینکار باید ماکرو رو ایجاد کنی. بعد دکمه رو توی شیت قرار بدی و با راست کلیک کردن رو دکمه گزینه assign macro رو انتخاب کنی و ماکرو موردنظرت رو به دکمه بدی.

  6. امیر

    سلام
    ممنون میشم اگه راهنمایی کنید من میخوام شماره ماشین 5 رقمی را در یک جدول اکسل شماره یک رانظیر12345را که در جدول شماره 2 اکسل دیگر شماره ماشین کامل بصورت کامل نوشته مثلا345ع24/12 تبدیل کنم 24سری ماشینه مثل ایران 24

    1. یاسین اسماعیل پور

      سلام. راستش من درست متوجه نشدم منطورتون رو. جمله بندیتون زیاد گویا نیست لطفاً دوباره واضح توضیح بدید.

    2. مسعود

      سلام
      فکر کنم ایشون میخوان اعداد موجود در یک شماره پلاک ماشین رو بنویسند و در سلول نتیجه شماره ها همانند پلاک خودرو نمایش داده شود که با ترکیب توابع CONCATENATE و left , right می تونید این کار رو انجام بدید.

      1. مسعود

        مثلا اگر توی سلول a1 نوشته شده باشد 12345 با این فرمول:
        =CONCATENATE(RIGHT(A1,3),”ع”,”24/”,LEFT(A1,2))
        میتونید نتیجه رو به 345ع24/12 تبدیل کنید. (من اینو همین الان تست کردم مشکلی نداشت ولی شاید شما نیاز داشته باشید یکم تغییرش بدید.

  7. محمد مولايي

    سلام جناب اسماعيل پور
    باآرزوي قبولي طاعات وعبادات جنابعالي
    بنده مي خوام بصورت حرفه اي اكسل را در حوزه مالي ياد بگيرم ،بفرماييد از چه نقطه اي شروع كنم

    1. یاسین اسماعیل پور

      سلام جناب مولایی عزیز.
      نفرمودید در حال حاضر تسلطتون چقدر هست. میتونید از توابع مالی اکسل شروع کنید و بعد که تسلط پیدا کردید بهتره در یک کلاس پیشرفته اکسل شرکت کنید.

  8. مسلم زارعی

    سلام یاسین عزیز
    من یک برنامه در اکسل دارم که مثلا در هر چند دقیقه یکبار به اینترنت وصل میشود و دیتای عددی را میگیرد و در یک سلول اکسل قرار می دهد حال میخواستم ببینم چگونه میتوانم با هر بار وصل شدن این عدد فقط در یک سلول مجزا ذخیره شود و در سلول قبلی نباشد یعنی بترتیب ردیف شود اگر 30بار و صل شدم 30عدد مجزا داشته باشم با تشکر فراوان

    1. یاسین اسماعیل پور

      سلام مسلم جان. برای اینکار اگر فرض کنیم مقادیر رو در ستون a ذخیره میکنی باید قبل از کدی که مقدار رو در سلول جایگزین میکنه با استفاده از کد (application.match(1000000,a:a,1 آخرین سلولی که مقدار داره رو به دست بیاری و بعد به اون یکی اضافه کنی و مقداری که از اینترنت گرفتی رو در این سطر ذخیره کنی.

  9. vahdat nori

    سلام من برای بسته شدن خودکار فایل اکسلم از دستور
    Dim DownTime As Date
    Sub SetTime()
    DownTime = Now + TimeValue(“00:15:00”)
    Application.OnTime DownTime, “ShutDown”
    End Sub
    Sub ShutDown()
    ThisWorkbook.Save
    ThisWorkbook.Close
    End Sub
    Sub Disable()
    On Error Resume Next
    Application.OnTime EarliestTime:=DownTime, Procedure:=”ShutDown”, _
    Schedule:=False
    End Sub
    فقط زمان رو از 15 به 3 دقیقه کم کردم ولی حالا اخطار زیر رو میده چرا؟
    run-time error ‘1004’: method ‘OnTime’ of object ‘_Application’ failed

    1. یاسین اسماعیل پور

      من رو اون خط شما خطایی نگرفتم. فایلی که خطا میده رو بفرست لطفاً.

  10. RezaFallahi

    سلام
    چطور میشه واسه اجرای یه ماکرو شرط گذاشت؟
    مثلا در مثال بالا اگه اگه سلول E1>0 باشد ماکرو اجرا شود و در غیر این صورت اجرا نشود.

    1. یاسین اسماعیل پور

      سلام.
      با استفاده از دستور کنترلی IF THEN در ایتدای ماکرو میتونی اینکار رو انجام بدی

  11. پویا

    واقعا عالی بود فقط اگه ممکنه مطالب و به زبان نوشتاری بنویسید ممنون میشم 🙂

    1. یاسین اسماعیل پور

      سلام. به نظرم نوشتن مطالب به صورت نوشتاری ارتباط مخاطب با نوشته رو کم میکنه. موفق باشید

  12. محمد احمدی کیا

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

  13. اردلان

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

    1. یاسین اسماعیل پور

      سلام اردلان جان. جواب سوال شما رو نمیشه در کامنت پاسخ داد پون نیاز به پندید خط ماکرونویسی داره. ولی در حد کامنت اگر بخوام توضیح بدم باید بگم میتونی از
      Call Shell(“cmd.exe , vbNormalFocus)
      استفاده کنی و بعد از cmd.exe دستور ping رو بنویسی و جایی که میخوای آی پی رو وارد کنی هم بصورت cells(i,j) مقدار سلول موردنظرت رو قرار بدی

  14. علی

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

        1. یاسین اسماعیل پور

          سلام سمیرا جان
          شما باید با مقدمات VBA آشنا باشید. اگر هستید کافیه یک حلقه for بنویسید و ب دستور if چک بکنید که به عنوان مثال activesheet.cells(i,j) آیا با مقدار خاصی برابر هست یا خیر.

  15. ekram

    مطالبتون مفید هست ممنون، فقط من یه فایل دارم که ماکروهاش رو باید تغییر بدم نمی دونم چطوری لطفا راهنماییم کنید

  16. omid

    سلام دوست عزیزسایت تون عالیه من یه مشکل دارم اگه راهنمایم کنی خیلی ممنون میشم
    مشکلم اینه میخوام مثلا (عدد2روضرب در مقداریک ستون بکنم )چجوری میتونم
    مثلا 2*B12 الان میخوام 2رادرمقدارستون B12ضرب کنم

    1. محمدقاسم خانیکی

      سلام امید جان
      گویا آقا یاسین مدت مدیدی است که این سایت رو فراموش کردند!!
      گرچه تا بحال ممکنه شما جوابتون رو گرفته باشید،
      اما برای اینکه سوال شما در سایت بدون پاسخ نمونه من جواب شمارو میدم:
      جواب خیلی ساده است ، اگر اعداد شما در ستون B باشه و شما بخواهید دو برابر آنها را در ستون C داشته باشید کافیست فرمول 2*RC2 را در ستون C قرار دهید
      موفق باشید

  17. مهدی

    سلام
    من میخوام همه تکست باکس هام از شیت اکسل پاک بشه
    راهش چیه؟
    ایا ماکرویی داره؟
    ممنون میشم کمکم کنید

    1. محمدقاسم خانیکی

      سلام آقا مهدی
      البته که راه داره !!
      با استفاده از یک IF درون یک حلقه و بهره گیری از دستورات زیر میتوانید تمامی تکست باکسهای شیت خود را پاک کنید
      ActiveSheet.Shapes(i).Type = msoTextBox
      ActiveSheet.Shapes(i).Delete
      موفق باشد
      0919-302-6452

  18. vahid

    سلام وقتتون بخیر.من ماکرو رو فعال کردم وبرای چندین فایلم استفاده میکنم حالا هر وقت میخام بعضی فایل هامو باز کنم این پیام رو بمن میده file in use
    personal.xlsb is locked for editing
    by vahid
    ممنون میشم بگین این چیه وچکار کنم دیگه نیاد آیا مشکلی برای فایل هام ایجاد میکنه یا نه

    1. محمدقاسم خانیکی

      سلام آقا وحید
      فکر میکنم در چند پیام بالاتر ، آقا یاسین ، خودشون به نوعی به این سوال شما پاسخ دادند!!
      به نظر میرسه ، پرسونال ماکرویی که خودتون ایجاد کردید ، مزاحم خودتون داره میشه ، کافیه که فایل Personal.xlsb رو در سیستم جستجو و حذفش کنید تا از دستش راحت بشید!!
      از این پس اگر ماکرویی میخواهید ایجاد کنید ، آن را در Workbook و در همان فایل ذخیره کنید
      موفق باشید
      خانیکی – 09193026452

  19. مينا

    اقاي اسماعيل پور سلام،
    من در سرچ هاي متعددي به سايت شما رسيدم و از راهنمايي هاتون بهره بردم.
    اينجا از شما براي همه لطفي كه در ارائه اموزش هاي جامع تون مي كنيد تشكر مي كنم.

  20. yogishiip

    نمیدونم چه جوری تشکر کنم !خیلی کارم راحت شد .
    ساعت ها مینشستم پای اکسل و دیتا مرتب میکردم !

    یه سوال هم دارم :
    من اگر بخوام ورود و خروج انبار رو بر اساس فایفو محاسبه کنم تابعی داره که یکم راحت باشه و مثل تابع sumif خیلی سنگین نباشه ؟
    تعداد رکورد هایی که دارم بالغ بر چند میلیونه!
    یک سری کالا دارم خرید داری شدن با قیمت مشخص به ترتیب از انبار خارج میشند میخوام قیمت هر کالا را بر اساس تاریخ خرید مشخص کنم و موجودی ریالی واقعی انبار رو محاسبه کنم !
    از طریق سرچ در اینترنت 2 تا فایل اکسل و اکسس برای محاسبه پیدا کردم که هر کدوم یه عیبی داره !
    فایل اکسل قیمت کالای خروجی رو میانگین میگیره !یعنی حواله ها قیمتش واقعی نمیشه ولی موجودی انبارم درسته منتها وقتی از 1000 تا رکورد بیشتر بهش وارد میکنم سیستمم هنگ میکنه !چه برسه وقتی 2 میلیون تا رکورد بخوام بهش بدم !ضمنا خود اکسل 2013 هم گویا بیشتر از 1 میلیون رکورد رو نمیتونه بشناسه !
    فایل اکسس قیمت کالای خروجی رو بر اساس فی فروش میخواد که من کالا رو نمیفروشم و فقط از انبار خارج میکنم .
    خوشحال میشم بتونم راهی پیدا کنم بتونم موجودی و خروجی رو محاسبه کنم ! چند ماهه به صورت شبانه روزی همش با اکسل و اسکیوال دارم ور میرم به نتیجه ای نرسیدم !!!!!!1
    فایل اکسس :http://www.access-programmers.co.uk/forums/showthread.php?p=673467
    فایل اکسل:http://forum.exceliran.com/showthread.php/4321-%D9%83%D8%A7%D8%B1%D8%AA%D9%83%D8%B3-%D8%AA%D8%B1%D9%83%D9%8A%D8%A8%D9%8A-%D8%A7%D9%86%D8%A8%D8%A7%D8%B1-%28-%D8%A8%D9%87-%D8%AF%D9%88-%D8%B1%D9%88%D8%B4-%D9%85%D9%8A%D8%A7%D9%86%DA%AF%D9%8A%D9%86-%D9%85%D8%AA%D9%88%D8%A7%D8%B2%D9%86-%D9%88-Fifo-%29-%D9%85%D8%AE%D8%B5%D9%88%D8%B5-%D8%A7%D9%86%D8%A8%D8%A7%D8%B1%D8%AF%D8%A7%D8%B1%D9%8A-%D9%88-%D8%AD%D8%B3%D8%A7%D8%A8%D8%AF%D8%A7%D8%B1%D9%8A

  21. محمد

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

  22. سجاد

    سلام آقای اسماعیل پور،من میخوام یه برنامه بنویسم که توش بتونم به صورت اتوماتیک مقادیر یک ستون از یک sheet خاص رو در تعداد ۱۰۰ فایل اکسل به یک فایل اکسل جدید دیگه منتقل کرده و روشون عملیات انجام بدم و این ۱۰۰ تا ستون از اون ۱۰۰ فایل رو با یه کلیک در فایل جدیدی ذخیره کنم، میخواستم راهنماییم کنید،ممنون از سایت خوبتون.

    1. یاسین اسماعیل پور

      سلام سجاد جان. برای اینکار نیاز به ماکرو نویسی هست. توضیحش مفصله و در یک کامنت قابل توضیح نیست.

    1. یاسین اسماعیل پور

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

  23. farshid4u

    با سلام و خسته نباشید
    من یه فرم درست کردم که درون آن اطلاعات را وارد می کنم و در یک سطر ثبت میشه
    حالا می خوام بپرسم چگونه می تونم این اطلاعات رو ابتدا جستجو و سپس ویرایش و ثبت کنم
    اگه دستور ماکرو اون رو بهم بدهید ممنون میشم

    1. یاسین اسماعیل پور

      یه نمونه فایل در بخش دانلود به اسم استفاده از یوزر فرم ها هست اون رو ببین

      1. farshid4u

        دیدم ولی ویرایش اون کار نمی کنه یه چک می فرمایید؟
        دستور برای ویرایش و ثبت چیه؟

          1. farrshid4u

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

  24. مرتضی

    سلام.چه برنامه ای میتونه یک سری فایل html خاص که در یک فولدر مشخص دارم را بررسی کنه و اطلاعاتی رو که در مکان مشخصی از آن فایلها (در همه آنها مکانش مشخص و ثابت ست یعنی اگه تبدیل به اکسل شود در سلول مثلا F15 ,R117 , … ) وجود دارد را به صورت خودکار در یک شیت مشخص از یک فایل اکسل وارد کند (یعنی F15ها رو در ستون A و R117ها رو در ستون B و … )
    ممنون

  25. Amir Safavi

    سلام جناب اسماعیل پور
    بنده یک سوال دارم و مثل اینکه این سوال مشکل خیلیا هست طبق سرچی که زدم.
    یه هدر برای یه شیت ایجاد کردم که شامل لوگو و نوشته است.به وسیله ماکرو، چطور میتونم شیت های جدید رو دقیقا با همون هدر ایجاد کنم به طوریکه عکس استفاده شده از درایو کامپیوتر انتخاب نشه، (چون فایل اکسلی که نوشتم روی کامپیوترهای مختلف استفاده میشه)
    در ضمن از کد زیر هم استفاده کردم که هدر شیت اول رو کپی کنه و در شیت های جدید بزاره، ولی فقط نوشته ها کپی میشن، و لوگو منتقل نمیشه
    Sub dsa()
    Private Sub Workbook_NewSheet(ByVal Sh As Object)
    Dim Ws As Worksheet
    ‘Change “Sheet1” below to the name of sheet being copied
    Set Setup = Worksheets(“Sheet1”).PageSetup
    With ActiveSheet.PageSetup
    .LeftHeader = Setup.LeftHeader
    .CenterHeader = Setup.CenterHeader
    .RightHeader = Setup.RightHeader
    .LeftFooter = Setup.LeftFooter
    .CenterFooter = Setup.CenterFooter
    .RightFooter = Setup.RightFooter
    End With
    End Sub

  26. mmahak

    سلام من خیلی نیاز دارم یاد بگیرم ولی از نوشته یاد نمیگیرم چطور میتونم ماکروهای رو یار بگیرم

  27. َA.Tamimi

    سلام
    به دستوری توی ماکرو نیاز دارم که یک سلول رو به وضعیت دریافت اطلاعات در بیاره ، مثل وقتی که روی یک سلول دبل کلیک میشه

      1. َA.Tamimi

        نیاز به پیاده سازی قابلیت Text Length بخش Data Validation بصورت ماکرو دارم. هنگام ورود مقدار ناصحیح در صورت انتخاب گزینه Retry سلول به حالت ویرایش درمیاد. این حالت ویرایش رو با چه کدی میتونم اجرا کنم.

        1. یاسین اسماعیل پور

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

  28. sonya hosseini

    باسلام و تشکر
    ایا امکانش هست یک فایل ماکرو دار اکسل را به فرمتexeتبدیل کرد و بتوان بدون نیاز به تنظیمات فعالسازی ماکرو در هر کامپیوتری اجرا کرد؟ البته من چندین برنامه را تست کردم که هیچ کدام مفید نبودند.

    1. یاسین اسماعیل پور

      سلام
      من تا بحال ندیدم که نرم افزاری اینکار رو به صورت کاملا صحیح و درست انجام بده

  29. هدی

    سلام. من می خواستم ماکرویی تو Personal Macro Workbook بنویسم. چندباری امتحان کردم. اما نمی دونم چرا درست اجراش نمی کنه! با اینکه دستورات ساده ایه…
    تو حذف ماکروهای تستی که ساختم هم مشکل دارم. Personal.xlsb رو پیدا می کنه. تو excell هم بازش می کنم اما نمی دونم از کجا و به چه صورت پاکشون کنم.

    ممنون می شم اگر برام ایمیل بزنید تا بتونم دقیق تر براتون توضیح بدم و عکس اشکلات موجود رو براتون بفرستم. همچنین ممنون می شم اگر توضیح بدید آیا می تونم ماکروی نوشته شده رو از جایی بردارم و براتون ارسال کنم.

    خیلی ممنون

  30. ماسک صورت

    سلام
    اصولا این کار به چه دردی میخوره؟
    میشه با ماکرو نویسی دکمه طراحی کرد که با زدنش یه سری الگوریتم رو برامون انجام بده؟

    1. یاسین اسماعیل پور

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

  31. fatiima

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

    1. یاسین اسماعیل پور

      سلام. خب با چه فرمولی باید افزایش پیدا کنند ؟ کاش بیشتر توضیح میدادی که بشه راهنمایی کرد

  32. fatiima

    سلام.
    قرلار است این ستون نشان دهنده ی اولیوت باشد و هدف این است که در این ستون، اعداد تکراری وجود نداشته باشد. مثلا اگر قبلا عدد 2 وجود داشته حالا یک سلول جدیدی که در این ستون ایجاد شده است و عدد 2 را به خود اختصاص دهد، سلولی که قبلا 2 بوده است به 3 تغییر کند و همینطور به تمام اعداد یک شماره اضافه شود.

    1. یاسین اسماعیل پور

      خب تو سلول a2 بنویسید =a1+1 و تا پایین کپی کنید. حالا اگه a1 تغییر کنه همه مقادیرستون a هم تغییر میکنن دیگه.

  33. عاطفه

    سلام وقت بخير
    چه سايت خوبي…
    من يه سوالي داشتم…من نياز دارم اسم يك عكس را با يك نظم منطقي در ستون هاي مختلف جدا كنه و بزارم واين كار براي تعداد عكس زياد انجام بشه
    مثلا اگر اسم عكس هست محمد – حسني -1395/5/20 اين سه دسته اطلاعات را برام جدا كنه ودر سه ستون بزاره…خود عكس را هم در يك سلول قرار بده…آيا اين امكان با ماكرونويسي وجود داره؟

    1. یاسین اسماعیل پور

      سلام
      بله امکان انجام اینکار از طریق ماکرونویسی وجود داره عاطفه جان

  34. farshid4u

    دستور ماکرو ثبت دیتا در اکسل رو می خواستم
    یعنی پس از این که اطلاعات را وارد کردم در سلول ها بشینه و یا تغییر کنه.
    در فایل یوزر فرم ها اگه نگاه کنید جستجو هست و پیدا می کنه ولی پس از تغییر ثبت یا جایگزین قبلی نمی کنه(یعنی کلیدی نیست که بزنیم ثبت بشه)
    ممنون میشم راهنمایی بفرمایید

  35. zamen58

    سلام
    1- چطور میشه توی یه ماکرو دستور ایجاد صفحه جدید یه روال یا یه ماکرو را به اون صفحه اختصاص داد
    2- چطور میشه تعیین کرد که صفحه ایجاد شده در یک محل خاص باشه یعنی فرضا اگه برای ماه های سال قراره شیت درست بشه ، بسته به شماره ماه صفحه در همون جا باشه
    ممنون از وقتی که میگذارید

    1. یاسین اسماعیل پور

      سلام دوست عزیز
      پاسخ به سوال شما یکم طولانی میشه و نمیشه در یک کامنت توضیح داد جوابش رو.

  36. هومن

    سلام و عرض خسته نباشید
    چجوری میشه با برنامه نویسی با یک کلیک یک سطر اضافه کنیم به جدول البته به سمت پایین؟؟
    سپاس از زحمات شما

  37. simin

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

  38. S.Mahmoud

    سلام
    یک فایل اکسل محاسبه ساعت کاری دارم که از شیت های مختلف و برای نفرات مختلف است
    می خواهم ماکرویی داشته باشم که دو شیت را در یک برگه A4 پرینت کند در حالیکه:
    در شیت اول(که تقویم تمام سال و ساعت های ورود …. است) انتخاب دو سطر اول که تیتر است و انتخاب سلول های ماه مورد نظر
    در شیت دوم(محاسبه پرداختی ماه های سال) انتخاب سلول های ماه مورد نظر
    آیا ممکن است؟

  39. ASGHARKALHOR

    سلام و عرض ادب
    ممنون از سايت خوب و پاسخگويي عاليتون
    ي سوال داشتم
    آيا ميشه در اكسل مثل اكسس فرمي تهيه كرد و براي مثال دگمه اي را تعريف نمود كه پس از تكميل فرم ؛ با فشردن دگمه پرينت بگيريم و فرم مجددا بصورت خام درآيد؟
    ممنون از سايت خوبتون
    كلهر

  40. ظفر

    با سلام. اگر خواسته باشیم در اکسل در یک شیت فرمی داشته باشم ک در اون داده های مختلف مثل داده های مربوط ب گزارشات تولید. ضایعات. توقفات و … رو وارد کنیم و بعد بازدن یک دکمه که تعبیه شده است هر داده ای برای انجام سایر محاسبات در مکان خود ک ممکن است در شیت های متفاوتی باشد قرار گیرند و بعد این فرم پاک شده تا داده های مربوط ب محصول بعدی وارد شود باید از vba استفاده کرد؟ چطوری؟
    با تشکر
    ظفر

  41. ساراشریفی

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

  42. علی

    سلام
    1-من میخوام یه ماکرو بنویسم که اطلاعات یه جدولو از اکسل برداره بره تو فایل ورد جدول بسازه پیست کنه .
    بلد نیستم اینارو به هم لینک کنم.
    2- مشکل دومم اینه یه ماکرو تو اکسل رکورد کردم اینو که میخوام تو بقیه فایلای اکسل استفاده کنم باید اسم شیتم عوض کنم بذارم همونی که از روش رکورد گرفتم نمیشه کاریش کرد اسم نخواد عوض کنم؟

    1. یاسین اسماعیل پور

      سلام
      1- برای اینکار لازم نیست ماکرو بنویسید از گزینpaste as link در اکسل استفاده کنید.
      2 – تو بخشی از ماکرو که نام شیت نوشته شده (مثلا sheets(“sheet2”) ) اون روبا activesheet جایگزین کنید.

  43. نیما

    یاسین جان اگه بخوایم 1 ماکرو بنویسیم که تابع iferror رو تو کل sheet برامون بنویسهچه کدی میشه استفاده کرد ؟

  44. MOHSEN

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

  45. mehrdad1994

    سلام خسته نباشید،جناب اسماعیلی بنده در زمینه های اقتصادی و مالی کار میکنم میتونم درخواست کنم درمورد solver هم بذارین.
    ی سوال دیگه اینکه شما کارآموز رایگان قبول میکنید خدمت برسم؟

  46. محمد علی دهقان

    با سلام و احترام…
    چگونه در اکسل پس از ایجاد چند لیست باکس میتوانیم این لیست باکسها را به هم مرتبط کنیم تا بتوانیم محتویات آن را اجرا کنیم؟

  47. مهدی

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

  48. علی

    با سلام و عرض ادب
    میخواستم بدانم ایا میتوان ماژول یا ماکروئی را در خصوص یک فایل در اکسل نوشت که به محض باز شدن هر فایل اکسلی در طی روز ، آن فایل هم بصورت اتوماتیک خودش بالا بیاید یا خیر؟

  49. خلیلی

    سلام جناب اسماعیل پور
    من میخوام یک سری اطلاعات رو که در ردیف های مثلا 30تا 36 دارم و یک عدد که به عنوان سریال جلوی این ردیفها گذاشتم حالا میخوام در ردیف 16 با دادن اون سریال کل اطلاعات اون ردیف مورد نظر در ردف 16 جایگذاری بشه ممنون میشم اگر راهتمایی کنید

  50. مسعود

    با سلام و احترام
    جناب آقای اسماعیل پور من یک فایل اکسل دارم با ستون های
    Barcode Gender Category Season Location
    با حدود 10,000 لاین موجودی چطور میتونم با نوشتن بارکدی از بارکدهای فایل موجودی به اطلاعات Gender Category Season Location اون بارکد دسترسی پیدا کنم ؟ از چه فرمولی باید استفاده کنم؟
    با سپاس ـ مسعود

    1. یاسین اسماعیل پور

      سلام مسعودجان. میتونی از فرمول vlookup استفاده کنی. آموزشش در سایت وجود داره

  51. حمید طهانی

    با عرض سلام و خسته نباشید
    میخواستم در یک سلول نتیجه ی جستجویی با شرایط خاص رو بگردم . با این توضیح که که دیتای من عددی نیست . ینی یه جوورایی sumifs باشه ولی در مورد موارد غیر عددی، یا همون lookup اما با چند شرط. اما چیزی پیدا نکردم.
    لطفا راهنمایی کنید

    09214312663

  52. دینی

    سلام ، عرض ادب
    آیا ممکنه نتیجه حاصل از یه سلول که با فرمول به دست آمده را در یک شیت دیگه و یا باز کردن یک فایل اکسل دیگر قابل اعمال کردن باشد ؟
    یعنی عدد ستون آ در یک فایل اکسل را بتوانیم از عدد موجود در ستون اف یک فایل اکسل دیگر کسر و یا جمع کنیم؟

  53. روح الله

    سلام و خداقوت خدمت شما

    دوست عزيز جناب آقاي اسماعيل پور يك فايل پيوست ميكنم و در ادامه آن چند سوال ميخوام بپرسم
    1. در اين فايل چگونه ميتوان وقتي نام يك برنامه را در شيت هفتگي تغيير ميدهيم به ازاي آن يك رديف در شيت تشريحي ايجاد شود و نام آن برنامه در آن درج شود؟
    2. چگونه ميتوان لينك يك برنامه در شيت هفتگي را به همان برنامه در شيت تشريحي داشته باشيم؟
    3. در شيت هفتگي هر گروه برنامه (گروهها در شيت تشريحي هست ) با يك فونت خاص تعريف شده چطور ميتوان دستور داد كه وقتي ما گروه برنامه را در شيت تشريحي وارد ميكنيم فونت آن در شيت هفتگي درست شود( طبق فونت مربوط به گروه خودش در شيت تشريحي )

  54. aslanian

    با سلام
    من کارم مشاور املاک است
    لیستی دارم و با 5 تا گزیه برای فیلتر
    مثلا 100 تا آپارتمان با مشخصات مختلف
    سوال: چطور میتونم بدون اینکه فایل اکسل من نشود داده بشه
    آپارتمان جدید اضافه کنم و نتیج جستجو را ببینم
    مشابه با سایت iranfile.ir
    با تشکر

  55. Reza

    با عرض سلام و خسته نباشید
    بنده در محل کارم با فایل های اکسل سروکار دارم که شامل عدد هستند و نیاز به ایجاد یک ماکرو دارم با شرایط زیر :
    1 – زمانی که اقدام به جستجو میکنم اگر عدد جستجو شده در اون فایل باشه نشون بده و همزمان اون سلول رو رنگی کنه ( مثلا آبی )
    2- اگر به صورت اتفاقی اون عددی که جستجو میکنم دو بار در اون فایل موجود باشه اون دو عدد مشابه رو به یک رنگ دیگه در بیاره (مثلا قرمز )
    با تشكر از سایت مفیدتون

  56. Reza

    آقای اسماعیل پور چرا جوابی نمیدین ?!!
    من واقعا به این ماکرو خیییلی احتیاج دارم

  57. علی

    سلام ببخشید تو اکسل این امکان وجود داره که یه شکل با پارامترها ارتباط داشته باشه؟یعنی مثلا یه شکل داشته باشیم و وقتی اندازه ابعاد شکل رو تغییر میدیم ابعاد شکل هم به صورت اتوماتیک تغییر کنه؟

  58. میثم

    ایجاد محدودیت در دسترسی چند کاربر با رمز عبور
    سلام من یه فایل ایجاد کردم با ۶ تا رمز عبور (رمز عبور در ابتدای اجرای ماکرو درخواست میشه) میخوام هر کاربر با وارد کردن رمز عبور خودش تنها به شیت خودش دسترسی داشته باشه و یکی هم ادمین که با وارد کردن رمز ادمین به تمام شیت ها دسترسی داشته باشه مثلا اگه کاربر a وارد شد شیت*های دیگه مخفی بشه و فقط شیت کاربر a باز بشه یوزر و پسورها البته با حروف کوچیک هستند
    ۱ و ۱
    a و a
    b و b
    c و c
    d و d
    e و e
    فایل را هم پیوست کردم
    فايل هاي پيوست شده فايل هاي پيوست شده
    نوع فایل: zip فاكتور بيمه.zip اطلاعات (1,018.6 کیلو بایت, 7 نمایش)

  59. sarmadi

    Private Sub ListData_Click()
    Dim i As Integer
    Dim Lastrow As Long
    Dim Ractcell As Long
    i = Me.ListData.ListIndex
    Me.ListData.Selected(i) = True

    Me.textbox1.Value = Me.ListData.Column(0, i)
    Me.textbox2.Value = Me.ListData.Column(1, i)
    Me.textbox3.Value = Me.ListData.Column(2, i)
    Me.textbox4.Value = Me.ListData.Column(3, i)
    Me.textbox5.Value = Me.ListData.Column(4, i)
    Me.textbox6.Value = Me.ListData.Column(5, i)
    Lastrow = Sheets(“Details”).Cells(Rows.Count, “A”).End(xlUp).Row
    Sheets(“Details”).Range(“a2:a” & Lastrow).Find(What:=ListData.Text, _
    LookIn:=xlValues, LookAt:=xlWhole).Activate
    Ractcell = ActiveCell.Row
    Sheets(“Details”).Range(“A” & Ractcell & “:F” & Ractcell).Select
    End Sub
    با سلام خدمت شما و همه همکاران تون و خیلی ممنون از سایت خوب تون
    کد بالا را نوشتم تا بتونم با کلیک روی Listbox دیتای مورد نظر وهمزمان این اطلاعات worksheet هم انتخاب بشه (RowSource) این Listbox هم روی Worksheet(“Details”) قرار داره ولی این کد Error میده object Variable or with Block variable not set (Run time ERROR (91
    ٍایرورهم در این
    Sheets(“Details”).Range(“a2:a” & Lastrow).Find(What:=ListData.Text, _
    LookIn:=xlValues, LookAt:=xlWhole).Activate قسمت کد هست
    اگه رهنمایی بفرمایید خیلی ممنون میشم

  60. ابراهیم

    با سلام

    آیا روشی وجود دارد که یک ماکرو را مثلا هر یک ثانیه یک بار تکرار کرد؟

    با تشکر
    ابراهیم

  61. طاها صادقیان

    سلام آقا یاسین
    میشه یک دستور توی مکرو زحمت بکشید بنویسید که در حالتی که در یک شیت سلولهایی که unlock هستند را به صورت یکجا پاک کنیم به شرطی که سلولهای lock قفل باشند….
    یا حتی اگه از ترفند دیگه ای میشه استفاده کرد بفرمائید…
    توضیح : در یک شیت که دارای حدود 100000 ردیف و 20 ردیف ستون هست که بعضی از سلولهای آن قفل است، و سلولهای باز آن یک سری اطلاعات دستی در آن ها وارد شده که اگر بخواهم به صورت دستی این سلولها را پاک کنم بدون آن که سلولهای قفل از بین برند، ساعتها طول می کشد… برای همین آیا راهکاری هست که بتوان سلولهای غیر قفل را سریع پاک کرد
    اگر راهنمائی کنید ممنون میشوم…
    با تشکر طاها

  62. davoodsh

    سلام
    ممنون از سایت خوبتون
    من یه فایل کارنامه درست کردم… توش یکی از سلولها رو برای کد دانش آموز در نظر گرفتم … فرمولنویسی کردم که با تغییر کد همه اطلاعات کارنامه عوض بشه … حالا میخوام کاری کنم که برای پرینت همه کارنامه ها مجبور نباشم تک تک پرینت بگیرم …
    یک فایل رو دیده بودم که با ماکرو این کار رو کرده بود … چطوری میتونم این کار رو انجام بدم؟

  63. محمدرضا

    سلام.با تشکر از سایت خوبتون
    بنده یه برنامه نوشتم وقتی برنامه اجرا میشه تا زمانی که برنامه در حالت ران هست نمیشه به صفحه اکسل دسترسی داشت.در صورتی که من می خوام یه سری از ورودی ها در زمانی که برنامه ران هست داخل بعضی از سلول ها تایپ بشن(مثلا یک دکمه توسط کاربر زده شده و حالا باید کاربر ورودی های دیگری رو وارد کنه و دکمه بعدی رو بزنه) ورودی ها هم حتما باید داخل سلول ها تایپ بشن و امکان گرفتن ورودی به وسیله تکست باکس در فرم بنا به دلایلی وجود نداره
    ممنون میشم اگر راهنمایی بفرمایید

  64. حسین

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

  65. m-d

    سلام
    در اكسل 2003 با دستور file search و آدرس دهي در ماكرو مي توان يك فايل را پيدا كرد ولي همين دستور در اكسل 2007 كار نمي كند آيا دستورمشابهي سراغ داريد؟ باتشكر

  66. m-d

    كسي جواب سوال منو نداد آيا بايد جاي ديگري دنبال جواب باشم يا در همين قسمت منتظر بمونم؟

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *