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

کارن به دنبال راهی برای چاپ کل ورک بوک است، حتی اگر کاربر انتخاب کند که یک کاربرگ را چاپ کند. به عبارت دیگر، او به دنبال راهی برای چاپ کل ورک بوک است یا اصلاً هیچ گزینه ای نباید وجود داشته باشد.

تنها راه حل این مشکل استفاده از ماکرو است. VBA به شما این امکان را می دهد که ماکروهایی ایجاد کنید که هنگام وقوع رویدادهای خاص شروع شوند. یکی از رویدادهایی که می تواند ماکروها را فعال کند، رویداد "چاپ" است. هنگامی که شخصی درخواست چاپ می کند، یا انتخاب می کند که پیش نمایش چاپ را ببیند، رویداد BeforePrint شی Workbook فعال می شود. شما می توانید ماکرو خود را ایجاد کنید که در هنگام راه اندازی رویداد اجرا می شود.

Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Dim sht As Variant
    Dim bPreview As Boolean
    Dim iResponse As Integer
    On Error GoTo ErrHandler

    iResponse = MsgBox(prompt:="Do you want to Print Preview?", _
        Buttons:=vbYesNoCancel, Title:="Preview?")

    Select Case iResponse
        Case vbYes
            bPreview = True
        Case vbNo
            bPreview = False
        Case Else
            GoTo ExitHandler
    End Select
    Application.EnableEvents = False
    For Each sht In Sheets
        If sht.Visible Then
            sht.PrintOut Preview:=bPreview
        End If
    Next

ExitHandler:
    Application.EnableEvents = True
    Cancel = True
    Exit Sub

ErrHandler:
    MsgBox Err.Description
    Resume ExitHandler
End Sub

هر زمان که اکسل برای چاپ آماده می شود، یا هر زمان که پیش نمایش چاپ فراخوانی می شود، رویداد BeforePrint فعال می شود و این ماکرو اجرا می شود. ماکرو ابتدا از کاربر می پرسد که آیا می خواهد پیش نمایش چاپ را انجام دهد یا خیر. ساختار Select Case برای تنظیم متغیر bPreview بر اساس پاسخ به سوال استفاده می شود. تنظیم bPreview سپس آنچه را که اتفاق می افتد کنترل می کند.

اگر کاربر در مورد پیش نمایش روی Cancel کلیک کرد، ماکرو خارج می شود و چاپ لغو می شود. در غیر این صورت، هر کاربرگ در ورک بوک برای چاپ یا پیش نمایش بررسی می شود. اگر کاربرگ قابل مشاهده باشد، چاپ می شود و ویژگی Preview برابر با bPreview تنظیم می شود (True به این معنی است که کاربرگ پیش نمایش شده است؛ False یعنی واقعاً چاپ شده است).

توجه داشته باشید که ماکرو ویژگی EnableEvents را روی False قرار می دهد. این کار به گونه ای انجام می شود که هیچ رویداد دیگری در حین چاپ یا پیش نمایش فعال نشود. اگر EnableEvents "روشن" باقی بماند، هر بار که از روش PrintOut استفاده می شود، کل رویداد BeforePrint دوباره فعال می شود—اگر مدیریت رویداد خاموش نمی شد کاربر در یک حلقه بی پایان قرار می گیرد.

همچنین توجه داشته باشید که یکی از آخرین مواردی که قبل از خروج از ماکرو رخ می دهد این است که ویژگی Cancel روی True تنظیم شده است. این کار به این دلیل انجام می شود که درخواست چاپ یا پیش نمایش چاپ اصلی که رویداد BeforePrint را ایجاد کرده است لغو شود. به هر حال، نیازی به تکمیل آن درخواست نیست، زیرا ماکرو تمام کارهای چاپی را برای کاربر انجام داده است.

البته یک اخطار برای استفاده از این رویکرد برای چاپ وجود دارد: اگر ماکروها فعال نباشند، کنترلر اجرا نمی شود و کاربر می تواند به دلخواه چاپ کند. (نگه داشتن Shift در حین باز کردن ورک بوک، ماکروها را غیرفعال می کند و اغلب از کاربر سؤال می شود که آیا می خواهد ماکروها را فعال کند یا خیر.) موضوعات دیگر ExcelTips این واقعیت را مورد بحث قرار داده اند.

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

پاسخ شما

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

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

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

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
1 پاسخ 145 visibility
0 دوستدار 0 امتیاز منفی
1 پاسخ 149 visibility
0 دوستدار 0 امتیاز منفی
1 پاسخ 166 visibility

31.4k سوال

16.7k پاسخ

620 دیدگاه

13.8k کاربر

23 نفر آنلاین
0 عضو و 23 مهمان در سایت حاضرند
بازدید امروز: 91537
بازدید دیروز: 33245
بازدید کل: 33855117
...