با این ۷ روش سرعت اجرای کدهای VBA را ۱۰ برابر کنید .
سلام به سافت پلاس خوش آمدید .دوست دارید سرعت اجرای کدهای VBA در اکسل را 10 برابر کنید ؟
امروز می خواهیم در همین مورد با هم صحبت کنیم . یعنی می خواهیم ببینیم که چطور می شود سرعت اجرای کدهای خودمان را در اکسل تا 10 برابر بیشتر کنیم .
مشکلی که در مورد فایل های خیلی حجیم می تواند تبدیل به یک معضل بزرگ شود این است که حتی اجرای چند تا خط کد ساده در داخل آنها می تواند تا حد زیادی باعث کندی فایل اکسل بشود .
حالا قرار است در این مطلب با هم یک سری ترفند ها و نکاتی را یاد بگیریم که با استفاده از آنها تا حد زیادی می توانیم سرعت اجرای کدهای وی بی ای را بالا ببریم .
البته این طور نیست که این نکته ها و ترفندها فقط مختص افزایش سرعت اجرای کدها باشند بلکه در کنار این کار مزیت های دیگری را هم برای ما به دنبال خواهند داشت .
من علیرضا شهرآئینی هستم و در این مطلب تمام داشته های خود در این خصوص را در اختیار شما قرار می دهم . پس تا پایان این مطلب با من همراه باشید .
افزایش سرعت کدهای VBA با حذف قابلیت های غیر ضروری
اگر به دنبال افزایش سرعت اجرای کدهای خود می گردید بعنوان یک راه حل ایده آل به شما پیشنهاد می کنم یک سری از قابلیت های غیر ضروری را که به آنها احتیاج ندارید را غیر فعال کنید .
تصمیم هم به عهده خودتان است که این غیر فعال کردن به صورت دائمی باشد یا به صورت موقت .
می پرسید چه قابلیت هایی؟ بیایید تا چند تا از آنها را به شما معرفی کنم .
1- غیر فعال کردن محاسبات خودکار .
Calculation یک قابلیت کاربردی در داخل اکسل است . فرض کنید که شما در داخل یک شیت کاری یک سری فرمول هایی را نوشته اید و این فرمول ها یک سری محاسبات را برای شما انجام می دهند .
حالا هر تغییری که در هر قسمت از داده های خودتان در داخل اکسل ایجاد کنید اکسل بلافاصله می خواهد که محاسبات را از نو انجام داده و این تغییر اعمال شده را در نتایج نهایی نمایش بدهد .
شاید از خودتان بپرسید این که یک قابلیت خیلی کاربردی است ؟
من هم نظر شما را تائید می کنم اما مشکل جایی بروز می کند که ما نه با حجم کم که با یک حجم زیاد داده ها و حجم بالایی از محاسبات سرو کار داشته باشیم .
اینجاست که سرعت کار اکسل پایین می آید . حالا فرض کنید که در داخل همین فایل حجیم که کلی هم محاسبات دارد از اکسل می خواهید که کدهای شما را هم اجرا کند .
و اگر هم کدهای شما کوچکترین تغییری در داده های موجود در اکسل ایجاد کنند اکسل اجرای کدهای شما را موقتا متوقف می کند تا همه محاسبات را بر مبنای این تغییر کوچک دوباره انجام بدهد و این باعث کندی اجرای کدها می شود .
حالا راه حل چیست ؟
خیلی ساده است کافی است خاصیت Calculation را خودتان تنظیم کنید . خود خاصیت Calculation سه تا حالت می تواند داشته باشد که در داخل سایت مایکروسافت راجع به هر سه تای آنها صحبت شده است .
حالا کاری که باید بکنید این است که قبل از کدهای مورد نظرتان از اکسل بخواهید که موقتا محاسبات خودش را متوقف کند و فقط کدهای شما را اجرا کند .
برای این کار می توانید مشابه کدهای زیر عمل کنید .
Application.Calculation = xlManual
.
.
.
کدهی مورد نظر شاما
.
.
.
Application.Calculation = xlAutomatic
در خط شماره 1 از این کدها ما از اکسل می خواهیم که محاسبات را به حالت manual یا دستی دربیاورد . در این حالت اکسل محاسبات را متوقف می کند مکر اینکه خودتان بصورت دستی از اکسل بخواهید محاسبات را انجام بدهد . در خط های بعدی می توانید کدهای مورد نظر خودتان را بنویسید .
بعد از اینکه اکسل این کدها را اجرا کرد در خط شماره 10 دوباره از اکسل می خواهیم که محاسبات را دوباره بصورت خودکار انجام دهد .
پس با این کدها از اکسل می خواهیم تا زمانی که دارد کدهای ما را اجرا می کند کار محاسبات خودش را متوقف کند و اینطوری سرعت اجرای کدهای ما بیشتر می شود .
2- غیر فعال کردن screen updating .
این یکی خیلی می تواند در افزایش سرعت اجرای کدها به شما کمک کند . اول بیایید ببینیم screen updating چی هست و چه کاربردی دارد .
فرض کنید که 100 تا خط کد وی بی ای دارید که توی هر کدام از این خطها کارهای مختلفی را از اکسل می خواهید انجام بدهد .می پرسید چه کارهایی ؟
خُب کارهای مختلفی وجود دارد مثلا مخفی کردن یک یا چند تا شیت ، یا حذف کردن شیتهای غیر کاربردی ،
اعمال فیلتر بر روی داده ها یا بعکس حذف فیلتر از حجم زیادی از داده ها یا کلی کارهای دیگر هست که می توانید از طریق کد نویسی انجام آنها را از اکسل بخواهید .
حالا بیایید این را در نظر بگیرید که هر کدام از این کارها را که از اکسل می خواهید انجام بدهد بلافاصله اکسل می خواهد که خواسته شما را اجرا کند و تغییرات را در لحظه روی اسکرین یا همان صفحه نمایش شما برایتان به نمایش بگذارد .
این خودش باعث می شود که خیلی سرعت اجرای کدهایتان کم شود . پس چه کار باید بکنید ؟
باید به سراغ خاصیت screen update رفته و آن را موقتا غیر فعال کنید . می پرسید چطوری ؟
با استفاده از کدهایی مثل کدهای زیر .
Application.screenupdating = false
.
.
.
کدهای مورد نظر شما
.
.
.
Application.screenupdating = true
راستی اگر می خواهید بیشتر در مورد screen updating بدانید می توانم به شما صفحه مخصوص آشنایی با ویژگی screen updating در سایت مایکروسافت را معرفی کنم .
در ضمن یکی دو تا نکته کوچک هم در مورد این ویژگی هست که در داخل ویدئوی کوتاه این قسمت راجع به آن با هم صحبت می کنیم .
این ویدئوی کوتاه را ببینید .
3- غیر فعال کردن status bar
satatus bar یا نوار وضعیت در قسمت پایین و سمت چپ از صفحه کاری در اکسل قرار دارد . شاید این بخش زیاد جلوی چشم نباشد و استفاده چندانی هم از آن نشود .
اما اکسل بسته به وضعیت های مختلف پیغام های مختلفی را در این قسمت به کاربران خودش نمایش می دهد .
همین بخش کوچک به نوبه خودش می تواند روی سرعت اجرای فایل های اکسل تاثیر گذار باشد. پس ایده خوبی خواهد بود اگر این بخش از اکسل را در حین اجرای کدهای خودتان غیر فعال کنید .
برای غیر فعال کردن این بخش می توانید از کدهای زیر استفاده کنید .
Application.DisplayStatusBar = False
کدهای مورد نظر شما
Application.DisplayStatusBar = true
یک نکته دیگر هم در مورد نوار وضعیت اکسل به شما بگویم و آن هم این است که با استفاده از کدهای VBA می توانید کاری کنید که اکسل پیغام مورد نظر شما را در این بخش نمایش بدهد .
می پرسید چطوری ؟ این ویدئوی کوتاه را ببینید تا راجع آن با هم صحبت کنیم .
4- محدوده های انتخابی غیر ضروری را حذف کنید .
توی برنامه نویسی وی بی ای ما یک دستوری داریم به اسم Select . همانطور که از اسم این دستور هم پیداست با استفاده از آن می توانیم چیزی را انتخاب کنیم .
اما چیزی که هست خیلی از مواقع ما می توانیم در ساختار کد نویسی خودمان کاری کنیم که کمتر نیاز به انتخاب اشیا یا محدوده های مختلف داشته باشیم .
اینطوری می توانیم هم در تعداد خطوط کد نوشته خودمان صرفه جویی کنیم و هم اینکه سرعت اجرای کدها را بالاتر ببریم .
اجازه بدهید با هم یک مثال عملی را بررسی کنیم .
به کدهای زیر نگاه کنید .
Sheets("softpluse").Select
Columns("A10:B10").Select
Selection.ClearContents
اینجا ما سه تا خط کد داریم . در خط شماره 1 از اکسل می خواهیم که یک شیت خاص به اسم softpluse را برای ما انتخاب کند .
در خط شماره 3 مجددا از اکسل می خواهیم که محدوده مورد نظر ما را در این شیت انتخاب کند .
در خط شماره 5 از اکسل می خواهیم که هر داده ای که در داخل این سلول ها قرار دارد را حذف کند .
می بینید برای اینجام یک کار ساده سه تا خط کد نوشتیم. اجرای این سه تا خط کد برای خودش زمانبر است . اما چطور می شود این سه تا خط کد را تبدیل به یک خط کرد ؟
حالا به این کدها نگاه کنید .
Sheets("softpluse").Columns("A1:B10").ClearContents
در کادر بالا ما یک خط کد داریم اما خروجی آن دقیقا همان کاری را برای ما می کند که سه تا خط کد قبلی برایمان انجام می دادند .
حالا خودتان قضاوت کنید . سرعت اجرا در کدام حالت بیشتر است ؟
مطالب زیر را حتما مطالعه کنید
By val و By ref | دو اصطلاحی که باید کار با آنها را یاد بگیرید .
با این کدهای VBA محدوده ها را در اکسل مدیریت کنید+ویدئو
SQL Server سوالاتی که همه در موردش می پرسند ؟
ردیابی تغییرات در فایل اکسل|نکته های کاربردی
مخفی کردن فرمول ها در اکسل؛ چرا و چطور این کار را انجام دهیم؟
مخفی کردن فرمول ها در اکسل با استفاده از روش های مختلف چیزی است که در این مطلب راجع به اون با هم صحبت می کنیم .
چه جوری از اطلاعات خودمان در اکسل محافظت کنیم ؟
توی این آموزش با هم روش های مختلف حفاظت از فایل های اکسل را یاد می گیریم .
7 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
واقعا سایت بینظیری دارید مطالبتون کاربردی و به زبان ساده هستند واقعا لذت میبرم از اینکه مطالب پیچیده رو اینقدر ساده بیان میکنید
موفق باشید و ممنون از زحمات شما
ممنون از همراهی و اظهار لطف شما
عالی مثل همیشه والبته اینکه باز هم این مطلب رو کامل نکردید 🥲🥲🥲
سلام می خواستم ببینم بصورت حضوری هم آموزشی برای برنامه نویسی دارید؟
سلام فعلا آموزش برنامه نویسی اکسل فقط در قالب دوره جامع برنامه نویسی وی بی ای ارائه می شود
خیلی خوبید. لذت بردم از مطالب اون. فقط ویدیو ها پلی نشد!
سلام ممنون از همراهی شما . هر دو تا ویدئو آپلود شد که حاوی نکته های مهمی هستند توصیه می کنم حتما آنها را مشاهده کنید .
خوشحال می شوم باز هم نظر شما رو در مورد مطالب سایت داشته باشم .