ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
37 visibility
موضوع: آفیس توسط:
متوقف می کند

وقتی دیو یک ماکرو می نویسد که باید اطلاعات زیادی را در یک حلقه For...Next پردازش کند، همیشه از نوار وضعیت برای نشان دادن پیشرفت استفاده می کند. به طور معمول، جهنم پیامی مانند "در حال پردازش ردیف X از Y" در آنجا نمایش داده می شود. هنگامی که "Y" یک مقدار بزرگ است (انتهای بالای حلقه For...Next)، اکسل اغلب به روز رسانی نوار وضعیت را متوقف می کند و چیزی مانند "Not Responsing" را در نوار عنوان Excels نمایش می دهد. با این حال، ماکرو هنوز در حال اجرا است و پس از تکمیل، اکسل شروع به پاسخگویی می‌کند و همه چیز همانطور که باید کار می‌کند. دیو تعجب می کند که چگونه می تواند کاری کند که اکسل به این شکل رفتار نکند و در عوض، به روز رسانی نوار وضعیت را همانطور که می خواهد نمایش دهد.

به نظر می‌رسد این رفتار زمانی رخ می‌دهد که به نظر می‌رسد که اکسل پاسخ نمی‌دهد. (به هر حال این ویندوز است که مسئول چیزی است که در نوار عنوان برنامه ظاهر می شود.) اگر چندین برنامه در ویندوز باز داشته باشم و در حالی که اکسل در حال تکه تکه شدن است، به راحتی می توانم این رفتار را بازتولید کنم. یک ماکرو طولانی اساساً، اگر اکسل مشغول اجرای ماکرو است یا نمی تواند از ویندوز بخواهد نوار وضعیت را به روز کند، در واقع به نظر می رسد که اکسل پاسخ نداده است.

دو روش ممکن وجود دارد که می توان از آنها استفاده کرد. ابتدا می توانید از دستور DoEvents در حلقه استفاده کنید. معمولاً از این برای دستور دادن به ماکرو استفاده می‌شود که به هر چیزی که در صف رویدادها است توجه کند، مانند زمانی که کسی صفحه‌کلید را فشار می‌دهد. معادل این است که اکسل را مجبور کنید که از ماکرویی که روی آن کار می‌کند جستجو کند و با ویندوز ارتباط برقرار کند. این لزوماً به ویندوز اجازه می‌دهد تا بداند اکسل واقعاً پاسخگو است و اجازه می‌دهد به‌روزرسانی‌های نوار وضعیت رخ دهد. حتی می توانید دستور را بلافاصله پس از به روز رسانی نوار وضعیت قرار دهید:

Application.StatusBar = "Processing row " & X & " of " & Y
DoEvents

چیز دیگری که باید امتحان کنید این است که به سادگی نوار وضعیت را چندان به روز نکنید. اگر انتهای بالایی حلقه شما بسیار بزرگ است، شاید بهتر باشد درصدی را محاسبه کرده و نوار وضعیت را زمانی که بخشی از کل تکمیل می‌شود، به‌روزرسانی کنید - شاید هر 5٪ یا 10٪ از کل. این بدان معناست که نوار وضعیت فقط باید 10 یا 20 بار در طول حلقه به روز شود، نه صدها یا هزاران بار. این ممکن است به این معنی باشد که ویندوز می‌تواند با درخواست‌ها برای به‌روزرسانی نوار وضعیت پاسخ دهد و به عنوان یک امتیاز، ماکرو شما ممکن است سریع‌تر اجرا شود زیرا مجبور نیست بارها نوار وضعیت را به‌روزرسانی کند.

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 121 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 29 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 36 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 52 visibility

24.3k سوال

9.6k پاسخ

614 دیدگاه

11.2k کاربر

313 نفر آنلاین
0 عضو و 313 مهمان در سایت حاضرند
بازدید امروز: 21194
بازدید دیروز: 25180
بازدید کل: 20358536
...