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

تونی به این فکر می کند که آیا راهی برای اجرای خودکار یک ماکرو هر 15 دقیقه وجود دارد؟ او می‌خواهد این کار را بدون تأثیر بر سایر عملیات در اکسل انجام دهد، به این معنی که نمی‌خواهد در یک حلقه منتظر زمان معینی بماند.

کلید انجام این نوع عملیات استفاده از روش .OnTime است. به شما این امکان را می دهد که یک ماکرو خاص را پس از یک دوره زمانی مشخص اجرا کنید. بنابراین، برای مثال، فرض کنید می‌خواهید هر 15 دقیقه یک ماکرو به نام MyMacro را اجرا کنید. شما می توانید به سادگی با استفاده از ماکرو تک خطی زیر به این امر دست یابید:

Sub StartTimer()
    Application.OnTime Now() + TimeValue("00:15:00"), "MyMacro"
End Sub

دقیقاً 15 دقیقه پس از اجرای این ماکرو، ماکرو MyMacro بدون توجه به اینکه در جای دیگری در اکسل چه کاری انجام می دهید، به طور خودکار اجرا می شود. زمانی که زمانی که برای روش .OnTime تعیین کردید منقضی شد و MyMacro شروع شد، MyMacro دوباره اجرا نخواهد شد تا زمانی که دوباره ماکرو StartTimer را اجرا کنید و دوباره .OnTime فراخوانی نشود. همه اینها به این معنی است که بسته به اینکه چه زمانی می خواهید تایمر دوباره راه اندازی شود، ممکن است بخواهید با اولین خط MyMacro یا آخرین خط با StartTimer تماس بگیرید.

در صورت تمایل می توانید StartTimer را فقط کمی تغییر دهید تا اجازه عبور یک پارامتر را به این صورت انجام دهید:

Sub StartTimer(dMinutes As Double)
    Dim dAdjust As Double

    dAdjust = Now() + (dMinutes / (24 * 60))
    Application.OnTime dAdjust, "MyMacro"
End Sub

این رویکرد کمی انعطاف پذیری بیشتری را فراهم می کند زیرا می توانید تعداد دقیقه هایی را که می خواهید با روش OnTime استفاده کنید به StartTimer منتقل کنید. به عنوان مثال، اگر می خواهید MyMacro را بعد از 12.5 دقیقه راه اندازی کنید، می توانید خط زیر را به کد موجود خود اضافه کنید:

Call StartTimer(12.5)

اگر چنین خطی را در کد MyMacro خود اضافه کنید، تا زمانی که اکسل در حال اجرا است، MyMacro هر 12.5 دقیقه برای همیشه اجرا می شود. اگر می خواهید تایمر را متوقف کنید و نمی خواهید اکسل را متوقف کنید، باید چند تغییر در تنظیمات ماکرو خود ایجاد کنید:

Public dTimeStore As Double

Sub StartTimer(dMinutes As Double)
    dTimeStore = Now() + (dMinutes / (24 * 60))
    Application.OnTime dTimeStore, "MyMacro"
End Sub
Sub EndTimer()
    Application.OnTime dTimeStore, "MyMacro", , False
End Sub

به اعلان متغیر dTimeStore توجه کنید که برای ذخیره آخرین بار استفاده شده با متد OnTime استفاده می شود. این به شما این امکان را می دهد که در برخی موارد، ماکرو EndTimer و متعاقباً روش .OnTime را به درستی برای خاموش کردن تایمر فراخوانی کنید. همچنین توجه داشته باشید که در ماکرو EndTimer وجود دو کاما متوالی در فراخوانی .OnTime وجود دارد. این امر به منظور اطمینان از قرار گرفتن پارامترها در مکان مناسب که توسط روش مورد نیاز است ضروری است.

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

پاسخ شما

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

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

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

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 175 visibility
3 دوستدار 0 امتیاز منفی
0 پاسخ 193 visibility
ارسال شده در 16 اسفند 1399 موضوع: ویندوز توسط: میلاد📱
0 دوستدار 0 امتیاز منفی
1 پاسخ 189 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 83 visibility

31.4k سوال

16.7k پاسخ

620 دیدگاه

13.8k کاربر

17 نفر آنلاین
0 عضو و 17 مهمان در سایت حاضرند
بازدید امروز: 34983
بازدید دیروز: 33245
بازدید کل: 33798658
...