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

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

Sub MyMacro()

    ExpirationDate = #1/1/2020#
    If Now() < ExpirationDate Then

        Rest of macro goes here

    End if
End Sub

ایده این است که اگر (در این مورد) تاریخ فعلی قبل از 1 ژانویه 2020 باشد، بدنه اصلی ماکرو اجرا خواهد شد. اگر 1 ژانویه یا بعد از آن باشد، ماکرو اجرا نمی شود. این رویکرد، البته، در واقع ماکرو را حذف نمی کند. به سادگی بررسی می کند که ماکرو قبل از یک تاریخ خاص اجرا شده است.

برای خلاص شدن از شر کد ماکرو، باید رویکرد متفاوتی را در پیش بگیرید:

Private Sub Workbook_Open()
    Dim VBComp As VBIDE.VBComponent
    Dim VBComps As VBIDE.VBComponents

    Delete if Past Date
    If Date >= #1/1/2020# Then
        Set VBComps = ActiveWorkbook.VBProject.VBComponents

        For Each VBComp In VBComps
            Select Case VBComp.Type
                Case vbext_ct_StdModule, vbext_ct_MSForm, _
                  vbext_ct_ClassModule
                    VBComps.Remove VBComp
                Case Else
                    With VBComp.CodeModule
                        .DeleteLines 1, .CountOfLines
                    End With
            End Select
        Next VBComp
    End If

    Set VBComps = Nothing
    Set VBComp = Nothing
End Sub

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

http://www.cpearson.com/excel/vbe.aspx

برای اینکه ماکرو کار کند، باید مطمئن شوید که مرجعی به Microsoft Visual Basic برای توسعه برنامه ها وجود دارد. (این کار را با انتخاب، در ویرایشگر VB، Tools | References و سپس انتخاب Microsoft Visual Basic for Applications Extensibility در مراجع موجود انجام می دهید.)

ماکرو زمانی اجرا می شود که ورک بوک باز می شود و اگر تاریخ بزرگ تر یا مساوی با 1 ژانویه 2020 باشد، هر جزء از VBProject حذف می شود. این بدان معنی است که ماکرو بسیار قدرتمند است، زیرا همه چیز را حذف می کند، نه فقط یک رویه یا ماژول واحد.

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

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

پاسخ شما

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

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

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

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

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

23.2k سوال

8.5k پاسخ

608 دیدگاه

9.7k کاربر

89 نفر آنلاین
0 عضو و 89 مهمان در سایت حاضرند
بازدید امروز: 14815
بازدید دیروز: 23384
بازدید کل: 15265713
...